diff --git a/.gitignore b/.gitignore index 2bfbac730..0eb11aa9d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,8 @@ /node_modules # Production -# /build -# build/ +/build +build/ # Generated files .docusaurus diff --git a/MakefileEks.mk b/MakefileEks.mk index 66cb42a31..dbf947c7d 100644 --- a/MakefileEks.mk +++ b/MakefileEks.mk @@ -6,6 +6,7 @@ LDFLAGSSTRING +=-X main.GitDate=$(GITDATE) LDFLAGS := -ldflags "$(LDFLAGSSTRING)" build-bk-test-morph-test-qanet-to-morph-doc-qanet: + ./resolve_innerbuild.sh source ./makefile-function.sh && MFPnpmInstall && pnpm run build:qanet cp -rf nginx_sub_qanet.conf nginx_sub.conf @@ -21,6 +22,7 @@ healthcheck-bk-test-morph-test-qanet-to-morph-doc-qanet: build-bk-prod-morph-prod-mainnet-to-morph-doc: + ./resolve_innerbuild.sh source ./makefile-function.sh && MFPnpmInstall && pnpm run build:mainnet cp -rf nginx_sub_mainnet.conf nginx_sub.conf diff --git a/build/.nojekyll b/build/.nojekyll deleted file mode 100644 index e69de29bb..000000000 diff --git a/build/2-morph-staking-system-design.md b/build/2-morph-staking-system-design.md deleted file mode 100644 index 1bbe9dfec..000000000 --- a/build/2-morph-staking-system-design.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: Morph's Staking System Design -lang: en-US -keywords: [morph,ethereum,rollup,layer2,validity proof,optimistic zk-rollup] -description: Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now! ---- - -# What is Morph Staking System? - -:::tip -Currently the Staking System is in beta testing phase, the design described in this document will change as the testing process progresses, and does not represent the final experience on the Mainnet. -::: - -Morph Staking is a complete economic and engineering system built upon the decentralized sequencer network to ensure the operation and security of the network. - -It can be divided into 2 parts: - -**ETH Staking** - -On Ethereum, potential sequencers are required to stake ETH in the layer 1 staking contract to become a staker first. - -The ETH staking serves to increase the cost of malicious behavior by sequencers. - -In case of confirmed dishonesty or negligence by a sequencer, the staked ETH will be slashed. The required ETH staking amount is immutable. - -**Morph token Staking** - -Morph token is the governance token of Morph (Gas token is ETH). In the staking system, it will play the following roles: - -Staker is elected as the sequencer according to the amount of Morph tokens that token holders have delegated to them. So stakers need to attract Morph token holders to delegate their tokens to them. Only sequencers can receive network rewards. -Morph token holders can delegate stake their tokens to any stakers, which will determine whether stakers can be selected as sequencer. Sequencers receive rewards from the inflation of the Morph token based on the sequencer’s contribution, and delegators share a portion of the rewards based on their delegation amount. - -## Roles within the Staking System: - -1. Staker (Sequencer Candidate): Anyone (required in the whitelist in the early stage) can stake ETH to L1 staking contract and become a staker. Only stakers can join the sequencer election. -2. Sequencer: Sequencers are able to perform the sequencer tasks and get reward from it. Sequencers are selected according to the delegation amount of Morph tokens. -3. Delegator: Morph token holders can delegate stake their tokens to any of the stakers. Delegators can share the rewards gained by delegated sequencer based on the delegation amounts. - -## Details of sequencer set election: - -The determination of the sequencer set will be based on two points: - -1. Sequencers must have staked a fixed amount of ETH in Layer 1 staking contract. -2. Assuming the maximum size of the sequencer set is X, based on the delegation amount of Morph token, select up to X sequencers from all valid candidates as sequencer set. - - -The sequencer set will be updated in real-time based on the above principles. - -When there's a new MorphToken stake, the L2 staking contract will check if this would cause the sequencer set to change, and update the sequencer set if needed. - -Joining the sequencer set means that all sequencers will have the right to participate in the current network operations to earn rewards, while also bearing the responsibility of maintaining the network's efficient and normal operation. - -In practice, each sequencer, regardless of the delegation amount, has the same weight. - -Sequencers can exit at any time. They need to submit an exit request on Layer 1 staking contract, then enter a lock-up period. After Layer 2 contracts complete the exit process and reach the unlocking block height, they are unlocked and could claim the staked ETH. - - -## Rewards & Slash - -### Rewards - -There are 3 potential rewards for sequencers within the Morph ecosystem. - -**L2 MorphToken staking rewards.** - -The Morph token is inflationary that increases 6% of the initial max total supply each year as the L2 Morph token staking rewards. - -These 6% will be distributed everyday (one day is an epoch) to all the current running sequencers. - -Sequencers will take commission first and distribute the rest to the delegators based on their delegation amount. - -**L2 Gas Income:** - -Sequencers take ETH from layer 2 users (Layer2 income) and spend ETH to submit batches to layer1 (Layer1 cost). - -If the Layer1 cost is less than Layer2 income, the remaining value theoretically becomes the profit of Layer 2. - -At the very beginning, the network collects all the Layer2 incomes and pays ETH to sequencers to cover their Layer 1 cost. In the future, we’ll have a more detailed plan about how this part of the funds will be utilized. - -**ETH Re-staking yield:** - -To improve capital efficiency, we plan to leverage staker’s ETH deposit to generate yield in restaking products, and the yield will still be allocated to stakers. - - - -#### How to decide each sequencer’s MorphToken rewards? - -This is based on the block production records. - -In each epoch, the total reward received by each sequencer and their delegators is calculated as follows: - -**sequencer_reward = (sequencer_produced_block / total_produced_blocks) * total_morph_token_inflation** - - -The sequencer rewards are eventually distributed to delegators (although sequencers can be their own delegators too). Sequencer can set a commission rate to take a share from it and the rate is adjustable. - -**sequencer_commission = sequencer_reward * commission_rate** - - -The reward each delegator of this sequencer receives is the remaining portion multiplied by the percentage of their staked amount: - -**delegator_reward = (sequencer_reward - sequencer_commission) * delegation_amount / total_delegation_amount** - -The user’s delegation rewards will be calculated starting from the next epoch after the user stakes. - -**Example:** - -If today’s (this epoch’s) total Morph Inflation is 100, and there are 100 blocks produced in this epoch. - -Sequencer A produced 10 blocks within this epoch, so he will receive: - -**sequencer_reward = (sequencer_produced_block / total_produced_blocks) * total_morph_token_inflation = (10/100) * 100 = 10 MorphToken.** - -If sequencer’s commission rate is 5% - -**sequencer_commission = sequencer_reward * commission_rate = 10 * 0.05 = 5 MorphToken** - -If one delegator staked 100 MorphToken and then there are a total 1000 MorphToken delegated to the sequencer. - -**delegator_reward = (sequencer_reward - sequencer_commission) * delegation_amount / total_delegation_amount = (100 - 5) * (100/1000) = 9.5 MorphToken** - -Ideally, since the weights for each sequencer is the same, each sequencer will be able to produce the same amount of blocks within a certain epoch. Thus their rewards should be the same. - -However, if the sequencer failed to perform their duties, the block production will be much lower thus their rewards would be much lower too. - - -### Slash - -Based on the optimistic zkEVM design, there will be validators constantly verifying the batch submitted by sequencers, and if they think sequencers committed fraud, validators will start a challenge through the L1 rollup contract. - -[Read more about the challenge here:](../3-optimistic-zkevm.md) - -To prevent fraudulent behavior by Sequencers from affecting network security, the following rules need are established: - -- Validators will challenge a fixed batch, and all sequencers who signed that batch will collectively be challenged. -- When a sequencer takes on the role of batch submitter, repeated instances of timeouts accumulating to a certain extent will result in a deduction of rewards or removal from the sequencer set (not fully implemented yet). -- Sequencers with long periods that have not produced blocks will be removed from the sequencer set (not fully implemented yet). - -:::tip -The submitter rotation and submission timeout is part of decentralized rollup design, you can read the details [here](../general-protocol-design/1-rollup.md). -::: - -For the reward and slash functionalities, we have 2 contracts: - -- L2 Record Contract: The off-chain data affecting rewards and penalties will be collected and recorded in the L2 Record contract through an Oracle, primarily consisting of rollup data and Block data. -- L2 Distribute Contract: Sequencers and Delegator will manually claim rewards based on the Record. - -## Governance: - -We have a governance contract right now that decides some of the network parameters. Currently, only sequencers can create proposals and vote. - -In the next phase of the roadmap, we are planning to build a complete governance system that allows all Morph token holders to decide every aspect of the network. - -## Major Process - -### Staking & Sequencer Selection - -Morph token staking will be divided into 2 stages based on the network status: - -- Phase 1: Morph token inflation and staking rewards not started yet. -Sequencer elections will be FCFS at the beginning, but delegate stake is allowed. No morph token rewards since there is no new token generation yet. - -- Phase 2: Morph token inflation and staking rewards is started. -The sequencer election will officially start and based on the delegation amount of Morph token, the rewards will start to be distributed too. - -How is the sequencer set generated? - -1. `L1` Staking Contract: Add potential sequencers to the whitelist. -2. `L1` Staking Contract: Potential sequencer will be able to register and stake eth on Ethereum to become eligible for sequencer election (become staker). -3. An `add staker` message will be sent as a cross-layer message from L1 staking contract to L2 staking contract. -4. `L2` Staking Contract: Will update stakers with the message synced. -5. `L2` Staking Contract: Users will be able to delegate/undelegate stake MorphToken to a staker. -6. `L2` Sequencer Contract: L2 staking contract will update the sequencer set by calling L2 sequencer contact based on the ranking of the Morph token delegation amount, the top staker will be elected as sequencer. - -### Sequencer network consensus & Verification on Layer 1 - -- Every submitted batch requires the BLS signature of more than 2/3 of the sequencers within the sequencer set to be accepted by the L1 rollup contract. - -Notice: Currently, the BLS 12-381 signature pre-compiled contract has not been implemented on Ethereum. Therefore, the L1 rollup contract cannot verify whether the batch is signed by the L2 sequencer set. -Until this functionality is available, the rollup contracts only allow batch submission from stakers included in the whitelist. This measure is in place to enable us to slash the ETH deposit in case of fraudulent submissions. After signature verification is implemented, the submitter will be permissionless and the sequencers which signed the fraudulent batch will be slashed instead of the submitter. - - -1. `L1` Rollup Contract: Batch submitter commits the batch to rollup contract. -2. `L1` Rollup Contract: Rollup contract verifies the batch’s BLS signature and compares it with the sequencer set sync from L1 staking contract. It will only accept the batch if the verification passed. - -### Slash for Sequencers - -#### What happens if validators successfully challenge sequencers? - -- Sequencer will be slashed all staked ETH and removed from sequencer set if challenger succeeds. -- Even if get proven fraud by multiple challenges, each sequencer will only be slashed once. -- The challenger reward for a successful challenge is a fixed proportion of the staking amount. -- If the slash makes all the sequencers go down, then the L2 will stop running. We can restart by upgrading the L1 staking contract, reset stakers and sequencer sets. This does not affect the Layer 2 state as no transactions will be processed because of this. - -Process: - -1. `L1` Staking Contract: Slash staked ETH of sequencers who signed the fraud batch and remove them from sequencer set. -2. `L1` Staking Contract: Distribute validator rewards. -3. A `remove staker` message will be sent as a cross-layer message from L1 staking contract to L2 staking contract. -4. `L2`Staking Contract: Update sequencer set. - -### Delegation Stake - -1. `L2` Staking Contract: Staker set delegation commission rate by their own will. -2. `L2` Oracle: Upload sequencers work records (block production records, submitter work records, expect work records) on the epoch basis (an epoch is a day). -3. `L2` MorphToken Contract: Mint MorphToken (inflation) as delegation reward and sent to L2 distributor contract. -4. `L2` Staking Contract: Users claim delegation reward, sequencers claim commission. - -### Staker/Sequencer exit - -The exit lock period should be long enough to ensure that stakers and sequencers in L2 have been updated and greater than the challenge period of sequencer’s last produced block (if staker is also sequencer). - - -1. `L1` Staking Contract: Stakers apply to exit, the stake ETH is locked to enter the lock period. -2. A `remove staker` message will be sent as a cross-layer message from L1 staking contract to L2 staking contract. -3. `L2` Staking Contract: Received the message, remove staker, and sequencers (if the staker is also sequencer). -4. `L1` Staking Contract: Withdraw allowed until reach unlock block height,remove staker info after claiming. \ No newline at end of file diff --git a/build/404.html b/build/404.html deleted file mode 100644 index 8d6516462..000000000 --- a/build/404.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -Page Not Found | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - \ No newline at end of file diff --git a/build/assets/css/styles.5e55a320.css b/build/assets/css/styles.5e55a320.css deleted file mode 100644 index d4f985a55..000000000 --- a/build/assets/css/styles.5e55a320.css +++ /dev/null @@ -1 +0,0 @@ -.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.button,.dropdown__link,.sr-only,.text--truncate,.truncate{white-space:nowrap}.ring-background,.ring-danger,.ring-default,.ring-primary,.ring-secondary,.ring-success,.ring-warning{--tw-ring-opacity:1}*,.DocSearch-Container,.DocSearch-Container *,.box-border{box-sizing:border-box}.text--truncate,.text-ellipsis,.truncate{text-overflow:ellipsis}.tap-highlight-transparent,.toggleButton_C4u_,html{-webkit-tap-highlight-color:transparent}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width);padding:0 var(--ifm-spacing-horizontal);width:100%}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.mx-0,.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.px-0,.row--no-gutters>.col{padding-left:0;padding-right:0}.data-\[has-helper\=true\]\:items-start[data-has-helper=true],.group[data-has-label=true] .group-data-\[has-label\=true\]\:items-start,.items-start,.row--align-top{align-items:flex-start}.group[data-has-label=true] .group-data-\[has-label\=true\]\:items-end,.items-end,.row--align-bottom{align-items:flex-end}.items-center,.menuExternalLink_T45N,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width);padding:0 var(--ifm-spacing-horizontal);width:100%}.\!pb-0,.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.\!px-1,.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.\!px-1,.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.max-w-full,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_Eugp .wordWrapButtonIcon_KMHO{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_WmUu,.alert__heading,.text--uppercase,.uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);width:var(--ifm-avatar-photo-size)}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.inline-block{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child),.last-of-type\:rounded-l-none:last-of-type{border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child),.first-of-type\:rounded-r-none:first-of-type{border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button,.data-\[justify\=end\]\:flex-grow[data-justify=end],.data-\[justify\=start\]\:flex-grow[data-justify=start],.flex-grow{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height,.h-full,body,html{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child,.pt-0{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child),.pb-0{padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.aria-expanded\:opacity-70[aria-expanded=true],.close:hover,.data-\[pressed\=true\]\:opacity-70[data-pressed=true],.group[data-pressed=true] .group-data-\[pressed\=true\]\:opacity-70,.opacity-70,.peer[data-filled=true]~.peer-data-\[filled\=true\]\:opacity-70{opacity:.7}.close:focus,.hover\:opacity-80:hover,.theme-code-block-highlighted-line .codeLineNumber_dbgI:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]),.pointer-events-none{pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_AUwr article>:first-child,.docItemContainer_AUwr header+*,.footer__item,.mt-0{margin-top:0}.admonitionContent_Lm9s>:last-child,.collapsibleContent_MmFW p:last-child,.details_NQJP>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone__C0n,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child),.mt-1{margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_NQJP[data-collapsed=false].isBrowser_nVDU>summary:before,.details_NQJP[open]:not(.isBrowser_nVDU)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;visibility:hidden;bottom:0;left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:13px}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.data-\[open\=true\]\:flex[data-open=true],.flex,.footer__links,.group[data-has-helper=true] .group-data-\[has-helper\=true\]\:flex,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_jjlM,.flex-auto,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.m-0,.navbar__items--center .navbar__brand{margin:0}.footer__col:nth-child(3),.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}[data-theme=dark],[data-theme=light]{--ifm-color-primary:#14a800;--ifm-color-primary-dark:#3fff90;--ifm-color-primary-darker:#2dff85;--ifm-color-primary-darkest:#00f768;--ifm-color-primary-light:#85ffb8;--ifm-color-primary-lighter:#97ffc3;--ifm-color-primary-lightest:#ccffe1;--ifm-menu-color-background-active:#14a800;--ifm-menu-color-background-hover:#14a800;--ifm-navbar-link-color:#fff;--ifm-footer-color:#999}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.\[\&\>tr\]\:first\:shadow-small:first-child>tr,.shadow,.shadow-\[0_1px_0px_0_rgba\(0\2c 0\2c 0\2c 0\.05\)\],.shadow-large,.shadow-lg,.shadow-md,.shadow-medium,.shadow-none,.shadow-sm,.shadow-small{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.inline-flex,.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_j67I>li)>.containsTaskList_j67I{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.302);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}@font-face{font-display:swap;font-family:Inter Variable;font-style:normal;font-weight:100 900;src:url(/assets/fonts/InterVariable-a0e477f2f1f9d2376fde931ee7c6241a.woff2) format("woff2")}@font-face{font-display:swap;font-family:Inter Variable;font-style:italic;font-weight:100 900;src:url(/assets/fonts/InterVariable-Italic-e295f70fe3e2df296c7bd1082d39afda.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:100;src:url(/assets/fonts/InterDisplay-Thin-8869ea180347c0b3e105f1f25d8159c1.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:100;src:url(/assets/fonts/InterDisplay-ThinItalic-84afcd2c98f66e503a057888753b75a0.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:200;src:url(/assets/fonts/InterDisplay-ExtraLight-8aac419550652c70acce102a1405b9e6.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:200;src:url(/assets/fonts/InterDisplay-ExtraLightItalic-3d35f6363cf46c94cb5d50618f66586b.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:300;src:url(/assets/fonts/InterDisplay-Light-878eccfa0e5c8240899d9a9588d25926.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:300;src:url(/assets/fonts/InterDisplay-LightItalic-af1c0bdb835afad15237ca3659b2c345.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:400;src:url(/assets/fonts/InterDisplay-Regular-a4074fefb60f137f7974a3f2cadf655c.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:400;src:url(/assets/fonts/InterDisplay-Italic-c0dffe244faaf5bb8fbef1517f2c89a3.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:500;src:url(/assets/fonts/InterDisplay-Medium-6e976150c457a5edc1f31e3c6affe0c5.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:500;src:url(/assets/fonts/InterDisplay-MediumItalic-361044e3f1781339740b739848dd02f0.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:600;src:url(/assets/fonts/InterDisplay-SemiBold-54b6be6a7edc5b3cbdd615e2c9a54b8b.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:600;src:url(/assets/fonts/InterDisplay-SemiBoldItalic-4f03584a088f6fd339102161c36bd5b8.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:700;src:url(/assets/fonts/InterDisplay-Bold-f5ec5e21f616f430d4ba27e814d9eeb6.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:700;src:url(/assets/fonts/InterDisplay-BoldItalic-439cef167a628cb218568c7bd4d6f0ac.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:800;src:url(/assets/fonts/InterDisplay-ExtraBold-89518fa4ab7bacdb30e6bb414678e283.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:800;src:url(/assets/fonts/InterDisplay-ExtraBoldItalic-4dcb197ef83d3558dbdcc3e8e25b568f.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:normal;font-weight:900;src:url(/assets/fonts/InterDisplay-Black-fb55d5da48c7bee4d80af9ec6cd28e3f.woff2) format("woff2")}@font-face{font-display:swap;font-family:InterDisplay;font-style:italic;font-weight:900;src:url(/assets/fonts/InterDisplay-BlackItalic-bd4243b6c8594236ba8562208aa8e267.woff2) format("woff2")}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:root,[data-theme]{background-color:hsl(var(--morui-background));color:hsl(var(--morui-foreground))}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.\[\&\>\*\]\:relative>*,.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.bottom-8{bottom:2rem}.bottom-\[10\%\]{bottom:10%}.bottom-\[5\%\]{bottom:5%}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:left-0,.group[data-filled=true] .group-data-\[filled\=true\]\:left-0,.left-0{left:0}.left-1\.5{left:.375rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[10\%\]{left:10%}.left-\[5\%\]{left:5%}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-3{right:.75rem}.right-\[10\%\]{right:10%}.right-\[30\%\]{right:30%}.right-\[5\%\]{right:5%}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-\[10\%\]{top:10%}.top-\[5\%\]{top:5%}.top-\[6px\]{top:6px}.top-\[var\(--navbar-height\)\]{top:var(--navbar-height)}.-z-0,.z-0{z-index:0}.-z-30{z-index:-30}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.order-3{order:3}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.mx-1,.mx-\[calc\(\(theme\(spacing\.7\)-theme\(spacing\.5\)\)\/2\)\]{margin-left:.25rem;margin-right:.25rem}.mx-\[calc\(\(theme\(spacing\.5\)-theme\(spacing\.1\)\)\/2\)\]{margin-left:.5rem;margin-right:.5rem}.mx-\[calc\(\(theme\(spacing\.6\)-theme\(spacing\.3\)\)\/2\)\]{margin-left:.375rem;margin-right:.375rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-bottom:0;margin-top:0}.my-1,.my-\[calc\(\(theme\(spacing\.7\)-theme\(spacing\.5\)\)\/2\)\]{margin-bottom:.25rem;margin-top:.25rem}.my-16{margin-bottom:4rem;margin-top:4rem}.my-\[calc\(\(theme\(spacing\.5\)-theme\(spacing\.1\)\)\/2\)\]{margin-bottom:.5rem;margin-top:.5rem}.my-\[calc\(\(theme\(spacing\.6\)-theme\(spacing\.3\)\)\/2\)\]{margin-bottom:.375rem;margin-top:.375rem}.-mr-2{margin-right:-.5rem}.-ms-2{margin-inline-start:-.5rem}.-mt-1{margin-top:-.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-5{margin-bottom:1.25rem}.mb-8{margin-bottom:2rem}.mb-px{margin-bottom:1px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.group[data-selected][data-pressed] .group-data-\[selected\]\:group-data-\[pressed\]\:ml-3,.ml-3{margin-left:.75rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-\[133px\]{margin-top:133px}.mt-\[9px\]{margin-top:9px}.line-clamp-1{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.block{display:block}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.\!h-auto{height:auto!important}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[100dvh\]{height:100dvh}.h-\[25px\]{height:25px}.h-\[2px\]{height:2px}.h-\[320px\]{height:320px}.h-\[90\%\]{height:90%}.h-\[95\%\]{height:95%}.h-\[97px\]{height:97px}.h-\[calc\(100dvh_-_var\(--navbar-height\)_-_1px\)\]{height:calc(100dvh - var(--navbar-height) - 1px)}.h-\[var\(--navbar-height\)\]{height:var(--navbar-height)}.h-auto,.img_ce0i{height:auto}.h-divider{height:var(--morui-divider-weight)}.h-fit{height:fit-content}.h-px{height:1px}.h-screen{height:100vh}.h-unit-10{height:var(--morui-spacing-unit-10)}.h-unit-12{height:var(--morui-spacing-unit-12)}.h-unit-4{height:var(--morui-spacing-unit-4)}.h-unit-8{height:var(--morui-spacing-unit-8)}.h-unit-9{height:var(--morui-spacing-unit-9)}.max-h-64{max-height:16rem}.max-h-\[calc\(100\%_-_7\.5rem\)\]{max-height:calc(100% - 7.5rem)}.min-h-3{min-height:.75rem}.min-h-3\.5{min-height:.875rem}.min-h-4{min-height:1rem}.min-h-5{min-height:1.25rem}.min-h-6{min-height:1.5rem}.min-h-7{min-height:1.75rem}.min-h-screen{min-height:100vh}.min-h-unit-10{min-height:var(--morui-spacing-unit-10)}.min-h-unit-12{min-height:var(--morui-spacing-unit-12)}.min-h-unit-14{min-height:var(--morui-spacing-unit-14)}.min-h-unit-16{min-height:var(--morui-spacing-unit-16)}.min-h-unit-4{min-height:var(--morui-spacing-unit-4)}.min-h-unit-8{min-height:var(--morui-spacing-unit-8)}#__docusaurus,.container,.main-wrapper{min-height:100%}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.group[data-pressed=true] .group-data-\[pressed\=true\]\:w-5,.w-5{width:1.25rem}.group[data-pressed=true] .group-data-\[pressed\=true\]\:w-6,.w-6{width:1.5rem}.group[data-pressed=true] .group-data-\[pressed\=true\]\:w-7,.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[128px\]{width:128px}.w-\[160px\]{width:160px}.w-\[284px\]{width:284px}.w-\[80\%\]{width:80%}.w-\[97px\]{width:97px}.w-\[calc\(100\%_-_theme\(spacing\.unit-6\)\)\]{width:calc(100% - var(--morui-spacing-unit-6))}.w-auto{width:auto}.w-divider{width:var(--morui-divider-weight)}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.w-unit-10{width:var(--morui-spacing-unit-10)}.w-unit-12{width:var(--morui-spacing-unit-12)}.w-unit-4{width:var(--morui-spacing-unit-4)}.w-unit-8{width:var(--morui-spacing-unit-8)}.features,.hero-banner{width:100%;display:flex}.min-w-10{min-width:2.5rem}.min-w-3{min-width:.75rem}.min-w-3\.5{min-width:.875rem}.min-w-4{min-width:1rem}.min-w-5{min-width:1.25rem}.min-w-6{min-width:1.5rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.min-w-unit-10{min-width:var(--morui-spacing-unit-10)}.min-w-unit-12{min-width:var(--morui-spacing-unit-12)}.min-w-unit-5{min-width:var(--morui-spacing-unit-5)}.min-w-unit-6{min-width:var(--morui-spacing-unit-6)}.min-w-unit-7{min-width:var(--morui-spacing-unit-7)}.min-w-unit-8{min-width:var(--morui-spacing-unit-8)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-7xl{max-width:80rem}.max-w-\[1200px\]{max-width:1200px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[1536px\]{max-width:1536px}.max-w-\[640px\]{max-width:640px}.max-w-\[768px\]{max-width:768px}.max-w-fit{max-width:fit-content}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-initial{flex:0 1 auto}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.basis-0,.data-\[justify\=end\]\:basis-0[data-justify=end],.data-\[justify\=start\]\:basis-0[data-justify=start]{flex-basis:0px}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.origin-center{transform-origin:center}.origin-left{transform-origin:left}.origin-right{transform-origin:right}.origin-top-left{transform-origin:top left}.-translate-x-1\/2,.after\:-translate-x-1\/2:after,.data-\[placement\=bottom\]\:before\:-translate-x-1\/2[data-placement=bottom]:before,.data-\[placement\=top\]\:before\:-translate-x-1\/2[data-placement=top]:before{--tw-translate-x:-50%}.-rotate-90,.-translate-x-1\/2,.-translate-y-1\/2,.data-\[before\=true\]\:rotate-180[data-before=true],.data-\[direction\=ascending\]\:rotate-180[data-direction=ascending],.data-\[focus-visible\=true\]\:-translate-x-3[data-focus-visible=true],.data-\[hover\=true\]\:-translate-x-3[data-hover=true],.data-\[hover\=true\]\:translate-x-0[data-hover=true],.data-\[invisible\=true\]\:scale-0[data-invisible=true],.data-\[open\=true\]\:-rotate-90[data-open=true],.data-\[open\=true\]\:rotate-180[data-open=true],.group[data-copied=true] .group-data-\[copied\=true\]\:scale-100,.group[data-pressed=true] .group-data-\[pressed\=true\]\:scale-95,.group[data-selected=true] .group-data-\[selected\=true\]\:scale-100,.group[data-selected=true] .group-data-\[selected\=true\]\:translate-x-3,.rotate-0,.rotate-180,.scale-0,.scale-100,.scale-105,.scale-50,.transform,.translate-x-1,.translate-x-1\/2,.translate-y-1,.translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2,.data-\[placement\=left\]\:before\:-translate-y-1\/2[data-placement=left]:before,.data-\[placement\=right\]\:before\:-translate-y-1\/2[data-placement=right]:before{--tw-translate-y:-50%}.translate-x-1{--tw-translate-x:0.25rem}.translate-x-1\/2{--tw-translate-x:50%}.after\:translate-y-1:after,.translate-y-1{--tw-translate-y:0.25rem}.translate-y-1\/2{--tw-translate-y:50%}.-rotate-90,.data-\[open\=true\]\:-rotate-90[data-open=true]{--tw-rotate:-90deg}.after\:rotate-0:after,.before\:rotate-0:before,.rotate-0{--tw-rotate:0deg}.data-\[before\=true\]\:rotate-180[data-before=true],.data-\[direction\=ascending\]\:rotate-180[data-direction=ascending],.data-\[open\=true\]\:rotate-180[data-open=true],.rotate-180{--tw-rotate:180deg}.data-\[invisible\=true\]\:scale-0[data-invisible=true],.scale-0{--tw-scale-x:0;--tw-scale-y:0}.data-\[dragging\=true\]\:after\:scale-100[data-dragging=true]:after,.group[data-copied=true] .group-data-\[copied\=true\]\:scale-100,.group[data-selected=true] .group-data-\[selected\=true\]\:scale-100,.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.after\:scale-50:after,.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}@keyframes a{0%{opacity:.2;transform:scale(0)}to{opacity:0;transform:scale(2)}}.animate-drip-expand{animation:.42s linear a}@keyframes b{0%{transform:translateX(-50%) scaleX(.2)}to{transform:translateX(100%) scaleX(1)}}.animate-indeterminate-bar{animation:1.5s cubic-bezier(.65,.815,.735,.395) infinite b}.animate-none{animation:none}.animate-spinner-ease-spin{animation:.8s infinite c}@keyframes c{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.animate-spinner-linear-spin{animation:.8s linear infinite c}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed,.data-\[disabled\=true\]\:cursor-not-allowed[data-disabled=true],.toggleButtonDisabled_K1qw{cursor:not-allowed}.cursor-pointer,.data-\[sortable\=true\]\:cursor-pointer[data-sortable=true],.data-\[visible\=true\]\:cursor-pointer[data-visible=true],.dropdownNavbarItemMobile_I3x3{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.resize-none{resize:none}.scroll-py-6{scroll-padding-bottom:1.5rem;scroll-padding-top:1.5rem}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.data-\[orientation\=horizontal\]\:flex-row[data-orientation=horizontal],.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.place-content-center{place-content:center}.data-\[justify\=start\]\:justify-start[data-justify=start],.justify-start{justify-content:flex-start}.data-\[justify\=end\]\:justify-end[data-justify=end],.justify-end{justify-content:flex-end}.data-\[justify\=center\]\:justify-center[data-justify=center],.justify-center{justify-content:center}.justify-between{justify-content:space-between}.\!gap-0{gap:0!important}.\!gap-unit-0{gap:var(--morui-spacing-unit-0)!important}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-unit-2{gap:var(--morui-spacing-unit-2)}.gap-unit-3{gap:var(--morui-spacing-unit-3)}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.125rem*var(--tw-space-x-reverse))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(theme\(borderRadius\.large\)\/1\.5\)\]{border-radius:calc(var(--morui-radius-large)/1.5)}.rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.5\)\]{border-radius:calc(var(--morui-radius-medium)*.5)}.rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.6\)\]{border-radius:calc(var(--morui-radius-medium)*.6)}.rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.7\)\]{border-radius:calc(var(--morui-radius-medium)*.7)}.rounded-\[calc\(theme\(borderRadius\.medium\)\/2\)\]{border-radius:calc(var(--morui-radius-medium)/2)}.rounded-\[calc\(theme\(borderRadius\.small\)\/2\)\]{border-radius:calc(var(--morui-radius-small)/2)}.rounded-full{border-radius:9999px}.data-\[has-multiple-rows\=true\]\:rounded-large[data-has-multiple-rows=true],.rounded-large{border-radius:var(--morui-radius-large)}.rounded-md{border-radius:.375rem}.group.is-splitted .group-\[\.is-splitted\]\:rounded-medium,.rounded-medium{border-radius:var(--morui-radius-medium)}.\[\&\:not\(\:first-child\)\:not\(\:last-child\)\]\:rounded-none:not(:first-child):not(:last-child),.\[\&\:not\(\:first-of-type\)\:not\(\:last-of-type\)\]\:rounded-none:not(:first-of-type):not(:last-of-type),.rounded-none{border-radius:0}.rounded-small{border-radius:var(--morui-radius-small)}.dark,.light,:root,[data-theme=dark],[data-theme=light]{--morui-assist-3:213 10% 57%;--morui-brand-high:113 100% 33%;--morui-brand:113 100% 33%;--morui-border:0 0% 60%;--morui-link:214 100% 57%;--morui-warning-foreground:0 0% 0%;--morui-warning:37 91% 55%;--morui-fixed-green:158 58% 50%;--morui-fixed-red:338 98% 54%;--morui-fixed-white:0 0% 100%;--morui-fixed-black:0 0% 0%;--morui-box-shadow:213 20% 9%;--morui-focus:216 100% 50%;--morui-overlay:0 0% 0%;--morui-default:0 0% 20%;--morui-primary:113 100% 33%;--morui-secondary-foreground:0 0% 100%;--morui-success-foreground:0 0% 0%;--morui-success:158 58% 50%;--morui-danger-foreground:0 0% 100%;--morui-danger:338 98% 54%;--morui-green:113 100% 33%;--morui-yellow:36 93% 54%;--morui-purple:249 100% 71%;--morui-card-border-opacity:0.10;--morui-desc-1:0 0% 60%;--morui-spacing-unit:4px;--morui-spacing-unit-0:0px;--morui-spacing-unit-1:0.25rem;--morui-spacing-unit-2:0.5rem;--morui-spacing-unit-3:0.75rem;--morui-spacing-unit-4:1rem;--morui-spacing-unit-5:1.25rem;--morui-spacing-unit-6:1.5rem;--morui-spacing-unit-7:1.75rem;--morui-spacing-unit-8:2rem;--morui-spacing-unit-9:2.25rem;--morui-spacing-unit-10:2.5rem;--morui-spacing-unit-11:2.75rem;--morui-spacing-unit-12:3rem;--morui-spacing-unit-13:3.25rem;--morui-spacing-unit-14:3.5rem;--morui-spacing-unit-15:3.75rem;--morui-spacing-unit-16:4rem;--morui-spacing-unit-17:4.25rem;--morui-spacing-unit-18:4.5rem;--morui-spacing-unit-20:5rem;--morui-spacing-unit-24:6rem;--morui-spacing-unit-28:7rem;--morui-spacing-unit-32:8rem;--morui-spacing-unit-36:9rem;--morui-spacing-unit-40:10rem;--morui-spacing-unit-44:11rem;--morui-spacing-unit-48:12rem;--morui-spacing-unit-52:13rem;--morui-spacing-unit-56:14rem;--morui-spacing-unit-60:15rem;--morui-spacing-unit-64:16rem;--morui-spacing-unit-72:18rem;--morui-spacing-unit-80:20rem;--morui-spacing-unit-96:24rem;--morui-spacing-unit-xs:0.5rem;--morui-spacing-unit-sm:0.75rem;--morui-spacing-unit-md:1rem;--morui-spacing-unit-lg:1.375rem;--morui-spacing-unit-xl:2.25rem;--morui-spacing-unit-2xl:3rem;--morui-spacing-unit-3xl:5rem;--morui-spacing-unit-4xl:7.5rem;--morui-spacing-unit-5xl:14rem;--morui-spacing-unit-6xl:18rem;--morui-spacing-unit-7xl:24rem;--morui-spacing-unit-8xl:32rem;--morui-spacing-unit-9xl:40rem;--morui-spacing-unit-3_5:0.875rem;--morui-disabled-opacity:.5;--morui-divider-weight:1px;--morui-font-size-tiny:1rem;--morui-font-size-small:1.25rem;--morui-font-size-medium:1.5rem;--morui-font-size-large:40px;--morui-font-size-huge:56px;--morui-line-height-tiny:1rem;--morui-line-height-small:1.75rem;--morui-line-height-medium:2rem;--morui-line-height-large:65px;--morui-line-height-huge:72px;--morui-radius-small:8px;--morui-radius-medium:12px;--morui-radius-large:24px;--morui-radius-tiny:4px;--morui-border-width-small:1px;--morui-border-width-medium:2px;--morui-border-width-large:3px;--morui-border-width-tiny:1px;--morui-font-weight-hairline:100;--morui-font-weight-light:300;--morui-font-weight-normal:400;--morui-font-weight-medium:500;--morui-font-weight-semibold:600;--morui-font-weight-bold:700;--morui-font-weight-extrabold:800;--morui-font-weight-black:900;--morui-font-weight-tiny:400;--morui-font-weight-small:500;--morui-border-color-default:#999}.\!rounded-l-none{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.\!rounded-r-none{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.rounded-b-large{border-bottom-left-radius:var(--morui-radius-large);border-bottom-right-radius:var(--morui-radius-large)}.rounded-b-medium{border-bottom-left-radius:var(--morui-radius-medium);border-bottom-right-radius:var(--morui-radius-medium)}.rounded-b-small{border-bottom-left-radius:var(--morui-radius-small);border-bottom-right-radius:var(--morui-radius-small)}.rounded-t-large{border-top-left-radius:var(--morui-radius-large);border-top-right-radius:var(--morui-radius-large)}.rounded-t-medium{border-top-left-radius:var(--morui-radius-medium);border-top-right-radius:var(--morui-radius-medium)}.rounded-t-small{border-top-left-radius:var(--morui-radius-small);border-top-right-radius:var(--morui-radius-small)}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-3{border-width:3px}.border-medium{border-width:var(--morui-border-width-medium)}.border-small{border-width:var(--morui-border-width-small)}.border-tiny{border-width:var(--morui-border-width-tiny)}.border-b{border-bottom-width:1px}.border-b-medium{border-bottom-width:var(--morui-border-width-medium)}.border-solid{border-style:solid}.border-dotted{border-style:dotted}.border-none,.data-\[menu-open\=true\]\:border-none[data-menu-open=true]{border-style:none}.\!border-danger{--tw-border-opacity:1!important;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))!important}.border-b-white{border-color:hsl(var(--morui-b-white)/var(--morui-b-white-opacity,var(--tw-border-opacity)))}.border-background{--tw-border-opacity:1;border-color:hsl(var(--morui-background)/var(--morui-background-opacity,var(--tw-border-opacity)))}.border-card-border{--tw-border-opacity:1;border-color:hsl(var(--morui-card-border)/var(--morui-card-border-opacity,var(--tw-border-opacity)))}.border-danger{--tw-border-opacity:1;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.border-default,.data-\[hover\=true\]\:border-default[data-hover=true],.hover\:border-default:hover{--tw-border-opacity:1;border-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-border-opacity)))}.border-default-200{--tw-border-opacity:1;border-color:hsl(var(--morui-default-200)/var(--morui-default-200-opacity,var(--tw-border-opacity)))}.border-default-300,.hover\:border-default-300:hover{--tw-border-opacity:1;border-color:hsl(var(--morui-default-300)/var(--morui-default-300-opacity,var(--tw-border-opacity)))}.border-default-600{--tw-border-opacity:1;border-color:hsl(var(--morui-default-600)/var(--morui-default-600-opacity,var(--tw-border-opacity)))}.border-divider{--tw-border-opacity:1;border-color:hsl(var(--morui-divider)/var(--morui-divider-opacity,var(--tw-border-opacity)))}.border-foreground{--tw-border-opacity:1;border-color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-border-opacity)))}.border-primary{--tw-border-opacity:1;border-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.border-secondary{--tw-border-opacity:1;border-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.border-success{--tw-border-opacity:1;border-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.border-transparent{border-color:#0000}.border-warning{--tw-border-opacity:1;border-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.border-l-transparent,.border-x-transparent{border-left-color:#0000}.border-r-transparent,.border-x-transparent{border-right-color:#0000}.border-y-transparent{border-bottom-color:#0000;border-top-color:#0000}.border-b-current{border-bottom-color:initial}.border-b-danger{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.border-b-default{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-border-opacity)))}.border-b-foreground{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-border-opacity)))}.border-b-primary{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.border-b-secondary{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.border-b-success{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.border-b-warning{--tw-border-opacity:1;border-bottom-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.border-b-white{--tw-border-opacity:1;border-bottom-color:rgb(255 255 255/var(--tw-border-opacity))}.border-s-danger{--tw-border-opacity:1;border-inline-start-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.border-s-foreground{--tw-border-opacity:1;border-inline-start-color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-border-opacity)))}.border-s-primary{--tw-border-opacity:1;border-inline-start-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.border-s-secondary{--tw-border-opacity:1;border-inline-start-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.border-s-success{--tw-border-opacity:1;border-inline-start-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.border-s-warning{--tw-border-opacity:1;border-inline-start-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.border-t-transparent{border-top-color:#0000}.\!bg-\[\#21231C\]{--tw-bg-opacity:1!important;background-color:rgb(33 35 28/var(--tw-bg-opacity))!important}.bg-\[\#7D68FF\]{--tw-bg-opacity:1;background-color:rgb(125 104 255/var(--tw-bg-opacity))}.bg-\[\#ffffff1a\]{background-color:#ffffff1a}.bg-background{--tw-bg-opacity:1;background-color:hsl(var(--morui-background)/var(--morui-background-opacity,var(--tw-bg-opacity)))}.bg-background\/10{background-color:hsl(var(--morui-background)/.1)}.bg-background\/70{background-color:hsl(var(--morui-background)/.7)}.bg-background\/80{background-color:hsl(var(--morui-background)/.8)}.bg-card-background{--tw-bg-opacity:1;background-color:hsl(var(--morui-card-background)/var(--morui-card-background-opacity,var(--tw-bg-opacity)))}.bg-content1,.group.is-splitted .group-\[\.is-splitted\]\:bg-content1{--tw-bg-opacity:1;background-color:hsl(var(--morui-content1)/var(--morui-content1-opacity,var(--tw-bg-opacity)))}.bg-content3{--tw-bg-opacity:1;background-color:hsl(var(--morui-content3)/var(--morui-content3-opacity,var(--tw-bg-opacity)))}.bg-current{background-color:currentColor}.bg-danger,.data-\[active\=true\]\:bg-danger[data-active=true],.data-\[hover\=true\]\:bg-danger[data-hover=true],.data-\[in-range\=true\]\:bg-danger[data-in-range=true],.data-\[selected\=true\]\:bg-danger[data-selected=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-bg-opacity)))}.bg-danger-50,.group[data-focus=true] .group-data-\[focus\=true\]\:bg-danger-50{--tw-bg-opacity:1;background-color:hsl(var(--morui-danger-50)/var(--morui-danger-50-opacity,var(--tw-bg-opacity)))}.bg-danger\/20,.data-\[hover\=true\]\:bg-danger\/20[data-hover=true]{background-color:hsl(var(--morui-danger)/.2)}.bg-default,.data-\[hover\=true\]\:bg-default[data-hover=true],.data-\[selected\=true\]\:bg-default[data-selected=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-bg-opacity)))}.bg-default-100,.data-\[hover\=true\]\:bg-default-100[data-hover=true],.hover\:bg-default-100:hover{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-100)/var(--morui-default-100-opacity,var(--tw-bg-opacity)))}.\[\&\[data-hover\=true\]\:not\(\[data-active\=true\]\)\]\:bg-default-200[data-hover=true]:not([data-active=true]),.active\:bg-default-200:active,.bg-default-200,.data-\[hover\=true\]\:bg-default-200[data-hover=true],.data-\[in-range\=false\]\:bg-default-200[data-in-range=false]{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-200)/var(--morui-default-200-opacity,var(--tw-bg-opacity)))}.bg-default-300\/50{background-color:hsl(var(--morui-default-300)/.5)}.bg-default-400,.data-\[active\=true\]\:bg-default-400[data-active=true],.group[data-selected=true] .group-data-\[selected\=true\]\:bg-default-400{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-400)/var(--morui-default-400-opacity,var(--tw-bg-opacity)))}.bg-default-50{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-50)/var(--morui-default-50-opacity,var(--tw-bg-opacity)))}.bg-default-500{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-500)/var(--morui-default-500-opacity,var(--tw-bg-opacity)))}.bg-default\/40,.data-\[hover\=true\]\:bg-default\/40[data-hover=true]{background-color:hsl(var(--morui-default)/.4)}.bg-divider{--tw-bg-opacity:1;background-color:hsl(var(--morui-divider)/var(--morui-divider-opacity,var(--tw-bg-opacity)))}.bg-foreground,.data-\[in-range\=true\]\:bg-foreground[data-in-range=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-bg-opacity)))}.bg-foreground\/10{background-color:hsl(var(--morui-foreground)/.1)}.bg-overlay\/30{background-color:hsl(var(--morui-overlay)/.3)}.bg-overlay\/50{background-color:hsl(var(--morui-overlay)/.5)}.bg-primary,.data-\[active\=true\]\:bg-primary[data-active=true],.data-\[hover\=true\]\:bg-primary[data-hover=true],.data-\[in-range\=true\]\:bg-primary[data-in-range=true],.data-\[selected\=true\]\:bg-primary[data-selected=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-bg-opacity)))}.bg-primary-50,.group[data-focus=true] .group-data-\[focus\=true\]\:bg-primary-50{--tw-bg-opacity:1;background-color:hsl(var(--morui-primary-50)/var(--morui-primary-50-opacity,var(--tw-bg-opacity)))}.bg-primary\/20,.data-\[hover\=true\]\:bg-primary\/20[data-hover=true]{background-color:hsl(var(--morui-primary)/.2)}.bg-secondary,.data-\[active\=true\]\:bg-secondary[data-active=true],.data-\[hover\=true\]\:bg-secondary[data-hover=true],.data-\[in-range\=true\]\:bg-secondary[data-in-range=true],.data-\[selected\=true\]\:bg-secondary[data-selected=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-bg-opacity)))}.bg-secondary-50,.group[data-focus=true] .group-data-\[focus\=true\]\:bg-secondary-50{--tw-bg-opacity:1;background-color:hsl(var(--morui-secondary-50)/var(--morui-secondary-50-opacity,var(--tw-bg-opacity)))}.bg-secondary\/20,.data-\[hover\=true\]\:bg-secondary\/20[data-hover=true]{background-color:hsl(var(--morui-secondary)/.2)}.bg-success,.data-\[active\=true\]\:bg-success[data-active=true],.data-\[hover\=true\]\:bg-success[data-hover=true],.data-\[in-range\=true\]\:bg-success[data-in-range=true],.data-\[selected\=true\]\:bg-success[data-selected=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-bg-opacity)))}.bg-success-50,.group[data-focus=true] .group-data-\[focus\=true\]\:bg-success-50{--tw-bg-opacity:1;background-color:hsl(var(--morui-success-50)/var(--morui-success-50-opacity,var(--tw-bg-opacity)))}.bg-success\/20,.data-\[hover\=true\]\:bg-success\/20[data-hover=true]{background-color:hsl(var(--morui-success)/.2)}.bg-transparent,.data-\[hover\=true\]\:bg-transparent[data-hover=true]{background-color:initial}.bg-warning,.data-\[active\=true\]\:bg-warning[data-active=true],.data-\[hover\=true\]\:bg-warning[data-hover=true],.data-\[in-range\=true\]\:bg-warning[data-in-range=true],.data-\[selected\=true\]\:bg-warning[data-selected=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-bg-opacity)))}.bg-warning-50,.group[data-focus=true] .group-data-\[focus\=true\]\:bg-warning-50{--tw-bg-opacity:1;background-color:hsl(var(--morui-warning-50)/var(--morui-warning-50-opacity,var(--tw-bg-opacity)))}.bg-warning\/20,.data-\[hover\=true\]\:bg-warning\/20[data-hover=true]{background-color:hsl(var(--morui-warning)/.2)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-blue-gradient{background-image:linear-gradient(90deg,#4f60ff -7.22%,#8762f3 131.45%)}.bg-btn-bg{background-image:linear-gradient(269deg,#bffd3e -10.85%,#40f0c1 98.88%)}.bg-card-bg{background-image:linear-gradient(103deg,#47f1bb 6.5%,#81f77f 95.85%)}.bg-circle-bg{background-image:linear-gradient(270deg,#73f58f,#40f0c1)}.bg-gray-gradient{background-image:linear-gradient(139deg,#1f2822 .81%,#0e1411 97.62%)}.bg-green-gradient{background-image:linear-gradient(84deg,#40f0c1 10.08%,#bffd3e 161.38%)}.bg-green2-gradient{background-image:linear-gradient(85deg,#40f0c1 22.5%,#bffd3e 236.7%)}.bg-stripe-gradient{background-image:linear-gradient(45deg,#0000001a 25%,#0000 0,#0000 50%,#0000001a 0,#0000001a 75%,#0000 0,#0000)}.bg-\[length\:1\.25rem_1\.25rem\]{background-size:1.25rem 1.25rem}.stroke-current{stroke:currentColor}.stroke-default-300\/50{stroke:hsl(var(--morui-default-300)/.5)}.object-cover{object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.group.is-splitted .group-\[\.is-splitted\]\:px-4,.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-unit-0{padding-left:var(--morui-spacing-unit-0);padding-right:var(--morui-spacing-unit-0)}.px-unit-3{padding-left:var(--morui-spacing-unit-3);padding-right:var(--morui-spacing-unit-3)}.px-unit-4{padding-left:var(--morui-spacing-unit-4);padding-right:var(--morui-spacing-unit-4)}.px-unit-6{padding-left:var(--morui-spacing-unit-6);padding-right:var(--morui-spacing-unit-6)}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.data-\[has-title\=true\]\:pt-1[data-has-title=true],.py-1{padding-top:.25rem}.py-1{padding-bottom:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-8{padding-bottom:2rem}.pe-2{padding-inline-end:.5rem}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-6{padding-right:1.5rem}.group[data-has-helper=true] .group-data-\[has-helper\=true\]\:pt-2,.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-denim{font-family:Denim INK,ui-sans-serif}.text-\[0\.55rem\]{font-size:.55rem}.text-\[0\.5rem\]{font-size:.5rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[48px\]{font-size:48px}.text-\[59px\]{font-size:59px}.text-large{font-size:var(--morui-font-size-large);line-height:var(--morui-line-height-large)}.text-medium{font-size:var(--morui-font-size-medium);line-height:var(--morui-line-height-medium)}.text-small{font-size:var(--morui-font-size-small);line-height:var(--morui-line-height-small)}.text-tiny{font-size:var(--morui-font-size-tiny);line-height:var(--morui-line-height-tiny)}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:var(--morui-font-weight-medium)}.font-normal{font-weight:400}.data-\[active\=true\]\:font-semibold[data-active=true],.font-semibold{font-weight:600}.leading-\[20px\]{line-height:20px}.leading-\[59px\]{line-height:59px}.leading-\[70px\]{line-height:70px}.\!text-danger{--tw-text-opacity:1!important;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)))!important}.text-\[\#AEDFE0\]{--tw-text-opacity:1;color:rgb(174 223 224/var(--tw-text-opacity))}.text-\[\#FFFFFF0a\]{color:#ffffff0a}.text-\[\#FFFFFF66\]{color:#fff6}.text-\[\#FFF\],.text-\[\#fff\],.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-b-white{--tw-text-opacity:1;color:hsl(var(--morui-b-white)/var(--morui-b-white-opacity,var(--tw-text-opacity)))}.text-background{--tw-text-opacity:1;color:hsl(var(--morui-background)/var(--morui-background-opacity,var(--tw-text-opacity)))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.hover\:text-brand:hover,.text-brand{--tw-text-opacity:1;color:hsl(var(--morui-brand)/var(--morui-brand-opacity,var(--tw-text-opacity)))}.text-card-text{--tw-text-opacity:1;color:hsl(var(--morui-card-text)/var(--morui-card-text-opacity,var(--tw-text-opacity)))}.group:hover .group-hover\:text-current,.text-current{color:currentColor}.text-danger{--tw-text-opacity:1;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)))}.text-danger-300{--tw-text-opacity:1;color:hsl(var(--morui-danger-300)/var(--morui-danger-300-opacity,var(--tw-text-opacity)))}.data-\[active\=true\]\:text-danger-foreground[data-active=true],.data-\[hover\=true\]\:text-danger-foreground[data-hover=true],.data-\[selected\=true\]\:text-danger-foreground[data-selected=true],.text-danger-foreground{--tw-text-opacity:1;color:hsl(var(--morui-danger-foreground)/var(--morui-danger-foreground-opacity,var(--tw-text-opacity)))}.text-danger\/80{color:hsl(var(--morui-danger)/.8)}.text-default-400{--tw-text-opacity:1;color:hsl(var(--morui-default-400)/var(--morui-default-400-opacity,var(--tw-text-opacity)))}.data-\[hover\=true\]\:text-default-500[data-hover=true],.text-default-500{--tw-text-opacity:1;color:hsl(var(--morui-default-500)/var(--morui-default-500-opacity,var(--tw-text-opacity)))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:text-default-600,.group[data-filled=true] .group-data-\[filled\=true\]\:text-default-600,.text-default-600{--tw-text-opacity:1;color:hsl(var(--morui-default-600)/var(--morui-default-600-opacity,var(--tw-text-opacity)))}.data-\[active\=true\]\:text-default-foreground[data-active=true],.data-\[hover\=true\]\:text-default-foreground[data-hover=true],.data-\[selected\=true\]\:text-default-foreground[data-selected=true],.text-default-foreground{--tw-text-opacity:1;color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,var(--tw-text-opacity)))}.text-desc-1{--tw-text-opacity:1;color:hsl(var(--morui-desc-1)/var(--morui-desc-1-opacity,var(--tw-text-opacity)))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:text-foreground,.group[data-filled=true] .group-data-\[filled\=true\]\:text-foreground,.group[data-has-value=true] .group-data-\[has-value\=true\]\:text-foreground,.group[data-selected=true] .group-data-\[selected\=true\]\:text-foreground,.text-foreground{--tw-text-opacity:1;color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-text-opacity)))}.data-\[hover\=true\]\:text-foreground-400[data-hover=true],.text-foreground-400{--tw-text-opacity:1;color:hsl(var(--morui-foreground-400)/var(--morui-foreground-400-opacity,var(--tw-text-opacity)))}.text-foreground-500{--tw-text-opacity:1;color:hsl(var(--morui-foreground-500)/var(--morui-foreground-500-opacity,var(--tw-text-opacity)))}.text-foreground-600{--tw-text-opacity:1;color:hsl(var(--morui-foreground-600)/var(--morui-foreground-600-opacity,var(--tw-text-opacity)))}.text-foreground\/50{color:hsl(var(--morui-foreground)/.5)}.text-inherit{color:inherit}.text-primary{--tw-text-opacity:1;color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-text-opacity)))}.data-\[active\=true\]\:text-primary-foreground[data-active=true],.data-\[hover\=true\]\:text-primary-foreground[data-hover=true],.data-\[selected\=true\]\:text-primary-foreground[data-selected=true],.text-primary-foreground{--tw-text-opacity:1;color:hsl(var(--morui-primary-foreground)/var(--morui-primary-foreground-opacity,var(--tw-text-opacity)))}.text-primary\/80{color:hsl(var(--morui-primary)/.8)}.text-secondary{--tw-text-opacity:1;color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-text-opacity)))}.data-\[active\=true\]\:text-secondary-foreground[data-active=true],.data-\[hover\=true\]\:text-secondary-foreground[data-hover=true],.data-\[selected\=true\]\:text-secondary-foreground[data-selected=true],.hover\:text-secondary-foreground:hover,.text-secondary-foreground{--tw-text-opacity:1;color:hsl(var(--morui-secondary-foreground)/var(--morui-secondary-foreground-opacity,var(--tw-text-opacity)))}.text-secondary\/80{color:hsl(var(--morui-secondary)/.8)}.data-\[hover\=true\]\:text-success[data-hover=true],.text-success{--tw-text-opacity:1;color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-text-opacity)))}.text-success-600{--tw-text-opacity:1;color:hsl(var(--morui-success-600)/var(--morui-success-600-opacity,var(--tw-text-opacity)))}.data-\[active\=true\]\:text-success-foreground[data-active=true],.data-\[hover\=true\]\:text-success-foreground[data-hover=true],.data-\[selected\=true\]\:text-success-foreground[data-selected=true],.text-success-foreground{--tw-text-opacity:1;color:hsl(var(--morui-success-foreground)/var(--morui-success-foreground-opacity,var(--tw-text-opacity)))}.text-success\/80{color:hsl(var(--morui-success)/.8)}.data-\[hover\=true\]\:text-warning[data-hover=true],.text-warning{--tw-text-opacity:1;color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-text-opacity)))}.text-warning-600{--tw-text-opacity:1;color:hsl(var(--morui-warning-600)/var(--morui-warning-600-opacity,var(--tw-text-opacity)))}.data-\[active\=true\]\:text-warning-foreground[data-active=true],.data-\[hover\=true\]\:text-warning-foreground[data-hover=true],.data-\[selected\=true\]\:text-warning-foreground[data-selected=true],.text-warning-foreground{--tw-text-opacity:1;color:hsl(var(--morui-warning-foreground)/var(--morui-warning-foreground-opacity,var(--tw-text-opacity)))}.text-warning\/80{color:hsl(var(--morui-warning)/.8)}.active\:underline:active,.focus\:underline:focus,.hover\:underline:hover,.underline{text-decoration-line:underline}.hover\:no-underline:hover,.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.data-\[invisible\=true\]\:opacity-0[data-invisible=true],.group[data-copied=true] .group-data-\[copied\=true\]\:opacity-0,.group[data-selected=true] .group-data-\[selected\=true\]\:opacity-0,.opacity-0{opacity:0}.data-\[in-range\=true\]\:opacity-100[data-in-range=true],.data-\[loaded\=true\]\:opacity-100[data-loaded=true],.data-\[moving\]\:opacity-100[data-moving],.data-\[visible\=true\]\:opacity-100[data-visible=true],.footerLogoLink_DDai:hover,.group[data-copied=true] .group-data-\[copied\=true\]\:opacity-100,.group[data-hover=true] .group-data-\[hover\=true\]\:opacity-100,.group[data-loaded=true] .group-data-\[loaded\=true\]\:opacity-100,.group[data-selected=true] .group-data-\[selected\=true\]\:opacity-100,.hash-link:focus,.hover\:opacity-100:hover,.opacity-100,:hover>.hash-link{opacity:1}.data-\[disabled\=true\]\:opacity-30[data-disabled=true],.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-\[value\]{opacity:value}.active\:opacity-disabled:active,.data-\[hover-unselected\=true\]\:opacity-disabled[data-hover-unselected=true],.opacity-disabled{opacity:var(--morui-disabled-opacity)}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.after\:shadow-\[0_1px_0px_0_rgba\(0\2c 0\2c 0\2c 0\.05\)\]:after,.shadow-\[0_1px_0px_0_rgba\(0\2c 0\2c 0\2c 0\.05\)\]{--tw-shadow:0 1px 0px 0 #0000000d;--tw-shadow-colored:0 1px 0px 0 var(--tw-shadow-color)}.shadow-large{--tw-shadow:var(--morui-box-shadow-large);--tw-shadow-colored:var(--morui-box-shadow-large)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.group.is-splitted .group-\[\.is-splitted\]\:shadow-medium,.shadow-medium{--tw-shadow:var(--morui-box-shadow-medium);--tw-shadow-colored:var(--morui-box-shadow-medium)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.\[\&\>tr\]\:first\:shadow-small:first-child>tr,.shadow-small{--tw-shadow:var(--morui-box-shadow-small);--tw-shadow-colored:var(--morui-box-shadow-small)}.shadow-black\/5{--tw-shadow-color:#0000000d;--tw-shadow:var(--tw-shadow-colored)}.data-\[active\=true\]\:shadow-danger\/40[data-active=true],.shadow-danger\/40{--tw-shadow-color:hsl(var(--morui-danger)/0.4);--tw-shadow:var(--tw-shadow-colored)}.data-\[active\=true\]\:shadow-default\/50[data-active=true],.data-\[hover\=true\]\:shadow-default\/50[data-hover=true],.shadow-default\/50{--tw-shadow-color:hsl(var(--morui-default)/0.5);--tw-shadow:var(--tw-shadow-colored)}.shadow-foreground\/40{--tw-shadow-color:hsl(var(--morui-foreground)/0.4);--tw-shadow:var(--tw-shadow-colored)}.data-\[active\=true\]\:shadow-primary\/40[data-active=true],.shadow-primary\/40{--tw-shadow-color:hsl(var(--morui-primary)/0.4);--tw-shadow:var(--tw-shadow-colored)}.data-\[active\=true\]\:shadow-secondary\/40[data-active=true],.shadow-secondary\/40{--tw-shadow-color:hsl(var(--morui-secondary)/0.4);--tw-shadow:var(--tw-shadow-colored)}.data-\[active\=true\]\:shadow-success\/40[data-active=true],.shadow-success\/40{--tw-shadow-color:hsl(var(--morui-success)/0.4);--tw-shadow:var(--tw-shadow-colored)}.data-\[active\=true\]\:shadow-warning\/40[data-active=true],.shadow-warning\/40{--tw-shadow-color:hsl(var(--morui-warning)/0.4);--tw-shadow:var(--tw-shadow-colored)}.after\:shadow-small:after,.before\:shadow-small:before{--tw-shadow:var(--morui-box-shadow-small);--tw-shadow-colored:var(--morui-box-shadow-small)}.\!outline-none{outline:#0000 solid 2px!important;outline-offset:2px!important}.outline-none{outline:#0000 solid 2px;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:ring-2,.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-background{--tw-ring-color:hsl(var(--morui-background)/var(--morui-background-opacity,var(--tw-ring-opacity)))}.ring-danger{--tw-ring-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-ring-opacity)))}.ring-default{--tw-ring-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-ring-opacity)))}.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:ring-focus,.ring-focus{--tw-ring-opacity:1;--tw-ring-color:hsl(var(--morui-focus)/var(--morui-focus-opacity,var(--tw-ring-opacity)))}.ring-primary{--tw-ring-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-ring-opacity)))}.ring-secondary{--tw-ring-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-ring-opacity)))}.ring-success{--tw-ring-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-ring-opacity)))}.ring-transparent{--tw-ring-color:#0000}.ring-warning{--tw-ring-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-ring-opacity)))}.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:ring-offset-2,.ring-offset-2{--tw-ring-offset-width:2px}.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:ring-offset-background,.ring-offset-background{--tw-ring-offset-color:hsl(var(--morui-background)/var(--morui-background-opacity,1))}.blur{--tw-blur:blur(8px)}.blur,.blur-lg,.filter,.saturate-150{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-lg{--tw-blur:blur(16px)}.saturate-150{--tw-saturate:saturate(1.5)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-lg,.backdrop-blur-md,.backdrop-blur-sm,.backdrop-blur-xl,.backdrop-filter,.backdrop-opacity-disabled,.backdrop-saturate-150{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.backdrop-opacity-disabled{--tw-backdrop-opacity:opacity(var(--morui-disabled-opacity))}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(1.5)}.\!transition-none{transition-property:none!important}.transition-\[transform\2c color\2c left\2c opacity\]{transition-property:transform,color,left,opacity}.transition-\[transform\2c color\2c left\2c opacity\],.transition-all,.transition-colors{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-none{transition-property:none}.\!duration-100{transition-duration:.1s!important}.\!duration-150{transition-duration:.15s!important}.\!duration-200{transition-duration:.2s!important}.\!duration-300{transition-duration:.3s!important}.\!duration-500{transition-duration:.5s!important}.duration-150{transition-duration:.15s}.\!ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)!important}.\!ease-soft-spring{transition-timing-function:cubic-bezier(.155,1.105,.295,1.12)!important}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.data-\[moving\=true\]\:transition-transform[data-moving=true],.transition,.transition-all,.transition-background,.transition-colors-opacity,.transition-height,.transition-left,.transition-opacity,.transition-shadow,.transition-size,.transition-transform,.transition-transform-background,.transition-transform-colors,.transition-transform-colors-opacity,.transition-transform-opacity,.transition-width{transition-duration:.25s;transition-timing-function:ease}.will-change-auto{will-change:auto}.will-change-transform{will-change:transform}.light,:root,[data-theme=light]{--morui-title-1:72 3% 39%;--morui-title-2:0 0% 35%;--morui-reminder-4:218 11% 81%;--morui-bg:0 0% 100%;--morui-bg-assist:216 22% 95%;--morui-divider:220 13% 95%;--morui-tag:166 65% 91%;--morui-tag-bg:220 23% 97%;--morui-tag-hover:220 17% 14%;--morui-frontend:0 0% 100%;--morui-card:0 0% 96%;--morui-b-black:0 0% 100%;--morui-b-white:0 0% 0%;--morui-line:0 0% 92%;--morui-warning-light:25 89% 50%;--morui-warning-50:55 92% 95%;--morui-warning-100:37 91% 91%;--morui-warning-200:37 91% 82%;--morui-warning-300:37 91% 73%;--morui-warning-400:37 91% 64%;--morui-warning-500:37 91% 55%;--morui-warning-600:37 74% 44%;--morui-warning-700:37 74% 33%;--morui-warning-800:37 75% 22%;--morui-warning-900:37 75% 11%;--morui-btn-bg-disable:222 13% 84%;--morui-btn-text-disable:200 43% 99%;--morui-icon-fill:212 11% 47%;--morui-icon-bg:210 16% 13%;--morui-background:0 0% 100%;--morui-foreground-50:0 0% 98%;--morui-foreground-100:240 5% 96%;--morui-foreground-200:240 6% 90%;--morui-foreground-300:216 22% 95%;--morui-foreground-400:240 5% 65%;--morui-foreground-500:240 4% 46%;--morui-foreground-600:0 0% 40%;--morui-foreground-700:217 20% 17%;--morui-foreground-800:240 4% 16%;--morui-foreground-900:240 6% 10%;--morui-foreground:202 24% 9%;--morui-content1:0 0% 100%;--morui-content1-foreground:202 24% 9%;--morui-content2:240 5% 96%;--morui-content2-foreground:240 4% 16%;--morui-content3:240 6% 90%;--morui-content3-foreground:217 20% 17%;--morui-content4:216 22% 95%;--morui-content4-foreground:0 0% 40%;--morui-default-50:0 0% 98%;--morui-default-100:240 5% 96%;--morui-default-200:240 6% 90%;--morui-default-300:216 22% 95%;--morui-default-400:240 5% 65%;--morui-default-500:0 0% 10%;--morui-default-600:0 0% 60%;--morui-default-700:217 20% 17%;--morui-default-800:240 4% 16%;--morui-default-900:240 6% 10%;--morui-default-foreground:0 0% 0%;--morui-primary-50:213 92% 95%;--morui-primary-100:212 92% 90%;--morui-primary-200:212 92% 79%;--morui-primary-300:212 92% 69%;--morui-primary-400:212 92% 58%;--morui-primary-500:216 100% 50%;--morui-primary-600:223 99% 47%;--morui-primary-700:212 100% 29%;--morui-primary-800:212 100% 19%;--morui-primary-900:212 100% 10%;--morui-primary-foreground:0 0% 100%;--morui-secondary-50:270 62% 95%;--morui-secondary-100:270 59% 89%;--morui-secondary-200:270 59% 79%;--morui-secondary-300:270 59% 68%;--morui-secondary-400:270 59% 58%;--morui-secondary-500:270 67% 47%;--morui-secondary-600:270 67% 38%;--morui-secondary-700:270 67% 28%;--morui-secondary-800:270 67% 19%;--morui-secondary-900:270 67% 9%;--morui-secondary:270 67% 47%;--morui-success-50:147 64% 95%;--morui-success-100:146 61% 89%;--morui-success-200:146 62% 77%;--morui-success-300:146 63% 66%;--morui-success-400:146 62% 55%;--morui-success-500:158 58% 50%;--morui-success-600:146 80% 35%;--morui-success-700:146 79% 26%;--morui-success-800:146 80% 17%;--morui-success-900:146 78% 9%;--morui-danger-50:339 92% 95%;--morui-danger-100:340 92% 90%;--morui-danger-200:339 90% 80%;--morui-danger-300:339 91% 71%;--morui-danger-400:339 90% 61%;--morui-danger-500:338 98% 54%;--morui-danger-600:339 87% 41%;--morui-danger-700:339 86% 31%;--morui-danger-800:339 87% 20%;--morui-danger-900:340 85% 10%;--morui-title:0 0% 100%;--morui-red:349 90% 60%;--morui-card-background:108 24% 96%;--morui-card-text:77 11% 12%;--morui-card-border:113 100% 26%;--morui-red-aid:350 90% 92%;--morui-green-aid:166 65% 91%;--morui-yellow-aid:36 91% 91%;--morui-purple-aid:248 100% 94%;--morui-title-3:0 0% 10%;--morui-desc-2:0 0% 85%;--morui-border-card:0 0% 100%;--morui-border-0:0 0% 60%;--morui-border-1:0 0% 75%;--morui-border-2:0 0% 92%;--morui-border-3:0 0% 35%;--morui-bg-img:0 0% 75%;--morui-box-shadow-small:0px 3px 6px 0px #0003;--morui-box-shadow-medium:0px 0px 15px 0px #00000008,0px 2px 30px 0px #00000014,0px 0px 1px 0px #0000004d;--morui-box-shadow-large:0px 0px 30px 0px #0000000a,0px 30px 60px 0px #0000001f,0px 0px 1px 0px #0000004d;--morui-hover-opacity:.8;color-scheme:light}.dark,[data-theme=dark]{--morui-title-1:90 1% 74%;--morui-title-2:0 0% 80%;--morui-reminder-4:216 15% 36%;--morui-bg:0 0% 0%;--morui-bg-assist:0 0% 20%;--morui-divider:0 0% 40%;--morui-tag:145 42% 10%;--morui-tag-bg:219 20% 19%;--morui-tag-hover:220 23% 97%;--morui-frontend:220 18% 10%;--morui-card:0 0% 10%;--morui-b-black:0 0% 0%;--morui-b-white:0 0% 100%;--morui-line:0 0% 20%;--morui-warning-light:25 89% 62%;--morui-warning-50:37 75% 11%;--morui-warning-100:37 75% 22%;--morui-warning-200:37 74% 33%;--morui-warning-300:37 74% 44%;--morui-warning-400:37 91% 55%;--morui-warning-500:37 91% 64%;--morui-warning-600:37 91% 73%;--morui-warning-700:37 91% 82%;--morui-warning-800:37 91% 91%;--morui-warning-900:55 92% 95%;--morui-btn-bg-disable:215 34% 23%;--morui-btn-text-disable:212 9% 62%;--morui-icon-fill:220 10% 69%;--morui-icon-bg:200 43% 99%;--morui-background:0 0% 0%;--morui-foreground-50:240 6% 10%;--morui-foreground-100:240 4% 16%;--morui-foreground-200:217 20% 17%;--morui-foreground-300:0 0% 40%;--morui-foreground-400:240 4% 46%;--morui-foreground-500:240 5% 65%;--morui-foreground-600:216 22% 95%;--morui-foreground-700:240 6% 90%;--morui-foreground-800:240 5% 96%;--morui-foreground-900:0 0% 98%;--morui-foreground:210 6% 93%;--morui-content1:240 6% 10%;--morui-content1-foreground:0 0% 98%;--morui-content2:240 4% 16%;--morui-content2-foreground:240 5% 96%;--morui-content3:217 20% 17%;--morui-content3-foreground:240 6% 90%;--morui-content4:0 0% 40%;--morui-content4-foreground:216 22% 95%;--morui-default-50:240 6% 10%;--morui-default-100:240 4% 16%;--morui-default-200:217 20% 17%;--morui-default-300:0 0% 40%;--morui-default-400:240 4% 46%;--morui-default-500:0 0% 80%;--morui-default-600:0 0% 80%;--morui-default-700:240 6% 90%;--morui-default-800:240 5% 96%;--morui-default-900:0 0% 98%;--morui-default-foreground:0 0% 100%;--morui-primary-50:212 100% 10%;--morui-primary-100:212 100% 19%;--morui-primary-200:212 100% 29%;--morui-primary-300:223 99% 47%;--morui-primary-400:216 100% 50%;--morui-primary-500:212 92% 58%;--morui-primary-600:212 92% 69%;--morui-primary-700:212 92% 79%;--morui-primary-800:212 92% 90%;--morui-primary-900:213 92% 95%;--morui-primary-foreground:0 0% 0%;--morui-secondary-50:270 67% 9%;--morui-secondary-100:270 67% 19%;--morui-secondary-200:270 67% 28%;--morui-secondary-300:270 67% 38%;--morui-secondary-400:270 67% 47%;--morui-secondary-500:270 59% 58%;--morui-secondary-600:270 59% 68%;--morui-secondary-700:270 59% 79%;--morui-secondary-800:270 59% 89%;--morui-secondary-900:270 62% 95%;--morui-secondary:270 59% 58%;--morui-success-50:146 78% 9%;--morui-success-100:146 80% 17%;--morui-success-200:146 79% 26%;--morui-success-300:146 80% 35%;--morui-success-400:158 58% 50%;--morui-success-500:146 62% 55%;--morui-success-600:146 63% 66%;--morui-success-700:146 62% 77%;--morui-success-800:146 61% 89%;--morui-success-900:147 64% 95%;--morui-danger-50:340 85% 10%;--morui-danger-100:339 87% 20%;--morui-danger-200:339 86% 31%;--morui-danger-300:339 87% 41%;--morui-danger-400:338 98% 54%;--morui-danger-500:339 90% 61%;--morui-danger-600:339 91% 71%;--morui-danger-700:339 90% 80%;--morui-danger-800:340 92% 90%;--morui-danger-900:339 92% 95%;--morui-title:0 0% 0%;--morui-red:349 90% 56%;--morui-card-background:77 11% 12%;--morui-card-text:0 0% 100%;--morui-card-border:0 0% 100%;--morui-red-aid:349 59% 15%;--morui-green-aid:141 67% 14%;--morui-yellow-aid:36 79% 13%;--morui-purple-aid:247 42% 16%;--morui-title-3:0 0% 80%;--morui-desc-2:0 0% 30%;--morui-border-card:0 0% 60%;--morui-border-0:0 0% 20%;--morui-border-1:0 0% 40%;--morui-border-2:0 0% 20%;--morui-border-3:0 0% 80%;--morui-bg-img:0 0% 20%;--morui-nav:0 0% 82%;--morui-nav-hover:0 0% 100%;--morui-sub-nav:160 23% 97%;--morui-sub-nav-hover:0 0% 0%;--morui-sub-nav-bg:167 18% 10%;--morui-sub-nav-item-bg:164 85% 60%;--morui-desc-4:0 0% 60%;--morui-desc-3:0 0% 80%;--morui-content:0 0% 82%;--morui-icon-bg-for-green:0 0% 21%;--morui-text-color-for-green:0 0% 0%;--morui-base-color:163 100% 62%;--morui-box-shadow-small:0px 0px 5px 0px #0000000d,0px 2px 10px 0px #0003,inset 0px 0px 1px 0px #ffffff26;--morui-box-shadow-medium:0px 0px 15px 0px #0000000f,0px 2px 30px 0px #00000038,inset 0px 0px 1px 0px #ffffff26;--morui-box-shadow-large:0px 0px 30px 0px #00000012,0px 30px 60px 0px #00000042,inset 0px 0px 1px 0px #ffffff26;--morui-hover-opacity:.9;color-scheme:dark}.leading-inherit{line-height:inherit}.bg-img-inherit{background-image:inherit}.bg-clip-inherit{background-clip:inherit}.text-fill-inherit{-webkit-text-fill-color:inherit}.transition-all{transition-property:all}.transition-background{transition-property:background}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter}.data-\[hover\=true\]\:transition-colors[data-hover=true],.data-\[sortable\=true\]\:transition-colors[data-sortable=true],.transition-colors{transition-duration:.25s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:ease}.transition-opacity{transition-property:opacity}.transition-colors-opacity{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity}.transition-width{transition-property:width}.transition-height{transition-property:height}.transition-size{transition-property:width,height}.transition-left{transition-property:left}.transition-shadow{transition-property:box-shadow}.data-\[moving\=true\]\:transition-transform[data-moving=true],.transition-transform{transition-property:transform}.transition-transform-opacity{transition-property:transform,opacity}.transition-transform-background{transition-property:transform,background}.transition-transform-colors{transition-property:transform,color,background,background-color,border-color,text-decoration-color,fill,stroke}.transition-transform-colors-opacity{transition-property:transform,color,background,background-color,border-color,text-decoration-color,fill,stroke,opacity}.data-\[hide-scroll\=true\]\:scrollbar-hide[data-hide-scroll=true],.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-default{-ms-overflow-style:auto;scrollbar-width:auto}.scrollbar-default::-webkit-scrollbar{display:block}.\[--scale-enter\:100\%\]{--scale-enter:100%}.\[--scale-exit\:100\%\]{--scale-exit:100%}.\[--slide-enter\:0px\]{--slide-enter:0px}.\[--slide-exit\:80px\]{--slide-exit:80px}html body{font-family:InterDisplay\,Inter Variable}[data-theme=light]{--ifm-heading-color:#21231c;--ifm-color-gray-700:#21231c;--ifm-color-emphasis-600:#fff;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--ifm-footer-background-color:#fff;--ifm-color-emphasis-200:"#000000",--ifm-menu-color:"#21231C",--ifm-container-width-xl:1200px;--ifm-bg-color:#fff;--ifm-feature-h3-color:#1a1a1a;--ifm-feature-p-color:#595959;--border-hover-shadow:#0016091a}[data-theme=light] .navbar-sidebar__brand{background-color:#fff}[data-theme=dark]{--ifm-heading-color:#fff;--ifm-color-gray-300:#fff;--ifm-color-emphasis-600:#000;--docusaurus-highlighted-code-line-bg:#0000004d;--ifm-footer-background-color:#0a080f;--ifm-color-emphasis-200:"#fff",--ifm-menu-color:"#FFF",--ifm-container-width-xl:1200px;--ifm-bg-color:#000;--ifm-feature-h3-color:#f7f7f7;--ifm-feature-p-color:#ccc;--border-hover-shadow:#9bffc54d}.menu__link--active:not(.menu__link--sublist),.menu__link:hover,[data-theme=dark] .menu__list-item--collapsed .menu__link:hover,[data-theme=light] .menu__list-item--collapsed .menu__link:hover{color:#fff}.navbar.navbar--fixed-top{border-bottom:1px solid #dededd}[data-theme=dark] .navbar.navbar--fixed-top{border-bottom:1px solid #21231c}.menu__link.menu__link--sublist.menu__link--sublist-caret{font-size:16px;font-weight:600;margin-bottom:4px;margin-top:4px;padding-bottom:6px;padding-top:6px}.theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link,.theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link,.theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link{display:block;font-size:16px;font-weight:600;margin-bottom:4px;margin-top:4px;padding-bottom:6px;padding-top:6px}.theme-doc-sidebar-item-link-level-1.menu__list-item .menu__link{display:block;font-size:20px;font-weight:600;margin-bottom:4px;margin-top:4px;padding-bottom:6px;padding-top:6px}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.75}.footer__link-item,[data-theme=dark] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed .menu__link.menu__link--active,[data-theme=dark] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed .menu__link:hover,[data-theme=dark] .theme-doc-sidebar-item-category-level-1 .menu__list-item-collapsible .menu__link:hover,[data-theme=dark] .theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link.menu__link--active,[data-theme=dark] .theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link:hover,[data-theme=dark] .theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link.menu__link--active,[data-theme=dark] .theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link:hover,[data-theme=dark] .theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link.menu__link--active,[data-theme=dark] .theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link:hover,[data-theme=light] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed .menu__link.menu__link--active,[data-theme=light] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed .menu__link:hover,[data-theme=light] .theme-doc-sidebar-item-category-level-1 .menu__list-item-collapsible .menu__link:hover,[data-theme=light] .theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link.menu__link--active,[data-theme=light] .theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link:hover,[data-theme=light] .theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link.menu__link--active,[data-theme=light] .theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link:hover,[data-theme=light] .theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link.menu__link--active,[data-theme=light] .theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link:hover{color:#fff}[data-theme=dark] .menu__link.menu__link--sublist.menu__link--sublist-caret,[data-theme=dark] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed,[data-theme=dark] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed .menu__link,[data-theme=dark] .theme-doc-sidebar-item-category-level-1 .menu__list-item-collapsible,[data-theme=dark] .theme-doc-sidebar-item-link-level-2.menu__list-item,[data-theme=dark] .theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link,[data-theme=dark] .theme-doc-sidebar-item-link-level-3.menu__list-item,[data-theme=dark] .theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link,[data-theme=dark] .theme-doc-sidebar-item-link-level-4.menu__list-item,[data-theme=dark] .theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link{color:#bcbdbb}[data-theme=light] .menu__link.menu__link--sublist.menu__link--sublist-caret,[data-theme=light] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed,[data-theme=light] .theme-doc-sidebar-item-category-level-1 .menu__list-item--collapsed .menu__link,[data-theme=light] .theme-doc-sidebar-item-category-level-1 .menu__list-item-collapsible,[data-theme=light] .theme-doc-sidebar-item-link-level-2.menu__list-item,[data-theme=light] .theme-doc-sidebar-item-link-level-2.menu__list-item .menu__link,[data-theme=light] .theme-doc-sidebar-item-link-level-3.menu__list-item,[data-theme=light] .theme-doc-sidebar-item-link-level-3.menu__list-item .menu__link,[data-theme=light] .theme-doc-sidebar-item-link-level-4.menu__list-item,[data-theme=light] .theme-doc-sidebar-item-link-level-4.menu__list-item .menu__link{color:#646560}.footer__col:first-child,.footer__col:nth-child(2){flex:3}.footer__bottom{margin-top:48px}[data-theme=light] #__docusaurus{background-color:var(--ifm-bg-color)}[data-theme=light] .navbar{background:#fff;box-shadow:none}[data-theme=light] .footer{background-color:#fff!important;box-shadow:0 -10px 10px 0 #00000005!important}[data-theme=light] .theme-doc-sidebar-container{flex-shrink:0;gap:10px}[data-theme=light] .docSidebarContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-styles-module,[data-theme=light] .theme-doc-sidebar-container{background-color:#fff!important;border-right:none!important}[data-theme=dark] .darkToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module,[data-theme=light] .lightToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module{cursor:pointer!important;display:none!important}[data-theme=dark] .lightToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module,[data-theme=light] .darkToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module{cursor:pointer!important;display:block!important}[data-theme=light] .clean-btn.navbar-sidebar__close svg,[data-theme=light] .darkToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module svg{color:#000!important}[data-theme=dark] #__docusaurus{background-color:#000}[data-theme=dark] .navbar{background-color:#0a080fe6!important;box-shadow:none}.hero-banner,[data-theme=dark] .footer{background-color:#0a080f}[data-theme=dark] .theme-doc-sidebar-container{background-color:#0a080f;border-right:none!important}.menu__link .menu__link--sublist.menu__link--sublist-caret,.theme-doc-sidebar-item-link-level-2{font-size:16px;font-weight:600}.menu__caret:before,.menu__link--sublist-caret:after{height:13px;width:13px}[data-theme=dark] button.clean-btn svg:first-child,[data-theme=light] button.clean-btn[aria-live=polite] svg:nth-child(2){display:block!important}[data-theme=dark] button.clean-btn svg:nth-child(2),[data-theme=light] button.clean-btn[aria-live=polite] svg:first-child{display:none!important}.navbar__logo img{height:32px}[data-theme=dark] .morph-logo,[data-theme=light] .morph-logo{background-image:url(/assets/images/LogoMorphWhite-summary-dc9797d7eb85ed22d18a1cbda84342e5.svg);background-size:160px 25px;margin-left:-24px}.hero-banner{align-items:center;justify-content:center;margin:0;overflow:hidden;padding:0;position:relative;text-align:center}.header-bg{background-image:url(/assets/images/bg-5badadc4ca0a26b003becdf097ddbf12.svg);background-position:50%;background-repeat:no-repeat;background-size:auto 100%;height:110px;margin-top:-10px;padding-top:0}.features{padding-bottom:50px}.feature-a{border:1px solid rgba(33,35,30,.102);border-radius:0;color:var(--ifm-heading-color)!important;display:flex;text-decoration:none!important}.feature-a:hover{background:var(--ifm-footer-background-color);border:1px solid var(--ifm-color-primary);border-radius:0;box-shadow:0 0 40px 0 var(--border-hover-shadow)}.after\:shadow-\[0_1px_0px_0_rgba\(0\2c 0\2c 0\2c 0\.05\)\]:after,.after\:shadow-small:after,.before\:shadow-small:before,.data-\[active\=true\]\:shadow-md[data-active=true],.data-\[hover\=true\]\:shadow-lg[data-hover=true],.group.is-splitted .group-\[\.is-splitted\]\:shadow-medium{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}[data-theme=dark] .feature-a{border:1px solid #373933}.feature-h3{color:var(--ifm-feature-h3-color);font-size:32px;font-style:normal;font-weight:800;line-height:120%}.feature-p{color:var(--ifm-feature-p-color);font-size:20px;font-style:normal;font-weight:400;line-height:24px;margin-bottom:0;max-width:342px}.homepage-resource{color:--ifm-heading-color;text-align:center}.green-bg{background:linear-gradient(180deg,#a3fe76 -24.11%,#f2f7f2)}.yellow-bg{background:linear-gradient(180deg,#ffeb69 -24.11%,#f2f7f2)}.pink-bg{background:linear-gradient(180deg,#ffd6ef -24.11%,#f2f7f2)}.purple-bg{background:linear-gradient(180deg,#cdc5ff -24.11%,#f3f7f2)}.footer-bg{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTM2MCIgaGVpZ2h0PSI3MjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggb3BhY2l0eT0iLjEiIGQ9Ik0uNSA3MTkuNWgyODIuNTU2di03NS40ODNjMC0xLjExNSAxLjU5MS0xLjMxMiAxLjg2My0uMjMybDE1Ljk3MSA2My4zMjFoNjkwLjAyNXYtODAuNzY1YS45NDYuOTQ2IDAgMCAxIDEuMTIyLS45M2wzNjcuNDYzIDY5LjU1M1YuNUg5OTEuMjczdjgzLjAwNmEuOTQ3Ljk0NyAwIDAgMS0uODU4Ljk0Mkw0OTIuODkgMTMxLjI4Nmw0LjkzNSAxMDcuNTU1YS45NDUuOTQ1IDAgMCAxLS41MjYuODkxTC41IDQ4NS4zMDNWNzE5LjVaIiBzdHJva2U9IiNBRURGRTAiLz48L3N2Zz4=);background-position:5%;background-repeat:no-repeat;background-size:90% 90%}.placeholder\:text-danger::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)))}.placeholder\:text-foreground-500::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-foreground-500)/var(--morui-foreground-500-opacity,var(--tw-text-opacity)))}.placeholder\:text-primary::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-text-opacity)))}.placeholder\:text-secondary::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-text-opacity)))}.placeholder\:text-success-600::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-success-600)/var(--morui-success-600-opacity,var(--tw-text-opacity)))}.placeholder\:text-warning-600::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-warning-600)/var(--morui-warning-600-opacity,var(--tw-text-opacity)))}.after\:absolute:after,.before\:absolute:before{content:var(--tw-content);position:absolute}.after\:inset-0:after,.before\:inset-0:before{content:var(--tw-content);inset:0}.before\:z-0:before{content:var(--tw-content);z-index:0}.before\:z-\[-1\]:before{content:var(--tw-content);z-index:-1}.before\:box-border:before{box-sizing:border-box;content:var(--tw-content)}.after\:block:after,.before\:block:before,.data-\[arrow\=true\]\:before\:block[data-arrow=true]:before{content:var(--tw-content);display:block}.before\:hidden:before{content:var(--tw-content);display:none}.before\:h-0\.5:before{content:var(--tw-content);height:.125rem}.before\:h-11:before{content:var(--tw-content);height:2.75rem}.before\:h-2\.5:before{content:var(--tw-content);height:.625rem}.after\:h-px:after,.before\:h-px:before{content:var(--tw-content);height:1px}.after\:w-0:after,.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-11:before{content:var(--tw-content);width:2.75rem}.before\:w-2\.5:before{content:var(--tw-content);width:.625rem}.after\:w-6:after,.before\:w-6:before{content:var(--tw-content);width:1.5rem}.before\:-translate-x-full:before{--tw-translate-x:-100%}.after\:-translate-x-1\/2:after,.after\:rotate-0:after,.after\:scale-50:after,.after\:translate-y-1:after,.before\:-translate-x-full:before,.before\:-translate-y-1:before,.before\:rotate-0:before,.before\:rotate-45:before,.data-\[dragging\=true\]\:after\:scale-100[data-dragging=true]:after,.data-\[dragging\=true\]\:after\:scale-80[data-dragging=true]:after,.data-\[placement\=bottom\]\:before\:-translate-x-1\/2[data-placement=bottom]:before,.data-\[placement\=left\]\:before\:-translate-y-1\/2[data-placement=left]:before,.data-\[placement\=right\]\:before\:-translate-y-1\/2[data-placement=right]:before,.data-\[placement\=top\]\:before\:-translate-x-1\/2[data-placement=top]:before,.group[data-open=true] .group-data-\[open\=true\]\:after\:-rotate-45:after,.group[data-open=true] .group-data-\[open\=true\]\:after\:translate-y-0:after,.group[data-open=true] .group-data-\[open\=true\]\:before\:rotate-45:before,.group[data-open=true] .group-data-\[open\=true\]\:before\:translate-y-px:before{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:-translate-y-1:before{--tw-translate-y:-0.25rem}.before\:rotate-45:before,.group[data-open=true] .group-data-\[open\=true\]\:before\:rotate-45:before{--tw-rotate:45deg}@keyframes d{to{content:var(--tw-content);transform:translateX(100%)}}.before\:animate-\[shimmer_2s_infinite\]:before{animation:2s infinite d;content:var(--tw-content)}.after\:rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.5\)\]:after,.before\:rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.5\)\]:before{border-radius:calc(var(--morui-radius-medium)*.5);content:var(--tw-content)}.after\:rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.6\)\]:after,.before\:rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.6\)\]:before{border-radius:calc(var(--morui-radius-medium)*.6);content:var(--tw-content)}.after\:rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.7\)\]:after,.before\:rounded-\[calc\(theme\(borderRadius\.medium\)\*0\.7\)\]:before{border-radius:calc(var(--morui-radius-medium)*.7);content:var(--tw-content)}.after\:rounded-full:after,.before\:rounded-full:before{border-radius:9999px;content:var(--tw-content)}.after\:rounded-none:after,.before\:rounded-none:before,.group[data-middle=true] .group-data-\[middle\=true\]\:before\:rounded-none:before{border-radius:0;content:var(--tw-content)}.before\:rounded-sm:before{border-radius:.125rem;content:var(--tw-content)}.before\:border-2:before{border-width:2px;content:var(--tw-content)}.before\:border-t:before{border-top-width:1px;content:var(--tw-content)}.before\:border-solid:before{border-style:solid;content:var(--tw-content)}.before\:border-content4\/30:before{border-color:hsl(var(--morui-content4)/.3);content:var(--tw-content)}.before\:border-danger:before{--tw-border-opacity:1;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)));content:var(--tw-content)}.before\:border-default:before{--tw-border-opacity:1;border-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-border-opacity)));content:var(--tw-content)}.before\:bg-content1:before{--tw-bg-opacity:1;background-color:hsl(var(--morui-content1)/var(--morui-content1-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:bg-current:after,.before\:bg-current:before{background-color:currentColor;content:var(--tw-content)}.after\:bg-danger:after,.before\:bg-danger:before,.data-\[selected\=true\]\:after\:bg-danger[data-selected=true]:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.before\:bg-danger\/20:before,.hover\:after\:bg-danger\/20:hover:after{background-color:hsl(var(--morui-danger)/.2);content:var(--tw-content)}.before\:bg-default\/40:before{background-color:hsl(var(--morui-default)/.4);content:var(--tw-content)}.before\:bg-foreground:before,.data-\[selected\=true\]\:after\:bg-foreground[data-selected=true]:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:bg-primary:after,.before\:bg-primary:before,.data-\[selected\=true\]\:after\:bg-primary[data-selected=true]:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.before\:bg-primary\/20:before,.hover\:after\:bg-primary\/20:hover:after{background-color:hsl(var(--morui-primary)/.2);content:var(--tw-content)}.after\:bg-secondary:after,.before\:bg-secondary:before,.data-\[selected\=true\]\:after\:bg-secondary[data-selected=true]:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.before\:bg-secondary\/20:before,.hover\:after\:bg-secondary\/20:hover:after{background-color:hsl(var(--morui-secondary)/.2);content:var(--tw-content)}.after\:bg-success:after,.before\:bg-success:before,.data-\[selected\=true\]\:after\:bg-success[data-selected=true]:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.before\:bg-success\/20:before,.hover\:after\:bg-success\/20:hover:after{background-color:hsl(var(--morui-success)/.2);content:var(--tw-content)}.after\:bg-warning:after,.before\:bg-warning:before,.data-\[selected\=true\]\:after\:bg-warning[data-selected=true]:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.before\:bg-warning\/20:before,.hover\:after\:bg-warning\/20:hover:after{background-color:hsl(var(--morui-warning)/.2);content:var(--tw-content)}.before\:bg-gradient-to-r:before{background-image:linear-gradient(to right,var(--tw-gradient-stops));content:var(--tw-content)}.before\:from-transparent:before{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);content:var(--tw-content)}.before\:via-content4:before{--tw-gradient-to:hsl(var(--morui-content4)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--morui-content4)/var(--morui-content4-opacity,1)) var(--tw-gradient-via-position),var(--tw-gradient-to);content:var(--tw-content)}.before\:to-transparent:before{--tw-gradient-to:#0000 var(--tw-gradient-to-position);content:var(--tw-content)}.after\:opacity-0:after,.before\:opacity-0:before,.data-\[loaded\=true\]\:after\:opacity-0[data-loaded=true]:after,.data-\[loaded\=true\]\:before\:opacity-0[data-loaded=true]:before{content:var(--tw-content);opacity:0}.after\:opacity-100:after,.before\:opacity-100:before,.data-\[selected\=true\]\:after\:opacity-100[data-selected=true]:after,.data-\[selected\=true\]\:before\:opacity-100[data-selected=true]:before,.group[data-odd=true] .group-data-\[odd\=true\]\:before\:opacity-100:before,.group[data-selected=true] .group-data-\[selected\=true\]\:after\:opacity-100:after,.hover\:after\:opacity-100:hover:after{content:var(--tw-content);opacity:1}.before\:shadow-small:before{content:var(--tw-content)}.after\:transition-none:after,.before\:transition-none:before{content:var(--tw-content);transition-property:none}.before\:\!duration-300:before{content:var(--tw-content);transition-duration:.3s!important}.after\:duration-150:after,.before\:duration-150:before{content:var(--tw-content);transition-duration:.15s}.after\:transition-transform:after,.after\:transition-width:after,.before\:transition-colors:before,.before\:transition-opacity:before,.before\:transition-transform:before,.before\:transition-width:before{transition-duration:.25s;transition-timing-function:ease;content:var(--tw-content)}.after\:content-\[\'\'\]:after,.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.before\:transition-colors:before{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}.before\:transition-opacity:before{transition-property:opacity}.after\:transition-width:after,.before\:transition-width:before{transition-property:width}.after\:transition-transform:after,.before\:transition-transform:before{transition-property:transform}.after\:-bottom-1:after{bottom:-.25rem;content:var(--tw-content)}.after\:-bottom-\[2px\]:after{bottom:-2px;content:var(--tw-content)}.after\:bottom-0:after{bottom:0;content:var(--tw-content)}.after\:left-0:after{content:var(--tw-content);left:0}.after\:left-1\/2:after,.data-\[placement\=bottom\]\:before\:left-1\/2[data-placement=bottom]:before,.data-\[placement\=top\]\:before\:left-1\/2[data-placement=top]:before{content:var(--tw-content);left:50%}.after\:right-0:after{content:var(--tw-content);right:0}.after\:-z-10:after{content:var(--tw-content);z-index:-10}.after\:ml-0\.5:after{content:var(--tw-content);margin-left:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:h-5:after{content:var(--tw-content);height:1.25rem}.after\:h-\[2px\]:after{content:var(--tw-content);height:2px}.after\:h-divider:after{content:var(--tw-content);height:var(--morui-divider-weight)}.after\:h-full:after{content:var(--tw-content);height:100%}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:w-5:after{content:var(--tw-content);width:1.25rem}.after\:w-\[80\%\]:after{content:var(--tw-content);width:80%}.after\:w-full:after,.data-\[focus\=true\]\:after\:w-full[data-focus=true]:after,.data-\[open\=true\]\:after\:w-full[data-open=true]:after,.group[data-focus=true] .group-data-\[focus\=true\]\:after\:w-full:after,.group[data-selected=true] .group-data-\[selected\=true\]\:before\:w-full:before{content:var(--tw-content);width:100%}.after\:origin-center:after{content:var(--tw-content);transform-origin:center}.after\:rounded-\[calc\(theme\(borderRadius\.large\)\/2\)\]:after{border-radius:calc(var(--morui-radius-large)/2);content:var(--tw-content)}.after\:rounded-\[calc\(theme\(borderRadius\.medium\)\/3\)\]:after{border-radius:calc(var(--morui-radius-medium)/3);content:var(--tw-content)}.after\:rounded-\[calc\(theme\(borderRadius\.small\)\/3\)\]:after{border-radius:calc(var(--morui-radius-small)/3);content:var(--tw-content)}.after\:rounded-xl:after{border-radius:.75rem;content:var(--tw-content)}.first\:before\:rounded-l-lg:first-child:before,.first\:rounded-l-lg:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.after\:bg-background:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-background)/var(--morui-background-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:bg-content3:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-content3)/var(--morui-content3-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:bg-default:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:bg-default-foreground:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:bg-divider:after{--tw-bg-opacity:1;background-color:hsl(var(--morui-divider)/var(--morui-divider-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.after\:text-danger:after{--tw-text-opacity:1;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:text-danger-foreground:after{--tw-text-opacity:1;color:hsl(var(--morui-danger-foreground)/var(--morui-danger-foreground-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:text-default-foreground:after{--tw-text-opacity:1;color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:text-primary-foreground:after{--tw-text-opacity:1;color:hsl(var(--morui-primary-foreground)/var(--morui-primary-foreground-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:text-secondary-foreground:after{--tw-text-opacity:1;color:hsl(var(--morui-secondary-foreground)/var(--morui-secondary-foreground-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:text-success-foreground:after{--tw-text-opacity:1;color:hsl(var(--morui-success-foreground)/var(--morui-success-foreground-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:text-warning-foreground:after{--tw-text-opacity:1;color:hsl(var(--morui-warning-foreground)/var(--morui-warning-foreground-opacity,var(--tw-text-opacity)));content:var(--tw-content)}.after\:shadow-\[0_1px_0px_0_rgba\(0\2c 0\2c 0\2c 0\.05\)\]:after,.after\:shadow-small:after{content:var(--tw-content)}.after\:\!duration-200:after{content:var(--tw-content);transition-duration:.2s!important}.after\:\!ease-linear:after{content:var(--tw-content);transition-timing-function:linear!important}.after\:transition-all:after,.after\:transition-background:after,.after\:transition-transform-opacity:after{transition-duration:.25s;transition-timing-function:ease;content:var(--tw-content)}.after\:content-\[\'\*\'\]:after{--tw-content:"*";content:var(--tw-content)}.after\:transition-all:after{transition-property:all}.after\:transition-background:after{transition-property:background}.after\:transition-transform-opacity:after{transition-property:transform,opacity}.first\:rounded-s-full:first-child{border-end-start-radius:9999px;border-start-start-radius:9999px}.first\:rounded-s-large:first-child{border-end-start-radius:var(--morui-radius-large);border-start-start-radius:var(--morui-radius-large)}.first\:rounded-s-medium:first-child{border-end-start-radius:var(--morui-radius-medium);border-start-start-radius:var(--morui-radius-medium)}.first\:rounded-s-none:first-child{border-end-start-radius:0;border-start-start-radius:0}.first\:rounded-s-small:first-child{border-end-start-radius:var(--morui-radius-small);border-start-start-radius:var(--morui-radius-small)}.first\:before\:rounded-l-lg:first-child:before{content:var(--tw-content)}.last\:rounded-e-full:last-child{border-end-end-radius:9999px;border-start-end-radius:9999px}.last\:rounded-e-large:last-child{border-end-end-radius:var(--morui-radius-large);border-start-end-radius:var(--morui-radius-large)}.last\:rounded-e-medium:last-child{border-end-end-radius:var(--morui-radius-medium);border-start-end-radius:var(--morui-radius-medium)}.last\:rounded-e-none:last-child{border-end-end-radius:0;border-start-end-radius:0}.last\:rounded-e-small:last-child{border-end-end-radius:var(--morui-radius-small);border-start-end-radius:var(--morui-radius-small)}.last\:before\:rounded-r-lg:last-child:before,.last\:rounded-r-lg:last-child{border-bottom-right-radius:.5rem;border-top-right-radius:.5rem}.last\:before\:rounded-r-lg:last-child:before{content:var(--tw-content)}.focus-within\:border-danger:focus-within{--tw-border-opacity:1;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.focus-within\:border-primary:focus-within{--tw-border-opacity:1;border-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.focus-within\:border-secondary:focus-within{--tw-border-opacity:1;border-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.focus-within\:border-success:focus-within{--tw-border-opacity:1;border-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.focus-within\:border-warning:focus-within{--tw-border-opacity:1;border-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-\[\#14A800\]:hover{--tw-border-opacity:1;border-color:rgb(20 168 0/var(--tw-border-opacity))}.hover\:\!bg-danger:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-bg-opacity)))!important}.hover\:\!bg-default:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-bg-opacity)))!important}.hover\:\!bg-foreground:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-foreground)/var(--morui-foreground-opacity,var(--tw-bg-opacity)))!important}.hover\:\!bg-primary:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-bg-opacity)))!important}.hover\:\!bg-secondary:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-bg-opacity)))!important}.hover\:\!bg-success:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-bg-opacity)))!important}.hover\:\!bg-warning:hover{--tw-bg-opacity:1!important;background-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-bg-opacity)))!important}.hover\:\!text-danger-foreground:hover{--tw-text-opacity:1!important;color:hsl(var(--morui-danger-foreground)/var(--morui-danger-foreground-opacity,var(--tw-text-opacity)))!important}.hover\:\!text-primary-foreground:hover{--tw-text-opacity:1!important;color:hsl(var(--morui-primary-foreground)/var(--morui-primary-foreground-opacity,var(--tw-text-opacity)))!important}.hover\:\!text-success-foreground:hover{--tw-text-opacity:1!important;color:hsl(var(--morui-success-foreground)/var(--morui-success-foreground-opacity,var(--tw-text-opacity)))!important}.hover\:\!text-warning-foreground:hover{--tw-text-opacity:1!important;color:hsl(var(--morui-warning-foreground)/var(--morui-warning-foreground-opacity,var(--tw-text-opacity)))!important}.hover\:\!opacity-100:hover{opacity:1!important}.hover\:after\:bg-foreground\/10:hover:after{background-color:hsl(var(--morui-foreground)/.1);content:var(--tw-content)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:outline-none:focus-visible{outline:#0000 solid 2px;outline-offset:2px}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-focus:focus-visible{outline-color:hsl(var(--morui-focus)/var(--morui-focus-opacity,1))}.active\:bg-default-300:active{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-300)/var(--morui-default-300-opacity,var(--tw-bg-opacity)))}.active\:\!opacity-70:active{opacity:.7!important}.data-\[open\=true\]\:block[data-open=true],.group:hover .group-hover\:block,.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:block,.peer[data-filled=true]~.peer-data-\[filled\=true\]\:block,.tocCollapsibleContent_ZtRw a{display:block}.group:hover .group-hover\:hidden,.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:hidden{display:none}.group:hover .group-hover\:border-current{border-color:currentColor}.aria-expanded\:scale-\[0\.97\][aria-expanded=true],.data-\[pressed\=true\]\:scale-\[0\.97\][data-pressed=true]{--tw-scale-x:0.97;--tw-scale-y:0.97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[focus-visible\=true\]\:z-10[data-focus-visible=true],.data-\[focused\=true\]\:z-10[data-focused=true],.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:z-10{z-index:10}.data-\[has-label\=true\]\:mt-\[calc\(theme\(fontSize\.small\)_\+_10px\)\][data-has-label=true]{margin-top:calc(var(--morui-font-size-small) + 10px)}.data-\[has-label\=true\]\:mt-\[calc\(theme\(fontSize\.small\)_\+_12px\)\][data-has-label=true]{margin-top:calc(var(--morui-font-size-small) + 12px)}.data-\[has-label\=true\]\:mt-\[calc\(theme\(fontSize\.small\)_\+_8px\)\][data-has-label=true]{margin-top:calc(var(--morui-font-size-small) + 8px)}.data-\[focus-visible\=true\]\:-translate-x-3[data-focus-visible=true],.data-\[hover\=true\]\:-translate-x-3[data-hover=true]{--tw-translate-x:-0.75rem}.data-\[hover\=true\]\:translate-x-0[data-hover=true]{--tw-translate-x:0px}.data-\[dragging\=true\]\:cursor-grabbing[data-dragging=true]{cursor:grabbing}.data-\[thumb-hidden\=false\]\:border-x-\[calc\(theme\(spacing\.5\)\/2\)\][data-thumb-hidden=false]{border-left-width:.625rem;border-right-width:.625rem}.data-\[thumb-hidden\=false\]\:border-x-\[calc\(theme\(spacing\.6\)\/2\)\][data-thumb-hidden=false]{border-left-width:.75rem;border-right-width:.75rem}.data-\[thumb-hidden\=false\]\:border-x-\[calc\(theme\(spacing\.7\)\/2\)\][data-thumb-hidden=false]{border-left-width:.875rem;border-right-width:.875rem}.data-\[thumb-hidden\=false\]\:border-y-\[calc\(theme\(spacing\.5\)\/2\)\][data-thumb-hidden=false]{border-bottom-width:.625rem;border-top-width:.625rem}.data-\[thumb-hidden\=false\]\:border-y-\[calc\(theme\(spacing\.6\)\/2\)\][data-thumb-hidden=false]{border-bottom-width:.75rem;border-top-width:.75rem}.data-\[thumb-hidden\=false\]\:border-y-\[calc\(theme\(spacing\.7\)\/2\)\][data-thumb-hidden=false]{border-bottom-width:.875rem;border-top-width:.875rem}.data-\[active\=true\]\:border-danger[data-active=true],.data-\[focus\=true\]\:border-danger[data-focus=true],.data-\[hover\=true\]\:border-danger[data-hover=true],.data-\[open\=true\]\:border-danger[data-open=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.data-\[active\=true\]\:border-default-400[data-active=true],.data-\[hover\=true\]\:border-default-400[data-hover=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-default-400)/var(--morui-default-400-opacity,var(--tw-border-opacity)))}.data-\[active\=true\]\:border-primary[data-active=true],.data-\[focus\=true\]\:border-primary[data-focus=true],.data-\[hover\=true\]\:border-primary[data-hover=true],.data-\[open\=true\]\:border-primary[data-open=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.data-\[active\=true\]\:border-secondary[data-active=true],.data-\[focus\=true\]\:border-secondary[data-focus=true],.data-\[hover\=true\]\:border-secondary[data-hover=true],.data-\[open\=true\]\:border-secondary[data-open=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.data-\[active\=true\]\:border-success[data-active=true],.data-\[focus\=true\]\:border-success[data-focus=true],.data-\[hover\=true\]\:border-success[data-hover=true],.data-\[open\=true\]\:border-success[data-open=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.data-\[active\=true\]\:border-warning[data-active=true],.data-\[focus\=true\]\:border-warning[data-focus=true],.data-\[hover\=true\]\:border-warning[data-hover=true],.data-\[open\=true\]\:border-warning[data-open=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.data-\[focus\=true\]\:border-default-foreground[data-focus=true],.data-\[open\=true\]\:border-default-foreground[data-open=true],.group[data-focus=true] .group-data-\[focus\=true\]\:border-default-foreground{--tw-border-opacity:1;border-color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,var(--tw-border-opacity)))}.data-\[hover\=true\]\:bg-blue-600[data-hover=true]{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.data-\[hover\=true\]\:bg-content2[data-hover=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-content2)/var(--morui-content2-opacity,var(--tw-bg-opacity)))}.data-\[hover\=true\]\:bg-danger-100[data-hover=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-danger-100)/var(--morui-danger-100-opacity,var(--tw-bg-opacity)))}.data-\[hover\=true\]\:bg-default\/80[data-hover=true]{background-color:hsl(var(--morui-default)/.8)}.data-\[hover\=true\]\:bg-primary-100[data-hover=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-primary-100)/var(--morui-primary-100-opacity,var(--tw-bg-opacity)))}.data-\[hover\=true\]\:bg-secondary-100[data-hover=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-secondary-100)/var(--morui-secondary-100-opacity,var(--tw-bg-opacity)))}.data-\[hover\=true\]\:bg-success-100[data-hover=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-success-100)/var(--morui-success-100-opacity,var(--tw-bg-opacity)))}.data-\[hover\=true\]\:bg-warning-100[data-hover=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-warning-100)/var(--morui-warning-100-opacity,var(--tw-bg-opacity)))}.data-\[in-range\=true\]\:bg-background\/50[data-in-range=true]{background-color:hsl(var(--morui-background)/.5)}.data-\[loaded\=true\]\:\!bg-transparent[data-loaded=true]{background-color:initial!important}.data-\[has-end-content\=true\]\:pe-1\.5[data-has-end-content=true]{padding-inline-end:.375rem}.data-\[has-start-content\=true\]\:ps-1\.5[data-has-start-content=true]{padding-inline-start:.375rem}.data-\[disabled\=true\]\:text-default-300[data-disabled=true]{--tw-text-opacity:1;color:hsl(var(--morui-default-300)/var(--morui-default-300-opacity,var(--tw-text-opacity)))}.data-\[hover\=true\]\:text-danger[data-hover=true],.data-\[selected\=true\]\:text-danger[data-selected=true]{--tw-text-opacity:1;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)))}.data-\[hover\=true\]\:text-primary[data-hover=true],.data-\[selected\=true\]\:text-primary[data-selected=true]{--tw-text-opacity:1;color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-text-opacity)))}.data-\[hover\=true\]\:text-secondary[data-hover=true],.data-\[selected\=true\]\:text-secondary[data-selected=true]{--tw-text-opacity:1;color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-text-opacity)))}.data-\[selected\=true\]\:text-success-600[data-selected=true]{--tw-text-opacity:1;color:hsl(var(--morui-success-600)/var(--morui-success-600-opacity,var(--tw-text-opacity)))}.data-\[selected\=true\]\:text-warning-600[data-selected=true]{--tw-text-opacity:1;color:hsl(var(--morui-warning-600)/var(--morui-warning-600-opacity,var(--tw-text-opacity)))}.data-\[hover\=true\]\:opacity-hover[data-hover=true]{opacity:var(--morui-hover-opacity)}.data-\[active\=true\]\:shadow-md[data-active=true]{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.data-\[hover\=true\]\:shadow-lg[data-hover=true]{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.data-\[hover\=true\]\:shadow-danger\/30[data-hover=true]{--tw-shadow-color:hsl(var(--morui-danger)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[hover\=true\]\:shadow-primary\/30[data-hover=true]{--tw-shadow-color:hsl(var(--morui-primary)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[hover\=true\]\:shadow-secondary\/30[data-hover=true]{--tw-shadow-color:hsl(var(--morui-secondary)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[hover\=true\]\:shadow-success\/30[data-hover=true]{--tw-shadow-color:hsl(var(--morui-success)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[hover\=true\]\:shadow-warning\/30[data-hover=true]{--tw-shadow-color:hsl(var(--morui-warning)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[focus-visible\=true\]\:outline-2[data-focus-visible=true]{outline-width:2px}.data-\[focus-visible\=true\]\:outline-offset-2[data-focus-visible=true]{outline-offset:2px}.data-\[focus-visible\=true\]\:outline-focus[data-focus-visible=true]{outline-color:hsl(var(--morui-focus)/var(--morui-focus-opacity,1))}.data-\[focus-visible\]\:outline-danger-foreground[data-focus-visible]{outline-color:hsl(var(--morui-danger-foreground)/var(--morui-danger-foreground-opacity,1))}.data-\[focus-visible\]\:outline-default-foreground[data-focus-visible]{outline-color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,1))}.data-\[focus-visible\]\:outline-primary-foreground[data-focus-visible]{outline-color:hsl(var(--morui-primary-foreground)/var(--morui-primary-foreground-opacity,1))}.data-\[focus-visible\]\:outline-secondary-foreground[data-focus-visible]{outline-color:hsl(var(--morui-secondary-foreground)/var(--morui-secondary-foreground-opacity,1))}.data-\[focus-visible\]\:outline-success-foreground[data-focus-visible]{outline-color:hsl(var(--morui-success-foreground)/var(--morui-success-foreground-opacity,1))}.data-\[focus-visible\]\:outline-warning-foreground[data-focus-visible]{outline-color:hsl(var(--morui-warning-foreground)/var(--morui-warning-foreground-opacity,1))}.data-\[menu-open\=true\]\:backdrop-blur-xl[data-menu-open=true]{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.data-\[hide-scroll\=true\]\:scrollbar-hide[data-hide-scroll=true]::-webkit-scrollbar{display:none}.data-\[top-bottom-scroll\=true\]\:\[mask-image\:linear-gradient\(\#000\2c \#000\2c transparent_0\2c \#000_var\(--scroll-shadow-size\)\2c \#000_calc\(100\%_-_var\(--scroll-shadow-size\)\)\2c transparent\)\][data-top-bottom-scroll=true]{-webkit-mask-image:linear-gradient(#000,#000,#0000 0,#000 var(--scroll-shadow-size),#000 calc(100% - var(--scroll-shadow-size)),#0000);mask-image:linear-gradient(#000,#000,#0000 0,#000 var(--scroll-shadow-size),#000 calc(100% - var(--scroll-shadow-size)),#0000)}.data-\[top-scroll\=true\]\:\[mask-image\:linear-gradient\(0deg\2c \#000_calc\(100\%_-_var\(--scroll-shadow-size\)\)\2c transparent\)\][data-top-scroll=true]{-webkit-mask-image:linear-gradient(0deg,#000 calc(100% - var(--scroll-shadow-size)),#0000);mask-image:linear-gradient(0deg,#000 calc(100% - var(--scroll-shadow-size)),#0000)}.data-\[bottom-scroll\=true\]\:\[mask-image\:linear-gradient\(180deg\2c \#000_calc\(100\%_-_var\(--scroll-shadow-size\)\)\2c transparent\)\][data-bottom-scroll=true]{-webkit-mask-image:linear-gradient(180deg,#000 calc(100% - var(--scroll-shadow-size)),#0000);mask-image:linear-gradient(180deg,#000 calc(100% - var(--scroll-shadow-size)),#0000)}.data-\[left-scroll\=true\]\:\[mask-image\:linear-gradient\(270deg\2c \#000_calc\(100\%_-_var\(--scroll-shadow-size\)\)\2c transparent\)\][data-left-scroll=true]{-webkit-mask-image:linear-gradient(270deg,#000 calc(100% - var(--scroll-shadow-size)),#0000);mask-image:linear-gradient(270deg,#000 calc(100% - var(--scroll-shadow-size)),#0000)}.data-\[right-scroll\=true\]\:\[mask-image\:linear-gradient\(90deg\2c \#000_calc\(100\%_-_var\(--scroll-shadow-size\)\)\2c transparent\)\][data-right-scroll=true]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - var(--scroll-shadow-size)),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - var(--scroll-shadow-size)),#0000)}.data-\[left-right-scroll\=true\]\:\[mask-image\:linear-gradient\(to_right\2c \#000\2c \#000\2c transparent_0\2c \#000_var\(--scroll-shadow-size\)\2c \#000_calc\(100\%_-_var\(--scroll-shadow-size\)\)\2c transparent\)\][data-left-right-scroll=true]{-webkit-mask-image:linear-gradient(to right,#000,#000,#0000 0,#000 var(--scroll-shadow-size),#000 calc(100% - var(--scroll-shadow-size)),#0000);mask-image:linear-gradient(to right,#000,#000,#0000 0,#000 var(--scroll-shadow-size),#000 calc(100% - var(--scroll-shadow-size)),#0000)}.data-\[placement\=bottom-end\]\:before\:-top-\[calc\(theme\(spacing\.5\)\/4_-_1\.5px\)\][data-placement=bottom-end]:before,.data-\[placement\=bottom-start\]\:before\:-top-\[calc\(theme\(spacing\.5\)\/4_-_1\.5px\)\][data-placement=bottom-start]:before,.data-\[placement\=bottom\]\:before\:-top-\[calc\(theme\(spacing\.5\)\/4_-_1\.5px\)\][data-placement=bottom]:before{content:var(--tw-content);top:calc(-.3125rem - -1.5px)}.data-\[placement\=bottom-end\]\:before\:right-3[data-placement=bottom-end]:before,.data-\[placement\=top-end\]\:before\:right-3[data-placement=top-end]:before{content:var(--tw-content);right:.75rem}.data-\[placement\=bottom-start\]\:before\:left-3[data-placement=bottom-start]:before,.data-\[placement\=top-start\]\:before\:left-3[data-placement=top-start]:before{content:var(--tw-content);left:.75rem}.data-\[placement\=left-end\]\:before\:-right-\[calc\(theme\(spacing\.5\)\/4_-_3px\)\][data-placement=left-end]:before,.data-\[placement\=left-start\]\:before\:-right-\[calc\(theme\(spacing\.5\)\/4_-_3px\)\][data-placement=left-start]:before{content:var(--tw-content);right:calc(-.3125rem - -3px)}.data-\[placement\=left-end\]\:before\:bottom-1\/4[data-placement=left-end]:before,.data-\[placement\=right-end\]\:before\:bottom-1\/4[data-placement=right-end]:before{bottom:25%;content:var(--tw-content)}.data-\[placement\=left-start\]\:before\:top-1\/4[data-placement=left-start]:before,.data-\[placement\=right-start\]\:before\:top-1\/4[data-placement=right-start]:before{content:var(--tw-content);top:25%}.data-\[placement\=left\]\:before\:-right-\[calc\(theme\(spacing\.5\)\/4_-_2px\)\][data-placement=left]:before{content:var(--tw-content);right:calc(-.3125rem - -2px)}.data-\[placement\=left\]\:before\:top-1\/2[data-placement=left]:before,.data-\[placement\=right\]\:before\:top-1\/2[data-placement=right]:before{content:var(--tw-content);top:50%}.data-\[placement\=right-end\]\:before\:-left-\[calc\(theme\(spacing\.5\)\/4_-_3px\)\][data-placement=right-end]:before,.data-\[placement\=right-start\]\:before\:-left-\[calc\(theme\(spacing\.5\)\/4_-_3px\)\][data-placement=right-start]:before{content:var(--tw-content);left:calc(-.3125rem - -3px)}.data-\[placement\=right\]\:before\:-left-\[calc\(theme\(spacing\.5\)\/4_-_2px\)\][data-placement=right]:before{content:var(--tw-content);left:calc(-.3125rem - -2px)}.data-\[placement\=top-end\]\:before\:-bottom-\[calc\(theme\(spacing\.5\)\/4_-_1\.5px\)\][data-placement=top-end]:before,.data-\[placement\=top-start\]\:before\:-bottom-\[calc\(theme\(spacing\.5\)\/4_-_1\.5px\)\][data-placement=top-start]:before,.data-\[placement\=top\]\:before\:-bottom-\[calc\(theme\(spacing\.5\)\/4_-_1\.5px\)\][data-placement=top]:before{bottom:calc(-.3125rem - -1.5px);content:var(--tw-content)}.data-\[loaded\=true\]\:before\:animate-none[data-loaded=true]:before{animation:none;content:var(--tw-content)}.data-\[dragging\=true\]\:after\:scale-80[data-dragging=true]:after{--tw-scale-x:0.8;--tw-scale-y:0.8}.data-\[selectable\=true\]\:focus\:border-danger:focus[data-selectable=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.data-\[selectable\=true\]\:focus\:border-default:focus[data-selectable=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-border-opacity)))}.data-\[selectable\=true\]\:focus\:border-primary:focus[data-selectable=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.data-\[selectable\=true\]\:focus\:border-secondary:focus[data-selectable=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.data-\[selectable\=true\]\:focus\:border-success:focus[data-selectable=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.data-\[selectable\=true\]\:focus\:border-warning:focus[data-selectable=true]{--tw-border-opacity:1;border-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.data-\[selectable\=true\]\:focus\:bg-danger:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-danger\/20:focus[data-selectable=true]{background-color:hsl(var(--morui-danger)/.2)}.data-\[selectable\=true\]\:focus\:bg-default:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-default-100:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-100)/var(--morui-default-100-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-default\/40:focus[data-selectable=true]{background-color:hsl(var(--morui-default)/.4)}.data-\[selectable\=true\]\:focus\:bg-primary:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-primary\/20:focus[data-selectable=true]{background-color:hsl(var(--morui-primary)/.2)}.data-\[selectable\=true\]\:focus\:bg-secondary:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-secondary\/20:focus[data-selectable=true]{background-color:hsl(var(--morui-secondary)/.2)}.data-\[selectable\=true\]\:focus\:bg-success:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-success\/20:focus[data-selectable=true]{background-color:hsl(var(--morui-success)/.2)}.data-\[selectable\=true\]\:focus\:bg-warning:focus[data-selectable=true]{--tw-bg-opacity:1;background-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-bg-opacity)))}.data-\[selectable\=true\]\:focus\:bg-warning\/20:focus[data-selectable=true]{background-color:hsl(var(--morui-warning)/.2)}.data-\[selectable\=true\]\:focus\:text-danger:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-danger-foreground:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-danger-foreground)/var(--morui-danger-foreground-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-default-500:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-default-500)/var(--morui-default-500-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-default-foreground:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-primary:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-primary-foreground:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-primary-foreground)/var(--morui-primary-foreground-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-secondary:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-secondary-foreground:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-secondary-foreground)/var(--morui-secondary-foreground-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-success:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-success-foreground:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-success-foreground)/var(--morui-success-foreground-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-warning:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:text-warning-foreground:focus[data-selectable=true]{--tw-text-opacity:1;color:hsl(var(--morui-warning-foreground)/var(--morui-warning-foreground-opacity,var(--tw-text-opacity)))}.data-\[selectable\=true\]\:focus\:shadow-danger\/30:focus[data-selectable=true]{--tw-shadow-color:hsl(var(--morui-danger)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[selectable\=true\]\:focus\:shadow-default\/50:focus[data-selectable=true]{--tw-shadow-color:hsl(var(--morui-default)/0.5);--tw-shadow:var(--tw-shadow-colored)}.data-\[selectable\=true\]\:focus\:shadow-primary\/30:focus[data-selectable=true]{--tw-shadow-color:hsl(var(--morui-primary)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[selectable\=true\]\:focus\:shadow-secondary\/30:focus[data-selectable=true]{--tw-shadow-color:hsl(var(--morui-secondary)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[selectable\=true\]\:focus\:shadow-success\/30:focus[data-selectable=true]{--tw-shadow-color:hsl(var(--morui-success)/0.3);--tw-shadow:var(--tw-shadow-colored)}.data-\[selectable\=true\]\:focus\:shadow-warning\/30:focus[data-selectable=true]{--tw-shadow-color:hsl(var(--morui-warning)/0.3);--tw-shadow:var(--tw-shadow-colored)}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:pointer-events-auto,.group[data-filled=true] .group-data-\[filled\=true\]\:pointer-events-auto{pointer-events:auto}.group[data-selected=true] .group-data-\[selected\=true\]\:ml-4,.group[data-selected][data-pressed] .group-data-\[selected\]\:group-data-\[pressed\]\:ml-4{margin-left:1rem}.group[data-selected=true] .group-data-\[selected\=true\]\:ml-5,.group[data-selected][data-pressed] .group-data-\[selected\]\:group-data-\[pressed\]\:ml-5{margin-left:1.25rem}.group[data-selected=true] .group-data-\[selected\=true\]\:ml-6{margin-left:1.5rem}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(100\%_\+_theme\(fontSize\.small\)\/2_\+_20px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(100\%_\+_theme\(fontSize\.small\)\/2_\+_20px\)\]{--tw-translate-y:calc(-100% + var(--morui-font-size-small)/2*-1 + -20px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(100\%_\+_theme\(fontSize\.small\)\/2_\+_24px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(100\%_\+_theme\(fontSize\.small\)\/2_\+_24px\)\]{--tw-translate-y:calc(-100% + var(--morui-font-size-small)/2*-1 + -24px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(100\%_\+_theme\(fontSize\.tiny\)\/2_\+_16px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(100\%_\+_theme\(fontSize\.tiny\)\/2_\+_16px\)\]{--tw-translate-y:calc(-100% + var(--morui-font-size-tiny)/2*-1 + -16px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_3\.5px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_3\.5px\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-small)/2*-1 - -3.5px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_4px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_4px\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-small)/2*-1 - -4px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_6px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_6px\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-small)/2*-1 - -6px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_6px_-_theme\(borderWidth\.medium\)\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_6px_-_theme\(borderWidth\.medium\)\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-small)/2*-1 - -6px - var(--morui-border-width-medium)*-1);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_8px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_8px\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-small)/2*-1 - -8px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_8px_-_theme\(borderWidth\.medium\)\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.small\)\/2_-_8px_-_theme\(borderWidth\.medium\)\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-small)/2*-1 - -8px - var(--morui-border-width-medium)*-1);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.tiny\)\/2_-_5px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.tiny\)\/2_-_5px\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-tiny)/2*-1 - -5px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.tiny\)\/2_-_8px\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.tiny\)\/2_-_8px\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-tiny)/2*-1 - -8px);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.tiny\)\/2_-_8px_-_theme\(borderWidth\.medium\)\)\],.group[data-filled=true] .group-data-\[filled\=true\]\:-translate-y-\[calc\(50\%_\+_theme\(fontSize\.tiny\)\/2_-_8px_-_theme\(borderWidth\.medium\)\)\]{--tw-translate-y:calc(-50% + var(--morui-font-size-tiny)/2*-1 - -8px - var(--morui-border-width-medium)*-1);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-selected=true] .group-data-\[selected\=true\]\:translate-x-3{--tw-translate-x:0.75rem}.group[data-copied=true] .group-data-\[copied\=true\]\:scale-50{--tw-scale-x:.5;--tw-scale-y:.5;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-filled-within=true] .group-data-\[filled-within\=true\]\:scale-85,.group[data-filled=true] .group-data-\[filled\=true\]\:scale-85{--tw-scale-x:0.85;--tw-scale-y:0.85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-pressed=true] .group-data-\[pressed\=true\]\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.group[data-focus=true] .group-data-\[focus\=true\]\:border-danger,.group[data-selected=true] .group-data-\[selected\=true\]\:border-danger{--tw-border-opacity:1;border-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-border-opacity)))}.group[data-focus=true] .group-data-\[focus\=true\]\:border-primary,.group[data-selected=true] .group-data-\[selected\=true\]\:border-primary{--tw-border-opacity:1;border-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-border-opacity)))}.group[data-focus=true] .group-data-\[focus\=true\]\:border-secondary,.group[data-selected=true] .group-data-\[selected\=true\]\:border-secondary{--tw-border-opacity:1;border-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-border-opacity)))}.group[data-focus=true] .group-data-\[focus\=true\]\:border-success,.group[data-selected=true] .group-data-\[selected\=true\]\:border-success{--tw-border-opacity:1;border-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-border-opacity)))}.group[data-focus=true] .group-data-\[focus\=true\]\:border-warning,.group[data-selected=true] .group-data-\[selected\=true\]\:border-warning{--tw-border-opacity:1;border-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-border-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:border-default-500{--tw-border-opacity:1;border-color:hsl(var(--morui-default-500)/var(--morui-default-500-opacity,var(--tw-border-opacity)))}.\[\&\[data-hover\=true\]\:not\(\[data-active\=true\]\)\]\:bg-default-100[data-hover=true]:not([data-active=true]),.group[data-focus=true] .group-data-\[focus\=true\]\:bg-default-100,.group[data-hover-unselected=true] .group-data-\[hover-unselected\=true\]\:bg-default-100{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-100)/var(--morui-default-100-opacity,var(--tw-bg-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:bg-danger{--tw-bg-opacity:1;background-color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-bg-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:bg-primary{--tw-bg-opacity:1;background-color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-bg-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:bg-secondary{--tw-bg-opacity:1;background-color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-bg-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:bg-success{--tw-bg-opacity:1;background-color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-bg-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:bg-warning{--tw-bg-opacity:1;background-color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-bg-opacity)))}.group[data-has-helper=true] .group-data-\[has-helper\=true\]\:pt-3{padding-top:.75rem}.group[data-has-helper=true] .group-data-\[has-helper\=true\]\:pt-4,.group[data-has-label=true] .group-data-\[has-label\=true\]\:pt-4{padding-top:1rem}.group[data-has-label=true] .group-data-\[has-label\=true\]\:pt-5{padding-top:1.25rem}.group[data-disabled=true] .group-data-\[disabled\=true\]\:text-foreground-300{--tw-text-opacity:1;color:hsl(var(--morui-foreground-300)/var(--morui-foreground-300-opacity,var(--tw-text-opacity)))}.group[data-has-value=true] .group-data-\[has-value\=true\]\:text-default-foreground,.group[data-selected=true] .group-data-\[selected\=true\]\:text-default-foreground{--tw-text-opacity:1;color:hsl(var(--morui-default-foreground)/var(--morui-default-foreground-opacity,var(--tw-text-opacity)))}.group[data-invalid=true] .group-data-\[invalid\=true\]\:text-danger,.group[data-selected=true] .group-data-\[selected\=true\]\:text-danger{--tw-text-opacity:1;color:hsl(var(--morui-danger)/var(--morui-danger-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-danger-foreground{--tw-text-opacity:1;color:hsl(var(--morui-danger-foreground)/var(--morui-danger-foreground-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-primary{--tw-text-opacity:1;color:hsl(var(--morui-primary)/var(--morui-primary-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-primary-foreground{--tw-text-opacity:1;color:hsl(var(--morui-primary-foreground)/var(--morui-primary-foreground-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-secondary{--tw-text-opacity:1;color:hsl(var(--morui-secondary)/var(--morui-secondary-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-secondary-foreground{--tw-text-opacity:1;color:hsl(var(--morui-secondary-foreground)/var(--morui-secondary-foreground-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-success{--tw-text-opacity:1;color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-success-foreground{--tw-text-opacity:1;color:hsl(var(--morui-success-foreground)/var(--morui-success-foreground-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-warning{--tw-text-opacity:1;color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:text-warning-foreground{--tw-text-opacity:1;color:hsl(var(--morui-warning-foreground)/var(--morui-warning-foreground-opacity,var(--tw-text-opacity)))}.group[data-selected=true] .group-data-\[selected\=true\]\:opacity-60{opacity:.6}.group[data-focus-visible=true] .group-data-\[focus-visible\=true\]\:ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.group[data-open=true] .group-data-\[open\=true\]\:before\:translate-y-px:before{--tw-translate-y:1px}.group[aria-selected=false][data-hover=true] .group-aria-\[selected\=false\]\:group-data-\[hover\=true\]\:before\:bg-default-100:before,.group[data-hover=true] .group-data-\[hover\=true\]\:before\:bg-default-100:before,.group[data-odd=true] .group-data-\[odd\=true\]\:before\:bg-default-100:before{--tw-bg-opacity:1;background-color:hsl(var(--morui-default-100)/var(--morui-default-100-opacity,var(--tw-bg-opacity)));content:var(--tw-content)}.group[data-open=true] .group-data-\[open\=true\]\:after\:translate-y-0:after{--tw-translate-y:0px}.group[data-open=true] .group-data-\[open\=true\]\:after\:-rotate-45:after{--tw-rotate:-45deg}.group[data-selected=true] .group-data-\[selected\=true\]\:after\:scale-100:after{--tw-scale-x:1;--tw-scale-y:1;content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-first=true] .group-data-\[first\=true\]\:first\:before\:rounded-tl-lg:first-child:before{border-top-left-radius:.5rem;content:var(--tw-content)}.group[data-last=true] .group-data-\[last\=true\]\:first\:before\:rounded-bl-lg:first-child:before{border-bottom-left-radius:.5rem;content:var(--tw-content)}.group[data-first=true] .group-data-\[first\=true\]\:last\:before\:rounded-tr-lg:last-child:before{border-top-right-radius:.5rem;content:var(--tw-content)}.group[data-last=true] .group-data-\[last\=true\]\:last\:before\:rounded-br-lg:last-child:before{border-bottom-right-radius:.5rem;content:var(--tw-content)}.group[aria-selected=false][data-hover=true] .group-aria-\[selected\=false\]\:group-data-\[hover\=true\]\:before\:opacity-70:before{content:var(--tw-content);opacity:.7}.dark\:bg-background\/20:is([data-theme=dark] *){background-color:hsl(var(--morui-background)/.2)}.dark\:bg-content2:is([data-theme=dark] *){--tw-bg-opacity:1;background-color:hsl(var(--morui-content2)/var(--morui-content2-opacity,var(--tw-bg-opacity)))}.dark\:bg-default:is([data-theme=dark] *){--tw-bg-opacity:1;background-color:hsl(var(--morui-default)/var(--morui-default-opacity,var(--tw-bg-opacity)))}.dark\:bg-transparent:is([data-theme=dark] *){background-color:initial}.dark\:text-danger-500:is([data-theme=dark] *){--tw-text-opacity:1;color:hsl(var(--morui-danger-500)/var(--morui-danger-500-opacity,var(--tw-text-opacity)))}.dark\:text-success:is([data-theme=dark] *){--tw-text-opacity:1;color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-text-opacity)))}.dark\:text-warning:is([data-theme=dark] *){--tw-text-opacity:1;color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-text-opacity)))}.dark\:placeholder\:text-danger-500:is([data-theme=dark] *)::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-danger-500)/var(--morui-danger-500-opacity,var(--tw-text-opacity)))}.dark\:placeholder\:text-success:is([data-theme=dark] *)::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-text-opacity)))}.dark\:placeholder\:text-warning:is([data-theme=dark] *)::placeholder{--tw-text-opacity:1;color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-text-opacity)))}.dark\:before\:via-default-700\/10:is([data-theme=dark] *):before{--tw-gradient-to:hsl(var(--morui-default-700)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--morui-default-700)/0.1) var(--tw-gradient-via-position),var(--tw-gradient-to);content:var(--tw-content)}.dark\:after\:bg-content2:is([data-theme=dark] *):after{content:var(--tw-content)}.dark\:after\:bg-content2:is([data-theme=dark] *):after,.dark\:data-\[hover\=true\]\:bg-content2[data-hover=true]:is([data-theme=dark] *){--tw-bg-opacity:1;background-color:hsl(var(--morui-content2)/var(--morui-content2-opacity,var(--tw-bg-opacity)))}.dark\:data-\[selected\=true\]\:text-danger-500[data-selected=true]:is([data-theme=dark] *){--tw-text-opacity:1;color:hsl(var(--morui-danger-500)/var(--morui-danger-500-opacity,var(--tw-text-opacity)))}.dark\:data-\[selected\=true\]\:text-success[data-selected=true]:is([data-theme=dark] *){--tw-text-opacity:1;color:hsl(var(--morui-success)/var(--morui-success-opacity,var(--tw-text-opacity)))}.dark\:data-\[selected\=true\]\:text-warning[data-selected=true]:is([data-theme=dark] *){--tw-text-opacity:1;color:hsl(var(--morui-warning)/var(--morui-warning-opacity,var(--tw-text-opacity)))}.rtl\:-rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:-180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:data-\[open\=true\]\:-rotate-90[data-open=true]:where([dir=rtl],[dir=rtl] *){--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\+\.border-medium\.border-danger\]\:ms-\[calc\(theme\(borderWidth\.medium\)\*-1\)\]+.border-medium.border-danger,.\[\&\+\.border-medium\.border-default\]\:ms-\[calc\(theme\(borderWidth\.medium\)\*-1\)\]+.border-medium.border-default,.\[\&\+\.border-medium\.border-primary\]\:ms-\[calc\(theme\(borderWidth\.medium\)\*-1\)\]+.border-medium.border-primary,.\[\&\+\.border-medium\.border-secondary\]\:ms-\[calc\(theme\(borderWidth\.medium\)\*-1\)\]+.border-medium.border-secondary,.\[\&\+\.border-medium\.border-success\]\:ms-\[calc\(theme\(borderWidth\.medium\)\*-1\)\]+.border-medium.border-success,.\[\&\+\.border-medium\.border-warning\]\:ms-\[calc\(theme\(borderWidth\.medium\)\*-1\)\]+.border-medium.border-warning{margin-inline-start:calc(var(--morui-border-width-medium)*-1)}.\[\&\:not\(\:first-of-type\)\]\:ml-\[calc\(theme\(borderWidth\.2\)\*-1\)\]:not(:first-of-type){margin-left:-2px}.\[\&\>svg\]\:max-w-\[theme\(spacing\.unit-8\)\]>svg{max-width:var(--morui-spacing-unit-8)}.\[\&\>tr\]\:first\:rounded-lg:first-child>tr{border-radius:.5rem}.iconEdit_hqvt{margin-right:.3em;vertical-align:sub}.tag_G9wi{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_G9wi:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_ZX_1{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_xGB6{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_xGB6:after,.tagWithCount_xGB6:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_xGB6:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_xGB6:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_xGB6 span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_NPqp{display:inline}.tag_WyCo{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_rVBC{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_fvqu{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.tocCollapsibleButton_fvqu:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_gSY7:after,.tocCollapsibleExpanded_Kmy0{transform:none}.tocCollapsible_HBdG{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_ZtRw>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_ZtRw ul li{margin:.4rem .8rem}.tableOfContents_Kj3J{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_N9Ya{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_N9Ya:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_Rn7A{opacity:1;transform:scale(1);visibility:visible}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Hit[aria-selected=true] mark,.content_ILws a{text-decoration:underline}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards e;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_xQ5m,.sidebarLogo_yFma,.themedComponent_WQJe,[data-theme=dark] .lightToggleIcon_YVKM,[data-theme=light] .darkToggleIcon_a49f,html[data-announcement-bar-initially-dismissed=true] .announcementBar_yOjN,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@keyframes e{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container,.skipToContent_E3EM{z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_E3EM{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_E3EM:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_SYkQ{line-height:0;padding:0}.content_ILws{font-size:85%;padding:5px 0;text-align:center}.content_ILws a{color:inherit}.announcementBar_yOjN{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_ZPOO{flex:0 0 10px}.announcementBarClose_laiP{align-self:stretch;flex:0 0 30px}.toggle_Lphv{height:2rem;width:2rem}.toggleButton_C4u_{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_C4u_:hover{background:var(--ifm-color-emphasis-200)}.darkNavbarColorModeToggle_pSsd:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_tNlc,[data-theme=light] .themedComponent--light_vC8m,html:not([data-theme]) .themedComponent--light_vC8m{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_ZpCQ{display:none;margin:0}.iconExternalLink_uMR8{margin-left:.3rem}.docMainContainer_qBbz,.docRoot_kbrQ{display:flex;width:100%}.docsWrapper_o7i8{display:flex;flex:1 0 auto}.iconLanguage_ZSsF{margin-right:5px;vertical-align:text-bottom}@supports selector(:has(*)){.navbarSearchContainer_Aukl:not(:has(>*)){display:none}}.navbarHideable_gQho{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_zxOU{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_QHYE{color:red;white-space:pre-wrap}.errorBoundaryFallback_uBmD{color:red;padding:.55rem}.buttonGroup_QYpy button,.codeBlockContainer_jasU{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_DDai{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_AZ4C{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_FXx6{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_avmg{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column}.codeBlockContainer_jasU{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_TEEh{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_e8pP{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_Bkgn{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_e8pP+.codeBlockContent_TEEh .codeBlock_Bkgn{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_lDP1{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_y7ta{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_QYpy{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_QYpy button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_QYpy button:focus-visible,.buttonGroup_QYpy button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_QYpy button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_qib8{counter-increment:a;display:table-row}.codeLineNumber_dbgI{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_dbgI:before{content:counter(a);opacity:.4}.codeLineContent_h2yX{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_yinF{opacity:1!important}.copyButtonIcons_SHCV{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_rwkz,.copyButtonSuccessIcon_B2xf{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_B2xf{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_yinF .copyButtonIcon_rwkz{opacity:0;transform:scale(.33)}.copyButtonCopied_yinF .copyButtonSuccessIcon_B2xf{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_KMHO{height:1.2rem;width:1.2rem}.details_NQJP{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_NQJP>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_NQJP>summary::-webkit-details-marker{display:none}.details_NQJP>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_MmFW{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_v4Yj{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_j67I{list-style:none}.admonition_qJAF{margin-bottom:1em}.admonitionHeading_WmUu{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_WmUu:not(:last-child){margin-bottom:.3rem}.admonitionHeading_WmUu code{text-transform:none}.admonitionIcon_FLlS{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_FLlS svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_eIF0{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_y6NL{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_lgCf,.searchVersionInput_hZMv{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_lgCf:focus,.searchVersionInput_hZMv:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_lgCf::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_usTD{font-size:.9rem;font-weight:700}.algoliaLogo_nSr9{max-width:150px}.algoliaLogoPathFill_bweY{fill:var(--ifm-font-color-base)}.searchResultItem_kiiJ{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_P9ix{font-weight:400;margin-bottom:0}.searchResultItemPath_QjmW{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_rb6a{font-style:italic;margin:.5rem 0 0}.loadingSpinner_I7f_{animation:1s linear infinite f;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes f{to{transform:rotate(1turn)}}.loader_lcxn{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}@media (min-width:375px){.header-bg{height:115px}}@media (min-width:425px){.header-bg{height:130px}}@media (min-width:640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.sm\:my-0{margin-bottom:0;margin-top:0}.sm\:my-16{margin-bottom:4rem;margin-top:4rem}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:\[--scale-enter\:100\%\]{--scale-enter:100%}.sm\:\[--scale-exit\:103\%\]{--scale-exit:103%}.sm\:\[--slide-enter\:0px\]{--slide-enter:0px}.sm\:\[--slide-exit\:0px\]{--slide-exit:0px}.sm\:data-\[visible\=true\]\:opacity-0[data-visible=true]{opacity:0}.group[data-hover=true] .sm\:group-data-\[hover\=true\]\:data-\[visible\=true\]\:opacity-100[data-visible=true]{opacity:1}}@media (min-width:768px){.header-bg{height:235px}.md\:order-1{order:1}.md\:h-\[780px\]{height:780px}.md\:w-\[128px\]{width:128px}.md\:w-\[284px\]{width:284px}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:px-0{padding-left:0;padding-right:0}.md\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.md\:pt-\[100px\]{padding-top:100px}.md\:text-\[84px\]{font-size:84px}.md\:text-\[85px\]{font-size:85px}.md\:text-tiny{font-size:var(--morui-font-size-tiny);line-height:var(--morui-line-height-tiny)}.md\:\!font-semibold{font-weight:600!important}.md\:leading-\[84px\]{line-height:84px}.md\:leading-\[85px\]{line-height:85px}}@media (min-width:997px){.collapseSidebarButton_ZpCQ,.expandButton_E2R3{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_rVBC{text-align:right}.tocMobile_z_cF{display:none}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_laiP,.announcementBarPlaceholder_ZPOO{flex-basis:50px}.collapseSidebarButton_ZpCQ{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_RA6k{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_XpyI,[dir=rtl] .collapseSidebarButtonIcon_RA6k{transform:rotate(0)}.collapseSidebarButton_ZpCQ:focus,.collapseSidebarButton_ZpCQ:hover,.expandButton_E2R3:focus,.expandButton_E2R3:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_SHKz{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_bObF{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_bObF{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_LUaF{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_qjHj{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_v_84{padding-top:0}.sidebarHidden_fzvn{opacity:0;visibility:hidden}.sidebarLogo_yFma{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_yFma img{height:2rem;margin-right:.5rem}.expandButton_E2R3{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_XpyI{transform:rotate(180deg)}.docSidebarContainer_xQ5m{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_YfRI{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_mqWZ{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_qBbz{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_M1IX{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_HmM2{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Aukl{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.docItemCol_dvZ9{max-width:75%!important}}@media (min-width:1080px){.header-bg{height:330px}}@media (min-width:1280px){.xl\:absolute{position:absolute}.xl\:bottom-14{bottom:3.5rem}.xl\:bottom-8{bottom:2rem}.xl\:mt-0{margin-top:0}.xl\:flex{display:flex}.xl\:w-\[280px\]{width:280px}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xl\:flex-row{flex-direction:row}.xl\:pb-0{padding-bottom:0}.xl\:text-\[140px\]{font-size:140px}.xl\:leading-\[100px\]{line-height:100px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}.header-bg{height:440px}}@media (min-width:1920px){.header-bg{height:440px}}@media (min-width:2560px){.header-bg{height:440px}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_rXT6,.footer__link-separator,.navbar__item,.tableOfContents_Kj3J{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.features_src-components-HomepageFeatures-styles-module .col{--ifm-col-width:50%!important}.docItemContainer_rccO{padding:0 .3rem}.navbarSearchContainer_Aukl{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.searchQueryColumn_yPeD,.searchResultsColumn_usTD{max-width:60%!important}.searchLogoColumn_w6QH,.searchVersionColumn_nHlp{max-width:40%!important}.searchLogoColumn_w6QH{padding-left:0!important}}@media screen and (max-width:996px){.navbar__logo{align-items:center;display:flex}.navbar__logo img{width:70%}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_yPeD{max-width:100%!important}.searchVersionColumn_nHlp{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (max-width:426px){.col{--ifm-col-width:100%!important}}@media (hover:hover){.backToTopButton_N9Ya:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}.motion-reduce\:transition-none{transition-property:none}.motion-reduce\:after\:transition-none:after{content:var(--tw-content);transition-property:none}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_yOjN,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_z_cF{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_lDP1{white-space:pre-wrap}} \ No newline at end of file diff --git a/build/assets/fonts/InterDisplay-Black-fb55d5da48c7bee4d80af9ec6cd28e3f.woff2 b/build/assets/fonts/InterDisplay-Black-fb55d5da48c7bee4d80af9ec6cd28e3f.woff2 deleted file mode 100644 index 8138123c1..000000000 Binary files a/build/assets/fonts/InterDisplay-Black-fb55d5da48c7bee4d80af9ec6cd28e3f.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-BlackItalic-bd4243b6c8594236ba8562208aa8e267.woff2 b/build/assets/fonts/InterDisplay-BlackItalic-bd4243b6c8594236ba8562208aa8e267.woff2 deleted file mode 100644 index 735ba21f9..000000000 Binary files a/build/assets/fonts/InterDisplay-BlackItalic-bd4243b6c8594236ba8562208aa8e267.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-Bold-f5ec5e21f616f430d4ba27e814d9eeb6.woff2 b/build/assets/fonts/InterDisplay-Bold-f5ec5e21f616f430d4ba27e814d9eeb6.woff2 deleted file mode 100644 index 11c67196e..000000000 Binary files a/build/assets/fonts/InterDisplay-Bold-f5ec5e21f616f430d4ba27e814d9eeb6.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-BoldItalic-439cef167a628cb218568c7bd4d6f0ac.woff2 b/build/assets/fonts/InterDisplay-BoldItalic-439cef167a628cb218568c7bd4d6f0ac.woff2 deleted file mode 100644 index 5b6a1fb00..000000000 Binary files a/build/assets/fonts/InterDisplay-BoldItalic-439cef167a628cb218568c7bd4d6f0ac.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-ExtraBold-89518fa4ab7bacdb30e6bb414678e283.woff2 b/build/assets/fonts/InterDisplay-ExtraBold-89518fa4ab7bacdb30e6bb414678e283.woff2 deleted file mode 100644 index 9058e9861..000000000 Binary files a/build/assets/fonts/InterDisplay-ExtraBold-89518fa4ab7bacdb30e6bb414678e283.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-ExtraBoldItalic-4dcb197ef83d3558dbdcc3e8e25b568f.woff2 b/build/assets/fonts/InterDisplay-ExtraBoldItalic-4dcb197ef83d3558dbdcc3e8e25b568f.woff2 deleted file mode 100644 index 4cd61c067..000000000 Binary files a/build/assets/fonts/InterDisplay-ExtraBoldItalic-4dcb197ef83d3558dbdcc3e8e25b568f.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-ExtraLight-8aac419550652c70acce102a1405b9e6.woff2 b/build/assets/fonts/InterDisplay-ExtraLight-8aac419550652c70acce102a1405b9e6.woff2 deleted file mode 100644 index 8621b2995..000000000 Binary files a/build/assets/fonts/InterDisplay-ExtraLight-8aac419550652c70acce102a1405b9e6.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-ExtraLightItalic-3d35f6363cf46c94cb5d50618f66586b.woff2 b/build/assets/fonts/InterDisplay-ExtraLightItalic-3d35f6363cf46c94cb5d50618f66586b.woff2 deleted file mode 100644 index 689c8d9ca..000000000 Binary files a/build/assets/fonts/InterDisplay-ExtraLightItalic-3d35f6363cf46c94cb5d50618f66586b.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-Italic-c0dffe244faaf5bb8fbef1517f2c89a3.woff2 b/build/assets/fonts/InterDisplay-Italic-c0dffe244faaf5bb8fbef1517f2c89a3.woff2 deleted file mode 100644 index 11f20bc82..000000000 Binary files a/build/assets/fonts/InterDisplay-Italic-c0dffe244faaf5bb8fbef1517f2c89a3.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-Light-878eccfa0e5c8240899d9a9588d25926.woff2 b/build/assets/fonts/InterDisplay-Light-878eccfa0e5c8240899d9a9588d25926.woff2 deleted file mode 100644 index 446301c35..000000000 Binary files a/build/assets/fonts/InterDisplay-Light-878eccfa0e5c8240899d9a9588d25926.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-LightItalic-af1c0bdb835afad15237ca3659b2c345.woff2 b/build/assets/fonts/InterDisplay-LightItalic-af1c0bdb835afad15237ca3659b2c345.woff2 deleted file mode 100644 index f68819610..000000000 Binary files a/build/assets/fonts/InterDisplay-LightItalic-af1c0bdb835afad15237ca3659b2c345.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-Medium-6e976150c457a5edc1f31e3c6affe0c5.woff2 b/build/assets/fonts/InterDisplay-Medium-6e976150c457a5edc1f31e3c6affe0c5.woff2 deleted file mode 100644 index 29160b2c5..000000000 Binary files a/build/assets/fonts/InterDisplay-Medium-6e976150c457a5edc1f31e3c6affe0c5.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-MediumItalic-361044e3f1781339740b739848dd02f0.woff2 b/build/assets/fonts/InterDisplay-MediumItalic-361044e3f1781339740b739848dd02f0.woff2 deleted file mode 100644 index ef1bcbe3c..000000000 Binary files a/build/assets/fonts/InterDisplay-MediumItalic-361044e3f1781339740b739848dd02f0.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-Regular-a4074fefb60f137f7974a3f2cadf655c.woff2 b/build/assets/fonts/InterDisplay-Regular-a4074fefb60f137f7974a3f2cadf655c.woff2 deleted file mode 100644 index a6c04f68e..000000000 Binary files a/build/assets/fonts/InterDisplay-Regular-a4074fefb60f137f7974a3f2cadf655c.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-SemiBold-54b6be6a7edc5b3cbdd615e2c9a54b8b.woff2 b/build/assets/fonts/InterDisplay-SemiBold-54b6be6a7edc5b3cbdd615e2c9a54b8b.woff2 deleted file mode 100644 index 2b4db239b..000000000 Binary files a/build/assets/fonts/InterDisplay-SemiBold-54b6be6a7edc5b3cbdd615e2c9a54b8b.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-SemiBoldItalic-4f03584a088f6fd339102161c36bd5b8.woff2 b/build/assets/fonts/InterDisplay-SemiBoldItalic-4f03584a088f6fd339102161c36bd5b8.woff2 deleted file mode 100644 index 59091db31..000000000 Binary files a/build/assets/fonts/InterDisplay-SemiBoldItalic-4f03584a088f6fd339102161c36bd5b8.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-Thin-8869ea180347c0b3e105f1f25d8159c1.woff2 b/build/assets/fonts/InterDisplay-Thin-8869ea180347c0b3e105f1f25d8159c1.woff2 deleted file mode 100644 index dc0b94860..000000000 Binary files a/build/assets/fonts/InterDisplay-Thin-8869ea180347c0b3e105f1f25d8159c1.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterDisplay-ThinItalic-84afcd2c98f66e503a057888753b75a0.woff2 b/build/assets/fonts/InterDisplay-ThinItalic-84afcd2c98f66e503a057888753b75a0.woff2 deleted file mode 100644 index 96439c0c0..000000000 Binary files a/build/assets/fonts/InterDisplay-ThinItalic-84afcd2c98f66e503a057888753b75a0.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterVariable-Italic-e295f70fe3e2df296c7bd1082d39afda.woff2 b/build/assets/fonts/InterVariable-Italic-e295f70fe3e2df296c7bd1082d39afda.woff2 deleted file mode 100644 index f22ec2554..000000000 Binary files a/build/assets/fonts/InterVariable-Italic-e295f70fe3e2df296c7bd1082d39afda.woff2 and /dev/null differ diff --git a/build/assets/fonts/InterVariable-a0e477f2f1f9d2376fde931ee7c6241a.woff2 b/build/assets/fonts/InterVariable-a0e477f2f1f9d2376fde931ee7c6241a.woff2 deleted file mode 100644 index 22a12b04e..000000000 Binary files a/build/assets/fonts/InterVariable-a0e477f2f1f9d2376fde931ee7c6241a.woff2 and /dev/null differ diff --git a/build/assets/images/01-27c2bb7d636a043d7e9859ebb561ba98.png b/build/assets/images/01-27c2bb7d636a043d7e9859ebb561ba98.png deleted file mode 100644 index 62dd18cec..000000000 Binary files a/build/assets/images/01-27c2bb7d636a043d7e9859ebb561ba98.png and /dev/null differ diff --git a/build/assets/images/02-a0499364bd8da9980f211fea46b17ec1.png b/build/assets/images/02-a0499364bd8da9980f211fea46b17ec1.png deleted file mode 100644 index 3b01de34c..000000000 Binary files a/build/assets/images/02-a0499364bd8da9980f211fea46b17ec1.png and /dev/null differ diff --git a/build/assets/images/03-c1219d2dc11ccb23f6043454dce9a2a1.png b/build/assets/images/03-c1219d2dc11ccb23f6043454dce9a2a1.png deleted file mode 100644 index 09f6b22e5..000000000 Binary files a/build/assets/images/03-c1219d2dc11ccb23f6043454dce9a2a1.png and /dev/null differ diff --git a/build/assets/images/04-40bfbd2ff4078468d5c5de03ce00125a.png b/build/assets/images/04-40bfbd2ff4078468d5c5de03ce00125a.png deleted file mode 100644 index 47323983f..000000000 Binary files a/build/assets/images/04-40bfbd2ff4078468d5c5de03ce00125a.png and /dev/null differ diff --git a/build/assets/images/05-5906b94018c7589aa9c344af312053a6.png b/build/assets/images/05-5906b94018c7589aa9c344af312053a6.png deleted file mode 100644 index 24097d224..000000000 Binary files a/build/assets/images/05-5906b94018c7589aa9c344af312053a6.png and /dev/null differ diff --git a/build/assets/images/06-32a22c9b9717a8dbbb8f80d04883e82c.png b/build/assets/images/06-32a22c9b9717a8dbbb8f80d04883e82c.png deleted file mode 100644 index c1edf4a1d..000000000 Binary files a/build/assets/images/06-32a22c9b9717a8dbbb8f80d04883e82c.png and /dev/null differ diff --git a/build/assets/images/07-c39cf238bd5f1deaa6b66c55c3232c3e.png b/build/assets/images/07-c39cf238bd5f1deaa6b66c55c3232c3e.png deleted file mode 100644 index bb9b83de3..000000000 Binary files a/build/assets/images/07-c39cf238bd5f1deaa6b66c55c3232c3e.png and /dev/null differ diff --git a/build/assets/images/08-2b75b7405e667c0a4ed326be801fdcbe.png b/build/assets/images/08-2b75b7405e667c0a4ed326be801fdcbe.png deleted file mode 100644 index 8b7503533..000000000 Binary files a/build/assets/images/08-2b75b7405e667c0a4ed326be801fdcbe.png and /dev/null differ diff --git a/build/assets/images/09-8820ab91b63c915f3d5988102715c995.png b/build/assets/images/09-8820ab91b63c915f3d5988102715c995.png deleted file mode 100644 index 513369fd0..000000000 Binary files a/build/assets/images/09-8820ab91b63c915f3d5988102715c995.png and /dev/null differ diff --git a/build/assets/images/10-22bdf9fc91c5cf629702a9b651d92b72.png b/build/assets/images/10-22bdf9fc91c5cf629702a9b651d92b72.png deleted file mode 100644 index 53af0145f..000000000 Binary files a/build/assets/images/10-22bdf9fc91c5cf629702a9b651d92b72.png and /dev/null differ diff --git a/build/assets/images/11-4ed536df5ccab515473817e33da2ffb5.png b/build/assets/images/11-4ed536df5ccab515473817e33da2ffb5.png deleted file mode 100644 index 5c97cbecd..000000000 Binary files a/build/assets/images/11-4ed536df5ccab515473817e33da2ffb5.png and /dev/null differ diff --git a/build/assets/images/12-689f052e4e05db6cd8619f0a89b59bec.png b/build/assets/images/12-689f052e4e05db6cd8619f0a89b59bec.png deleted file mode 100644 index 41d758f0e..000000000 Binary files a/build/assets/images/12-689f052e4e05db6cd8619f0a89b59bec.png and /dev/null differ diff --git a/build/assets/images/13-dfc7aa5bd7cc571ffed44adadfed733e.png b/build/assets/images/13-dfc7aa5bd7cc571ffed44adadfed733e.png deleted file mode 100644 index 6188efa58..000000000 Binary files a/build/assets/images/13-dfc7aa5bd7cc571ffed44adadfed733e.png and /dev/null differ diff --git a/build/assets/images/14-073db2dbe7b98001dd879cf588200ab2.png b/build/assets/images/14-073db2dbe7b98001dd879cf588200ab2.png deleted file mode 100644 index a539071ed..000000000 Binary files a/build/assets/images/14-073db2dbe7b98001dd879cf588200ab2.png and /dev/null differ diff --git a/build/assets/images/15-d71cb25489e0f745d61b4d0572448e53.png b/build/assets/images/15-d71cb25489e0f745d61b4d0572448e53.png deleted file mode 100644 index cf0b7febc..000000000 Binary files a/build/assets/images/15-d71cb25489e0f745d61b4d0572448e53.png and /dev/null differ diff --git a/build/assets/images/16-8d5a6c2144ac9e120f115e876ca15585.png b/build/assets/images/16-8d5a6c2144ac9e120f115e876ca15585.png deleted file mode 100644 index 87d3428e2..000000000 Binary files a/build/assets/images/16-8d5a6c2144ac9e120f115e876ca15585.png and /dev/null differ diff --git a/build/assets/images/17-bdc095149fa2ee4c57adca17afe51ca2.png b/build/assets/images/17-bdc095149fa2ee4c57adca17afe51ca2.png deleted file mode 100644 index 5d6b46d92..000000000 Binary files a/build/assets/images/17-bdc095149fa2ee4c57adca17afe51ca2.png and /dev/null differ diff --git a/build/assets/images/18-34ab2ce5edad2dd1d8e8dbedbe8f7e46.png b/build/assets/images/18-34ab2ce5edad2dd1d8e8dbedbe8f7e46.png deleted file mode 100644 index 0ef0d20a9..000000000 Binary files a/build/assets/images/18-34ab2ce5edad2dd1d8e8dbedbe8f7e46.png and /dev/null differ diff --git a/build/assets/images/19-48a3d1813850255cd74a906d9f1c91a3.png b/build/assets/images/19-48a3d1813850255cd74a906d9f1c91a3.png deleted file mode 100644 index 8d4838cd7..000000000 Binary files a/build/assets/images/19-48a3d1813850255cd74a906d9f1c91a3.png and /dev/null differ diff --git a/build/assets/images/20-1f256a3865f337d6c591d0014665770d.png b/build/assets/images/20-1f256a3865f337d6c591d0014665770d.png deleted file mode 100644 index 2dc5d3799..000000000 Binary files a/build/assets/images/20-1f256a3865f337d6c591d0014665770d.png and /dev/null differ diff --git a/build/assets/images/21-aa2ebc001ed51cd738a38ed8c7cbe1ed.png b/build/assets/images/21-aa2ebc001ed51cd738a38ed8c7cbe1ed.png deleted file mode 100644 index 63697c24e..000000000 Binary files a/build/assets/images/21-aa2ebc001ed51cd738a38ed8c7cbe1ed.png and /dev/null differ diff --git a/build/assets/images/22-0c7c91c0d8518e4c85479aa7c0a3a5b5.png b/build/assets/images/22-0c7c91c0d8518e4c85479aa7c0a3a5b5.png deleted file mode 100644 index a921f03c1..000000000 Binary files a/build/assets/images/22-0c7c91c0d8518e4c85479aa7c0a3a5b5.png and /dev/null differ diff --git a/build/assets/images/23-173e326fab8effac22e791dfeeefa625.png b/build/assets/images/23-173e326fab8effac22e791dfeeefa625.png deleted file mode 100644 index 16fbb3aaa..000000000 Binary files a/build/assets/images/23-173e326fab8effac22e791dfeeefa625.png and /dev/null differ diff --git a/build/assets/images/24-2e2eeb94c0330ccd9a2afb58ac75b8e9.png b/build/assets/images/24-2e2eeb94c0330ccd9a2afb58ac75b8e9.png deleted file mode 100644 index cc3f304dc..000000000 Binary files a/build/assets/images/24-2e2eeb94c0330ccd9a2afb58ac75b8e9.png and /dev/null differ diff --git a/build/assets/images/25-e2de55a3cc831069b95f71de2478a8d8.png b/build/assets/images/25-e2de55a3cc831069b95f71de2478a8d8.png deleted file mode 100644 index b924b9db8..000000000 Binary files a/build/assets/images/25-e2de55a3cc831069b95f71de2478a8d8.png and /dev/null differ diff --git a/build/assets/images/26-9ab4dc9cf17d1b6cc93d11743824f3c9.png b/build/assets/images/26-9ab4dc9cf17d1b6cc93d11743824f3c9.png deleted file mode 100644 index aa5870618..000000000 Binary files a/build/assets/images/26-9ab4dc9cf17d1b6cc93d11743824f3c9.png and /dev/null differ diff --git a/build/assets/images/27-1832e352f87b6354eaa7ad6830abefea.png b/build/assets/images/27-1832e352f87b6354eaa7ad6830abefea.png deleted file mode 100644 index a2cac2f52..000000000 Binary files a/build/assets/images/27-1832e352f87b6354eaa7ad6830abefea.png and /dev/null differ diff --git a/build/assets/images/28-ca053a5f739981b7b18302d6db12669d.png b/build/assets/images/28-ca053a5f739981b7b18302d6db12669d.png deleted file mode 100644 index 96bf40dd6..000000000 Binary files a/build/assets/images/28-ca053a5f739981b7b18302d6db12669d.png and /dev/null differ diff --git a/build/assets/images/ExampleDapp1-96e1594e7db7d9945a90a121447ad21c.png b/build/assets/images/ExampleDapp1-96e1594e7db7d9945a90a121447ad21c.png deleted file mode 100644 index 54194409d..000000000 Binary files a/build/assets/images/ExampleDapp1-96e1594e7db7d9945a90a121447ad21c.png and /dev/null differ diff --git a/build/assets/images/ExampleDapp2-bdb0b04b62866c0000bac8cf45d693b8.png b/build/assets/images/ExampleDapp2-bdb0b04b62866c0000bac8cf45d693b8.png deleted file mode 100644 index 2e97b9bc7..000000000 Binary files a/build/assets/images/ExampleDapp2-bdb0b04b62866c0000bac8cf45d693b8.png and /dev/null differ diff --git a/build/assets/images/LogoMorphWhite-summary-dc9797d7eb85ed22d18a1cbda84342e5.svg b/build/assets/images/LogoMorphWhite-summary-dc9797d7eb85ed22d18a1cbda84342e5.svg deleted file mode 100644 index e5530355f..000000000 --- a/build/assets/images/LogoMorphWhite-summary-dc9797d7eb85ed22d18a1cbda84342e5.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/assets/images/archi-722265224ea729def09d6641d267c941.png b/build/assets/images/archi-722265224ea729def09d6641d267c941.png deleted file mode 100644 index c1c207edf..000000000 Binary files a/build/assets/images/archi-722265224ea729def09d6641d267c941.png and /dev/null differ diff --git a/build/assets/images/archi-d41d5b2f09000115cef0dfea3705b7aa.png b/build/assets/images/archi-d41d5b2f09000115cef0dfea3705b7aa.png deleted file mode 100644 index 90c20e985..000000000 Binary files a/build/assets/images/archi-d41d5b2f09000115cef0dfea3705b7aa.png and /dev/null differ diff --git a/build/assets/images/avp-fa162f2180b681e8807908f00d195c43.png b/build/assets/images/avp-fa162f2180b681e8807908f00d195c43.png deleted file mode 100644 index 9647a022e..000000000 Binary files a/build/assets/images/avp-fa162f2180b681e8807908f00d195c43.png and /dev/null differ diff --git a/build/assets/images/batch-sign-8ddddc5b593f0238b63eff3a0f679b32.png b/build/assets/images/batch-sign-8ddddc5b593f0238b63eff3a0f679b32.png deleted file mode 100644 index 510a83aaf..000000000 Binary files a/build/assets/images/batch-sign-8ddddc5b593f0238b63eff3a0f679b32.png and /dev/null differ diff --git a/build/assets/images/bg-5badadc4ca0a26b003becdf097ddbf12.svg b/build/assets/images/bg-5badadc4ca0a26b003becdf097ddbf12.svg deleted file mode 100644 index 822229d0e..000000000 --- a/build/assets/images/bg-5badadc4ca0a26b003becdf097ddbf12.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/assets/images/biconomy-837b6cf4a7c94f3bf1da46a565cc25e6.png b/build/assets/images/biconomy-837b6cf4a7c94f3bf1da46a565cc25e6.png deleted file mode 100644 index 6e0d2bf40..000000000 Binary files a/build/assets/images/biconomy-837b6cf4a7c94f3bf1da46a565cc25e6.png and /dev/null differ diff --git a/build/assets/images/bitgetwallet-daacbe3eec4f40e395c926e7082694a2.png b/build/assets/images/bitgetwallet-daacbe3eec4f40e395c926e7082694a2.png deleted file mode 100644 index 451b9cd2c..000000000 Binary files a/build/assets/images/bitgetwallet-daacbe3eec4f40e395c926e7082694a2.png and /dev/null differ diff --git a/build/assets/images/block-con-175b7060545d69ab99290496c4ca3d16.png b/build/assets/images/block-con-175b7060545d69ab99290496c4ca3d16.png deleted file mode 100644 index 2b9916bc1..000000000 Binary files a/build/assets/images/block-con-175b7060545d69ab99290496c4ca3d16.png and /dev/null differ diff --git a/build/assets/images/compare3-4c06621b13d69cb38eec6f6ba9ee49b9.png b/build/assets/images/compare3-4c06621b13d69cb38eec6f6ba9ee49b9.png deleted file mode 100644 index 2733d6b66..000000000 Binary files a/build/assets/images/compare3-4c06621b13d69cb38eec6f6ba9ee49b9.png and /dev/null differ diff --git a/build/assets/images/cv-4d3a7c9df0e287432f8b25c935cd1ea3.png b/build/assets/images/cv-4d3a7c9df0e287432f8b25c935cd1ea3.png deleted file mode 100644 index ec51c0a32..000000000 Binary files a/build/assets/images/cv-4d3a7c9df0e287432f8b25c935cd1ea3.png and /dev/null differ diff --git a/build/assets/images/deposit-cf5de32f737bb412d4f2e8043a984287.png b/build/assets/images/deposit-cf5de32f737bb412d4f2e8043a984287.png deleted file mode 100644 index 7f30cef99..000000000 Binary files a/build/assets/images/deposit-cf5de32f737bb412d4f2e8043a984287.png and /dev/null differ diff --git a/build/assets/images/devintro-af1fa91181efcded8682d179b40db272.png b/build/assets/images/devintro-af1fa91181efcded8682d179b40db272.png deleted file mode 100644 index 3b5ad0b82..000000000 Binary files a/build/assets/images/devintro-af1fa91181efcded8682d179b40db272.png and /dev/null differ diff --git a/build/assets/images/dseq1-afce583c551d8ca96f458ddb7ed2eac3.jpg b/build/assets/images/dseq1-afce583c551d8ca96f458ddb7ed2eac3.jpg deleted file mode 100644 index 877d5226c..000000000 Binary files a/build/assets/images/dseq1-afce583c551d8ca96f458ddb7ed2eac3.jpg and /dev/null differ diff --git a/build/assets/images/eOracle-9d570f06c3957d25e5cfb7159cb3e7cc.jpg b/build/assets/images/eOracle-9d570f06c3957d25e5cfb7159cb3e7cc.jpg deleted file mode 100644 index 41d61e9d0..000000000 Binary files a/build/assets/images/eOracle-9d570f06c3957d25e5cfb7159cb3e7cc.jpg and /dev/null differ diff --git a/build/assets/images/envio-b6ab67a576429dcc70f99275a1c85f04.png b/build/assets/images/envio-b6ab67a576429dcc70f99275a1c85f04.png deleted file mode 100644 index 3b838cdc3..000000000 Binary files a/build/assets/images/envio-b6ab67a576429dcc70f99275a1c85f04.png and /dev/null differ diff --git a/build/assets/images/faucet_c-305e3bef375c3574c130e5e7cf383aa9.png b/build/assets/images/faucet_c-305e3bef375c3574c130e5e7cf383aa9.png deleted file mode 100644 index dfe861388..000000000 Binary files a/build/assets/images/faucet_c-305e3bef375c3574c130e5e7cf383aa9.png and /dev/null differ diff --git a/build/assets/images/faucet_eth-27d4a9081af0054de2ccfdc1813c11b5.png b/build/assets/images/faucet_eth-27d4a9081af0054de2ccfdc1813c11b5.png deleted file mode 100644 index eae011cb9..000000000 Binary files a/build/assets/images/faucet_eth-27d4a9081af0054de2ccfdc1813c11b5.png and /dev/null differ diff --git a/build/assets/images/flatsourcesol-41a879112babbd6397b588b2b4e69daa.png b/build/assets/images/flatsourcesol-41a879112babbd6397b588b2b4e69daa.png deleted file mode 100644 index d3b2195ae..000000000 Binary files a/build/assets/images/flatsourcesol-41a879112babbd6397b588b2b4e69daa.png and /dev/null differ diff --git a/build/assets/images/goldsky-c0d8510a51ed749e42c2752506049baa.png b/build/assets/images/goldsky-c0d8510a51ed749e42c2752506049baa.png deleted file mode 100644 index 0c7ec945a..000000000 Binary files a/build/assets/images/goldsky-c0d8510a51ed749e42c2752506049baa.png and /dev/null differ diff --git a/build/assets/images/layerzero-729926ffd8eadd4c2ed9ce27f314d627.png b/build/assets/images/layerzero-729926ffd8eadd4c2ed9ce27f314d627.png deleted file mode 100644 index 05286f86b..000000000 Binary files a/build/assets/images/layerzero-729926ffd8eadd4c2ed9ce27f314d627.png and /dev/null differ diff --git a/build/assets/images/modu-01191e93311b938abebd1189bfb69b21.png b/build/assets/images/modu-01191e93311b938abebd1189bfb69b21.png deleted file mode 100644 index 795c36fa4..000000000 Binary files a/build/assets/images/modu-01191e93311b938abebd1189bfb69b21.png and /dev/null differ diff --git a/build/assets/images/mpfsol-3a7d7ba4b61955208a7221a347c914c3.png b/build/assets/images/mpfsol-3a7d7ba4b61955208a7221a347c914c3.png deleted file mode 100644 index a8fd5b6d4..000000000 Binary files a/build/assets/images/mpfsol-3a7d7ba4b61955208a7221a347c914c3.png and /dev/null differ diff --git a/build/assets/images/mpfsol2-53fcc6c9ea28eb6114b242e08ba8bb1a.png b/build/assets/images/mpfsol2-53fcc6c9ea28eb6114b242e08ba8bb1a.png deleted file mode 100644 index 314bbbf8c..000000000 Binary files a/build/assets/images/mpfsol2-53fcc6c9ea28eb6114b242e08ba8bb1a.png and /dev/null differ diff --git a/build/assets/images/mpfv-43dad07bd7fd43eb3721dc7611560ac4.png b/build/assets/images/mpfv-43dad07bd7fd43eb3721dc7611560ac4.png deleted file mode 100644 index d71e19300..000000000 Binary files a/build/assets/images/mpfv-43dad07bd7fd43eb3721dc7611560ac4.png and /dev/null differ diff --git a/build/assets/images/opzk-9ae9b91f62e5e1b9e4771ee2e441c2ba.png b/build/assets/images/opzk-9ae9b91f62e5e1b9e4771ee2e441c2ba.png deleted file mode 100644 index e8568880c..000000000 Binary files a/build/assets/images/opzk-9ae9b91f62e5e1b9e4771ee2e441c2ba.png and /dev/null differ diff --git a/build/assets/images/opzk-f22d92ddda6b9d38f0f917f2025c7b28.png b/build/assets/images/opzk-f22d92ddda6b9d38f0f917f2025c7b28.png deleted file mode 100644 index 990f4ef72..000000000 Binary files a/build/assets/images/opzk-f22d92ddda6b9d38f0f917f2025c7b28.png and /dev/null differ diff --git a/build/assets/images/pyth-27d190b1aedaa470332ff9ad3bef8b2f.jpg b/build/assets/images/pyth-27d190b1aedaa470332ff9ad3bef8b2f.jpg deleted file mode 100644 index 593fa232e..000000000 Binary files a/build/assets/images/pyth-27d190b1aedaa470332ff9ad3bef8b2f.jpg and /dev/null differ diff --git a/build/assets/images/quicknode-945411ff7555a71106ac7e989720c510.png b/build/assets/images/quicknode-945411ff7555a71106ac7e989720c510.png deleted file mode 100644 index 907f7f12f..000000000 Binary files a/build/assets/images/quicknode-945411ff7555a71106ac7e989720c510.png and /dev/null differ diff --git a/build/assets/images/roadmap-85df143f684e2e7f404102eb39eb2adf.png b/build/assets/images/roadmap-85df143f684e2e7f404102eb39eb2adf.png deleted file mode 100644 index eda364437..000000000 Binary files a/build/assets/images/roadmap-85df143f684e2e7f404102eb39eb2adf.png and /dev/null differ diff --git a/build/assets/images/rollup-768caf2d310d19ce9909d718badd44e5.png b/build/assets/images/rollup-768caf2d310d19ce9909d718badd44e5.png deleted file mode 100644 index c113036c8..000000000 Binary files a/build/assets/images/rollup-768caf2d310d19ce9909d718badd44e5.png and /dev/null differ diff --git a/build/assets/images/rvpbanner1-6a61bf43aee91ff017a046a76e3c85d8.jpg b/build/assets/images/rvpbanner1-6a61bf43aee91ff017a046a76e3c85d8.jpg deleted file mode 100644 index 595f75920..000000000 Binary files a/build/assets/images/rvpbanner1-6a61bf43aee91ff017a046a76e3c85d8.jpg and /dev/null differ diff --git a/build/assets/images/safemultisig-af738a8a2e55a1aeaa11c3e37bdedc87.png b/build/assets/images/safemultisig-af738a8a2e55a1aeaa11c3e37bdedc87.png deleted file mode 100644 index bc6195581..000000000 Binary files a/build/assets/images/safemultisig-af738a8a2e55a1aeaa11c3e37bdedc87.png and /dev/null differ diff --git a/build/assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png b/build/assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png deleted file mode 100644 index 2ef524da2..000000000 Binary files a/build/assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png and /dev/null differ diff --git a/build/assets/images/sjisol1-d065f42e5cb024651428c3f700fc3662.png b/build/assets/images/sjisol1-d065f42e5cb024651428c3f700fc3662.png deleted file mode 100644 index 8da261ec9..000000000 Binary files a/build/assets/images/sjisol1-d065f42e5cb024651428c3f700fc3662.png and /dev/null differ diff --git a/build/assets/images/sjisol3-71ed80d677f12848aba5fa829f7b6fb2.png b/build/assets/images/sjisol3-71ed80d677f12848aba5fa829f7b6fb2.png deleted file mode 100644 index 527f8700b..000000000 Binary files a/build/assets/images/sjisol3-71ed80d677f12848aba5fa829f7b6fb2.png and /dev/null differ diff --git a/build/assets/images/sjiv-2d889a272a34ef1415529bced91d39c2.png b/build/assets/images/sjiv-2d889a272a34ef1415529bced91d39c2.png deleted file mode 100644 index 0436c7675..000000000 Binary files a/build/assets/images/sjiv-2d889a272a34ef1415529bced91d39c2.png and /dev/null differ diff --git a/build/assets/images/socialscan-64f9f8181cf2e033709c7dda3a153e1f.png b/build/assets/images/socialscan-64f9f8181cf2e033709c7dda3a153e1f.png deleted file mode 100644 index 5873eaeaf..000000000 Binary files a/build/assets/images/socialscan-64f9f8181cf2e033709c7dda3a153e1f.png and /dev/null differ diff --git a/build/assets/images/spaceid-29fd0d4f081ffeee5410ca83a259a04e.png b/build/assets/images/spaceid-29fd0d4f081ffeee5410ca83a259a04e.png deleted file mode 100644 index bd2c17c81..000000000 Binary files a/build/assets/images/spaceid-29fd0d4f081ffeee5410ca83a259a04e.png and /dev/null differ diff --git a/build/assets/images/subg-c6633cc1c116f6b625a78ca4d006b583.png b/build/assets/images/subg-c6633cc1c116f6b625a78ca4d006b583.png deleted file mode 100644 index b4982ae90..000000000 Binary files a/build/assets/images/subg-c6633cc1c116f6b625a78ca4d006b583.png and /dev/null differ diff --git a/build/assets/images/success-bb6955917712ae77607b6906bd3043a6.png b/build/assets/images/success-bb6955917712ae77607b6906bd3043a6.png deleted file mode 100644 index d9f1038d8..000000000 Binary files a/build/assets/images/success-bb6955917712ae77607b6906bd3043a6.png and /dev/null differ diff --git a/build/assets/images/tenderly-37aa9e647d64e8a05c58b91fa7c7786a.png b/build/assets/images/tenderly-37aa9e647d64e8a05c58b91fa7c7786a.png deleted file mode 100644 index 380052d7d..000000000 Binary files a/build/assets/images/tenderly-37aa9e647d64e8a05c58b91fa7c7786a.png and /dev/null differ diff --git a/build/assets/images/tokenlist1-ec52b3b1b3f60e802cf106df55eb4090.png b/build/assets/images/tokenlist1-ec52b3b1b3f60e802cf106df55eb4090.png deleted file mode 100644 index 73a865b70..000000000 Binary files a/build/assets/images/tokenlist1-ec52b3b1b3f60e802cf106df55eb4090.png and /dev/null differ diff --git a/build/assets/images/tokenlist2-0fbc5cfcd77ce1b4d2306b9afd179a98.png b/build/assets/images/tokenlist2-0fbc5cfcd77ce1b4d2306b9afd179a98.png deleted file mode 100644 index ad748696c..000000000 Binary files a/build/assets/images/tokenlist2-0fbc5cfcd77ce1b4d2306b9afd179a98.png and /dev/null differ diff --git a/build/assets/images/tokenlist3-28ed57c8d69932cab63386f505f5c970.png b/build/assets/images/tokenlist3-28ed57c8d69932cab63386f505f5c970.png deleted file mode 100644 index 960b5961a..000000000 Binary files a/build/assets/images/tokenlist3-28ed57c8d69932cab63386f505f5c970.png and /dev/null differ diff --git a/build/assets/images/tokenlist4-0c123dddfae82f9b16ef1bedc26e5476.png b/build/assets/images/tokenlist4-0c123dddfae82f9b16ef1bedc26e5476.png deleted file mode 100644 index 6bc6e9c6e..000000000 Binary files a/build/assets/images/tokenlist4-0c123dddfae82f9b16ef1bedc26e5476.png and /dev/null differ diff --git a/build/assets/images/userpage-dd6c915f303c8e17ee4c99d625ca9fd6.png b/build/assets/images/userpage-dd6c915f303c8e17ee4c99d625ca9fd6.png deleted file mode 100644 index bf36c2d80..000000000 Binary files a/build/assets/images/userpage-dd6c915f303c8e17ee4c99d625ca9fd6.png and /dev/null differ diff --git a/build/assets/images/web_faucet-b5d9025ea3388c8c9d902fcd41898f36.jpg b/build/assets/images/web_faucet-b5d9025ea3388c8c9d902fcd41898f36.jpg deleted file mode 100644 index 1c6501007..000000000 Binary files a/build/assets/images/web_faucet-b5d9025ea3388c8c9d902fcd41898f36.jpg and /dev/null differ diff --git a/build/assets/images/withdraw-e4ea40dac68ef9cc3ee73a43eb46a3b2.png b/build/assets/images/withdraw-e4ea40dac68ef9cc3ee73a43eb46a3b2.png deleted file mode 100644 index 9b6116a0d..000000000 Binary files a/build/assets/images/withdraw-e4ea40dac68ef9cc3ee73a43eb46a3b2.png and /dev/null differ diff --git a/build/assets/js/028d32dc.b0c0048b.js b/build/assets/js/028d32dc.b0c0048b.js deleted file mode 100644 index 065fe9c8b..000000000 --- a/build/assets/js/028d32dc.b0c0048b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3797],{2037:(s,e,n)=>{n.r(e),n.d(e,{assets:()=>i,contentTitle:()=>t,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var r=n(6070),d=n(1582);const o={},t="Function: toAddress()",c={id:"build-on-morph/sdk/functions/toAddress",title:"toAddress",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/toAddress.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/toAddress",permalink:"/docs/build-on-morph/sdk/functions/toAddress",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/toAddress.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(s){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,d.R)(),...s.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(e.hr,{}),"\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / toAddress"]}),"\n",(0,r.jsx)(e.h1,{id:"function-toaddress",children:"Function: toAddress()"}),"\n",(0,r.jsxs)(e.blockquote,{children:["\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.strong,{children:"toAddress"}),"(",(0,r.jsx)(e.code,{children:"addr"}),"): ",(0,r.jsx)(e.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(e.p,{children:"Converts an address-like into a 0x-prefixed address string."}),"\n",(0,r.jsx)(e.h2,{id:"parameters",children:"Parameters"}),"\n",(0,r.jsxs)(e.p,{children:["\u2022 ",(0,r.jsx)(e.strong,{children:"addr"}),": ",(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(e.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(e.p,{children:"Address-like to convert into an address."}),"\n",(0,r.jsx)(e.h2,{id:"returns",children:"Returns"}),"\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.code,{children:"string"})}),"\n",(0,r.jsx)(e.p,{children:"Address-like as an address."}),"\n",(0,r.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(e.p,{children:"src/utils/coercion.ts:104"})]})}function u(s={}){const{wrapper:e}={...(0,d.R)(),...s.components};return e?(0,r.jsx)(e,{...s,children:(0,r.jsx)(h,{...s})}):h(s)}},1582:(s,e,n)=>{n.d(e,{R:()=>t,x:()=>c});var r=n(758);const d={},o=r.createContext(d);function t(s){const e=r.useContext(o);return r.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function c(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(d):s.components||d:t(s.components),r.createElement(o.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/02a35c22.cf697fb9.js b/build/assets/js/02a35c22.cf697fb9.js deleted file mode 100644 index 370ae920a..000000000 --- a/build/assets/js/02a35c22.cf697fb9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9849],{1545:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>i});var o=n(6070),r=n(1582);const t={},c="Variable: DEFAULT_L1_CONTRACT_ADDRESSES",d={id:"build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES",title:"DEFAULT_L1_CONTRACT_ADDRESSES",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES",permalink:"/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.md",tags:[],version:"current",frontMatter:{}},l={},i=[{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / DEFAULT_L1_CONTRACT_ADDRESSES"]}),"\n",(0,o.jsx)(s.h1,{id:"variable-default_l1_contract_addresses",children:"Variable: DEFAULT_L1_CONTRACT_ADDRESSES"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.code,{children:"const"})," ",(0,o.jsx)(s.strong,{children:"DEFAULT_L1_CONTRACT_ADDRESSES"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike",children:(0,o.jsx)(s.code,{children:"OEL1ContractsLike"})})]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Full list of default L1 contract addresses."}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/utils/chain-constants.ts:61"})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>d});var o=n(758);const r={},t=o.createContext(r);function c(e){const s=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/066c1628.ef013ffd.js b/build/assets/js/066c1628.ef013ffd.js deleted file mode 100644 index b50529fb1..000000000 --- a/build/assets/js/066c1628.ef013ffd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9075],{1833:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var n=o(6070),s=o(1582);const t={},d="Variable: l1BridgeName",c={id:"build-on-morph/sdk/variables/l1BridgeName",title:"l1BridgeName",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/l1BridgeName.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/l1BridgeName",permalink:"/docs/build-on-morph/sdk/variables/l1BridgeName",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/l1BridgeName.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Source",id:"source",level:2}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / l1BridgeName"]}),"\n",(0,n.jsx)(r.h1,{id:"variable-l1bridgename",children:"Variable: l1BridgeName"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.code,{children:"const"})," ",(0,n.jsx)(r.strong,{children:"l1BridgeName"}),": ",(0,n.jsx)(r.code,{children:'"L1GatewayRouter"'})," = ",(0,n.jsx)(r.code,{children:"'L1GatewayRouter'"})]}),"\n"]}),"\n",(0,n.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/cross-chain-messenger.ts:69"})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,r,o)=>{o.d(r,{R:()=>d,x:()=>c});var n=o(758);const s={},t=n.createContext(s);function d(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),n.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/08313b4f.d3eefb9b.js b/build/assets/js/08313b4f.d3eefb9b.js deleted file mode 100644 index 5a8591681..000000000 --- a/build/assets/js/08313b4f.d3eefb9b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3894],{2701:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>a});var r=o(6070),s=o(1582);const t={},c="Variable: CONTRACT_ADDRESSES",i={id:"build-on-morph/sdk/variables/CONTRACT_ADDRESSES",title:"CONTRACT_ADDRESSES",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/CONTRACT_ADDRESSES",permalink:"/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.md",tags:[],version:"current",frontMatter:{}},d={},a=[{value:"Source",id:"source",level:2}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / CONTRACT_ADDRESSES"]}),"\n",(0,r.jsx)(n.h1,{id:"variable-contract_addresses",children:"Variable: CONTRACT_ADDRESSES"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"const"})," ",(0,r.jsx)(n.strong,{children:"CONTRACT_ADDRESSES"}),": ",(0,r.jsx)(n.code,{children:"{ [ChainID in L2ChainID]: OEContractsLike }"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Mapping of L1 chain IDs to the appropriate contract addresses for the OE deployments to the\ngiven network. Simplifies the process of getting the correct contract addresses for a given\ncontract name."}),"\n",(0,r.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/utils/chain-constants.ts:100"})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>c,x:()=>i});var r=o(758);const s={},t=r.createContext(s);function c(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/08b9f613.2292ec97.js b/build/assets/js/08b9f613.2292ec97.js deleted file mode 100644 index f3d770fdd..000000000 --- a/build/assets/js/08b9f613.2292ec97.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2736],{5270:(e,o,i)=>{i.r(o),i.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var n=i(6070),t=i(1582);const r={title:"Overview",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"about-morph/overview-of-morph",title:"Overview",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/1-overview-of-morph.md",sourceDirName:"about-morph",slug:"/about-morph/overview-of-morph",permalink:"/docs/about-morph/overview-of-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/1-overview-of-morph.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Overview",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Welcome to Morph",permalink:"/docs/about-morph/user-navigation-page"},next:{title:"The Technology Behind Morph",permalink:"/docs/about-morph/the-technology-behind-morph"}},c={},l=[{value:"What Makes Morph Special",id:"what-makes-morph-special",level:2},{value:"Decentralized Sequencer Network",id:"decentralized-sequencer-network",level:3},{value:"Optimistic zkEVM Integration",id:"optimistic-zkevm-integration",level:3},{value:"Modular Design",id:"modular-design",level:3}];function h(e){const o={a:"a",h2:"h2",h3:"h3",p:"p",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.p,{children:"Welcome to Morph, a blockchain for consumers. At the core of Morph is a revolutionary approach to Ethereum Layer 2 scalability, harnessing the power of rollup technology."}),"\n",(0,n.jsx)(o.p,{children:"Our platform is uniquely designed to enhance the blockchain experience, making it more accessible, efficient, and user-friendly for both developers and consumers. We achieve these innovations through a unique combination of cutting-edge technologies."}),"\n",(0,n.jsx)(o.h2,{id:"what-makes-morph-special",children:"What Makes Morph Special"}),"\n",(0,n.jsx)(o.p,{children:"Given that our platform is built on the philosophy of consumer-centric innovation, we believe blockchain technology has the transformative power to enhance users\u2019 daily lives. To accomplish this vision, our infrastructure has three core technological components that function as the foundation of a consumer blockchain."}),"\n",(0,n.jsx)(o.h3,{id:"decentralized-sequencer-network",children:"Decentralized Sequencer Network"}),"\n",(0,n.jsx)(o.p,{children:"Morph\u2019s distribution of the sequencing role eliminates single points of failure, reduces transaction censorship, and prevents monopolies over Miner Extractable Value (MEV). Building on Morph means guaranteed high availability, resilience, and fairness in transaction processing."}),"\n",(0,n.jsx)(o.h3,{id:"optimistic-zkevm-integration",children:"Optimistic zkEVM Integration"}),"\n",(0,n.jsx)(o.p,{children:"Morph\u2019s Optimistic zkEVM Integration combines the efficiency of optimistic rollups with the security of zero-knowledge proofs, using a novel method called Responsive Validity Proof (RVP). RVP reduces costs and shortens withdrawal periods while maintaining high security, enabling robust applications that don\u2019t compromise on performance or security."}),"\n",(0,n.jsx)(o.h3,{id:"modular-design",children:"Modular Design"}),"\n",(0,n.jsx)(o.p,{children:"Morph's architecture is divided into three modules: Sequencer Network for consensus and execution, Optimistic zkEVM for state verification, and Rollup for data availability. Developers can build and maintain applications more efficiently, ensuring each component can be upgraded independently without disrupting the entire system."}),"\n",(0,n.jsxs)(o.p,{children:["Before you dive into a deeper exploration of our technology, understanding our ",(0,n.jsx)(o.a,{href:"/docs/about-morph/morphs-vision-and-mission",children:"Vision and Mission"})," will offer a better idea of why Morph stands out in the industry."]})]})}function p(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,o,i)=>{i.d(o,{R:()=>s,x:()=>a});var n=i(758);const t={},r=n.createContext(t);function s(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/1483841d.c7695c94.js b/build/assets/js/1483841d.c7695c94.js deleted file mode 100644 index fc534597e..000000000 --- a/build/assets/js/1483841d.c7695c94.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1544],{7306:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>c,contentTitle:()=>i,default:()=>a,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var s=n(6070),t=n(1582);const o={},i="Interface: ProvenWithdrawal",d={id:"build-on-morph/sdk/interfaces/ProvenWithdrawal",title:"ProvenWithdrawal",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/ProvenWithdrawal",permalink:"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Properties",id:"properties",level:2},{value:"timestamp",id:"timestamp",level:3},{value:"Source",id:"source",level:4},{value:"withdrawalIndex",id:"withdrawalindex",level:3},{value:"Source",id:"source-1",level:4},{value:"withdrawalRoot",id:"withdrawalroot",level:3},{value:"Source",id:"source-2",level:4}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / ProvenWithdrawal"]}),"\n",(0,s.jsx)(r.h1,{id:"interface-provenwithdrawal",children:"Interface: ProvenWithdrawal"}),"\n",(0,s.jsx)(r.p,{children:"ProvenWithdrawal in L1CrossDomainMessenger"}),"\n",(0,s.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,s.jsx)(r.h3,{id:"timestamp",children:"timestamp"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"timestamp"}),": ",(0,s.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:316"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"withdrawalindex",children:"withdrawalIndex"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"withdrawalIndex"}),": ",(0,s.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:319"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"withdrawalroot",children:"withdrawalRoot"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"withdrawalRoot"}),": ",(0,s.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-2",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:318"})]})}function a(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>i,x:()=>d});var s=n(758);const t={},o=s.createContext(t);function i(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/17896441.26f2d090.js b/build/assets/js/17896441.26f2d090.js deleted file mode 100644 index dfe72d34f..000000000 --- a/build/assets/js/17896441.26f2d090.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8401],{5948:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Xt});var s=n(758),a=n(926),o=n(3991),i=n(6070);const l=s.createContext(null);function c(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,i.jsx)(l.Provider,{value:a,children:t})}function r(){const e=(0,s.useContext)(l);if(null===e)throw new o.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=r();return(0,i.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(3526),m=n(8080),h=n(7260),p=n(6601);function f(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,i.jsxs)(p.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function x(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(f,{...t,subLabel:(0,i.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(f,{...n,subLabel:(0,i.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function b(){const{metadata:e}=r();return(0,i.jsx)(x,{previous:e.previous,next:e.next})}var g=n(6869),j=n(9612),v=n(7998),N=n(3636),A=n(4451);const C={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function y(e){const t=C[e.versionMetadata.banner];return(0,i.jsx)(t,{...e})}function k(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,i.jsx)("b",{children:(0,i.jsx)(p.A,{to:n,onClick:s,children:(0,i.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function L(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:a}=(0,j.vT)({failfast:!0}),{savePreferredVersionName:o}=(0,N.g1)(a),{latestDocSuggestion:l,latestVersionSuggestion:c}=(0,j.HW)(a),r=l??(d=c).docs.find((e=>e.id===d.mainDocId));var d;return(0,i.jsxs)("div",{className:(0,u.A)(t,v.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,i.jsx)("div",{children:(0,i.jsx)(y,{siteTitle:s,versionMetadata:n})}),(0,i.jsx)("div",{className:"margin-top--md",children:(0,i.jsx)(k,{versionLabel:c.label,to:r.path,onClick:()=>o(c.name)})})]})}function _(e){let{className:t}=e;const n=(0,A.r)();return n.banner?(0,i.jsx)(L,{className:t,versionMetadata:n}):null}function B(e){let{className:t}=e;const n=(0,A.r)();return n.badge?(0,i.jsx)("span",{className:(0,u.A)(t,v.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,i.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}function w(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return(0,i.jsx)(h.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:new Date(1e3*t).toISOString(),children:n})})},children:" on {date}"})}function T(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(h.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:s}=e;return(0,i.jsxs)("span",{className:v.G.common.lastUpdated,children:[(0,i.jsx)(h.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?(0,i.jsx)(w,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:s?(0,i.jsx)(T,{lastUpdatedBy:s}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const H={iconEdit:"iconEdit_hqvt"};function M(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.A)(H.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function U(e){let{editUrl:t}=e;return(0,i.jsxs)(p.A,{to:t,className:v.G.common.editThisPage,children:[(0,i.jsx)(M,{}),(0,i.jsx)(h.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}const I={tag:"tag_G9wi",tagRegular:"tagRegular_ZX_1",tagWithCount:"tagWithCount_xGB6"};function S(e){let{permalink:t,label:n,count:s}=e;return(0,i.jsxs)(p.A,{href:t,className:(0,u.A)(I.tag,s?I.tagWithCount:I.tagRegular),children:[n,s&&(0,i.jsx)("span",{children:s})]})}const R={tags:"tags_NPqp",tag:"tag_WyCo"};function z(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,u.A)(R.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:n}=e;return(0,i.jsx)("li",{className:R.tag,children:(0,i.jsx)(S,{label:t,permalink:n})},n)}))})]})}const V={lastUpdated:"lastUpdated_rVBC"};function O(e){return(0,i.jsx)("div",{className:(0,u.A)(v.G.docs.docFooterTagsRow,"row margin-bottom--sm"),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(z,{...e})})})}function P(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,formattedLastUpdatedAt:a}=e;return(0,i.jsxs)("div",{className:(0,u.A)(v.G.docs.docFooterEditMetaRow,"row"),children:[(0,i.jsx)("div",{className:"col",children:t&&(0,i.jsx)(U,{editUrl:t})}),(0,i.jsx)("div",{className:(0,u.A)("col",V.lastUpdated),children:(n||s)&&(0,i.jsx)(E,{lastUpdatedAt:n,formattedLastUpdatedAt:a,lastUpdatedBy:s})})]})}function G(){const{metadata:e}=r(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:s,lastUpdatedBy:a,tags:o}=e,l=o.length>0,c=!!(t||n||a);return l||c?(0,i.jsxs)("footer",{className:(0,u.A)(v.G.docs.docFooter,"docusaurus-mt-lg"),children:[l&&(0,i.jsx)(O,{tags:o}),c&&(0,i.jsx)(P,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:a,formattedLastUpdatedAt:s})]}):null}var D=n(1069),$=n(5349);function F(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function W(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=W({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?q(e.parentNode):t}function Z(e,t){let{anchorTopOffset:n}=t;const s=e.find((e=>q(e).top>=n));if(s){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function J(e){const t=(0,s.useRef)(void 0),n=Y();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),c=Z(l,{anchorTopOffset:n.current}),r=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===r)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function K(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,i.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,i.jsxs)("li",{children:[(0,i.jsx)(p.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,i.jsx)(K,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const Q=s.memo(K);function X(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:l,maxHeadingLevel:c,...r}=e;const d=(0,$.p)(),u=l??d.tableOfContents.minHeadingLevel,m=c??d.tableOfContents.maxHeadingLevel,h=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>W({toc:F(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:u,maxHeadingLevel:m});return J((0,s.useMemo)((()=>{if(a&&o)return{linkClassName:a,linkActiveClassName:o,minHeadingLevel:u,maxHeadingLevel:m}}),[a,o,u,m])),(0,i.jsx)(Q,{toc:h,className:n,linkClassName:a,...r})}const ee={tocCollapsibleButton:"tocCollapsibleButton_fvqu",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_gSY7"};function te(e){let{collapsed:t,...n}=e;return(0,i.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",ee.tocCollapsibleButton,!t&&ee.tocCollapsibleButtonExpanded,n.className),children:(0,i.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const ne={tocCollapsible:"tocCollapsible_HBdG",tocCollapsibleContent:"tocCollapsibleContent_ZtRw",tocCollapsibleExpanded:"tocCollapsibleExpanded_Kmy0"};function se(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:o,toggleCollapsed:l}=(0,D.u)({initialState:!0});return(0,i.jsxs)("div",{className:(0,u.A)(ne.tocCollapsible,!o&&ne.tocCollapsibleExpanded,n),children:[(0,i.jsx)(te,{collapsed:o,onClick:l}),(0,i.jsx)(D.N,{lazy:!0,className:ne.tocCollapsibleContent,collapsed:o,children:(0,i.jsx)(X,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const ae={tocMobile:"tocMobile_z_cF"};function oe(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(se,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(v.G.docs.docTocMobile,ae.tocMobile)})}const ie={tableOfContents:"tableOfContents_Kj3J",docItemContainer:"docItemContainer_rccO"},le="table-of-contents__link toc-highlight",ce="table-of-contents__link--active";function re(e){let{className:t,...n}=e;return(0,i.jsx)("div",{className:(0,u.A)(ie.tableOfContents,"thin-scrollbar",t),children:(0,i.jsx)(X,{...n,linkClassName:le,linkActiveClassName:ce})})}function de(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(re,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:v.G.docs.docTocDesktop})}var ue=n(2406),me=n(1582),he=n(7471),pe=n(600),fe=n(1478);function xe(){const{prism:e}=(0,$.p)(),{colorMode:t}=(0,fe.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var be=n(4809),ge=n.n(be);const je=/title=(?["'])(?.*?)\1/,ve=/\{(?<range>[\d,-]+)\}/,Ne={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Ae={...Ne,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},Ce=Object.keys(Ne);function ye(e,t){const n=e.map((e=>{const{start:n,end:s}=Ae[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function ke(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&ve.test(o)){const e=o.match(ve).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=ge()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return ye(["js","jsBlock"],t);case"jsx":case"tsx":return ye(["js","jsBlock","jsx"],t);case"html":return ye(["js","jsBlock","html"],t);case"python":case"py":case"bash":return ye(["bash"],t);case"markdown":case"md":return ye(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return ye(["tex"],t);case"lua":case"haskell":case"sql":return ye(["lua"],t);case"wasm":return ye(["wasm"],t);case"vb":case"vba":case"visual-basic":return ye(["vb","rem"],t);case"vbnet":return ye(["vbnet","rem"],t);case"batch":return ye(["rem"],t);case"basic":return ye(["rem","f90"],t);case"fsharp":return ye(["js","ml"],t);case"ocaml":case"sml":return ye(["ml"],t);case"fortran":return ye(["f90"],t);case"cobol":return ye(["cobol"],t);default:return ye(Ce,t)}}(s,a),l=n.split("\n"),c=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),r=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<l.length;){const e=l[h].match(i);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));r[t]?c[r[t]].range+=`${h},`:d[t]?c[d[t]].start=h:u[t]&&(c[u[t]].range+=`${c[u[t]].start}-${h-1},`),l.splice(h,1)}n=l.join("\n");const m={};return Object.entries(c).forEach((e=>{let[t,{range:n}]=e;ge()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const Le="codeBlockContainer_jasU";function _e(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(xe());return(0,i.jsx)(t,{...n,style:s,className:(0,u.A)(n.className,Le,v.G.common.codeBlock)})}const Be={codeBlockContent:"codeBlockContent_TEEh",codeBlockTitle:"codeBlockTitle_e8pP",codeBlock:"codeBlock_Bkgn",codeBlockStandalone:"codeBlockStandalone__C0n",codeBlockLines:"codeBlockLines_lDP1",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_y7ta",buttonGroup:"buttonGroup_QYpy"};function we(e){let{children:t,className:n}=e;return(0,i.jsx)(_e,{as:"pre",tabIndex:0,className:(0,u.A)(Be.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:Be.codeBlockLines,children:t})})}const Te={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ee(e,t){const[n,a]=(0,s.useState)(),i=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{i()}),[i]),function(e,t,n){void 0===n&&(n=Te);const a=(0,o._q)(t),i=(0,o.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,i),()=>t.disconnect()}),[e,a,i])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),i())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var He=n(5371);const Me="codeLine_qib8",Ue="codeLineNumber_dbgI",Ie="codeLineContent_h2yX";function Se(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const l=a({line:t,className:(0,u.A)(n,s&&Me)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e,key:t})},t)));return(0,i.jsxs)("span",{...l,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:Ue}),(0,i.jsx)("span",{className:Ie,children:c})]}):c,(0,i.jsx)("br",{})]})}function Re(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function ze(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const Ve={copyButtonCopied:"copyButtonCopied_yinF",copyButtonIcons:"copyButtonIcons_SHCV",copyButtonIcon:"copyButtonIcon_rwkz",copyButtonSuccessIcon:"copyButtonSuccessIcon_B2xf"};function Oe(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),l.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,h.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,h.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,h.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.A)("clean-btn",n,Ve.copyButton,a&&Ve.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:Ve.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(Re,{className:Ve.copyButtonIcon}),(0,i.jsx)(ze,{className:Ve.copyButtonSuccessIcon})]})})}function Pe(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Ge="wordWrapButtonIcon_KMHO",De="wordWrapButtonEnabled_Eugp";function $e(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,h.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,u.A)("clean-btn",t,s&&De),"aria-label":a,title:a,children:(0,i.jsx)(Pe,{className:Ge,"aria-hidden":"true"})})}function Fe(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:r,magicComments:d}}=(0,$.p)(),m=function(e){return e?.toLowerCase()}(c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??r),h=xe(),p=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),l=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return Ee(o,l),(0,s.useEffect)((()=>{l()}),[e,l]),(0,s.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),f=function(e){return e?.match(je)?.groups.title??""}(a)||o,{lineClassNames:x,code:b}=ke(t,{metastring:a,language:m,magicComments:d}),g=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,i.jsxs)(_e,{as:"div",className:(0,u.A)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`),children:[f&&(0,i.jsx)("div",{className:Be.codeBlockTitle,children:f}),(0,i.jsxs)("div",{className:Be.codeBlockContent,children:[(0,i.jsx)(He.f4,{theme:h,code:b,language:m??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:p.codeBlockRef,className:(0,u.A)(t,Be.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,u.A)(Be.codeBlockLines,g&&Be.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(Se,{line:e,getLineProps:a,getTokenProps:o,classNames:x[t],showLineNumbers:g},t)))})})}}),(0,i.jsxs)("div",{className:Be.buttonGroup,children:[(p.isEnabled||p.isCodeScrollable)&&(0,i.jsx)($e,{className:Be.codeButton,onClick:()=>p.toggle(),isEnabled:p.isEnabled}),(0,i.jsx)(Oe,{className:Be.codeButton,code:b})]})]})]})}function We(e){let{children:t,...n}=e;const a=(0,pe.A)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof o?Fe:we;return(0,i.jsx)(l,{...n,children:o},String(a))}function qe(e){return(0,i.jsx)("code",{...e})}var Ze=n(2146);const Ye="details_NQJP",Je="isBrowser_nVDU",Ke="collapsibleContent_MmFW";function Qe(e){return!!e&&("SUMMARY"===e.tagName||Qe(e.parentElement))}function Xe(e,t){return!!e&&(e===t||Xe(e.parentElement,t))}function et(e){let{summary:t,children:n,...a}=e;(0,Ze.A)().collectAnchor(a.id);const o=(0,pe.A)(),l=(0,s.useRef)(null),{collapsed:c,setCollapsed:r}=(0,D.u)({initialState:!a.open}),[d,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:t??"Details"});return(0,i.jsxs)("details",{...a,ref:l,open:d,"data-collapsed":c,className:(0,u.A)(Ye,o&&Je,a.className),onMouseDown:e=>{Qe(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Qe(t)&&Xe(t,l.current)&&(e.preventDefault(),c?(r(!1),m(!0)):r(!0))},children:[h,(0,i.jsx)(D.N,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{r(e),m(!e)},children:(0,i.jsx)("div",{className:Ke,children:n})})]})}const tt="details_v4Yj";function nt(e){let{...t}=e;return(0,i.jsx)(et,{...t,className:(0,u.A)("alert alert--info",tt,t.className)})}function st(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(nt,{...e,summary:n,children:a})}function at(e){return(0,i.jsx)(ue.A,{...e})}const ot="containsTaskList_j67I";function it(e){if(void 0!==e)return(0,u.A)(e,e?.includes("contains-task-list")&&ot)}const lt="img_ce0i";function ct(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),o=n?.props.children;return{mdxAdmonitionTitle:o,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}const rt="admonition_qJAF",dt="admonitionHeading_WmUu",ut="admonitionIcon_FLlS",mt="admonitionContent_Lm9s";function ht(e){let{type:t,className:n,children:s}=e;return(0,i.jsx)("div",{className:(0,u.A)(v.G.common.admonition,v.G.common.admonitionType(t),rt,n),children:s})}function pt(e){let{icon:t,title:n}=e;return(0,i.jsxs)("div",{className:dt,children:[(0,i.jsx)("span",{className:ut,children:t}),n]})}function ft(e){let{children:t}=e;return t?(0,i.jsx)("div",{className:mt,children:t}):null}function xt(e){const{type:t,icon:n,title:s,children:a,className:o}=e;return(0,i.jsxs)(ht,{type:t,className:o,children:[(0,i.jsx)(pt,{title:s,icon:n}),(0,i.jsx)(ft,{children:a})]})}function bt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const gt={icon:(0,i.jsx)(bt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function jt(e){return(0,i.jsx)(xt,{...gt,...e,className:(0,u.A)("alert alert--secondary",e.className),children:e.children})}function vt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const Nt={icon:(0,i.jsx)(vt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function At(e){return(0,i.jsx)(xt,{...Nt,...e,className:(0,u.A)("alert alert--success",e.className),children:e.children})}function Ct(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const yt={icon:(0,i.jsx)(Ct,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function kt(e){return(0,i.jsx)(xt,{...yt,...e,className:(0,u.A)("alert alert--info",e.className),children:e.children})}function Lt(e){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const _t={icon:(0,i.jsx)(Lt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function Bt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const wt={icon:(0,i.jsx)(Bt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const Tt={icon:(0,i.jsx)(Lt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const Et={...{note:jt,tip:At,info:kt,warning:function(e){return(0,i.jsx)(xt,{..._t,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,i.jsx)(xt,{...wt,...e,className:(0,u.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,i.jsx)(jt,{title:"secondary",...e}),important:e=>(0,i.jsx)(kt,{title:"important",...e}),success:e=>(0,i.jsx)(At,{title:"success",...e}),caution:function(e){return(0,i.jsx)(xt,{...Tt,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})}}};function Ht(e){const t=ct(e),n=(s=t.type,Et[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),Et.info));var s;return(0,i.jsx)(n,{...t})}const Mt={Head:he.A,details:st,Details:st,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(qe,{...e}):(0,i.jsx)(We,{...e})},a:function(e){return(0,i.jsx)(p.A,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:it(e.className)})},li:function(e){return(0,Ze.A)().collectAnchor(e.id),(0,i.jsx)("li",{...e})},img:function(e){return(0,i.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.A)(t,lt))});var t},h1:e=>(0,i.jsx)(at,{as:"h1",...e}),h2:e=>(0,i.jsx)(at,{as:"h2",...e}),h3:e=>(0,i.jsx)(at,{as:"h3",...e}),h4:e=>(0,i.jsx)(at,{as:"h4",...e}),h5:e=>(0,i.jsx)(at,{as:"h5",...e}),h6:e=>(0,i.jsx)(at,{as:"h6",...e}),admonition:Ht,mermaid:()=>null};function Ut(e){let{children:t}=e;return(0,i.jsx)(me.x,{components:Mt,children:t})}function It(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=r();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,u.A)(v.G.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(ue.A,{as:"h1",children:n})}),(0,i.jsx)(Ut,{children:t})]})}var St=n(3745),Rt=n(8492),zt=n(7838);function Vt(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const Ot={breadcrumbHomeIcon:"breadcrumbHomeIcon_eIF0"};function Pt(){const e=(0,zt.A)("/");return(0,i.jsx)("li",{className:"breadcrumbs__item",children:(0,i.jsx)(p.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,i.jsx)(Vt,{className:Ot.breadcrumbHomeIcon})})})}const Gt={breadcrumbsContainer:"breadcrumbsContainer_y6NL"};function Dt(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,i.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,i.jsx)(p.A,{className:a,href:n,itemProp:"item",children:(0,i.jsx)("span",{itemProp:"name",children:t})}):(0,i.jsx)("span",{className:a,children:t})}function $t(e){let{children:t,active:n,index:s,addMicrodata:a}=e;return(0,i.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,i.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function Ft(){const e=(0,St.OF)(),t=(0,Rt.Dt)();return e?(0,i.jsx)("nav",{className:(0,u.A)(v.G.docs.docBreadcrumbs,Gt.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,i.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,i.jsx)(Pt,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,i.jsx)($t,{active:s,index:n,addMicrodata:!!a,children:(0,i.jsx)(Dt,{href:a,isLast:s,children:t.label})},n)}))]})}):null}function Wt(){return(0,i.jsx)(h.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function qt(){return(0,i.jsx)(h.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Zt(){return(0,i.jsx)(he.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function Yt(e){let{className:t}=e;return(0,i.jsx)(Ht,{type:"caution",title:(0,i.jsx)(Wt,{}),className:(0,u.A)(t,v.G.common.unlistedBanner),children:(0,i.jsx)(qt,{})})}function Jt(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Zt,{}),(0,i.jsx)(Yt,{...e})]})}const Kt={docItemContainer:"docItemContainer_AUwr",docItemCol:"docItemCol_dvZ9"};function Qt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=r(),n=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(oe,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(de,{})}}(),{metadata:{unlisted:s}}=r();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,u.A)("col",!n.hidden&&Kt.docItemCol),children:[s&&(0,i.jsx)(Jt,{}),(0,i.jsx)(_,{}),(0,i.jsxs)("div",{className:Kt.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(Ft,{}),(0,i.jsx)(B,{}),n.mobile,(0,i.jsx)(It,{children:t}),(0,i.jsx)(G,{})]}),(0,i.jsx)(b,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function Xt(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,i.jsx)(c,{content:e.content,children:(0,i.jsxs)(a.e3,{className:t,children:[(0,i.jsx)(d,{}),(0,i.jsx)(Qt,{children:(0,i.jsx)(n,{})})]})})}},4809:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=s;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},1582:(e,t,n)=>{"use strict";n.d(t,{R:()=>i,x:()=>l});var s=n(758);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/1a1587e1.d312ff53.js b/build/assets/js/1a1587e1.d312ff53.js deleted file mode 100644 index 34f758978..000000000 --- a/build/assets/js/1a1587e1.d312ff53.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5678],{5879:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>a});var t=i(6070),o=i(1582);const r={title:"Roadmap",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,l={id:"about-morph/roadmap",title:"Roadmap",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/6-roadmap.md",sourceDirName:"about-morph",slug:"/about-morph/roadmap",permalink:"/docs/about-morph/roadmap",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/6-roadmap.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Roadmap",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Key Concepts",permalink:"/docs/about-morph/key-concepts"},next:{title:"FAQs",permalink:"/docs/about-morph/faqs"}},c={},a=[{value:"2024 Q1",id:"2024-q1",level:2},{value:"2024 Q2",id:"2024-q2",level:2},{value:"2024 Q4",id:"2024-q4",level:2},{value:"2025 Q1",id:"2025-q1",level:2}];function d(e){const n={admonition:"admonition",h2:"h2",img:"img",li:"li",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsx)(n.p,{children:"The roadmap is subject to changes based on technological developments, community feedback, and external factors."})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"1",src:i(7275).A+"",width:"2504",height:"1398"})}),"\n",(0,t.jsx)(n.h2,{id:"2024-q1",children:"2024 Q1"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Optimistic zkEVM"}),"\n",(0,t.jsx)(n.li,{children:"Decentralized Sequencers"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"2024-q2",children:"2024 Q2"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"EIP-4844 Integration"}),"\n",(0,t.jsx)(n.li,{children:"zkEVM Upgrade"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"2024-q4",children:"2024 Q4"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"1st Rollup with SP1 zkVM"}),"\n",(0,t.jsx)(n.li,{children:"1st Rollup with Decentralized Sequencers"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"2025-q1",children:"2025 Q1"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Morph Pay"}),"\n",(0,t.jsx)(n.li,{children:"Gasless Transaction"}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},7275:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/roadmap-85df143f684e2e7f404102eb39eb2adf.png"},1582:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>l});var t=i(758);const o={},r=t.createContext(o);function s(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/1a4e3797.dc00afb6.js b/build/assets/js/1a4e3797.dc00afb6.js deleted file mode 100644 index 14bd3decb..000000000 --- a/build/assets/js/1a4e3797.dc00afb6.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 1a4e3797.dc00afb6.js.LICENSE.txt */ -(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2138],{8181:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,s,a,c,o,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(s=this._events[e]))return!1;if(r(s))switch(arguments.length){case 1:s.call(this);break;case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),s.apply(this,c)}else if(n(s))for(c=Array.prototype.slice.call(arguments,1),a=(u=s.slice()).length,o=0;o<a;o++)u[o].apply(this,c);return!0},t.prototype.addListener=function(e,s){var a;if(!r(s))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,r(s.listener)?s.listener:s),this._events[e]?n(this._events[e])?this._events[e].push(s):this._events[e]=[this._events[e],s]:this._events[e]=s,n(this._events[e])&&!this._events[e].warned&&(a=i(this._maxListeners)?t.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,s,a,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(i=this._events[e]).length,s=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=a;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){s=c;break}if(s<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(s,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8563:(e,t,r)=>{"use strict";var n=r(9719),i=r(5163),s=r(8971),a=r(4007),c=r(3183);function o(e,t,r,i){return new n(e,t,r,i)}o.version=r(4758),o.AlgoliaSearchHelper=n,o.SearchParameters=a,o.RecommendParameters=i,o.SearchResults=c,o.RecommendResults=s,e.exports=o},1691:(e,t,r)=>{"use strict";var n=r(8181);function i(e,t,r){this.main=e,this.fn=t,this.recommendFn=r,this.lastResults=null,this.lastRecommendResults=null}r(6026)(i,n),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},i.prototype.getModifiedRecommendState=function(e){return this.recommendFn(e)},e.exports=i},5163:e=>{"use strict";function t(e){e=e||{},this.params=e.params||[]}t.prototype={constructor:t,addParams:function(e){var r=this.params.slice();return r.push(e),new t({params:r})},removeParams:function(e){return new t({params:this.params.filter((function(t){return t.$$id!==e}))})},addFrequentlyBoughtTogether:function(e){return this.addParams(Object.assign({},e,{model:"bought-together"}))},addRelatedProducts:function(e){return this.addParams(Object.assign({},e,{model:"related-products"}))},addTrendingItems:function(e){return this.addParams(Object.assign({},e,{model:"trending-items"}))},addTrendingFacets:function(e){return this.addParams(Object.assign({},e,{model:"trending-facets"}))},addLookingSimilar:function(e){return this.addParams(Object.assign({},e,{model:"looking-similar"}))},_buildQueries:function(e,t){return this.params.filter((function(e){return void 0===t[e.$$id]})).map((function(t){var r=Object.assign({},t,{indexName:e,threshold:t.threshold||0});return delete r.$$id,r}))}},e.exports=t},8971:e=>{"use strict";function t(e,t){this._state=e,this._rawResults={};var r=this;e.params.forEach((function(e){var n=e.$$id;r[n]=t[n],r._rawResults[n]=t[n]}))}t.prototype={constructor:t},e.exports=t},6082:(e,t,r)=>{"use strict";var n=r(1410),i=r(9825),s=r(475),a={addRefinement:function(e,t,r){if(a.isRefined(e,t,r))return e;var i=""+r,s=e[t]?e[t].concat(i):[i],c={};return c[t]=s,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return a.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return a.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return a.isRefined(e,t,r)?a.removeRefinement(e,t,r):a.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return i(e)?{}:e;if("string"==typeof t)return s(e,[t]);if("function"==typeof t){var n=!1,a=Object.keys(e).reduce((function(i,s){var a=e[s]||[],c=a.filter((function(e){return!t(e,s,r)}));return c.length!==a.length&&(n=!0),i[s]=c,i}),{});return n?a:e}},isRefined:function(e,t,r){var n=Boolean(e[t])&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=a},4007:(e,t,r)=>{"use strict";var n=r(1410),i=r(917),s=r(8175),a=r(2364),c=r(9825),o=r(475),u=r(2503),h=r(8972),f=r(6082);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return a(e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&c(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):c(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var n=u(r);if(this.isNumericRefined(e,t,n))return this;var i=a({},this.numericRefinements);return i[e]=a({},i[e]),i[e][t]?(i[e][t]=i[e][t].slice(),i[e][t].push(n)):i[e][t]=[n],this.setQueryParameters({numericRefinements:i})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){var n=r;return void 0!==n?this.isNumericRefined(e,t,n)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,i){return i===e&&r.op===t&&l(r.val,u(n))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return c(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return o(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var s=r[i],a={};return s=s||{},Object.keys(s).forEach((function(r){var n=s[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),a[r]=c})),n[i]=a,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),i={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?i[e]=[]:i[e]=[t.slice(0,t.lastIndexOf(r))]:i[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:n({},i,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:n({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:n({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return Boolean(this.numericRefinements[e]);var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var s,a,c=u(r),o=void 0!==(s=this.numericRefinements[e][t],a=c,i(s,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=s(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets()).sort()},getRefinedHierarchicalFacets:function(){var e=this;return s(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0}))).sort()},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),s=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?o(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(s)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return i(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},1101:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var n=e.hierarchicalFacets[r],u=e.hierarchicalFacetsRefinements[n.name]&&e.hierarchicalFacetsRefinements[n.name][0]||"",h=e._getHierarchicalFacetSeparator(n),f=e._getHierarchicalRootPath(n),l=e._getHierarchicalShowParentLevel(n),m=s(e._getHierarchicalFacetSortBy(n)),d=t.every((function(e){return e.exhaustive})),p=function(e,t,r,n,s){return function(u,h,f){var l=u;if(f>0){var m=0;for(l=u;m<f;){var d=l&&Array.isArray(l.data)?l.data:[];l=i(d,(function(e){return e.isRefined})),m++}}if(l){var p=Object.keys(h.data).map((function(e){return[e,h.data[e]]})).filter((function(e){return function(e,t,r,n,i,s){if(i&&(0!==e.indexOf(i)||i===e))return!1;return!i&&-1===e.indexOf(n)||i&&e.split(n).length-i.split(n).length==1||-1===e.indexOf(n)&&-1===r.indexOf(n)||0===r.indexOf(e)||0===e.indexOf(t+n)&&(s||0===e.indexOf(r))}(e[0],l.path||r,s,t,r,n)}));l.data=a(p.map((function(e){var r=e[0];return function(e,t,r,n,i){var s=t.split(r);return{name:s[s.length-1].trim(),path:t,escapedValue:c(t),count:e,isRefined:n===t||0===n.indexOf(t+r),exhaustive:i,data:null}}(e[1],r,t,o(s),h.exhaustive)})),e[0],e[1])}return u}}(m,h,f,l,u),g=t;return f&&(g=t.slice(f.split(h).length)),g.reduce(p,{name:e.hierarchicalFacets[r].name,count:null,isRefined:!0,path:null,escapedValue:null,exhaustive:d,data:null})}};var n=r(5473),i=r(917),s=r(3861),a=r(2965),c=n.escapeFacetValue,o=n.unescapeFacetValue},3183:(e,t,r)=>{"use strict";var n=r(8001),i=r(1410),s=r(5473),a=r(917),c=r(7009),o=r(3861),u=r(2364),h=r(2965),f=s.escapeFacetValue,l=s.unescapeFacetValue,m=r(1101);function d(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function g(e,t,r){var s=t[0]||{};this._rawResults=t;var o=this;Object.keys(s).forEach((function(e){o[e]=s[e]}));var h=u({persistHierarchicalRootCount:!1},r);Object.keys(h).forEach((function(e){o[e]=h[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var f=e.getRefinedDisjunctiveFacets(),g=d(e.facets),v=d(e.disjunctiveFacets),y=1,R=s.facets||{};Object.keys(R).forEach((function(t){var r,n,i=R[t],u=(r=e.hierarchicalFacets,n=t,a(r,(function(e){return(e.attributes||[]).indexOf(n)>-1})));if(u){var h=u.attributes.indexOf(t),f=c(e.hierarchicalFacets,(function(e){return e.name===u.name}));o.hierarchicalFacets[f][h]={attribute:t,data:i,exhaustive:s.exhaustiveFacetsCount}}else{var l,m=-1!==e.disjunctiveFacets.indexOf(t),d=-1!==e.facets.indexOf(t);m&&(l=v[t],o.disjunctiveFacets[l]={name:t,data:i,exhaustive:s.exhaustiveFacetsCount},p(o.disjunctiveFacets[l],s.facets_stats,t)),d&&(l=g[t],o.facets[l]={name:t,data:i,exhaustive:s.exhaustiveFacetsCount},p(o.facets[l],s.facets_stats,t))}})),this.hierarchicalFacets=n(this.hierarchicalFacets),f.forEach((function(r){var n=t[y],a=n&&n.facets?n.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(a).forEach((function(t){var r,f=a[t];if(h){r=c(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=c(o.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;o.hierarchicalFacets[r][m].data=u({},o.hierarchicalFacets[r][m].data,f)}else{r=v[t];var d=s.facets&&s.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:i({},f,d),exhaustive:n.exhaustiveFacetsCount},p(o.disjunctiveFacets[r],n.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(n){!o.disjunctiveFacets[r].data[n]&&e.disjunctiveFacetsRefinements[t].indexOf(l(n))>-1&&(o.disjunctiveFacets[r].data[n]=0)}))}})),y++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),s=e._getHierarchicalFacetSeparator(n),a=e.getHierarchicalRefinement(r);0===a.length||a[0].split(s).length<2||t.slice(y).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var u=r[t],h=c(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=c(o.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(a.length>0&&!o.persistHierarchicalRootCount){var m=a[0].split(s)[0];l[m]=o.hierarchicalFacets[h][f].data[m]}o.hierarchicalFacets[h][f].data=i(l,u,o.hierarchicalFacets[h][f].data)}})),y++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],n=g[t];o.facets[n]={name:t,data:R[t],exhaustive:s.exhaustiveFacetsCount},r.forEach((function(e){o.facets[n]=o.facets[n]||{name:t},o.facets[n].data=o.facets[n].data||{},o.facets[n].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=n(this.facets),this.disjunctiveFacets=n(this.disjunctiveFacets),this._state=e}function v(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=a(e.facets,r);return n?Object.keys(n.data).map((function(r){var i=f(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isFacetRefined(t,i),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=a(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){var n=f(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,n)}})):[]}if(e._state.isHierarchicalFacet(t)){var s=a(e.hierarchicalFacets,r);if(!s)return s;var c=e._state.getHierarchicalFacetByName(t),o=e._state._getHierarchicalFacetSeparator(c),u=l(e._state.getHierarchicalRefinement(t)[0]||"");0===u.indexOf(c.rootPath)&&(u=u.replace(c.rootPath+o,""));var h=u.split(o);return h.unshift(t),y(s,h,0),s}}function y(e,t,r){e.isRefined=e.name===(t[r]&&t[r].trim()),e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var s=t.data.map((function(t){return R(e,t,r,n+1)})),a=e(s,r[n]);return i({data:a},t)}function F(e,t){var r=a(e,(function(e){return e.name===t}));return r&&r.stats}function b(e,t,r,n,i){var s=a(i,(function(e){return e.name===r})),c=s&&s.data&&s.data[n]?s.data[n]:0,o=s&&s.exhaustive||!1;return{type:t,attributeName:r,name:n,count:c,exhaustive:o}}g.prototype.getFacetByName=function(e){function t(t){return t.name===e}return a(this.facets,t)||a(this.disjunctiveFacets,t)||a(this.hierarchicalFacets,t)},g.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],g.prototype.getFacetValues=function(e,t){var r=v(this,e);if(r){var n,s=i({},t,{sortBy:g.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),a=this;if(Array.isArray(r))n=[e];else n=a._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(a,t);if(r)return function(e,t){var r=[],n=[],i=t.hide||[],s=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name,a=i.indexOf(t)>-1;a||void 0===s[t]?a||n.push(e):r[s[t]]=e})),r=r.filter((function(e){return e}));var a,c=t.sortRemainingBy;return"hidden"===c?r:(a="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(h(n,a[0],a[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,g.DEFAULT_SORT);return h(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},g.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},g.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(b(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(b(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(b(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),s=e._getHierarchicalFacetSeparator(i),c=r.split(s),o=a(n,(function(e){return e.name===t})),u=c.reduce((function(e,t){var r=e&&a(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),o),h=u&&u.count||0,f=u&&u.exhaustive||!1,l=u&&u.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=g},9719:(e,t,r)=>{"use strict";var n=r(8181),i=r(1691),s=r(5473).escapeFacetValue,a=r(6026),c=r(2364),o=r(9825),u=r(475),h=r(5163),f=r(8971),l=r(8144),m=r(4007),d=r(3183),p=r(5249),g=r(4758);function v(e,t,r,n){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+g+")"),this.setClient(e);var i=r||{};i.index=t,this.state=m.make(i),this.recommendState=new h({params:i.recommendState}),this.lastResults=null,this.lastRecommendResults=null,this._queryId=0,this._recommendQueryId=0,this._lastQueryIdReceived=-1,this._lastRecommendQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0,this._currentNbRecommendQueries=0,this._searchResultsOptions=n,this._recommendCache={}}function y(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function R(){return this.state.page}a(v,n),v.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},v.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},v.prototype.recommend=function(){return this._recommend(),this},v.prototype.getQuery=function(){var e=this.state;return l._getHitsSearchParams(e)},v.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=l._getQueries(r.index,r),i=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),{content:new d(r,e.results),state:r,_originalResponse:e}}),(function(e){throw i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),t(null,new d(r,e.results),r)})).catch((function(e){i._currentNbQueries--,0===i._currentNbQueries&&i.emit("searchQueueEmpty"),t(e,null,r)}))},v.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=c({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:u(l._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),s="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(s);var a=this.client.initIndex(n.index);if("function"!=typeof a.findAnswers)throw new Error(s);return a.findAnswers(n.query,e.queryLanguages,i)},v.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues&&"function"!=typeof this.client.searchForFacets,a="function"==typeof this.client.initIndex;if(!i&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(n||{}),o=c.isDisjunctiveFacet(e),u=l.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var h,f=this;return i?h=this.client.searchForFacetValues([{indexName:c.index,params:u}]):a?h=this.client.initIndex(c.index).searchForFacetValues(u):(delete u.facetName,h=this.client.search([{type:"facet",facet:e,indexName:c.index,params:u}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t}),h.then((function(t){return f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=s(t.value),t.isRefined=o?c.isDisjunctiveFacetRefined(e,t.escapedValue):c.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),e}))},v.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},v.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},v.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},v.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},v.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},v.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},v.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},v.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},v.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},v.prototype.addFrequentlyBoughtTogether=function(e){return this._recommendChange({state:this.recommendState.addFrequentlyBoughtTogether(e)}),this},v.prototype.addRelatedProducts=function(e){return this._recommendChange({state:this.recommendState.addRelatedProducts(e)}),this},v.prototype.addTrendingItems=function(e){return this._recommendChange({state:this.recommendState.addTrendingItems(e)}),this},v.prototype.addTrendingFacets=function(e){return this._recommendChange({state:this.recommendState.addTrendingFacets(e)}),this},v.prototype.addLookingSimilar=function(e){return this._recommendChange({state:this.recommendState.addLookingSimilar(e)}),this},v.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},v.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},v.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},v.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},v.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},v.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},v.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},v.prototype.removeFrequentlyBoughtTogether=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeRelatedProducts=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeTrendingItems=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeTrendingFacets=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeLookingSimilar=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},v.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},v.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},v.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},v.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},v.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},v.prototype.setCurrentPage=y,v.prototype.setPage=y,v.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},v.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},v.prototype.setState=function(e){return this._change({state:m.make(e),isPageReset:!1}),this},v.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new m(e),this},v.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},v.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},v.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},v.prototype.hasTag=function(e){return this.state.isTagRefined(e)},v.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},v.prototype.getIndex=function(){return this.state.index},v.prototype.getCurrentPage=R,v.prototype.getPage=R,v.prototype.getTags=function(){return this.state.tagRefinements},v.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},v.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},v.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},v.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=l._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=n.index?l._getQueries(n.index,n):[];return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),s=Array.prototype.concat.apply(n,i),a=this._queryId++;if(this._currentNbQueries++,!s.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,r,a));try{this.client.search(s).then(this._dispatchAlgoliaResponse.bind(this,r,a)).catch(this._dispatchAlgoliaError.bind(this,a))}catch(c){this.emit("error",{error:c})}},v.prototype._recommend=function(){var e=this.state,t=this.recommendState,r=this.getIndex(),n=[{state:t,index:r,helper:this}],i=t.params.map((function(e){return e.$$id}));this.emit("fetch",{recommend:{state:t,results:this.lastRecommendResults}});var s=this._recommendCache,a=this.derivedHelpers.map((function(t){var r=t.getModifiedState(e).index;if(!r)return[];var a=t.getModifiedRecommendState(new h);return n.push({state:a,index:r,helper:t}),i=Array.prototype.concat.apply(i,a.params.map((function(e){return e.$$id}))),t.emit("fetch",{recommend:{state:a,results:t.lastRecommendResults}}),a._buildQueries(r,s)})),c=Array.prototype.concat.apply(this.recommendState._buildQueries(r,s),a);if(0!==c.length)if(c.length>0&&void 0===this.client.getRecommendations)console.warn("Please update algoliasearch/lite to the latest version in order to use recommend widgets.");else{var o=this._recommendQueryId++;this._currentNbRecommendQueries++;try{this.client.getRecommendations(c).then(this._dispatchRecommendResponse.bind(this,o,n,i)).catch(this._dispatchRecommendError.bind(this,o))}catch(u){this.emit("error",{error:u})}}},v.prototype._dispatchAlgoliaResponse=function(e,t,r){var n=this;if(!(t<this._lastQueryIdReceived)){this._currentNbQueries-=t-this._lastQueryIdReceived,this._lastQueryIdReceived=t,0===this._currentNbQueries&&this.emit("searchQueueEmpty");var i=r.results.slice();e.forEach((function(e){var t=e.state,r=e.queriesCount,s=e.helper,a=i.splice(0,r);t.index?(s.lastResults=new d(t,a,n._searchResultsOptions),s.emit("result",{results:s.lastResults,state:t})):s.emit("result",{results:null,state:t})}))}},v.prototype._dispatchRecommendResponse=function(e,t,r,n){if(!(e<this._lastRecommendQueryIdReceived)){this._currentNbRecommendQueries-=e-this._lastRecommendQueryIdReceived,this._lastRecommendQueryIdReceived=e,0===this._currentNbRecommendQueries&&this.emit("recommendQueueEmpty");var i=this._recommendCache,s={};r.filter((function(e){return void 0===i[e]})).forEach((function(e,t){s[e]||(s[e]=[]),s[e].push(t)})),Object.keys(s).forEach((function(e){var t=s[e],r=n.results[t[0]];1!==t.length?i[e]=Object.assign({},r,{hits:p(t.map((function(e){return n.results[e].hits})))}):i[e]=r}));var a={};r.forEach((function(e){a[e]=i[e]})),t.forEach((function(e){var t=e.state,r=e.helper;e.index?(r.lastRecommendResults=new f(t,a),r.emit("recommend:result",{recommend:{results:r.lastRecommendResults,state:t}})):r.emit("recommend:result",{results:null,state:t})}))}},v.prototype._dispatchAlgoliaError=function(e,t){e<this._lastQueryIdReceived||(this._currentNbQueries-=e-this._lastQueryIdReceived,this._lastQueryIdReceived=e,this.emit("error",{error:t}),0===this._currentNbQueries&&this.emit("searchQueueEmpty"))},v.prototype._dispatchRecommendError=function(e,t){e<this._lastRecommendQueryIdReceived||(this._currentNbRecommendQueries-=e-this._lastRecommendQueryIdReceived,this._lastRecommendQueryIdReceived=e,this.emit("error",{error:t}),0===this._currentNbRecommendQueries&&this.emit("recommendQueueEmpty"))},v.prototype.containsRefinement=function(e,t,r,n){return e||0!==t.length||0!==r.length||0!==n.length},v.prototype._hasDisjunctiveRefinements=function(e){return this.state.disjunctiveRefinements[e]&&this.state.disjunctiveRefinements[e].length>0},v.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},v.prototype._recommendChange=function(e){var t=e.state;t!==this.recommendState&&(this.recommendState=t,this.emit("recommend:change",{search:{results:this.lastResults,state:this.state},recommend:{results:this.lastRecommendResults,state:this.recommendState}}))},v.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},v.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+g+")"),this.client=e),this},v.prototype.getClient=function(){return this.client},v.prototype.derive=function(e,t){var r=new i(this,e,t);return this.derivedHelpers.push(r),r},v.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},v.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=v},8001:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},1410:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},5473:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},917:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r<e.length;r++)if(t(e[r]))return e[r]}},7009:e=>{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r<e.length;r++)if(t(e[r]))return r;return-1}},7938:e=>{e.exports=function(e){return e.reduce((function(e,t){return e.concat(t)}),[])}},3861:(e,t,r)=>{"use strict";var n=r(917);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var i=t.split(":"),s=n(r,(function(e){return e[0]===i[0]}));return i.length>1||!s?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(s[0]),e[1].push(s[1]),e)}),[[],[]])}},6026:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},8175:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},2364:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)&&"__proto__"!==i&&"constructor"!==i){var s=n[i],a=e[i];void 0!==a&&void 0===s||(t(a)&&t(s)?e[i]=r(a,s):e[i]="object"==typeof(c=s)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n<i;n++){var s=arguments[n];t(s)&&r(e,s)}return e}},9825:e=>{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},475:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}},2965:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,s=null===t;if(!s&&e>t||n&&i||!r)return 1;if(!n&&e<t||s&&r||!i)return-1}return 0}e.exports=function(e,r,n){if(!Array.isArray(e))return[];Array.isArray(n)||(n=[]);var i=e.map((function(e,t){return{criteria:r.map((function(t){return e[t]})),index:t,value:e}}));return i.sort((function(e,r){for(var i=-1;++i<e.criteria.length;){var s=t(e.criteria[i],r.criteria[i]);if(s)return i>=n.length?s:"desc"===n[i]?-s:s}return e.index-r.index})),i.map((function(e){return e.value}))}},2503:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},8144:(e,t,r)=>{"use strict";var n=r(2364);function i(e){return Object.keys(e).sort().reduce((function(t,r){return t[r]=e[r],t}),{})}var s={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:s._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:s._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var i=t.getHierarchicalFacetByName(n),a=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(i);if(a.length>0&&a[0].split(c).length>1){var o=a[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:i.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);o.forEach((function(n,a){var c=s._getDisjunctiveFacetSearchParams(t,n.attribute,0===a);function u(e){return i.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!u(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||u(t)||e.push(t),e}),[]),f=o[a-1];a>0?c.facetFilters=h.concat(f.attribute+":"+f.value):h.length>0?c.facetFilters=h:delete c.facetFilters,r.push({indexName:e,params:c})}))}})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(s._getHitsHierarchicalFacetsAttributes(e)).sort(),r=s._getFacetFilters(e),a=s._getNumericFilters(e),c=s._getTagFilters(e),o={};return t.length>0&&(o.facets=t.indexOf("*")>-1?["*"]:t),c.length>0&&(o.tagFilters=c),r.length>0&&(o.facetFilters=r),a.length>0&&(o.numericFilters=a),i(n({},e.getQueryParams(),o))},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=s._getFacetFilters(e,t,r),c=s._getNumericFilters(e,t),o=s._getTagFilters(e),u={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};o.length>0&&(u.tagFilters=o);var h=e.getHierarchicalFacetByName(t);return u.facets=h?s._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(u.numericFilters=c),a.length>0&&(u.facetFilters=a),i(n({},e.getQueryParams(),u))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var s=i[e]||[];t!==n&&s.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).sort().forEach((function(e){(i[e]||[]).slice().sort().forEach((function(t){n.push(e+":"+t)}))}));var s=e.facetsExcludes||{};Object.keys(s).sort().forEach((function(e){(s[e]||[]).sort().forEach((function(t){n.push(e+":-"+t)}))}));var a=e.disjunctiveFacetsRefinements||{};Object.keys(a).sort().forEach((function(e){var r=a[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.slice().sort().forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).sort().forEach((function(i){var s=(c[i]||[])[0];if(void 0!==s){var a,o,u=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(u),f=e._getHierarchicalRootPath(u);if(t===i){if(-1===s.indexOf(h)||!f&&!0===r||f&&f.split(h).length===s.split(h).length)return;f?(o=f.split(h).length-1,s=f):(o=s.split(h).length-2,s=s.slice(0,s.lastIndexOf(h))),a=u.attributes[o]}else o=s.split(h).length-1,a=u.attributes[o];a&&n.push([a+":"+s])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),s=n.split(i).length,a=r.attributes.slice(0,s+1);return t.concat(a)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),s=0;return i&&(s=i.split(n).length),[t.attributes[s]]}var a=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,a+1)},getSearchForFacetQuery:function(e,t,r,a){var c=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,o={facetQuery:t,facetName:e};return"number"==typeof r&&(o.maxFacetHits=r),i(n({},s._getHitsSearchParams(c),o))}};e.exports=s},8972:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},5249:(e,t,r)=>{"use strict";var n=r(917),i=r(7938);e.exports=function(e){var t={};return e.forEach((function(e){e.forEach((function(e,r){t[e.objectID]?t[e.objectID]={indexSum:t[e.objectID].indexSum+r,count:t[e.objectID].count+1}:t[e.objectID]={indexSum:r,count:1}}))})),function(e,t){var r=[];return Object.keys(e).forEach((function(n){e[n].count<2&&(e[n].indexSum+=100),r.push({objectID:n,avgOfIndices:e[n].indexSum/t})})),r.sort((function(e,t){return e.avgOfIndices>t.avgOfIndices?1:-1}))}(t,e.length).reduce((function(t,r){var s=n(i(e),(function(e){return e.objectID===r.objectID}));return s?t.concat(s):t}),[])}},4758:e=>{"use strict";e.exports="3.22.5"},4306:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?t(Object(i),!0).forEach((function(t){e(r,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))}))}return r}function n(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,s=void 0;try{for(var a,c=e[Symbol.iterator]();!(n=(a=c.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,s=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw s}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function s(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function a(e){var t,r="algoliasearch-client-js-".concat(e.key),n=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},s=function(){return JSON.parse(n().getItem(r)||"{}")},a=function(e){n().setItem(r,JSON.stringify(e))},c=function(){var t=e.timeToLive?1e3*e.timeToLive:null,r=s(),n=Object.fromEntries(Object.entries(r).filter((function(e){return void 0!==i(e,2)[1].timestamp})));if(a(n),t){var c=Object.fromEntries(Object.entries(n).filter((function(e){var r=i(e,2)[1],n=(new Date).getTime();return!(r.timestamp+t<n)})));a(c)}};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){c();var t=JSON.stringify(e);return s()[t]})).then((function(e){return Promise.all([e?e.value:t(),void 0!==e])})).then((function(e){var t=i(e,2),n=t[0],s=t[1];return Promise.all([n,s||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=s();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=s();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=s(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},s=JSON.stringify(r);if(s in t)return Promise.resolve(e.serializable?JSON.parse(t[s]):t[s]);var a=n(),c=i&&i.miss||function(){return Promise.resolve()};return a.then((function(e){return c(e)})).then((function(){return a}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function u(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var i=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[i++])}))}var l={WithinQueryParameters:0,WithinHeaders:1};function m(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},p=1,g=2,v=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function j(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===v&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(s(r),s(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function _(e,t,n,i){var a=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),o=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),u=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,s){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support .",transporterStackTrace:O(a)};var m={data:c,headers:o,method:u,url:x(h,n.path,f),connectTimeout:s(l,e.timeouts.connect),responseTimeout:s(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return a.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(h,y(h,n.isTimedOut?v:g))]).then((function(){return t(r,s)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,O(a))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&!~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return j(e.hostsCache,t).then((function(e){return m(s(e.statelessHosts).reverse(),e.getTimeout)}))}function P(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function x(e,t,r){var n=E(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function E(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function O(e){return e.map((function(e){return w(e)}))}function w(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var S=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),s=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,s=e.requestsCache,a=e.responsesCache,c=e.timeouts,o=e.userAgent,u=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:s,responsesCache:a,timeouts:c,userAgent:o,headers:e.headers,queryParameters:h,hosts:u.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return _(f,f.hosts.filter((function(e){return!!(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var s={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(s,(function(){return f.requestsCache.get(s,(function(){return f.requestsCache.set(s,n()).then((function(e){return Promise.all([f.requestsCache.delete(s),e])}),(function(e){return Promise.all([f.requestsCache.delete(s),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(s,e)}})},write:function(e,t){return _(f,f.hosts.filter((function(e){return!!(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(u([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:s,appId:t,addAlgoliaAgent:function(e,t){s.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t,r){return t.method===F?e.transporter.read(t,r):e.transporter.write(t,r)}},N=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},H=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:E(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},Q=function(e){return function(t,i){return Promise.all(t.map((function(t){var s=t.params,a=s.facetName,c=s.facetQuery,o=n(s,["facetName","facetQuery"]);return N(e)(t.indexName,{methods:{searchForFacetValues:I}}).searchForFacetValues(a,c,r(r({},i),o))})))}},T=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},C=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},I=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,k=2,q=3,L=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{threshold:e.threshold||0})}));return e.transporter.read({method:b,path:"1/indexes/*/recommendations",data:{requests:i},cacheable:!0},n)}};function V(e,t,n){var i,s={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},s=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(s),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(s),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(s),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=q,{debug:function(e,t){return D>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return k>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:o(),requestsCache:o({serializable:!1}),hostsCache:c({caches:[a({key:"".concat("4.24.0","-").concat(e)}),o()]}),userAgent:P("4.24.0").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return S(r(r(r({},s),n),{},{methods:{search:H,searchForFacetValues:Q,multipleQueries:H,multipleSearchForFacetValues:Q,customRequest:A,initIndex:function(e){return function(t){return N(e)(t,{methods:{search:C,searchForFacetValues:I,findAnswers:T}})}},getRecommendations:L}}))}return V.version="4.24.0",V}()},6210:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>H});var n=r(758),i=r(3526),s=r(8563),a=r.n(s),c=r(4306),o=r.n(c),u=r(3782),h=r(7471),f=r(6601),l=r(9612),m=r(6869);const d=["zero","one","two","few","many","other"];function p(e){return d.filter((t=>e.includes(t)))}const g={locale:"en",pluralForms:p(["one","other"]),select:e=>1===e?"one":"other"};function v(){const{i18n:{currentLocale:e}}=(0,m.A)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:p(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),g}}),[e])}function y(){const e=v();return{selectMessage:(t,r)=>function(e,t,r){const n=e.split("|");if(1===n.length)return n[0];n.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${n.length}: ${e}`);const i=r.select(t),s=r.pluralForms.indexOf(i);return n[Math.min(s,n.length-1)]}(r,t,e)}}var R=r(7038),F=r(3991),b=r(926),j=r(8318),_=r(7260),P=r(2022),x=r(1886),E=r(8437),O=r(2406);const w={searchQueryInput:"searchQueryInput_lgCf",searchVersionInput:"searchVersionInput_hZMv",searchResultsColumn:"searchResultsColumn_usTD",algoliaLogo:"algoliaLogo_nSr9",algoliaLogoPathFill:"algoliaLogoPathFill_bweY",searchResultItem:"searchResultItem_kiiJ",searchResultItemHeading:"searchResultItemHeading_P9ix",searchResultItemPath:"searchResultItemPath_QjmW",searchResultItemSummary:"searchResultItemSummary_rb6a",searchQueryColumn:"searchQueryColumn_yPeD",searchVersionColumn:"searchVersionColumn_nHlp",searchLogoColumn:"searchLogoColumn_w6QH",loadingSpinner:"loadingSpinner_I7f_","loading-spin":"loading-spin_GsXP",loader:"loader_lcxn"};var S=r(6070);function A(e){let{docsSearchVersionsHelpers:t}=e;const r=Object.entries(t.allDocsData).filter((e=>{let[,t]=e;return t.versions.length>1}));return(0,S.jsx)("div",{className:(0,i.A)("col","col--3","padding-left--none",w.searchVersionColumn),children:r.map((e=>{let[n,i]=e;const s=r.length>1?`${n}: `:"";return(0,S.jsx)("select",{onChange:e=>t.setSearchVersion(n,e.target.value),defaultValue:t.searchVersions[n],className:w.searchVersionInput,children:i.versions.map(((e,t)=>(0,S.jsx)("option",{label:`${s}${e.label}`,value:e.name},t)))},n)}))})}function N(){const{i18n:{currentLocale:e}}=(0,m.A)(),{algolia:{appId:t,apiKey:r,indexName:s}}=(0,P.c)(),c=(0,x.C)(),d=function(){const{selectMessage:e}=y();return t=>e(t,(0,_.T)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}(),p=function(){const e=(0,l.Gy)(),[t,r]=(0,n.useState)((()=>Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return{...e,[r]:n.versions[0].name}}),{}))),i=Object.values(e).some((e=>e.versions.length>1));return{allDocsData:e,versioningEnabled:i,searchVersions:t,setSearchVersion:(e,t)=>r((r=>({...r,[e]:t})))}}(),[g,v]=(0,R.b)(),b={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[N,H]=(0,n.useReducer)(((e,t)=>{switch(t.type){case"reset":return b;case"loading":return{...e,loading:!0};case"update":return g!==t.value.query?e:{...t.value,items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}}),b),Q=o()(t,r),T=a()(Q,s,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});T.on("result",(e=>{let{results:{query:t,hits:r,page:n,nbHits:i,nbPages:s}}=e;if(""===t||!Array.isArray(r))return void H({type:"reset"});const a=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),o=r.map((e=>{let{url:t,_highlightResult:{hierarchy:r},_snippetResult:n={}}=e;const i=Object.keys(r).map((e=>a(r[e].value)));return{title:i.pop(),url:c(t),summary:n.content?`${a(n.content.value)}...`:"",breadcrumbs:i}}));H({type:"update",value:{items:o,query:t,totalResults:i,totalPages:s,lastPage:n,hasMore:s>n+1,loading:!1}})}));const[C,I]=(0,n.useState)(null),D=(0,n.useRef)(0),k=(0,n.useRef)(u.A.canUseIntersectionObserver&&new IntersectionObserver((e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&D.current>r&&H({type:"advance"}),D.current=r}),{threshold:1})),q=()=>g?(0,_.T)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:g}):(0,_.T)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"}),L=(0,F._q)((function(t){void 0===t&&(t=0),T.addDisjunctiveFacetRefinement("docusaurus_tag","default"),T.addDisjunctiveFacetRefinement("language",e),Object.entries(p.searchVersions).forEach((e=>{let[t,r]=e;T.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${t}-${r}`)})),T.setQuery(g).setPage(t).search()}));return(0,n.useEffect)((()=>{if(!C)return;const e=k.current;return e?(e.observe(C),()=>e.unobserve(C)):()=>!0}),[C]),(0,n.useEffect)((()=>{H({type:"reset"}),g&&(H({type:"loading"}),setTimeout((()=>{L()}),300))}),[g,p.searchVersions,L]),(0,n.useEffect)((()=>{N.lastPage&&0!==N.lastPage&&L(N.lastPage)}),[L,N.lastPage]),(0,S.jsxs)(E.A,{children:[(0,S.jsxs)(h.A,{children:[(0,S.jsx)("title",{children:(0,j.s)(q())}),(0,S.jsx)("meta",{property:"robots",content:"noindex, follow"})]}),(0,S.jsxs)("div",{className:"container margin-vert--lg",children:[(0,S.jsx)(O.A,{as:"h1",children:q()}),(0,S.jsxs)("form",{className:"row",onSubmit:e=>e.preventDefault(),children:[(0,S.jsx)("div",{className:(0,i.A)("col",w.searchQueryColumn,{"col--9":p.versioningEnabled,"col--12":!p.versioningEnabled}),children:(0,S.jsx)("input",{type:"search",name:"q",className:w.searchQueryInput,placeholder:(0,_.T)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,_.T)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>v(e.target.value),value:g,autoComplete:"off",autoFocus:!0})}),p.versioningEnabled&&(0,S.jsx)(A,{docsSearchVersionsHelpers:p})]}),(0,S.jsxs)("div",{className:"row",children:[(0,S.jsx)("div",{className:(0,i.A)("col","col--8",w.searchResultsColumn),children:!!N.totalResults&&d(N.totalResults)}),(0,S.jsx)("div",{className:(0,i.A)("col","col--4","text--right",w.searchLogoColumn),children:(0,S.jsx)(f.A,{to:"https://www.algolia.com/","aria-label":(0,_.T)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"}),children:(0,S.jsx)("svg",{viewBox:"0 0 168 24",className:w.algoliaLogo,children:(0,S.jsxs)("g",{fill:"none",children:[(0,S.jsx)("path",{className:w.algoliaLogoPathFill,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),(0,S.jsx)("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),(0,S.jsx)("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})]})})})})]}),N.items.length>0?(0,S.jsx)("main",{children:N.items.map(((e,t)=>{let{title:r,url:n,summary:s,breadcrumbs:a}=e;return(0,S.jsxs)("article",{className:w.searchResultItem,children:[(0,S.jsx)(O.A,{as:"h2",className:w.searchResultItemHeading,children:(0,S.jsx)(f.A,{to:n,dangerouslySetInnerHTML:{__html:r}})}),a.length>0&&(0,S.jsx)("nav",{"aria-label":"breadcrumbs",children:(0,S.jsx)("ul",{className:(0,i.A)("breadcrumbs",w.searchResultItemPath),children:a.map(((e,t)=>(0,S.jsx)("li",{className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}},t)))})}),s&&(0,S.jsx)("p",{className:w.searchResultItemSummary,dangerouslySetInnerHTML:{__html:s}})]},t)}))}):[g&&!N.loading&&(0,S.jsx)("p",{children:(0,S.jsx)(_.A,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result",children:"No results were found"})},"no-results"),!!N.loading&&(0,S.jsx)("div",{className:w.loadingSpinner},"spinner")],N.hasMore&&(0,S.jsx)("div",{className:w.loader,ref:I,children:(0,S.jsx)(_.A,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results",children:"Fetching new results..."})})]})]})}function H(){return(0,S.jsx)(b.e3,{className:"search-page-wrapper",children:(0,S.jsx)(N,{})})}}}]); \ No newline at end of file diff --git a/build/assets/js/1a4e3797.dc00afb6.js.LICENSE.txt b/build/assets/js/1a4e3797.dc00afb6.js.LICENSE.txt deleted file mode 100644 index bfc7620fe..000000000 --- a/build/assets/js/1a4e3797.dc00afb6.js.LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/*! algoliasearch-lite.umd.js | 4.24.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ diff --git a/build/assets/js/1f2dc99a.676c8cca.js b/build/assets/js/1f2dc99a.676c8cca.js deleted file mode 100644 index ce471d39b..000000000 --- a/build/assets/js/1f2dc99a.676c8cca.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8170],{3306:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>a});var t=r(6070),n=r(1582);const s={title:"Artificial Intelligence",lang:"en-US"},i=void 0,c={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence",title:"Artificial Intelligence",description:"ORA",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/7-artificial-intelligence.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/7-artificial-intelligence.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"Artificial Intelligence",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Block Explorer",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer"},next:{title:"Decentralized Naming Services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services"}},l={},a=[{value:"ORA",id:"ora",level:3}];function d(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h3,{id:"ora",children:"ORA"}),"\n",(0,t.jsx)(o.p,{children:(0,t.jsx)(o.img,{alt:"ORA",src:r(1078).A+"",width:"2880",height:"1476"})}),"\n",(0,t.jsx)(o.p,{children:"ORA provides chain-agnostic infrastructure that bridges the gap between AI and blockchain."}),"\n",(0,t.jsx)(o.p,{children:"ORA empower developers with the tools necessary to build end-to-end trustless and decentralized applications enhanced by verifiable AI."}),"\n",(0,t.jsxs)(o.p,{children:["You can find the contract addresses to our AI Oracle on Morph ",(0,t.jsx)(o.a,{href:"https://docs.ora.io/doc/ai-oracle/ai-oracle/references#morph-mainnet",children:"here"})]})]})}function p(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1078:(e,o,r)=>{r.d(o,{A:()=>t});const t=r.p+"assets/images/biconomy-837b6cf4a7c94f3bf1da46a565cc25e6.png"},1582:(e,o,r)=>{r.d(o,{R:()=>i,x:()=>c});var t=r(758);const n={},s=t.createContext(n);function i(e){const o=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function c(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),t.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/22a82985.bcaadd20.js b/build/assets/js/22a82985.bcaadd20.js deleted file mode 100644 index 6d4104ea8..000000000 --- a/build/assets/js/22a82985.bcaadd20.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7990],{3927:(e,a,c)=>{c.r(a),c.d(a,{assets:()=>r,contentTitle:()=>b,default:()=>o,frontMatter:()=>f,metadata:()=>s,toc:()=>t});var d=c(6070),n=c(1582);const f={title:"Morph JSON-RPC API Methods",lang:"en-US"},b=void 0,s={id:"build-on-morph/developer-resources/morph-json-rpc-api-methods",title:"Morph JSON-RPC API Methods",description:"Most methods are similar to Ethereum's. For those methods, we recommend you visit Ethereum JSON-RPC API.",source:"@site/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md",sourceDirName:"build-on-morph/developer-resources",slug:"/build-on-morph/developer-resources/morph-json-rpc-api-methods",permalink:"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Morph JSON-RPC API Methods",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Dapp Examples on Morph",permalink:"/docs/build-on-morph/developer-resources/dapp-examples-on-morph"}},r={},t=[{value:"morph_getBlockByNumber",id:"morph_getblockbynumber",level:2},{value:"Parameters",id:"parameters",level:3},{value:"Returns",id:"returns",level:3},{value:"Example",id:"example",level:3},{value:"morph_getBlockByHash",id:"morph_getblockbyhash",level:2},{value:"Parameters",id:"parameters-1",level:3},{value:"Returns",id:"returns-1",level:3},{value:"morph_estimateL1DataFee",id:"morph_estimatel1datafee",level:2},{value:"Parameters",id:"parameters-2",level:3},{value:"Returns",id:"returns-2",level:3},{value:"Example",id:"example-1",level:3},{value:"morph_getNumSkippedTransactions",id:"morph_getnumskippedtransactions",level:2},{value:"Parameters",id:"parameters-3",level:3},{value:"Returns",id:"returns-3",level:3},{value:"Example",id:"example-2",level:3},{value:"morph_getSkippedTransactionHashes",id:"morph_getskippedtransactionhashes",level:2},{value:"Parameters",id:"parameters-4",level:3},{value:"Returns",id:"returns-4",level:3},{value:"Example",id:"example-3",level:3},{value:"morph_getSkippedTransaction",id:"morph_getskippedtransaction",level:2},{value:"Parameters",id:"parameters-5",level:3},{value:"Returns",id:"returns-5",level:3},{value:"Example",id:"example-4",level:3},{value:"morph_getSkippedTransactionHashes",id:"morph_getskippedtransactionhashes-1",level:2},{value:"Parameters",id:"parameters-6",level:3},{value:"Returns",id:"returns-6",level:3},{value:"Example",id:"example-5",level:3},{value:"morph_GetBlockTraceByNumberOrHash",id:"morph_getblocktracebynumberorhash",level:2},{value:"Parameters",id:"parameters-7",level:2},{value:"Example",id:"example-6",level:2}];function i(e){const a={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(a.p,{children:["Most methods are similar to Ethereum's. For those methods, we recommend you visit ",(0,d.jsx)(a.a,{href:"https://ethereum.org/en/developers/docs/apis/json-rpc/#json-rpc-methods",children:"Ethereum JSON-RPC API"}),"."]}),"\n",(0,d.jsx)(a.p,{children:"This page lists some unique methods exclusive to Morph."}),"\n",(0,d.jsx)(a.h2,{id:"morph_getblockbynumber",children:"morph_getBlockByNumber"}),"\n",(0,d.jsxs)(a.p,{children:["Returns information about a block by block number. In addition, it returns more fields than the standard eth_getBlockByNumber, such as ",(0,d.jsx)(a.strong,{children:"withdrawTrieRoot"}),", ",(0,d.jsx)(a.strong,{children:"batchHash"}),", ",(0,d.jsx)(a.strong,{children:"nextL1MsgIndex"})," and ",(0,d.jsx)(a.strong,{children:"rowConsumption"}),"."]}),"\n",(0,d.jsx)(a.h3,{id:"parameters",children:"Parameters"}),"\n",(0,d.jsxs)(a.ol,{children:["\n",(0,d.jsx)(a.li,{children:'QUANTITY|TAG - integer of a block number, or the string "earliest", "latest", "pending", "safe" or "finalized", as in the default block parameter.'}),"\n",(0,d.jsx)(a.li,{children:"Boolean - If true it returns the full transaction objects, if false only the hashes of the transactions."}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"returns",children:"Returns"}),"\n",(0,d.jsxs)(a.p,{children:["See ",(0,d.jsx)(a.a,{href:"https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash",children:"JSON-RPC API | ethereum.org"}),", and more fields showing as the blew"]}),"\n",(0,d.jsxs)(a.ul,{children:["\n",(0,d.jsx)(a.li,{children:"withdrawTrieRoot: DATA, 32 Bytes - the root of the withdraw trie, used to prove the users\u2019 withdrawals."}),"\n",(0,d.jsx)(a.li,{children:"batchHash: DATA, 32 Bytes - the hash of the latest batch. It indicates the block is a batch point if it is not empty."}),"\n",(0,d.jsx)(a.li,{children:"nextL1MsgIndex: quantity - the next expected L1 message nonce after this block."}),"\n",(0,d.jsx)(a.li,{children:"rowConsumption: the rows consumption of this block, which rows are used to generate the ZK Proof based on halo2 schema."}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"example",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// request\ncurl -X POST --data \'{"jsonrpc":"2.0","method":"morph_getBlockByNumber","params":["0x1b4", true],"id":1}\'\n\n// Result\n{\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "batchHash": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "difficulty": "0x0",\n "extraData": "0x",\n "gasLimit": "0x989680",\n "gasUsed": "0x0",\n "hash": "0xbc979055d001fe70ed637edd20e918bc583c84c35372f4cdf04253ec34b99178",\n "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",\n "miner": "0x0000000000000000000000000000000000000000",\n "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "nextL1MsgIndex": "0x0",\n "nonce": "0x0000000000000000",\n "number": "0x1b4",\n "parentHash": "0xff26c60bca2d08d9b0d17431a4c9d80d007dace61fb551bdf7c376d16bc77441",\n "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",\n "rowConsumption": [\n {\n "name": "evm",\n "row_number": 2\n },\n {\n "name": "state",\n "row_number": 4\n },\n {\n "name": "bytecode",\n "row_number": 0\n },\n {\n "name": "copy",\n "row_number": 4\n },\n {\n "name": "keccak",\n "row_number": 1591\n },\n {\n "name": "tx",\n "row_number": 0\n },\n {\n "name": "rlp",\n "row_number": 0\n },\n {\n "name": "exp",\n "row_number": 150\n },\n {\n "name": "mod_exp",\n "row_number": 0\n },\n {\n "name": "pi",\n "row_number": 0\n },\n {\n "name": "poseidon",\n "row_number": 1222\n },\n {\n "name": "sig",\n "row_number": 0\n },\n {\n "name": "ecc",\n "row_number": 0\n },\n {\n "name": "mpt",\n "row_number": 101\n }\n ],\n "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",\n "size": "0x1fe",\n "stateRoot": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",\n "timestamp": "0x6619043f",\n "totalDifficulty": "0x0",\n "transactions": [],\n "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",\n "uncles": [],\n "withdrawTrieRoot": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757"\n }\n}\n'})}),"\n",(0,d.jsx)(a.h2,{id:"morph_getblockbyhash",children:"morph_getBlockByHash"}),"\n",(0,d.jsx)(a.p,{children:"Returns information about a block by hash."}),"\n",(0,d.jsx)(a.h3,{id:"parameters-1",children:"Parameters"}),"\n",(0,d.jsxs)(a.ul,{children:["\n",(0,d.jsx)(a.li,{children:"DATA, 32 Bytes - Hash of a block."}),"\n",(0,d.jsx)(a.li,{children:"Boolean - If true it returns the full transaction objects, if false only the hashes of the transactions."}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"returns-1",children:"Returns"}),"\n",(0,d.jsxs)(a.p,{children:["See ",(0,d.jsx)(a.a,{href:"#morph_getblockbynumber",children:"morph_getBlockByNumber returns"})]}),"\n",(0,d.jsx)(a.h2,{id:"morph_estimatel1datafee",children:"morph_estimateL1DataFee"}),"\n",(0,d.jsx)(a.p,{children:"Generates and returns an estimate of how much L1DataFee the transaction will cost."}),"\n",(0,d.jsx)(a.h3,{id:"parameters-2",children:"Parameters"}),"\n",(0,d.jsxs)(a.ol,{children:["\n",(0,d.jsxs)(a.li,{children:["Object - TransactionArgs","\n",(0,d.jsxs)(a.ul,{children:["\n",(0,d.jsx)(a.li,{children:"from: DATA, 20 Bytes - (optional) The address the transaction is sent from."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,d.jsxs)(a.ul,{children:["\n",(0,d.jsx)(a.li,{children:"to: DATA, 20 Bytes - The address the transaction is directed to."}),"\n",(0,d.jsx)(a.li,{children:"gas: QUANTITY - (optional) Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions."}),"\n",(0,d.jsx)(a.li,{children:"gasPrice: QUANTITY - (optional) Integer of the gasPrice used for each paid gas."}),"\n",(0,d.jsx)(a.li,{children:"value: QUANTITY - (optional) Integer of the value sent with this transaction."}),"\n",(0,d.jsx)(a.li,{children:"input: DATA - (optional) Hash of the method signature and encoded parameters."}),"\n"]}),"\n",(0,d.jsxs)(a.ol,{start:"2",children:["\n",(0,d.jsx)(a.li,{children:'QUANTITY|TAG - integer block number, or the string "latest", "earliest", "pending", "safe" or "finalized".'}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"returns-2",children:"Returns"}),"\n",(0,d.jsx)(a.p,{children:"QUANTITY - integer of the current l1 data fee in wei."}),"\n",(0,d.jsx)(a.h3,{id:"example-1",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// Request\ncurl -X POST --data \'{"jsonrpc":"2.0","method":"morph_estimateL1DataFee","params":[{see above}],"id":1}\'\n\n// Result\n{\n "id":1,\n "jsonrpc": "2.0",\n "result": "0x3f4e2160f00"\n}\n'})}),"\n",(0,d.jsx)(a.h2,{id:"morph_getnumskippedtransactions",children:"morph_getNumSkippedTransactions"}),"\n",(0,d.jsx)(a.p,{children:"Get the number of the skipped transactions"}),"\n",(0,d.jsx)(a.h3,{id:"parameters-3",children:"Parameters"}),"\n",(0,d.jsx)(a.p,{children:"None"}),"\n",(0,d.jsx)(a.h3,{id:"returns-3",children:"Returns"}),"\n",(0,d.jsx)(a.p,{children:"Quantity - integer of the number of the skipped transactions"}),"\n",(0,d.jsx)(a.h3,{id:"example-2",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// Request\ncurl -X POST --data \'{"jsonrpc":"2.0","method":"morph_getNumSkippedTransactions","params":[],"id":1}\'\n\n// Result\n{\n "id":1,\n "jsonrpc": "2.0",\n "result": "0"\n}\n'})}),"\n",(0,d.jsx)(a.h2,{id:"morph_getskippedtransactionhashes",children:"morph_getSkippedTransactionHashes"}),"\n",(0,d.jsx)(a.p,{children:"Get a list of skipped transaction hashes between the two indices provided (inclusive)"}),"\n",(0,d.jsx)(a.h3,{id:"parameters-4",children:"Parameters"}),"\n",(0,d.jsxs)(a.ol,{children:["\n",(0,d.jsx)(a.li,{children:"from index"}),"\n",(0,d.jsx)(a.li,{children:"to index"}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"returns-4",children:"Returns"}),"\n",(0,d.jsx)(a.p,{children:"Arrays of transaction hashes"}),"\n",(0,d.jsx)(a.h3,{id:"example-3",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// Request\ncurl -X POST --data \'{"jsonrpc":"2.0","method":"morph_getSkippedTransactionHashes","params":[0, 1],"id":1}\'\n\n// Result\n{\n "id":1,\n "jsonrpc": "2.0",\n "result": [\u201c0x\u2026.\u201d,\u201d0x\u2026.\u201d]\n}\n\n'})}),"\n",(0,d.jsx)(a.h2,{id:"morph_getskippedtransaction",children:"morph_getSkippedTransaction"}),"\n",(0,d.jsx)(a.p,{children:"Get a skipped transaction by its hash."}),"\n",(0,d.jsx)(a.h3,{id:"parameters-5",children:"Parameters"}),"\n",(0,d.jsx)(a.p,{children:"DATA, 32 Bytes - Hash of a transaction."}),"\n",(0,d.jsx)(a.h3,{id:"returns-5",children:"Returns"}),"\n",(0,d.jsx)(a.p,{children:"Object - a transaction object(see JSON-RPC API | ethereum.org), an some extended fields:"}),"\n",(0,d.jsxs)(a.ul,{children:["\n",(0,d.jsx)(a.li,{children:"sender: DATA, 20 Bytes - address of the sender."}),"\n",(0,d.jsx)(a.li,{children:"queueIndex: QUANTITY - integer of the L1Message index."}),"\n",(0,d.jsx)(a.li,{children:"skipReason: string - the skip reason of this transaction."}),"\n",(0,d.jsx)(a.li,{children:"skipBlockNumber: quantity - integer of the block number where the transaction is skipped."}),"\n",(0,d.jsx)(a.li,{children:"skipBlockHash: DATA, 32 Bytes - hash of the block where the transaction is skipped."}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"example-4",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// Request\ncurl -X POST --data \'{"jsonrpc":"2.0","method":"morph_getSkippedTransaction","params":[\u201c0x\u2026\u201d],"id":1}\'\n\n// Result\n{\n "id":1,\n "jsonrpc": "2.0",\n "result": {\n "from": "0x59b79a4fc3e0e1646b254fb6804d8f5fa8fae7e0",\n "gas": "0x33450",\n "gasPrice": "0x0",\n "hash": "0x74e13cc35fbeffc9747dd3a5a191b2d62939ee1d1c24651adb89b470f9cf0a36",\n "input": "0x8ef1332e00000000000000000000000082c74cd310438d4938799af4c2a29587284a2ca700000000000000000000000053000000000000000000000000000000000000060000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a4232e8748000000000000000000000000f1d598fd5f8367be41b0761696e643ac092b313e000000000000000000000000f1d598fd5f8367be41b0761696e643ac092b313e0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",\n "nonce": "0x0",\n "to": "0x5300000000000000000000000000000000000007",\n "transactionIndex": "0x0",\n "value": "0x0",\n "type": "0x7e",\n "v": "0x0",\n "r": "0x0",\n "s": "0x0",\n "sender": "0x59b79a4fc3e0e1646b254fb6804d8f5fa8fae7e0",\n "queueIndex": "0x0",\n \u201cskipReason\u201d: \u201crow consumption overflow\u201d, "skippedBlockHash":"0x61411498b0c241895d44c1bf9a9448ae8584bf434246d680980e8a5edf9ce27c",\n "skippedBlockNumber": "0x382e",\n \u201c\u201d\n}\n}\n'})}),"\n",(0,d.jsx)(a.h2,{id:"morph_getskippedtransactionhashes-1",children:"morph_getSkippedTransactionHashes"}),"\n",(0,d.jsx)(a.p,{children:"Get the batches by index"}),"\n",(0,d.jsx)(a.h3,{id:"parameters-6",children:"Parameters"}),"\n",(0,d.jsx)(a.p,{children:"Quantity - integer of the index of batch"}),"\n",(0,d.jsx)(a.h3,{id:"returns-6",children:"Returns"}),"\n",(0,d.jsx)(a.p,{children:"Object - RollupBatch"}),"\n",(0,d.jsxs)(a.ol,{children:["\n",(0,d.jsx)(a.li,{children:"version: quantity - the version of the batch"}),"\n",(0,d.jsx)(a.li,{children:"hash: DATA: 32 bytes - the batch of this batch"}),"\n",(0,d.jsx)(a.li,{children:"parentBatchHeader: bytes - the parent batch header"}),"\n",(0,d.jsx)(a.li,{children:"Chunks: arrays of chunk - Chunk: bytes : the chunk bytes of this batch"}),"\n",(0,d.jsx)(a.li,{children:"skippedL1MessageBitmap: bytes - the bitmap of the skipped L1Message"}),"\n",(0,d.jsx)(a.li,{children:"prevStateRoot: DATA: 32 bytes - the state root at the beginning of this batch"}),"\n",(0,d.jsx)(a.li,{children:"postStateRoot: DATA: 32 bytes - the state root at the end of this batch"}),"\n",(0,d.jsx)(a.li,{children:"withdrawRoot: DATA : 32 bytes - the withdraw root at the end of this batch"}),"\n",(0,d.jsx)(a.li,{children:"sidecar - the side car for the rollup transaction of the blob type"}),"\n",(0,d.jsx)(a.li,{children:"signatures - array of object of signature:"}),"\n"]}),"\n",(0,d.jsxs)(a.ul,{children:["\n",(0,d.jsx)(a.li,{children:"version: quantity - the version of sequencers"}),"\n",(0,d.jsx)(a.li,{children:"signer: quantity - the index of the registered sequencer on L1Sequencer"}),"\n",(0,d.jsx)(a.li,{children:"signerPubKey: bytes - the bls public key"}),"\n",(0,d.jsx)(a.li,{children:"signature: the bls signature of the batch signed by this signer"}),"\n"]}),"\n",(0,d.jsx)(a.h3,{id:"example-5",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// Request\ncurl -X POST --data \'{"jsonrpc":"2.0","method":"morph_getRollupBatchByIndex","params":[1],"id":1}\'\n\n//Result\n{\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "version": 0,\n "hash": "0x559c75fb09451ef19968b6c17c2ed3b3f431ab496d29d0a611970bf3e377ed4f",\n "parentBatchHeader": "0x000000000000000000000000000000000000000000000000008b1cfd86e7ac16004ef7aae3e693402764e10471efc9a67c3051a44b2d5a5ad2010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140000000000000000000000000000000000000000000000000000000000000000",\n "chunks": [\n "0x010000000000000001000000006623829f0000000000000000000000000000000000000000000000000000000000000000000000000098968000000000"\n ],\n "skippedL1MessageBitmap": "0x",\n "prevStateRoot": "0x232ce5fc696e7033ec630174d4c78aa157cc13ffba01aba5154bb900ae2b61b3",\n "postStateRoot": "0x232ce5fc696e7033ec630174d4c78aa157cc13ffba01aba5154bb900ae2b61b3",\n "withdrawRoot": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757",\n "sidecar": {\n "Blobs": [\n [...]\n ],\n "Commitments": [\n [...]\n ],\n "Proofs": [\n [...]\n ]\n },\n "signatures": [\n {\n "version": 0,\n "signer": 0,\n "signerPubKey": "0x00000000000000000000000000000000095ad465c2895ee825c7d4f1b60a18734db57d4108369e47c6e3a94ee15846f825c06dad5d98f503bd31ece1d9f94b11000000000000000000000000000000000c5d6ba04bc9b9674dd2acbfc5caed3976c1b8be2ec90a03d78dffe924648b4fba82225aff43c744310c6a60185b75ac000000000000000000000000000000000fce6be001c871a11b9db1c6c15f0a6999de5646941a74486206dc784f0b3ffe11799212f3f44ef754b4a0f1ecf85639000000000000000000000000000000000b2f06634e5ea719682c30911c94dfb560f0b7656b5c34a871ea035e3fe7b041885420f8fe1e251f1cce5cdb7514869e",\n "signature": "0x079ff817623be61e3dc48ad755020d3eb37e47697e97394df3707248e5e923d8cb92cc2c788e2e19eb21d878224e3e2a023170f091b979dbdc5ac47e95a1e3e6edf5a91279b3c89e871927370abeefd43430b561b640d91f0f474db8e871f05f"\n },\n {\n "version": 0,\n "signer": 1,\n "signerPubKey": "0x0000000000000000000000000000000010173aeac4ff317e8e60493f962b91dbd27614e1f6594e17d18a02968bd1fd698b6703092ab8622cd22d6948d9421156000000000000000000000000000000000801aea15697ab4d7a808be45377e4f0d2f54857fdc04031e476402ff16c66a6cbcc5f09a84bf85400c8afbabed006600000000000000000000000000000000015fc71b2c4e81148274e6169c9c9aace8c34fa6030547650242b6c32527dd23a996416e32640bce4f495a0afabc7dbb900000000000000000000000000000000088c4a0dffccc96bce47aef0e176b129457a5f3ae1651b132ddb418e9f7b5850a38c6fec1be6d169eb88dc1619648bf4",\n "signature": "0x05784fcf2c9b50b2503282a464106ce6bad4d29798869d2d24dae047eba48662ef66b54f193a4a0aad511cee57b8fc960b44e478cfc0c021a92dba44495ffa9237f4cf4f9865bb8fb95cee9bb32f2b283940bce6d8f4fdfe89bec0c186ecc429"\n },\n {\n "version": 0,\n "signer": 2,\n "signerPubKey": "0x0000000000000000000000000000000003fd9468a8ceffc1b696874517777ef8bfdc9a1bade95c480ee2624903e648c1caf01c65de5b4fda8876a3a0e8d9f0890000000000000000000000000000000004c02f3609a0f61d12fe737dcbb047d5253bd3ff905b55c0e0f932b476fd77d172a58b72ef0f506407870988dd6038220000000000000000000000000000000017fa5765899f60f7a58f8ccdaaa295cde55992231710672692ba6a71a4faa9572f728f438ded65576a570d57e19fd304000000000000000000000000000000001226138813bde98af3464ed03649d8c731bc4e5cb3d26b53bf7483f4105d18bbb3f19e23905119e156e7d003d2fd125c",\n "signature": "0x17d127f711bbfd578f3a9d6c897f6eb4c109f2b12ec16c7976c2146325b718ac06713ecfd168b1abd60d5c4d84b8c75105019a522a96f9d28974dafab640e146abc29322e5550bdb606bcf768c1d7de468fa42e09f2c806bfbedcffd6cfa652c"\n },\n {\n "version": 0,\n "signer": 3,\n "signerPubKey": "0x00000000000000000000000000000000109bf02a2636c0dc1968b0a50db77251eb090c3e9f51e2a2bc60c4ac72213f41f01f0a34e92c2e0625bd62e28e27edb500000000000000000000000000000000139969bd92522113c0615659874d1fae311ad8152d0584c7b57ffc14927067486dcf86413c5684fccc1163ee2d45c1c1000000000000000000000000000000000f172603f70a0730d100ad6d28bde477195987062e8ade83b82d093935d956ff20ca768c26263577b094f1cb756adc400000000000000000000000000000000010dde3acca00b4ff1b4976500a8f97e92246f43f78cadc95c4993dfc4f4c501c33d42a4bf52587f4931287b59623149c",\n "signature": "0x053a7119c0fa920e94c8a1f32441537509f654a673af02179a01ff2c7ac6dee24b22c2f93da4b4a37bb08e2115ef097e00038d0cabdeec2ae1838aa30cb62bff8e528ac200eff0d69fbe8848646972dbb09f4cf3a06c62be0c5e314f25bdbd68"\n }\n ]\n }\n}\n\n'})}),"\n",(0,d.jsx)(a.h2,{id:"morph_getblocktracebynumberorhash",children:"morph_GetBlockTraceByNumberOrHash"}),"\n",(0,d.jsx)(a.p,{children:"It replays the block and returns the structured blockTrace for rollers."}),"\n",(0,d.jsx)(a.h2,{id:"parameters-7",children:"Parameters"}),"\n",(0,d.jsxs)(a.ol,{children:["\n",(0,d.jsx)(a.li,{children:'QUANTITY|TAG - integer of a block number, or the string "earliest", "latest", "pending", "safe" or "finalized", as in the default block parameter. Or DATA, 32 Bytes - Hash of a block.'}),"\n",(0,d.jsx)(a.li,{children:"tracerConfig(optional), see debug Namespace | go-ethereum"}),"\n"]}),"\n",(0,d.jsx)(a.h2,{id:"example-6",children:"Example"}),"\n",(0,d.jsx)(a.pre,{children:(0,d.jsx)(a.code,{className:"language-js",children:'// Request\n{"jsonrpc":"2.0","method":"morph_getBlockTraceByNumberOrHash","params":["latest"],"id":67}\n\n// Result\n{\n "jsonrpc": "2.0",\n "id": 67,\n "result": {\n "chainID": 53077,\n "version": "5.2.0-mainnet",\n "coinbase": {\n "address": "0xfabb0ac9d68b0b445fb7357272ff202c5651694a",\n "nonce": 0,\n "balance": "0x2000000000000000000000000000000000000000000000000006b49161ba10",\n "keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",\n "poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864",\n "codeSize": 0\n },\n "header": {\n "parentHash": "0xa2b3ee7a3718baeb1b460bc9a479838532c184129d0238b342e1bc9430e15961",\n "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",\n "miner": "0x0000000000000000000000000000000000000000",\n "stateRoot": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",\n "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",\n "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",\n "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",\n "difficulty": "0x0",\n "number": "0x31",\n "gasLimit": "0x989680",\n "gasUsed": "0x0",\n "timestamp": "0x6618fa6a",\n "extraData": "0x",\n "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "nonce": "0x0000000000000000",\n "nextL1MsgIndex": "0x0",\n "batchHash": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "baseFeePerGas": null,\n "withdrawalsRoot": null,\n "blobGasUsed": null,\n "excessBlobGas": null,\n "parentBeaconBlockRoot": null,\n "hash": "0x65645773fa2056771753878cdf5a1280dff36756096e8f9c1cf51fe66690a448"\n },\n "transactions": [],\n "storageTrace": {\n "rootBefore": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",\n "rootAfter": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",\n "proofs": {\n "0x5300000000000000000000000000000000000001": [\n "0x09261068d5568cdf6020d6b6703b831fbc4c5928019dcc23606eceaa4cb4befd3a22bd9a05e5f4619cebb743688e2bb2510352fa7b64cee7d6c947e1c8655b3e88",\n "0x0912cea39ac19eee30407d6760f267dcaa3456c6ab30a2d7285e1ae726debdc3a228bc075d0a3a84f79e301293ac8c4188d5e58e3a30a49ca058d77784ec477d6c",\n "0x092a1073697a898cbfc740c3c327cc3bcc1517b23dd5a44ea7f7e5975a55a615790e69dfcd0c8346b28ff2dffa8db5d0c5b7ed8291eab83be0292051c2dd9a55bc",\n "0x0927f8c131313ff2ce0d551273c407fd6e94e5d9f644eab09c4c20b13e00fb5a4b1e00b9701c7f2ac25be7e3fe8ad00ce18f642d07188ff1aacc6d7a1fc44987b5",\n "0x090296736b61c7a9c43b7260c2f652d1bc941b882c0a1e71a9b8d86657cc0b9d8e1b6b72e48fe7cfc89ae526ae345245d7f6871db82148a8a0c1c9cf992e177ba2",\n "0x090a6feef711af23824583c2bcd54147c2991287ca1fbad2cbb0e9ac2f42dc0c2d1b510d4e26002d7f33e82092a7c28f26ac6cf3f2349eb23e4374ad31f3e289d0",\n "0x091a8fc20731feea420de908b0d66e7c53398f53ce5d76054cf3d0e4747ba1896222d288ea2a9d771a19771658abf5a64fd503f4ed277aa8d6f779137a88ea1c8d",\n "0x091628b91a861616a64807781ae6aaa549dae9555ef1454a85df052398404f44690f386bb59d106d7a27ff2df1de738c3fae5cf8307f84e07ac6957e3c42fa3f5e",\n "0x09220b163279be211a426832f5ff47e0ecadb5bd5eaaf0d62189998fde4e14e62913696e7ffd560b4bf7df760cbfdc330a8c5e7cf15b4e2f60fb9146fd28fe2db7",\n "0x08150feb81fe1639286c75adb93e5467d36ad52d9ff00e0c706bc5345f6dcd49500000000000000000000000000000000000000000000000000000000000000000",\n "0x081cb430cbc5dd11f62a713fb3656184085386104dc53fc135fb3c56dba49670500000000000000000000000000000000000000000000000000000000000000000",\n "0x060c320ff8f6c3907ae6df62a7fe70e2be093390bd246197d5f56b6bce56f513f812fac8f51e3812914c097147217411381b9b2dad76963ef63c261885d3a49223",\n "0x0427cfcbd2fe87474008e199ef5bff09273803bbf38032c75a36a7726b3c88f8a205080000000000000000000000000000000000000000000000000aec000000000000000000000000000000000000000000000000000000000000000000000000000000002198e2c16011cd18ef5be82557ea4552a16cc88ed8026d68fc38a18776550fa944107d7c70e67e04d35d77455d5755c94d4897196e4ea9a341c1a6d864a6d4d518d32c9790b7656cb1991e831f76e6d65151cbd1c05aef8cfa7d369ad2076f8400",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ],\n "0x530000000000000000000000000000000000000f": [\n "0x09261068d5568cdf6020d6b6703b831fbc4c5928019dcc23606eceaa4cb4befd3a22bd9a05e5f4619cebb743688e2bb2510352fa7b64cee7d6c947e1c8655b3e88",\n "0x0912cea39ac19eee30407d6760f267dcaa3456c6ab30a2d7285e1ae726debdc3a228bc075d0a3a84f79e301293ac8c4188d5e58e3a30a49ca058d77784ec477d6c",\n "0x0910b680ab891bca41519a50437acf0fd6001d3843132362201baeecfefe64861d004b217e8efd3e9ff7f15214f53868836cd5341e524a6862cf599a2c91e066e4",\n "0x092bc917a3803350b7b4b99e33f5612886fe67ae2346b7b8a80c4f33ea2b2143c5157889ebd8bd189e158f8e315bf0e81eeaade2de06d9514962a676c2b5c43fe6",\n "0x0923373510953f88897d7fcfd22182f41afbc558d2f862f437a31d1919ce2e34c925c888335ad923fc91289b73b7cb65de69d93146389a6af856490d8578203517",\n "0x092ea32b06c112526e73d5c4828866500f096d35e79c13d7c1f7aa42afce901bd618bb82398f0bc28770139185439bf42dea1f543e8a0a266399ba43a3dd60f463",\n "0x09199e7116f18fc4121b627c11b0ca83bbb70b204098c01db84cd2c27ec3416bd4002ea098b20a57201744454a787c20550c1ffa4145ab218c28906ba3df5ea6cb",\n "0x0923bfab6f7b9cc20bae8ca8989ad45df9625cf0c14ee54257ffd31b2593b8385f0861f83d52b30f3b4ea0dbf9aa1b95e8864f2b2032249d6fa43ba22be66e5e82",\n "0x0609fd578e322ce608e81c29d820eca5e2d610bf211aa40fbfdfc7bd1327c9c6432a868ae99ff40d43cff3f28ff0655bf467eaa89e3d3a1493203e4abb26099b3b",\n "0x0418a86f98026d1a55f6fee616f04d51be16c033651ffaafb0514287ec067d04e805080000000000000000000000000000000000000000000000000aec00000000000000000000000000000000000000000000000000000000000000000000000000000000025f5484cf6758b2d9e10b66230e7ed93fd790931c579d1583b40a25c29b3cc944107d7c70e67e04d35d77455d5755c94d4897196e4ea9a341c1a6d864a6d4d518d32c9790b7656cb1991e831f76e6d65151cbd1c05aef8cfa7d369ad2076f8420530000000000000000000000000000000000000f000000000000000000000000",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ],\n "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": [\n "0x09261068d5568cdf6020d6b6703b831fbc4c5928019dcc23606eceaa4cb4befd3a22bd9a05e5f4619cebb743688e2bb2510352fa7b64cee7d6c947e1c8655b3e88",\n "0x09132e097dde889d85b8b3309a827f0496c58979f869fe9827851d59f3af8d3bad1db74244979778c4e7c6b56496b5a3f1ee84cd42acacbc6ae3842deb5332b101",\n "0x0919474ec6b34f96f735c336cc161ed84fdd3a683fa201b518af5c2c1626f02f4612a08d77db2b9b67c38d89ed19f9ca59dadbd1699d27829f985020f6f3432959",\n "0x090dc9f8dd06d98c5a78af9836fc75823e4e2b0c95085c36dc33b8c35f5fc224d319e43044e7ac03d516f20d38f68682109407871d5f07f080c59857789fad1e46",\n "0x0907bc083c80445c99e7239f960beabcf360f7a6999ade44323b8401e0ec6842b80c789c2f71e21b35f96a71c66a774edac37ba18b809b8122d9000fbf0f8ac74b",\n "0x091e9ddabce6463c4843a7f43ce562b40bd7cc778a539486f6739bf7daf6f14bdf2da1168d26e898c81e03ba275f3474d4172c1f936d272114b87a486ae25a0c7e",\n "0x092ebed3e1476b235ef7ee7d5c160d7738aee3a9ecf02754975430203dbe05b7ce1f81e74d1f8a355b7dda2b293a8833c0926df34b6ab6516de484a7c682123e3b",\n "0x0700000000000000000000000000000000000000000000000000000000000000000bca6f26c452ec72dc90f8ac79855df88d3b88ce77a5c4ac472eea9ef7b619ae",\n "0x0824eb7acc6f05bd88d0aecfb7e170edc0f99384a54657916103d91fad99bf01030000000000000000000000000000000000000000000000000000000000000000",\n "0x072449731363c43de43d2516f39791c43a3be1e83edc3432352d81d2d1384a946e159ad10b4c89ff16157cc364c81f6039eeea9a8eb87e4b4700249219e71cc3ef",\n "0x0403d2c88868dc8b5f7994604147a8246c48cc905235de980c42c3e78f351f00c5050800000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006b49161ba100000000000000000000000000000000000000000000000000000000000000000c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4702098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b6486420fabb0ac9d68b0b445fb7357272ff202c5651694a000000000000000000000000",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ]\n },\n "storageProofs": {\n "0x5300000000000000000000000000000000000001": {\n "0x0000000000000000000000000000000000000000000000000000000000000021": [\n "0x0825bcd8ed4a7e39c0f0e835761cda36131dd34f16de95765d2216d997923a52f60e38bf5d7d592ab89df92d87f260b8529d9c466b936b42ad8fbfe576bf97b200",\n "0x06216372aa3165a29ee67494a5a9680358be92c254cc5724949e4d52742ba8d57f02a40b5614637fca2783d673559f035f5f5a0588ee27d164bb5375568493200a",\n "0x042f683d080c393f5fb2ade2190fd56e8a5e8fa26533acdea8cce25caa236027cc0101000027ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75700",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ]\n },\n "0x530000000000000000000000000000000000000f": {\n "0x0000000000000000000000000000000000000000000000000000000000000001": [\n "0x09224baa919e1495600105d8a4446f80cabd9a915d7556e0b5d2956a3ad01e96862b531affe57e7f49ddcfef93ff839a215de0865c985188f99c61838f366e2bbe",\n "0x091eb325ae1568060f3957cc990d35e5ef48b7b2bc7979151083abe2d68aabc812162b4d479ff13f2af3f0cfaadc6bccc8622dd980f83c7014e947f50577eedaba",\n "0x08015c4fc60a3c6160762783cfc0da7e9d0518e56f0f4f236b7666e1afde43c8f60e867960e703abfccf265c16aceb5c2a092c39248e00fa04f717cf3ca38dfe9e",\n "0x080782addd8b48a93860ab4cb45e80c6cc869c1288f09d52cb7dec1f6aab62deb70000000000000000000000000000000000000000000000000000000000000000",\n "0x0700000000000000000000000000000000000000000000000000000000000000000f35c10e1893b6065c8ce8ba23fcd841bb168eb35643ca124118a4e44668fab2",\n "0x080487bd50c628c019d7858418000d1393427df64c9c103a4229f7b6cb3cdf5ae60000000000000000000000000000000000000000000000000000000000000000",\n "0x0700000000000000000000000000000000000000000000000000000000000000001046b31bcd31548fa80d0a9fb9fae45e61112d689f6b9c82958033c0787f1f94",\n "0x0805b5be5c8d36bd01ef9c3d10f3d994da611bc1484e9e48f69d2224efeb811b320000000000000000000000000000000000000000000000000000000000000000",\n "0x081ebc02f6986209f10fc7d04ba0c4ef196d75ad0a22e786fc7cf789f591e9b26f0000000000000000000000000000000000000000000000000000000000000000",\n "0x0700000000000000000000000000000000000000000000000000000000000000002680dd0a6ed49fc1faf7d4ef23a8328de46b8a4c1d86e6553f4940e394673978",\n "0x0628658ea3cbfa933d0e4041f9000bcc3393a3536913008ef6e1837ba7053bdec1156a0960a84fa4287f66d18b9c39ab9d403fa6b6dddd126f47758aadcb82e122",\n "0x0426049ba6de63003492eb078a01a8aa4f4a0e67f28f0955c2eba9101d5d2eea5001010000000000000000000000000000000000000000000000000000000000000000000700",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ],\n "0x0000000000000000000000000000000000000000000000000000000000000002": [\n "0x09224baa919e1495600105d8a4446f80cabd9a915d7556e0b5d2956a3ad01e96862b531affe57e7f49ddcfef93ff839a215de0865c985188f99c61838f366e2bbe",\n "0x091eb325ae1568060f3957cc990d35e5ef48b7b2bc7979151083abe2d68aabc812162b4d479ff13f2af3f0cfaadc6bccc8622dd980f83c7014e947f50577eedaba",\n "0x08015c4fc60a3c6160762783cfc0da7e9d0518e56f0f4f236b7666e1afde43c8f60e867960e703abfccf265c16aceb5c2a092c39248e00fa04f717cf3ca38dfe9e",\n "0x04020953ad52de135367a1ba2629636216ed5174cce5629d11b5d97fe733f07dcc0101000000000000000000000000000000000000000000000000000000000000000029d7200000000000000000000000000000000000000000000000000000000000000002",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ],\n "0x0000000000000000000000000000000000000000000000000000000000000003": [\n "0x09224baa919e1495600105d8a4446f80cabd9a915d7556e0b5d2956a3ad01e96862b531affe57e7f49ddcfef93ff839a215de0865c985188f99c61838f366e2bbe",\n "0x07000000000000000000000000000000000000000000000000000000000000000014a36870c64d2edad5a210b41e5bdfd73e7f4201161a755c434a621ffe103cc8",\n "0x061c3181dc54d9c120fdc034e9c12d47d19f07bdeb049e492e0e7c5c9d7fe19a4d0e38bf5d7d592ab89df92d87f260b8529d9c466b936b42ad8fbfe576bf97b200",\n "0x0406c50541f08911ad149aa545dd3d606f86ee63c751a795c7d57f0d3f85e6bdeb01010000000000000000000000000000000000000000000000000000000000174876e800200000000000000000000000000000000000000000000000000000000000000003",\n "0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"\n ]\n }\n }\n },\n "executionResults": [],\n "withdraw_trie_root": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757",\n "startL1QueueIndex": 0\n }\n}\n'})})]})}function o(e={}){const{wrapper:a}={...(0,n.R)(),...e.components};return a?(0,d.jsx)(a,{...e,children:(0,d.jsx)(i,{...e})}):i(e)}},1582:(e,a,c)=>{c.d(a,{R:()=>b,x:()=>s});var d=c(758);const n={},f=d.createContext(n);function b(e){const a=d.useContext(f);return d.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function s(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:b(e.components),d.createElement(f.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/24734b3e.528e753c.js b/build/assets/js/24734b3e.528e753c.js deleted file mode 100644 index b8750f235..000000000 --- a/build/assets/js/24734b3e.528e753c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[933],{5660:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>s,metadata:()=>d,toc:()=>l});var n=o(6070),r=o(1582);const s={},c="Interface: StateRoot",d={id:"build-on-morph/sdk/interfaces/StateRoot",title:"StateRoot",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/StateRoot.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/StateRoot",permalink:"/docs/build-on-morph/sdk/interfaces/StateRoot",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/StateRoot.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Properties",id:"properties",level:2},{value:"batch",id:"batch",level:3},{value:"Source",id:"source",level:4},{value:"stateRoot",id:"stateroot",level:3},{value:"Source",id:"source-1",level:4},{value:"stateRootIndexInBatch",id:"staterootindexinbatch",level:3},{value:"Source",id:"source-2",level:4}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(t.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(t.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / StateRoot"]}),"\n",(0,n.jsx)(t.h1,{id:"interface-stateroot",children:"Interface: StateRoot"}),"\n",(0,n.jsx)(t.p,{children:"Information about a state root, including header, block number, and root iself."}),"\n",(0,n.jsx)(t.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(t.h3,{id:"batch",children:"batch"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"batch"}),": ",(0,n.jsx)(t.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRootBatch",children:(0,n.jsx)(t.code,{children:"StateRootBatch"})})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:339"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.h3,{id:"stateroot",children:"stateRoot"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"stateRoot"}),": ",(0,n.jsx)(t.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:337"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.h3,{id:"staterootindexinbatch",children:"stateRootIndexInBatch"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"stateRootIndexInBatch"}),": ",(0,n.jsx)(t.code,{children:"number"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source-2",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:338"})]})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,t,o)=>{o.d(t,{R:()=>c,x:()=>d});var n=o(758);const r={},s=n.createContext(r);function c(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/25bec567.8e13158b.js b/build/assets/js/25bec567.8e13158b.js deleted file mode 100644 index e64dd3deb..000000000 --- a/build/assets/js/25bec567.8e13158b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[690],{3406:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>n,metadata:()=>d,toc:()=>h});var r=o(6070),s=o(1582);const n={},c="Interface: StateRootBatch",d={id:"build-on-morph/sdk/interfaces/StateRootBatch",title:"StateRootBatch",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/StateRootBatch.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/StateRootBatch",permalink:"/docs/build-on-morph/sdk/interfaces/StateRootBatch",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/StateRootBatch.md",tags:[],version:"current",frontMatter:{}},i={},h=[{value:"Properties",id:"properties",level:2},{value:"blockNumber",id:"blocknumber",level:3},{value:"Source",id:"source",level:4},{value:"header",id:"header",level:3},{value:"Source",id:"source-1",level:4},{value:"stateRoots",id:"stateroots",level:3},{value:"Source",id:"source-2",level:4}];function l(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(t.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(t.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / StateRootBatch"]}),"\n",(0,r.jsx)(t.h1,{id:"interface-staterootbatch",children:"Interface: StateRootBatch"}),"\n",(0,r.jsx)(t.p,{children:"Information about a batch of state roots."}),"\n",(0,r.jsx)(t.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(t.h3,{id:"blocknumber",children:"blockNumber"}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"blockNumber"}),": ",(0,r.jsx)(t.code,{children:"number"})]}),"\n"]}),"\n",(0,r.jsx)(t.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(t.p,{children:"src/interfaces/types.ts:346"}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h3,{id:"header",children:"header"}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"header"}),": ",(0,r.jsx)(t.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader",children:(0,r.jsx)(t.code,{children:"StateRootBatchHeader"})})]}),"\n"]}),"\n",(0,r.jsx)(t.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(t.p,{children:"src/interfaces/types.ts:347"}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h3,{id:"stateroots",children:"stateRoots"}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"stateRoots"}),": ",(0,r.jsx)(t.code,{children:"string"}),"[]"]}),"\n"]}),"\n",(0,r.jsx)(t.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(t.p,{children:"src/interfaces/types.ts:348"})]})}function a(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1582:(e,t,o)=>{o.d(t,{R:()=>c,x:()=>d});var r=o(758);const s={},n=r.createContext(s);function c(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/2a31694d.6b99dbda.js b/build/assets/js/2a31694d.6b99dbda.js deleted file mode 100644 index 4fde28e44..000000000 --- a/build/assets/js/2a31694d.6b99dbda.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6039],{2583:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=s(6070),n=s(1582);const o={},i="Type alias: DeepPartial<T>",l={id:"build-on-morph/sdk/type-aliases/DeepPartial",title:"DeepPartial",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/DeepPartial.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/DeepPartial",permalink:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/DeepPartial.md",tags:[],version:"current",frontMatter:{}},a={},c=[{value:"Type parameters",id:"type-parameters",level:2},{value:"Source",id:"source",level:2}];function p(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(r.hr,{}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / DeepPartial"]}),"\n",(0,t.jsx)(r.h1,{id:"type-alias-deeppartialt",children:"Type alias: DeepPartial<T>"}),"\n",(0,t.jsxs)(r.blockquote,{children:["\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"DeepPartial"}),"<",(0,t.jsx)(r.code,{children:"T"}),">: ",(0,t.jsx)(r.code,{children:"{ [P in keyof T]?: DeepPartial<T[P]> }"})]}),"\n"]}),"\n",(0,t.jsx)(r.p,{children:"Utility type for deep partials."}),"\n",(0,t.jsx)(r.h2,{id:"type-parameters",children:"Type parameters"}),"\n",(0,t.jsxs)(r.p,{children:["\u2022 ",(0,t.jsx)(r.strong,{children:"T"})]}),"\n",(0,t.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,t.jsx)(r.p,{children:"src/utils/type-utils.ts:4"})]})}function d(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>i,x:()=>l});var t=s(758);const n={},o=t.createContext(n);function i(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/2b4bd9da.fed01c3d.js b/build/assets/js/2b4bd9da.fed01c3d.js deleted file mode 100644 index 79d05e387..000000000 --- a/build/assets/js/2b4bd9da.fed01c3d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7481],{1767:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>d,metadata:()=>l,toc:()=>h});var i=r(6070),s=r(1582);const d={},c="Interface: L2Transaction",l={id:"build-on-morph/sdk/interfaces/L2Transaction",title:"L2Transaction",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/L2Transaction.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/L2Transaction",permalink:"/docs/build-on-morph/sdk/interfaces/L2Transaction",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/L2Transaction.md",tags:[],version:"current",frontMatter:{}},o={},h=[{value:"Extends",id:"extends",level:2},{value:"Properties",id:"properties",level:2},{value:"accessList?",id:"accesslist",level:3},{value:"Inherited from",id:"inherited-from",level:4},{value:"Source",id:"source",level:4},{value:"blockHash?",id:"blockhash",level:3},{value:"Inherited from",id:"inherited-from-1",level:4},{value:"Source",id:"source-1",level:4},{value:"blockNumber?",id:"blocknumber",level:3},{value:"Inherited from",id:"inherited-from-2",level:4},{value:"Source",id:"source-2",level:4},{value:"chainId",id:"chainid",level:3},{value:"Inherited from",id:"inherited-from-3",level:4},{value:"Source",id:"source-3",level:4},{value:"confirmations",id:"confirmations",level:3},{value:"Inherited from",id:"inherited-from-4",level:4},{value:"Source",id:"source-4",level:4},{value:"data",id:"data",level:3},{value:"Inherited from",id:"inherited-from-5",level:4},{value:"Source",id:"source-5",level:4},{value:"from",id:"from",level:3},{value:"Inherited from",id:"inherited-from-6",level:4},{value:"Source",id:"source-6",level:4},{value:"gasLimit",id:"gaslimit",level:3},{value:"Inherited from",id:"inherited-from-7",level:4},{value:"Source",id:"source-7",level:4},{value:"gasPrice?",id:"gasprice",level:3},{value:"Inherited from",id:"inherited-from-8",level:4},{value:"Source",id:"source-8",level:4},{value:"hash",id:"hash",level:3},{value:"Inherited from",id:"inherited-from-9",level:4},{value:"Source",id:"source-9",level:4},{value:"l1BlockNumber",id:"l1blocknumber",level:3},{value:"Source",id:"source-10",level:4},{value:"l1TxOrigin",id:"l1txorigin",level:3},{value:"Source",id:"source-11",level:4},{value:"maxFeePerGas?",id:"maxfeepergas",level:3},{value:"Inherited from",id:"inherited-from-10",level:4},{value:"Source",id:"source-12",level:4},{value:"maxPriorityFeePerGas?",id:"maxpriorityfeepergas",level:3},{value:"Inherited from",id:"inherited-from-11",level:4},{value:"Source",id:"source-13",level:4},{value:"nonce",id:"nonce",level:3},{value:"Inherited from",id:"inherited-from-12",level:4},{value:"Source",id:"source-14",level:4},{value:"queueOrigin",id:"queueorigin",level:3},{value:"Source",id:"source-15",level:4},{value:"r?",id:"r",level:3},{value:"Inherited from",id:"inherited-from-13",level:4},{value:"Source",id:"source-16",level:4},{value:"raw?",id:"raw",level:3},{value:"Inherited from",id:"inherited-from-14",level:4},{value:"Source",id:"source-17",level:4},{value:"rawTransaction",id:"rawtransaction",level:3},{value:"Source",id:"source-18",level:4},{value:"s?",id:"s",level:3},{value:"Inherited from",id:"inherited-from-15",level:4},{value:"Source",id:"source-19",level:4},{value:"timestamp?",id:"timestamp",level:3},{value:"Inherited from",id:"inherited-from-16",level:4},{value:"Source",id:"source-20",level:4},{value:"to?",id:"to",level:3},{value:"Inherited from",id:"inherited-from-17",level:4},{value:"Source",id:"source-21",level:4},{value:"type?",id:"type",level:3},{value:"Inherited from",id:"inherited-from-18",level:4},{value:"Source",id:"source-22",level:4},{value:"v?",id:"v",level:3},{value:"Inherited from",id:"inherited-from-19",level:4},{value:"Source",id:"source-23",level:4},{value:"value",id:"value",level:3},{value:"Inherited from",id:"inherited-from-20",level:4},{value:"Source",id:"source-24",level:4},{value:"wait()",id:"wait",level:3},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"Inherited from",id:"inherited-from-21",level:4},{value:"Source",id:"source-25",level:4}];function t(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,i.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,i.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L2Transaction"]}),"\n",(0,i.jsx)(n.h1,{id:"interface-l2transaction",children:"Interface: L2Transaction"}),"\n",(0,i.jsx)(n.p,{children:"JSON transaction representation when returned by L2Geth nodes. This is simply an extension to\nthe standard transaction response type. You do NOT need to use this type unless you care about\nhaving typed access to L2-specific fields."}),"\n",(0,i.jsx)(n.h2,{id:"extends",children:"Extends"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"TransactionResponse"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"properties",children:"Properties"}),"\n",(0,i.jsx)(n.h3,{id:"accesslist",children:"accessList?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"accessList"}),": ",(0,i.jsx)(n.code,{children:"AccessList"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.accessList"})}),"\n",(0,i.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:40"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"blockhash",children:"blockHash?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"blockHash"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-1",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.blockHash"})}),"\n",(0,i.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:26"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"blocknumber",children:"blockNumber?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"blockNumber"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-2",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.blockNumber"})}),"\n",(0,i.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:25"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"chainid",children:"chainId"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"chainId"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-3",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.chainId"})}),"\n",(0,i.jsx)(n.h4,{id:"source-3",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:35"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"confirmations",children:"confirmations"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"confirmations"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-4",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.confirmations"})}),"\n",(0,i.jsx)(n.h4,{id:"source-4",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:28"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"data",children:"data"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"data"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-5",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.data"})}),"\n",(0,i.jsx)(n.h4,{id:"source-5",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:33"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"from",children:"from"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"from"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-6",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.from"})}),"\n",(0,i.jsx)(n.h4,{id:"source-6",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:29"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"gaslimit",children:"gasLimit"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"gasLimit"}),": ",(0,i.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-7",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.gasLimit"})}),"\n",(0,i.jsx)(n.h4,{id:"source-7",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:31"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"gasprice",children:"gasPrice?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"gasPrice"}),": ",(0,i.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-8",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.gasPrice"})}),"\n",(0,i.jsx)(n.h4,{id:"source-8",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:32"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"hash",children:"hash"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"hash"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-9",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.hash"})}),"\n",(0,i.jsx)(n.h4,{id:"source-9",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:24"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"l1blocknumber",children:"l1BlockNumber"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"l1BlockNumber"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"source-10",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"src/interfaces/l2-provider.ts:16"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"l1txorigin",children:"l1TxOrigin"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"l1TxOrigin"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"source-11",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"src/interfaces/l2-provider.ts:17"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"maxfeepergas",children:"maxFeePerGas?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"maxFeePerGas"}),": ",(0,i.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-10",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.maxFeePerGas"})}),"\n",(0,i.jsx)(n.h4,{id:"source-12",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:42"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"maxpriorityfeepergas",children:"maxPriorityFeePerGas?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"maxPriorityFeePerGas"}),": ",(0,i.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-11",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.maxPriorityFeePerGas"})}),"\n",(0,i.jsx)(n.h4,{id:"source-13",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:41"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"nonce",children:"nonce"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"nonce"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-12",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.nonce"})}),"\n",(0,i.jsx)(n.h4,{id:"source-14",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:30"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"queueorigin",children:"queueOrigin"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"queueOrigin"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"source-15",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"src/interfaces/l2-provider.ts:18"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"r",children:"r?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"r"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-13",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.r"})}),"\n",(0,i.jsx)(n.h4,{id:"source-16",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:36"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"raw",children:"raw?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"raw"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-14",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.raw"})}),"\n",(0,i.jsx)(n.h4,{id:"source-17",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:30"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"rawtransaction",children:"rawTransaction"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"rawTransaction"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"source-18",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"src/interfaces/l2-provider.ts:19"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"s",children:"s?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"s"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-15",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.s"})}),"\n",(0,i.jsx)(n.h4,{id:"source-19",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:37"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"timestamp",children:"timestamp?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"timestamp"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-16",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.timestamp"})}),"\n",(0,i.jsx)(n.h4,{id:"source-20",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:27"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"to",children:"to?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"to"}),": ",(0,i.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-17",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.to"})}),"\n",(0,i.jsx)(n.h4,{id:"source-21",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:28"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"type",children:"type?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"type"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-18",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.type"})}),"\n",(0,i.jsx)(n.h4,{id:"source-22",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:39"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"v",children:"v?"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"optional"})," ",(0,i.jsx)(n.strong,{children:"v"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-19",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.v"})}),"\n",(0,i.jsx)(n.h4,{id:"source-23",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:38"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"value",children:"value"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"value"}),": ",(0,i.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-20",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.value"})}),"\n",(0,i.jsx)(n.h4,{id:"source-24",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/transactions/lib/index.d.ts:34"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"wait",children:"wait()"}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"wait"}),": (",(0,i.jsx)(n.code,{children:"confirmations"}),"?) => ",(0,i.jsx)(n.code,{children:"Promise"}),"<",(0,i.jsx)(n.code,{children:"TransactionReceipt"}),">"]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"parameters",children:"Parameters"}),"\n",(0,i.jsxs)(n.p,{children:["\u2022 ",(0,i.jsx)(n.strong,{children:"confirmations?"}),": ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"returns",children:"Returns"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Promise"}),"<",(0,i.jsx)(n.code,{children:"TransactionReceipt"}),">"]}),"\n",(0,i.jsx)(n.h4,{id:"inherited-from-21",children:"Inherited from"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"TransactionResponse.wait"})}),"\n",(0,i.jsx)(n.h4,{id:"source-25",children:"Source"}),"\n",(0,i.jsx)(n.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:31"})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(t,{...e})}):t(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>l});var i=r(758);const s={},d=i.createContext(s);function c(e){const n=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/2f19d5d4.fa2f851a.js b/build/assets/js/2f19d5d4.fa2f851a.js deleted file mode 100644 index 064fae924..000000000 --- a/build/assets/js/2f19d5d4.fa2f851a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9640],{4240:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var r=o(6070),t=o(1582);const l={title:"Deploy Contracts on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},i=void 0,s={id:"build-on-morph/code-examples/deploy-contract-on-morph",title:"Deploy Contracts on Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/code-examples/1-deploy-contract-on-morph.md",sourceDirName:"build-on-morph/code-examples",slug:"/build-on-morph/code-examples/deploy-contract-on-morph",permalink:"/docs/build-on-morph/code-examples/deploy-contract-on-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/code-examples/1-deploy-contract-on-morph.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Deploy Contracts on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Development Setup",permalink:"/docs/build-on-morph/build-on-morph/development-setup"},next:{title:"Verify Your Smart Contracts",permalink:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts"}},a={},c=[{value:"Deploy with Hardhat",id:"deploy-with-hardhat",level:2},{value:"Clone the repo",id:"clone-the-repo",level:3},{value:"Install Dependencies",id:"install-dependencies",level:3},{value:"Compile",id:"compile",level:3},{value:"Test",id:"test",level:3},{value:"Deploy",id:"deploy",level:3},{value:"Verify your contracts on Morph Explorer",id:"verify-your-contracts-on-morph-explorer",level:3},{value:"Deploy contracts with Foundry",id:"deploy-contracts-with-foundry",level:2},{value:"Clone the repo",id:"clone-the-repo-1",level:3},{value:"Install Foundry",id:"install-foundry",level:3},{value:"Compile",id:"compile-1",level:3},{value:"Deploy",id:"deploy-1",level:3},{value:"Verify",id:"verify",level:3},{value:"Questions and Feedback",id:"questions-and-feedback",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"The Morph Holesky Testnet allows anyone to deploy a smart contract on Morph. This tutorial will guide you through deploying a contract on Morph Holesky using common Ethereum development tools."}),"\n",(0,r.jsxs)(n.p,{children:["This ",(0,r.jsx)(n.a,{href:"https://github.com/morph-l2/morph-examples/tree/main/contract-deployment-demos",children:"demo repo"})," illustrates contract deployment with ",(0,r.jsx)(n.a,{href:"https://hardhat.org/",children:"Hardhat"})," and ",(0,r.jsx)(n.a,{href:"https://github.com/foundry-rs/foundry",children:"Foundry"}),"."]}),"\n",(0,r.jsxs)(n.admonition,{type:"tip",children:[(0,r.jsxs)(n.p,{children:["Before you start deploying the contract, you need to request test tokens from a Holesky faucet and use the\n",(0,r.jsx)(n.a,{href:"https://bridge-holesky.morphl2.io",children:"bridge"})," to transfer some test ETH from ",(0,r.jsx)(n.em,{children:"Holesky"})," to ",(0,r.jsx)(n.em,{children:"Morph Holesky"}),"."]}),(0,r.jsxs)(n.p,{children:["See our ",(0,r.jsx)(n.a,{href:"/docs/quick-start/faucet",children:"Faucet"})," for details."]})]}),"\n",(0,r.jsx)(n.h2,{id:"deploy-with-hardhat",children:"Deploy with Hardhat"}),"\n",(0,r.jsx)(n.h3,{id:"clone-the-repo",children:"Clone the repo"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/morph-l2/morph-examples.git\n"})}),"\n",(0,r.jsx)(n.h3,{id:"install-dependencies",children:"Install Dependencies"}),"\n",(0,r.jsxs)(n.p,{children:["If you haven't already, install ",(0,r.jsx)(n.a,{href:"https://nodejs.org/en/download/",children:"nodejs"})," and ",(0,r.jsx)(n.a,{href:"https://classic.yarnpkg.com/lang/en/docs/install",children:"yarn"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd contract-deployment-demos/hardhat-demo\nyarn install\n"})}),"\n",(0,r.jsx)(n.p,{children:"This will install everything you need include hardhat for you."}),"\n",(0,r.jsx)(n.h3,{id:"compile",children:"Compile"}),"\n",(0,r.jsx)(n.p,{children:"Compile your contract"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"yarn compile\n"})}),"\n",(0,r.jsx)(n.h3,{id:"test",children:"Test"}),"\n",(0,r.jsx)(n.p,{children:"This will run the test script in test/Lock.ts"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"yarn test\n"})}),"\n",(0,r.jsx)(n.h3,{id:"deploy",children:"Deploy"}),"\n",(0,r.jsxs)(n.p,{children:["Create a ",(0,r.jsx)(n.code,{children:".env"})," file following the example ",(0,r.jsx)(n.code,{children:".env.example"})," in the root directory. Change ",(0,r.jsx)(n.code,{children:"PRIVATE_KEY"})," to your own account private key in the ",(0,r.jsx)(n.code,{children:".env"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"And Change the network settings in the hardhat.config.ts file with the following information:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:' morphTestnet: {\n url: process.env.MORPH_TESTNET_URL || "",\n accounts:\n process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],\n }\n'})}),"\n",(0,r.jsx)(n.p,{children:"Then run the following command to deploy the contract on the Morph Holesky Testnet. This will run the deployment script that set the initialing parameters, you can edit the script in scripts/deploy.ts"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"yarn deploy:morphTestnet\n"})}),"\n",(0,r.jsx)(n.h3,{id:"verify-your-contracts-on-morph-explorer",children:"Verify your contracts on Morph Explorer"}),"\n",(0,r.jsx)(n.p,{children:"To verify your contract through hardhat, you need to add the following Etherscan and Sourcify configs to your hardhat.config.js file:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-javascript",children:"module.exports = {\n networks: {\n morphTestnet: { ... }\n },\n etherscan: {\n apiKey: {\n morphTestnet: 'anything',\n },\n customChains: [\n {\n network: 'morphTestnet',\n chainId: 2810,\n urls: {\n apiURL: 'https://explorer-api-holesky.morphl2.io/api? ',\n browserURL: 'https://explorer-holesky.morphl2.io/',\n },\n },\n ],\n },\n};\n"})}),"\n",(0,r.jsx)(n.p,{children:"Then run the hardhat verify command to finish the verification"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npx hardhat verify --network morphTestnet DEPLOYED_CONTRACT_ADDRESS <ConstructorParameter>\n"})}),"\n",(0,r.jsx)(n.p,{children:"For example"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npx hardhat verify --network morphTestnet 0x8025985e35f1bAFfd661717f66fC5a434417448E '0.00001'\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Once succeed, you can check your contract and the deployment transaction on ",(0,r.jsx)(n.a,{href:"https://explorer-holesky.morphl2.io",children:"Morph Holesky Explorer"})]}),"\n",(0,r.jsx)(n.h2,{id:"deploy-contracts-with-foundry",children:"Deploy contracts with Foundry"}),"\n",(0,r.jsx)(n.h3,{id:"clone-the-repo-1",children:"Clone the repo"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/morph-l2/morph-examples.git\n"})}),"\n",(0,r.jsx)(n.h3,{id:"install-foundry",children:"Install Foundry"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"curl -L https://foundry.paradigm.xyz | bash\nfoundryup\n"})}),"\n",(0,r.jsx)(n.p,{children:"Then go the right folder of our example:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cd contract-deployment-demos/foundry-demo\n"})}),"\n",(0,r.jsx)(n.h3,{id:"compile-1",children:"Compile"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"forge build\n"})}),"\n",(0,r.jsx)(n.h3,{id:"deploy-1",children:"Deploy"}),"\n",(0,r.jsx)(n.p,{children:"A Deployment script and use of environment variables has already been set up for you. You can view the script at script/Counter.s.sol"}),"\n",(0,r.jsx)(n.p,{children:"Rename your .env.example file to .env and fill in your private key. The RPC URL has already been filled in along with the verifier URL."}),"\n",(0,r.jsx)(n.p,{children:"To use the variables in your .env file run the following command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:"source .env\n"})}),"\n",(0,r.jsx)(n.p,{children:"You can now deploy to Morph with the following command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:"forge script script/Counter.s.sol --rpc-url $RPC_URL --broadcast --private-key $DEPLOYER_PRIVATE_KEY --legacy\n"})}),"\n",(0,r.jsx)(n.p,{children:"Adjust as needed for your own script names."}),"\n",(0,r.jsx)(n.h3,{id:"verify",children:"Verify"}),"\n",(0,r.jsx)(n.p,{children:"Verification requires some flags passed to the normal verification script. You can verify using the command below:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:" forge verify-contract YourContractAddress Counter\\\n --chain 2810 \\\n --verifier-url $VERIFIER_URL \\\n --verifier blockscout --watch\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Once succeeded, you can check your contract and the deployment transaction on ",(0,r.jsx)(n.a,{href:"https://explorer-holesky.morphl2.io",children:"Morph Holesky Explorer"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"questions-and-feedback",children:"Questions and Feedback"}),"\n",(0,r.jsxs)(n.p,{children:["Thank you for participating in and developing on the Morph Holesky Testnet! If you encounter any issues, join our ",(0,r.jsx)(n.a,{href:"https://discord.com/invite/MorphLayer",children:"Discord"})," and find us at #dev-support channel."]})]})}function d(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>s});var r=o(758);const t={},l=r.createContext(t);function i(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/3250a443.4576d738.js b/build/assets/js/3250a443.4576d738.js deleted file mode 100644 index 5df4b3702..000000000 --- a/build/assets/js/3250a443.4576d738.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6935],{2702:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>a,contentTitle:()=>i,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>c});var r=n(6070),t=n(1582);const d={title:"Upgrade node running from docker",lang:"en-US"},i=void 0,s={id:"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker",title:"Upgrade node running from docker",description:"Docker Images",source:"@site/docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md",sourceDirName:"build-on-morph/developer-resources/node-operation/upgrade-node",slug:"/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Upgrade node running from docker",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Run a validator from source",permalink:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host"},next:{title:"Upgrade node running on the host",permalink:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host"}},a={},c=[{value:"Docker Images",id:"docker-images",level:2},{value:"If You Are Using a Custom Setup",id:"if-you-are-using-a-custom-setup",level:3},{value:"If You Are Using the Recommended Configuration",id:"if-you-are-using-the-recommended-configuration",level:3},{value:"Step1: Update docker images version",id:"step1--update-docker-images-version",level:4},{value:"Step2: Restart the container",id:"step2-restart-the-container",level:4}];function l(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.h2,{id:"docker-images",children:"Docker Images"}),"\n",(0,r.jsxs)(o.ul,{children:["\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:[(0,r.jsx)(o.code,{children:"go-ethereum:"})," ",(0,r.jsx)(o.a,{href:"https://github.com/morph-l2/go-ethereum/pkgs/container/go-ethereum",children:"ghcr.io/morph-l2/go-ethereum"})]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:[(0,r.jsx)(o.code,{children:"node:"})," ",(0,r.jsx)(o.a,{href:"https://github.com/morph-l2/morph/pkgs/container/node",children:"ghcr.io/morph-l2/node"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(o.h3,{id:"if-you-are-using-a-custom-setup",children:"If You Are Using a Custom Setup"}),"\n",(0,r.jsx)(o.p,{children:"If you are running the Docker container for the node using a custom setup, you will need to manually update the Docker image version and restart the container."}),"\n",(0,r.jsx)(o.h3,{id:"if-you-are-using-the-recommended-configuration",children:"If You Are Using the Recommended Configuration"}),"\n",(0,r.jsxs)(o.p,{children:["For those using the ",(0,r.jsx)(o.a,{href:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",children:"Run a full node with docker"})," to start the container, follow these steps to upgrade your node."]}),"\n",(0,r.jsx)(o.h4,{id:"step1--update-docker-images-version",children:"Step1: Update docker images version"}),"\n",(0,r.jsxs)(o.ul,{children:["\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Check the latest docker image version from ",(0,r.jsx)(o.a,{href:"#docker-images",children:"Docker Images"})]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Update the docker image version on ",(0,r.jsx)(o.a,{href:"https://github.com/morph-l2/run-morph-node/blob/run_node_script/morph-node/docker-compose.yml",children:"morph-node/docker-compose.yml"})]}),"\n",(0,r.jsx)(o.pre,{children:(0,r.jsx)(o.code,{className:"language-yaml",metastring:'title="morph-node/docker-compose.yml"',children:"services: \ngeth: \n container_name: morph-geth\n image: ghcr.io/morph-l2/go-ethereum:{update_version} ## Specify the Geth image version\n restart: unless-stopped\n\n# ...\n\nnode:\n container_name: morph-node\n depends_on:\n geth:\n condition: service_started\n image: ghcr.io/morph-l2/node:{update_version} ## Specify the Node image version\n\n# ...\n\n"})}),"\n",(0,r.jsx)(o.admonition,{type:"tip",children:(0,r.jsx)(o.p,{children:"Optionally update the image version for go-ethereum, node, or both, depending on your requirements."})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(o.h4,{id:"step2-restart-the-container",children:"Step2: Restart the container"}),"\n",(0,r.jsx)(o.p,{children:"Use the following commands to stop and restart the container. The updated Docker images will be pulled automatically."}),"\n",(0,r.jsx)(o.pre,{children:(0,r.jsx)(o.code,{className:"language-js",children:"// stop the docker containers\nmake stop-node\n\n// start the docker container, it will automatically pull the updated docker images\nmake run-node\n"})}),"\n",(0,r.jsxs)(o.p,{children:["If you are running a ",(0,r.jsx)(o.strong,{children:"validator"}),", use these commands instead:"]}),"\n",(0,r.jsx)(o.pre,{children:(0,r.jsx)(o.code,{className:"language-bash",children:"make stop-validator\nmake run-validator\n"})}),"\n",(0,r.jsxs)(o.admonition,{type:"note",children:[(0,r.jsx)(o.mdxAdmonitionTitle,{}),(0,r.jsxs)(o.p,{children:["Ensure that the startup parameters for the Docker container remain consistent with your previous configuration. If you previously used a custom setup, verify that the configuration and directory paths match your earlier setup. For details, please refer to ",(0,r.jsx)(o.a,{href:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker#advanced-usage",children:(0,r.jsx)(o.strong,{children:"Advanced Usage"})})]})]})]})}function u(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1582:(e,o,n)=>{n.d(o,{R:()=>i,x:()=>s});var r=n(758);const t={},d=r.createContext(t);function i(e){const o=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(d.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/325638e1.54567db5.js b/build/assets/js/325638e1.54567db5.js deleted file mode 100644 index e9f74abba..000000000 --- a/build/assets/js/325638e1.54567db5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8318],{9926:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>h});var n=s(6070),r=s(1582);const o={title:"Faucet",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},i=void 0,c={id:"quick-start/faucet",title:"Faucet",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/quick-start/3-faucet.md",sourceDirName:"quick-start",slug:"/quick-start/faucet",permalink:"/docs/quick-start/faucet",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/quick-start/3-faucet.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Faucet",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Wallet Setup",permalink:"/docs/quick-start/wallet-setup"},next:{title:"Bridge",permalink:"/docs/quick-start/bridge"}},l={},h=[{value:"Faucet",id:"faucet",level:2},{value:"Morph Holesky Website Faucet",id:"morph-holesky-website-faucet",level:3},{value:"3rd Party Ethereum Holesky ETH Faucet",id:"3rd-party-ethereum-holesky-eth-faucet",level:3},{value:"Discord Morph Holesky Faucet",id:"discord-morph-holesky-faucet",level:3},{value:"Morph Holesky ETH",id:"morph-holesky-eth",level:3},{value:"ERC20 USDT",id:"erc20-usdt",level:3}];function a(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"faucet",children:"Faucet"}),"\n",(0,n.jsx)(t.h3,{id:"morph-holesky-website-faucet",children:"Morph Holesky Website Faucet"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"website faucet",src:s(7173).A+"",width:"4026",height:"2354"})}),"\n",(0,n.jsxs)(t.p,{children:["Our ",(0,n.jsx)(t.a,{href:"https://morphfaucet.com/",children:"website faucet"})," is live!"]}),"\n",(0,n.jsx)(t.p,{children:"Users can claim Morph ETH & USDT to fund their initial activities."}),"\n",(0,n.jsx)(t.h3,{id:"3rd-party-ethereum-holesky-eth-faucet",children:"3rd Party Ethereum Holesky ETH Faucet"}),"\n",(0,n.jsx)(t.p,{children:"To use Morph's public testnet, obtain testnet ETH on Holesky, then bridge it to the Morph testnet."}),"\n",(0,n.jsx)(t.p,{children:"Here are a few Holesky faucet apps:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://stakely.io/en/faucet/ethereum-holesky-testnet-eth",children:"https://stakely.io/en/faucet/ethereum-holesky-testnet-eth"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://faucet.quicknode.com/ethereum/holesky",children:"https://faucet.quicknode.com/ethereum/holesky"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://holesky-faucet.pk910.de/",children:"https://holesky-faucet.pk910.de/"})}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://cloud.google.com/application/web3/faucet/ethereum",children:"https://cloud.google.com/application/web3/faucet/ethereum"})," (needs a Google account)"]}),"\n",(0,n.jsx)(t.p,{children:"Once you receive ETH on Holesky, you should see it in your wallet on the Holesky Network."}),"\n",(0,n.jsxs)(t.p,{children:["It may take a few seconds for them to appear, but you can check the status by looking for a transaction to your address on the ",(0,n.jsx)(t.a,{href:"https://holesky.etherscan.io/",children:"Holesky Block Explorer"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"discord-morph-holesky-faucet",children:"Discord Morph Holesky Faucet"}),"\n",(0,n.jsx)(t.h3,{id:"morph-holesky-eth",children:"Morph Holesky ETH"}),"\n",(0,n.jsx)(t.p,{children:"You can obtain the Morph Holesky ETH in our discord too for development purposes."}),"\n",(0,n.jsxs)(t.p,{children:["Using the ",(0,n.jsx)(t.em,{children:"/morph_eth"})," command and type your address will grant you 0.01 Morph Holesky ETH."]}),"\n",(0,n.jsx)(t.p,{children:"Once succeed, you will see the following message:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"success",src:s(3536).A+"",width:"1142",height:"1006"})}),"\n",(0,n.jsx)(t.h3,{id:"erc20-usdt",children:"ERC20 USDT"}),"\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsx)(t.p,{children:"Currently, we set the limit that for each discord user, you can only request the tokens once every 24 hours."})}),"\n",(0,n.jsx)(t.p,{children:"You can obtain morph's version of USDT on Holesky through our discord faucet, here's how it works:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Join our discord server through this ",(0,n.jsx)(t.a,{href:"https://discord.com/invite/MorphLayer",children:"link"}),"."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Find the ",(0,n.jsx)(t.em,{children:"#| discord-faucet"})," channel."]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Type ",(0,n.jsx)(t.em,{children:"/faucet"})," in the channel and add your Holesky address behind it."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"command",src:s(410).A+"",width:"1378",height:"656"})}),"\n",(0,n.jsxs)(t.ol,{start:"4",children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Wait for a few seconds."}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Once succeeded, you will see this in the channel."}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"success",src:s(4055).A+"",width:"1390",height:"330"})}),"\n",(0,n.jsxs)(t.ol,{start:"6",children:["\n",(0,n.jsx)(t.li,{children:"Add the Morph Holesky USDT information to your wallet."}),"\n"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:'\nEthereum Holesky USDT address: "0xD6e9Cd5ef382b0830653d1b2007D5Ca6987FaA26"\n\nMorph Holesky USDT address: "0x9E12AD42c4E4d2acFBADE01a96446e48e6764B98"\n\n'})}),"\n",(0,n.jsxs)(t.ol,{start:"7",children:["\n",(0,n.jsx)(t.li,{children:"Check you wallet for USDT balance and start to bridge!"}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},410:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/faucet_c-305e3bef375c3574c130e5e7cf383aa9.png"},3536:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/faucet_eth-27d4a9081af0054de2ccfdc1813c11b5.png"},4055:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/success-bb6955917712ae77607b6906bd3043a6.png"},7173:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/web_faucet-b5d9025ea3388c8c9d902fcd41898f36.jpg"},1582:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(758);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/33e57971.f01254b2.js b/build/assets/js/33e57971.f01254b2.js deleted file mode 100644 index b47514659..000000000 --- a/build/assets/js/33e57971.f01254b2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8343],{6139:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var o=i(6070),n=i(1582);const r={title:"The Technology Behind Morph",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"about-morph/the-technology-behind-morph",title:"The Technology Behind Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/2-the-technology-behind-morph.md",sourceDirName:"about-morph",slug:"/about-morph/the-technology-behind-morph",permalink:"/docs/about-morph/the-technology-behind-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/2-the-technology-behind-morph.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"The Technology Behind Morph",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Overview",permalink:"/docs/about-morph/overview-of-morph"},next:{title:"Morph's Architecture",permalink:"/docs/about-morph/morphs-architecture"}},c={},l=[{value:"Decentralized Sequencer Network",id:"decentralized-sequencer-network",level:2},{value:"Optimistic zkEVM Integration",id:"optimistic-zkevm-integration",level:2},{value:"Modular Design",id:"modular-design",level:2}];function h(e){const t={a:"a",h2:"h2",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h2,{id:"decentralized-sequencer-network",children:"Decentralized Sequencer Network"}),"\n",(0,o.jsx)(t.p,{children:"Morph's Decentralized Sequencer Network is designed to enhance the security and reliability of the blockchain. Unlike traditional Layer 2 solutions that rely on a centralized sequencer, Morph employs a network of decentralized sequencers. This setup ensures that no single entity has control over the transaction sequencing process, thereby eliminating the risk of a single point of failure. If one sequencer fails or acts maliciously, the others can continue processing transactions, maintaining the system's integrity and uptime. This decentralization also prevents transaction censorship and ensures that no single entity can monopolize Miner Extractable Value (MEV), creating a fairer environment for all users."}),"\n",(0,o.jsx)(t.p,{children:"This collaborative approach not only increases security but also improves the overall efficiency and reliability of the transaction processing system, making Morph a robust and resilient Layer 2 solution."}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Sequqencer Network",src:i(5928).A+"",width:"3840",height:"2160"})}),"\n",(0,o.jsxs)(t.p,{children:["Visit Morph\u2019s ",(0,o.jsx)(t.a,{href:"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",children:"Decentralized Sequencer Network"})," for a more comprehensive article."]}),"\n",(0,o.jsx)(t.h2,{id:"optimistic-zkevm-integration",children:"Optimistic zkEVM Integration"}),"\n",(0,o.jsx)(t.p,{children:"Optimistic and Zero-Knowledge (ZK) rollups are two distinct approaches to scaling blockchain transactions on layer 2. Optimistic rollups simply assume all transactions are valid when submitting a batch for settlement on Ethereum. However, the validity of any transaction can be contested by entities known as challengers, by submitting proof of fraudulent activity. If the fraud-proof is successful, the incorrect transaction is rejected, ensuring security but at the cost of some potential delays and high gas fees associated with the challenge process."}),"\n",(0,o.jsx)(t.p,{children:"ZK rollups, on the other hand, use cryptographic proofs to verify the validity of transactions before these are submitted for settlement. All batches have their own ZK proof, allowing quick verification on the main chain without needing to review all the data associated with each transaction (hence \u201czero-knowledge\u201d). This offers immediate finality with higher security, but generating these proofs is computationally intensive and costly."}),"\n",(0,o.jsx)(t.p,{children:"Morph\u2019s hybrid rollup combines the best of these two approaches. Initially, the system operates optimistically, assuming transactions are valid to allow for quick processing and low costs. When a transaction is contested within Morph\u2019s challenge window, it\u2019s the sequencer that is required to produce a ZK proof to validate the transaction. We call this approach Responsive Validity Proof (RVP). It comes with the following improvements:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Efficiency and Speed: A typical 7-day challenge window can be shortened to 1-3 days (a challenger no longer needs the extra time to identify malicious submissions, create a proof, and engage in multiple rounds of challenge procedures)."}),"\n",(0,o.jsx)(t.li,{children:"Reduced Costs: Employing ZK-proofs means that only minimal transaction information is retained, thereby significantly reducing the cost of L2 submissions. When no challenges arise, the cost of ZK-proof submission and verification can be ignored. RVP is therefore more cost-effective than both optimistic and ZK rollups."}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Sequqencer Network",src:i(8890).A+"",width:"1920",height:"1080"})}),"\n",(0,o.jsxs)(t.p,{children:["Visit ",(0,o.jsx)(t.a,{href:"../how-morph-works/optimistic-zkevm",children:"Responsive Validity Proof"})," for a more comprehensive article."]}),"\n",(0,o.jsx)(t.h2,{id:"modular-design",children:"Modular Design"}),"\n",(0,o.jsx)(t.p,{children:"At its core, Morph is constructed using a sophisticated modular design architecture. The platform is organized into three functional modules (Sequencer Network, Rollup, Optimistic zk-EVM), each defined by distinct roles that collaborate in various configurations to meet diverse requirements. Each role within these modules operates its specific components, maintaining functional independence. This modular structure not only fosters flexibility and adaptability but also bolsters the composability of the system. It enables an efficient and interactive ecosystem, supporting the varied operational needs of our platform."}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Sequqencer Network",src:i(9471).A+"",width:"1920",height:"1080"})}),"\n",(0,o.jsxs)(t.p,{children:["Visit ",(0,o.jsx)(t.a,{href:"/docs/how-morph-works/morph-modular-design",children:"Morph\u2019s Modular Design"})," for a more comprehensive article."]})]})}function d(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},9471:(e,t,i)=>{i.d(t,{A:()=>o});const o=i.p+"assets/images/modu-01191e93311b938abebd1189bfb69b21.png"},8890:(e,t,i)=>{i.d(t,{A:()=>o});const o=i.p+"assets/images/opzk-9ae9b91f62e5e1b9e4771ee2e441c2ba.png"},5928:(e,t,i)=>{i.d(t,{A:()=>o});const o=i.p+"assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png"},1582:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>a});var o=i(758);const n={},r=o.createContext(n);function s(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/38a5c357.da46ef32.js b/build/assets/js/38a5c357.da46ef32.js deleted file mode 100644 index 427c3ad81..000000000 --- a/build/assets/js/38a5c357.da46ef32.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4286],{7757:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]); \ No newline at end of file diff --git a/build/assets/js/38e6cd8b.aaca03cd.js b/build/assets/js/38e6cd8b.aaca03cd.js deleted file mode 100644 index 500abe4b6..000000000 --- a/build/assets/js/38e6cd8b.aaca03cd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8476],{760:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var o=t(6070),n=t(1582);const r={},i="Function: estimateTotalGasCost()",c={id:"build-on-morph/sdk/functions/estimateTotalGasCost",title:"estimateTotalGasCost",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/estimateTotalGasCost.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/estimateTotalGasCost",permalink:"/docs/build-on-morph/sdk/functions/estimateTotalGasCost",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/estimateTotalGasCost.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / estimateTotalGasCost"]}),"\n",(0,o.jsx)(s.h1,{id:"function-estimatetotalgascost",children:"Function: estimateTotalGasCost()"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"estimateTotalGasCost"}),"(",(0,o.jsx)(s.code,{children:"l2Provider"}),", ",(0,o.jsx)(s.code,{children:"tx"}),"): ",(0,o.jsx)(s.code,{children:"Promise"}),"<",(0,o.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Estimates the total gas cost for a given L2 transaction in wei."}),"\n",(0,o.jsx)(s.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(s.p,{children:["\u2022 ",(0,o.jsx)(s.strong,{children:"l2Provider"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,o.jsx)(s.code,{children:"ProviderLike"})})]}),"\n",(0,o.jsx)(s.p,{children:"L2 provider to query the gas usage from."}),"\n",(0,o.jsxs)(s.p,{children:["\u2022 ",(0,o.jsx)(s.strong,{children:"tx"}),": ",(0,o.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,o.jsx)(s.p,{children:"Transaction to estimate total gas cost for."}),"\n",(0,o.jsx)(s.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.code,{children:"Promise"}),"<",(0,o.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,o.jsx)(s.p,{children:"Estimated total gas cost."}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/l2-provider.ts:136"})]})}function h(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},1582:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>c});var o=t(758);const n={},r=o.createContext(n);function i(e){const s=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),o.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/39f485e7.e4d15ea7.js b/build/assets/js/39f485e7.e4d15ea7.js deleted file mode 100644 index b9239f0b3..000000000 --- a/build/assets/js/39f485e7.e4d15ea7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5980],{6747:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>h,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var i=t(6070),n=t(1582);const r={title:"FAQs",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"about-morph/faqs",title:"FAQs",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/7-faqs.md",sourceDirName:"about-morph",slug:"/about-morph/faqs",permalink:"/docs/about-morph/faqs",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/7-faqs.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"FAQs",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Roadmap",permalink:"/docs/about-morph/roadmap"},next:{title:"Wallet Setup",permalink:"/docs/quick-start/wallet-setup"}},h={},l=[{value:"What Kind of Rollup is Morph?",id:"what-kind-of-rollup-is-morph",level:2},{value:"What Sets Morph Apart from Other Rollups?",id:"what-sets-morph-apart-from-other-rollups",level:2},{value:"As a Solidity Developer, Will I Notice Differences Deploying on Morph Compared to Ethereum?",id:"as-a-solidity-developer-will-i-notice-differences-deploying-on-morph-compared-to-ethereum",level:2},{value:"The L2 gas price is too high to execute transactions or deploy contracts, what should i do?",id:"the-l2-gas-price-is-too-high-to-execute-transactions-or-deploy-contracts-what-should-i-do",level:2},{value:"How long should I wait for my funds to withdraw from Morph?",id:"how-long-should-i-wait-for-my-funds-to-withdraw-from-morph",level:2},{value:"How do i speed the transaction on Morph?",id:"how-do-i-speed-the-transaction-on-morph",level:2},{value:"My Transaction is Pending, What Should I Do?",id:"my-transaction-is-pending-what-should-i-do",level:2}];function c(e){const o={a:"a",h2:"h2",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.h2,{id:"what-kind-of-rollup-is-morph",children:"What Kind of Rollup is Morph?"}),"\n",(0,i.jsx)(o.p,{children:'Morph uses a hybrid rollup model called "Optimistic zkEVM & RVP". This combines the strengths of both zkRollups and Optimistic Rollups, optimizing for efficiency, cost, and speed. This unique approach places Morph at the cutting edge of rollup technology.'}),"\n",(0,i.jsx)(o.h2,{id:"what-sets-morph-apart-from-other-rollups",children:"What Sets Morph Apart from Other Rollups?"}),"\n",(0,i.jsx)(o.p,{children:"Morph stands out with its innovative features:"}),"\n",(0,i.jsxs)(o.p,{children:[(0,i.jsx)(o.strong,{children:"State Verification"}),": The Optimistic zkEVM & RVP method enhances efficiency by combining zkRollups and Optimistic Rollups."]}),"\n",(0,i.jsxs)(o.p,{children:[(0,i.jsx)(o.strong,{children:"Efficiency and Cost Reduction"}),": Morph ensures fast transaction execution and cost-effectiveness while maintaining decentralization."]}),"\n",(0,i.jsxs)(o.p,{children:[(0,i.jsx)(o.strong,{children:"Decentralized Sequencer Network"}),": This pioneering network setup addresses security concerns and ensures robustness at a Layer 1 level."]}),"\n",(0,i.jsxs)(o.p,{children:[(0,i.jsx)(o.strong,{children:"Modular Architecture"}),": Morph\u2019s adaptable and composable architecture fosters a flexible and interactive ecosystem."]}),"\n",(0,i.jsx)(o.h2,{id:"as-a-solidity-developer-will-i-notice-differences-deploying-on-morph-compared-to-ethereum",children:"As a Solidity Developer, Will I Notice Differences Deploying on Morph Compared to Ethereum?"}),"\n",(0,i.jsxs)(o.p,{children:["Deploying on Morph is very similar to deploying on Ethereum, thanks to its EVM compatibility. Ethereum applications can be migrated to Morph with minimal adjustments. For more detailed guidance, check out the ",(0,i.jsx)(o.a,{href:"/docs/build-on-morph/build-on-morph/development-setup",children:"Development Guides"})," section."]}),"\n",(0,i.jsx)(o.h2,{id:"the-l2-gas-price-is-too-high-to-execute-transactions-or-deploy-contracts-what-should-i-do",children:"The L2 gas price is too high to execute transactions or deploy contracts, what should i do?"}),"\n",(0,i.jsx)(o.p,{children:"The L2 Gas Price you obtained from external resources (eg. RPC) is typically derived from the average or median of confirmed transactions over a certain period. This figure reflects the recommended settings to ensure your transaction gets confirmed, rather than representing the most cost-effective value."}),"\n",(0,i.jsx)(o.p,{children:"In some cases, certain users may intentionally raise the priority fee (hence the total gas fee) to earn more campaign points, resulting in abnormally high Gas Prices. We recommend that you can reduce your transaction costs by manually setting the L2 Gas Price."}),"\n",(0,i.jsxs)(o.p,{children:["Currently, Morph's L2 Base Fee is ",(0,i.jsx)(o.strong,{children:"0.001 gwei"}),", and as long as the number of transactions per block does not reach the limit, you only need to pay the Base Fee to ensure your transaction confirmation, without needing to pay an excess Priority Fee."]}),"\n",(0,i.jsx)(o.p,{children:"Here is a transaction example that only pays the L2 Base Fee and got confirmed:"}),"\n",(0,i.jsx)(o.p,{children:(0,i.jsx)(o.a,{href:"https://explorer.morphl2.io/tx/0x5968aa54ca3072f56ee3d26602f4e8104d1239a7b1cef6847e0306f81881bf50",children:"https://explorer.morphl2.io/tx/0x5968aa54ca3072f56ee3d26602f4e8104d1239a7b1cef6847e0306f81881bf50"})}),"\n",(0,i.jsx)(o.h2,{id:"how-long-should-i-wait-for-my-funds-to-withdraw-from-morph",children:"How long should I wait for my funds to withdraw from Morph?"}),"\n",(0,i.jsx)(o.p,{children:"Currently, the Morph mainnet has a 48-hour (2 days) challenge window. This means that if you are using our canonical bridge, you need to wait 48 hours (2 days) to receive your funds. There are several third-party bridges that offer a faster withdrawal experience by using a liquidity pool mechanism."}),"\n",(0,i.jsx)(o.h2,{id:"how-do-i-speed-the-transaction-on-morph",children:"How do i speed the transaction on Morph?"}),"\n",(0,i.jsx)(o.p,{children:"Same like Ethereum mainnet and any other EIP 1559 chains. If your transaction is pending and not confirmed, you can replace it with a new one that has a higher gas price. This involves sending the same transaction again but with an incrementally higher gas price, using the same nonce as the original."}),"\n",(0,i.jsx)(o.p,{children:"A lot of the wallet have built in features to help you do this."}),"\n",(0,i.jsx)(o.h2,{id:"my-transaction-is-pending-what-should-i-do",children:"My Transaction is Pending, What Should I Do?"}),"\n",(0,i.jsx)(o.p,{children:"For the testnet, if the priority fee you paid is too low, less than 0.01 gwei, your transaction will not be processed. This is to prevent spam transactions from impacting the whole network. If you encounter this situation, please accelerate your transaction by providing a higher priority fee that meets the requirements."}),"\n",(0,i.jsx)(o.p,{children:"For the mainnet, this is usually because each block is currently full, so you need to provide a more competitive priority fee to ensure your transaction is confirmed."}),"\n",(0,i.jsx)(o.p,{children:"Additionally, if your previous transaction has not yet been confirmed, your newly submitted transaction will wait for the previous transaction to be fully confirmed."})]})}function d(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1582:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>a});var i=t(758);const n={},r=i.createContext(n);function s(e){const o=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/3f6197d4.3649865e.js b/build/assets/js/3f6197d4.3649865e.js deleted file mode 100644 index 71b85cc5c..000000000 --- a/build/assets/js/3f6197d4.3649865e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[835],{4215:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>t,metadata:()=>l,toc:()=>d});var r=n(6070),i=n(1582);const t={title:"Developer Docs",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,l={id:"build-on-morph/intro",title:"Developer Docs",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/1-intro.md",sourceDirName:"build-on-morph",slug:"/build-on-morph/intro",permalink:"/docs/build-on-morph/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/1-intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Developer Docs",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}},c={},d=[{value:"What's next",id:"whats-next",level:2},{value:"Engage in Our Developer Community",id:"engage-in-our-developer-community",level:2}];function p(e){const o={a:"a",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.p,{children:"Welcome to Morph\u2019s Developer Docs!"}),"\n",(0,r.jsx)(o.p,{children:"Are you eager to build applications on Morph but unsure where to start?"}),"\n",(0,r.jsx)(o.p,{children:"You're in the right place \u2013 we've got you covered!"}),"\n",(0,r.jsx)(o.p,{children:(0,r.jsx)(o.img,{alt:"devintro",src:n(2015).A+"",width:"4000",height:"2000"})}),"\n",(0,r.jsx)(o.p,{children:"As the first optimistic zkEVM Ethereum Layer 2 solution, Morph is 100% EVM compatible."}),"\n",(0,r.jsx)(o.p,{children:"Building on morph is just like building on Ethereum. If you\u2019re experienced in Ethereum development, you'll find your existing code, tooling, and dependencies are fully compatible with Morph."}),"\n",(0,r.jsx)(o.h2,{id:"whats-next",children:"What's next"}),"\n",(0,r.jsx)(o.p,{children:(0,r.jsx)(o.strong,{children:"Depending on what do you need"})}),"\n",(0,r.jsxs)(o.ul,{children:["\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["For foundational knowledge: Check out our ",(0,r.jsx)(o.a,{href:"/docs/build-on-morph/build-on-morph/development-setup",children:"development basics"})]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["For handy step by step ",(0,r.jsx)(o.a,{href:"/docs/build-on-morph/code-examples/deploy-contract-on-morph",children:"contract deployment tutorial"})]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["If you're well-versed and need specific ",(0,r.jsx)(o.a,{href:"/docs/build-on-morph/developer-resources/contracts",children:"developer resources"})," like contract addresses, they are readily available."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(o.h2,{id:"engage-in-our-developer-community",children:"Engage in Our Developer Community"}),"\n",(0,r.jsx)(o.p,{children:"We're actively enhancing our network with more integrations and support infrastructure, progressing towards our Mainnet release."}),"\n",(0,r.jsxs)(o.p,{children:["Join our growing developer community. You can find us on ",(0,r.jsx)(o.a,{href:"https://discord.com/invite/MorphLayer",children:"Discord"}),", join our discussion forum, or follow our progress on ",(0,r.jsx)(o.a,{href:"https://x.com/MorphLayer",children:"Twitter"}),"."]})]})}function h(e={}){const{wrapper:o}={...(0,i.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},2015:(e,o,n)=>{n.d(o,{A:()=>r});const r=n.p+"assets/images/devintro-af1fa91181efcded8682d179b40db272.png"},1582:(e,o,n)=>{n.d(o,{R:()=>s,x:()=>l});var r=n(758);const i={},t=r.createContext(i);function s(e){const o=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(t.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/405a8a84.afa08ab0.js b/build/assets/js/405a8a84.afa08ab0.js deleted file mode 100644 index 9afd4cc25..000000000 --- a/build/assets/js/405a8a84.afa08ab0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6632],{7578:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>i,contentTitle:()=>n,default:()=>d,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var s=r(6070),t=r(1582);const l={title:"Block Explorer",lang:"en-US"},n=void 0,c={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer",title:"Block Explorer",description:"Besides the native Morph explorer, we have also partnered with 3rd party providers for different Morph blockchain data presentations forms.",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/6-block-explorer.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/6-block-explorer.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Block Explorer",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Blockchain Oracles",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles"},next:{title:"Artificial Intelligence",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence"}},i={},a=[{value:"Socialscan",id:"socialscan",level:3}];function p(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(o.p,{children:["Besides the native ",(0,s.jsx)(o.a,{href:"https://explorer.morphl2.io/",children:"Morph explorer"}),", we have also partnered with 3rd party providers for different Morph blockchain data presentations forms."]}),"\n",(0,s.jsx)(o.h3,{id:"socialscan",children:"Socialscan"}),"\n",(0,s.jsxs)(o.p,{children:["Track Morph transactions and wallets on the ",(0,s.jsx)(o.a,{href:"https://morphl2.socialscan.io/",children:"SocialScan Explorer"}),"."]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"socialscan",src:r(4706).A+"",width:"2830",height:"1250"})})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},4706:(e,o,r)=>{r.d(o,{A:()=>s});const s=r.p+"assets/images/socialscan-64f9f8181cf2e033709c7dda3a153e1f.png"},1582:(e,o,r)=>{r.d(o,{R:()=>n,x:()=>c});var s=r(758);const t={},l=s.createContext(t);function n(e){const o=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function c(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:n(e.components),s.createElement(l.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/40b4f046.d2ffc80e.js b/build/assets/js/40b4f046.d2ffc80e.js deleted file mode 100644 index 888fe8250..000000000 --- a/build/assets/js/40b4f046.d2ffc80e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4145],{4379:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var n=o(6070),s=o(1582);const i={},t="Type alias: SignerOrProviderLike",d={id:"build-on-morph/sdk/type-aliases/SignerOrProviderLike",title:"SignerOrProviderLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/SignerOrProviderLike",permalink:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Source",id:"source",level:2}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / SignerOrProviderLike"]}),"\n",(0,n.jsx)(r.h1,{id:"type-alias-signerorproviderlike",children:"Type alias: SignerOrProviderLike"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"SignerOrProviderLike"}),": ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerLike",children:(0,n.jsx)(r.code,{children:"SignerLike"})})," | ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,n.jsx)(r.code,{children:"ProviderLike"})})]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:"Stuff that can be coerced into a signer or provider."}),"\n",(0,n.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:386"})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,r,o)=>{o.d(r,{R:()=>t,x:()=>d});var n=o(758);const s={},i=n.createContext(s);function t(e){const r=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),n.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/44bbd017.f25bc314.js b/build/assets/js/44bbd017.f25bc314.js deleted file mode 100644 index 00ab44555..000000000 --- a/build/assets/js/44bbd017.f25bc314.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5223],{8480:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var n=o(6070),s=o(1582);const t={},d="Variable: l2BridgeName",c={id:"build-on-morph/sdk/variables/l2BridgeName",title:"l2BridgeName",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/l2BridgeName.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/l2BridgeName",permalink:"/docs/build-on-morph/sdk/variables/l2BridgeName",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/l2BridgeName.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Source",id:"source",level:2}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / l2BridgeName"]}),"\n",(0,n.jsx)(r.h1,{id:"variable-l2bridgename",children:"Variable: l2BridgeName"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.code,{children:"const"})," ",(0,n.jsx)(r.strong,{children:"l2BridgeName"}),": ",(0,n.jsx)(r.code,{children:'"L2GatewayRouter"'})," = ",(0,n.jsx)(r.code,{children:"'L2GatewayRouter'"})]}),"\n"]}),"\n",(0,n.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/cross-chain-messenger.ts:70"})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,r,o)=>{o.d(r,{R:()=>d,x:()=>c});var n=o(758);const s={},t=n.createContext(s);function d(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),n.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/465c0bc5.e3b956eb.js b/build/assets/js/465c0bc5.e3b956eb.js deleted file mode 100644 index c79e08472..000000000 --- a/build/assets/js/465c0bc5.e3b956eb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[655],{8963:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>m,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var o=n(6070),r=n(1582);const t={},c="Variable: l1CrossDomainMessengerName",i={id:"build-on-morph/sdk/variables/l1CrossDomainMessengerName",title:"l1CrossDomainMessengerName",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/l1CrossDomainMessengerName",permalink:"/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.md",tags:[],version:"current",frontMatter:{}},a={},l=[{value:"Source",id:"source",level:2}];function d(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / l1CrossDomainMessengerName"]}),"\n",(0,o.jsx)(s.h1,{id:"variable-l1crossdomainmessengername",children:"Variable: l1CrossDomainMessengerName"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.code,{children:"const"})," ",(0,o.jsx)(s.strong,{children:"l1CrossDomainMessengerName"}),": ",(0,o.jsx)(s.code,{children:'"L1CrossDomainMessenger"'})," = ",(0,o.jsx)(s.code,{children:"'L1CrossDomainMessenger'"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/cross-chain-messenger.ts:67"})]})}function m(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>i});var o=n(758);const r={},t=o.createContext(r);function c(e){const s=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/46618904.0e02e9d8.js b/build/assets/js/46618904.0e02e9d8.js deleted file mode 100644 index 05b7e3159..000000000 --- a/build/assets/js/46618904.0e02e9d8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8991],{6935:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>d,contentTitle:()=>t,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>l});var s=n(6070),o=n(1582);const c={},t="Function: getL1GasPrice()",i={id:"build-on-morph/sdk/functions/getL1GasPrice",title:"getL1GasPrice",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/getL1GasPrice.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/getL1GasPrice",permalink:"/docs/build-on-morph/sdk/functions/getL1GasPrice",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/getL1GasPrice.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / getL1GasPrice"]}),"\n",(0,s.jsx)(r.h1,{id:"function-getl1gasprice",children:"Function: getL1GasPrice()"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"getL1GasPrice"}),"(",(0,s.jsx)(r.code,{children:"l2Provider"}),"): ",(0,s.jsx)(r.code,{children:"Promise"}),"<",(0,s.jsx)(r.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,s.jsx)(r.p,{children:"Gets the current L1 gas price as seen on L2."}),"\n",(0,s.jsx)(r.h2,{id:"parameters",children:"Parameters"}),"\n",(0,s.jsxs)(r.p,{children:["\u2022 ",(0,s.jsx)(r.strong,{children:"l2Provider"}),": ",(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,s.jsx)(r.code,{children:"ProviderLike"})})]}),"\n",(0,s.jsx)(r.p,{children:"L2 provider to query the L1 gas price from."}),"\n",(0,s.jsx)(r.h2,{id:"returns",children:"Returns"}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"Promise"}),"<",(0,s.jsx)(r.code,{children:"BigNumber"}),">"]}),"\n",(0,s.jsx)(r.p,{children:"Current L1 gas price as seen on L2."}),"\n",(0,s.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/l2-provider.ts:57"})]})}function u(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>t,x:()=>i});var s=n(758);const o={},c=s.createContext(o);function t(e){const r=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),s.createElement(c.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/4784893f.0785ce05.js b/build/assets/js/4784893f.0785ce05.js deleted file mode 100644 index b3db8d48f..000000000 --- a/build/assets/js/4784893f.0785ce05.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2286],{6158:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>u});var o=r(6070),s=r(1582);const t={},i="Function: toBigNumber()",c={id:"build-on-morph/sdk/functions/toBigNumber",title:"toBigNumber",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/toBigNumber.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/toBigNumber",permalink:"/docs/build-on-morph/sdk/functions/toBigNumber",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/toBigNumber.md",tags:[],version:"current",frontMatter:{}},d={},u=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / toBigNumber"]}),"\n",(0,o.jsx)(n.h1,{id:"function-tobignumber",children:"Function: toBigNumber()"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"toBigNumber"}),"(",(0,o.jsx)(n.code,{children:"num"}),"): ",(0,o.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Converts a number-like into an ethers BigNumber."}),"\n",(0,o.jsx)(n.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"num"}),": ",(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,o.jsx)(n.code,{children:"NumberLike"})})]}),"\n",(0,o.jsx)(n.p,{children:"Number-like to convert into a BigNumber."}),"\n",(0,o.jsx)(n.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.code,{children:"BigNumber"})}),"\n",(0,o.jsx)(n.p,{children:"Number-like as a BigNumber."}),"\n",(0,o.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(n.p,{children:"src/utils/coercion.ts:84"})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>c});var o=r(758);const s={},t=o.createContext(s);function i(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/4a10ae38.accc9646.js b/build/assets/js/4a10ae38.accc9646.js deleted file mode 100644 index 84037a9ba..000000000 --- a/build/assets/js/4a10ae38.accc9646.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[866],{5887:(n,e,o)=>{o.r(e),o.d(e,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var r=o(6070),s=o(1582);const t={},c="Variable: DEPOSIT_CONFIRMATION_BLOCKS",i={id:"build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS",title:"DEPOSIT_CONFIRMATION_BLOCKS",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS",permalink:"/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Source",id:"source",level:2}];function a(n){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...n.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(e.hr,{}),"\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / DEPOSIT_CONFIRMATION_BLOCKS"]}),"\n",(0,r.jsx)(e.h1,{id:"variable-deposit_confirmation_blocks",children:"Variable: DEPOSIT_CONFIRMATION_BLOCKS"}),"\n",(0,r.jsxs)(e.blockquote,{children:["\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.code,{children:"const"})," ",(0,r.jsx)(e.strong,{children:"DEPOSIT_CONFIRMATION_BLOCKS"}),": ",(0,r.jsx)(e.code,{children:"{ [ChainID in L2ChainID]: number }"})]}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(e.p,{children:"src/utils/chain-constants.ts:12"})]})}function h(n={}){const{wrapper:e}={...(0,s.R)(),...n.components};return e?(0,r.jsx)(e,{...n,children:(0,r.jsx)(a,{...n})}):a(n)}},1582:(n,e,o)=>{o.d(e,{R:()=>c,x:()=>i});var r=o(758);const s={},t=r.createContext(s);function c(n){const e=r.useContext(t);return r.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function i(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:c(n.components),r.createElement(t.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/4a269d4a.a94aba76.js b/build/assets/js/4a269d4a.a94aba76.js deleted file mode 100644 index 58eddab3e..000000000 --- a/build/assets/js/4a269d4a.a94aba76.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7396],{5768:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>c,metadata:()=>i,toc:()=>a});var n=t(6070),r=t(1582);const c={},o="Interface: MessageReceipt",i={id:"build-on-morph/sdk/interfaces/MessageReceipt",title:"MessageReceipt",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/MessageReceipt.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/MessageReceipt",permalink:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/MessageReceipt.md",tags:[],version:"current",frontMatter:{}},d={},a=[{value:"Properties",id:"properties",level:2},{value:"receiptStatus",id:"receiptstatus",level:3},{value:"Source",id:"source",level:4},{value:"transactionReceipt?",id:"transactionreceipt",level:3},{value:"Source",id:"source-1",level:4}];function l(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / MessageReceipt"]}),"\n",(0,n.jsx)(s.h1,{id:"interface-messagereceipt",children:"Interface: MessageReceipt"}),"\n",(0,n.jsx)(s.p,{children:"CrossDomainMessage receipt."}),"\n",(0,n.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(s.h3,{id:"receiptstatus",children:"receiptStatus"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"receiptStatus"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus",children:(0,n.jsx)(s.code,{children:"MessageReceiptStatus"})})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:307"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"transactionreceipt",children:"transactionReceipt?"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"optional"})," ",(0,n.jsx)(s.strong,{children:"transactionReceipt"}),": ",(0,n.jsx)(s.code,{children:"TransactionReceipt"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:308"})]})}function p(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1582:(e,s,t)=>{t.d(s,{R:()=>o,x:()=>i});var n=t(758);const r={},c=n.createContext(r);function o(e){const s=n.useContext(c);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/4cbe5783.3425072e.js b/build/assets/js/4cbe5783.3425072e.js deleted file mode 100644 index 99a23b5ca..000000000 --- a/build/assets/js/4cbe5783.3425072e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6736],{3053:(n,s,o)=>{o.r(s),o.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>e,metadata:()=>i,toc:()=>d});var t=o(6070),r=o(1582);const e={},c="Function: toTransactionHash()",i={id:"build-on-morph/sdk/functions/toTransactionHash",title:"toTransactionHash",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/toTransactionHash.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/toTransactionHash",permalink:"/docs/build-on-morph/sdk/functions/toTransactionHash",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/toTransactionHash.md",tags:[],version:"current",frontMatter:{}},a={},d=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(n){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / toTransactionHash"]}),"\n",(0,t.jsx)(s.h1,{id:"function-totransactionhash",children:"Function: toTransactionHash()"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"toTransactionHash"}),"(",(0,t.jsx)(s.code,{children:"transaction"}),"): ",(0,t.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"Pulls a transaction hash out of a TransactionLike object."}),"\n",(0,t.jsx)(s.h2,{id:"parameters",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"transaction"}),": ",(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",children:(0,t.jsx)(s.code,{children:"TransactionLike"})})]}),"\n",(0,t.jsx)(s.p,{children:"TransactionLike to convert into a transaction hash."}),"\n",(0,t.jsx)(s.h2,{id:"returns",children:"Returns"}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.code,{children:"string"})}),"\n",(0,t.jsx)(s.p,{children:"Transaction hash corresponding to the TransactionLike input."}),"\n",(0,t.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,t.jsx)(s.p,{children:"src/utils/coercion.ts:62"})]})}function l(n={}){const{wrapper:s}={...(0,r.R)(),...n.components};return s?(0,t.jsx)(s,{...n,children:(0,t.jsx)(h,{...n})}):h(n)}},1582:(n,s,o)=>{o.d(s,{R:()=>c,x:()=>i});var t=o(758);const r={},e=t.createContext(r);function c(n){const s=t.useContext(e);return t.useMemo((function(){return"function"==typeof n?n(s):{...s,...n}}),[s,n])}function i(n){let s;return s=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:c(n.components),t.createElement(e.Provider,{value:s},n.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/4f7a49ab.68e103c7.js b/build/assets/js/4f7a49ab.68e103c7.js deleted file mode 100644 index 36a33becf..000000000 --- a/build/assets/js/4f7a49ab.68e103c7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[749],{2877:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>h});var t=o(6070),r=o(1582);const s={title:"Run a validator with docker",lang:"en-US"},i=void 0,a={id:"build-on-morph/developer-resources/node-operation/validator-node/run-in-docker",title:"Run a validator with docker",description:"This guide will help you start a validator node running in the docker container using run-morph-node",source:"@site/docs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.md",sourceDirName:"build-on-morph/developer-resources/node-operation/validator-node",slug:"/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Run a validator with docker",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Run a full node from source",permalink:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host"},next:{title:"Run a validator from source",permalink:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host"}},d={},h=[{value:"Quick Start",id:"quick-start",level:3},{value:"Sync from snapshot",id:"sync-from-snapshot",level:3},{value:"1. Clone the dockerfile repository",id:"1-clone-the-dockerfile-repository",level:4},{value:"2. Download the Snapshot",id:"2-download-the-snapshot",level:4},{value:"3. Set up the snapshot",id:"3-set-up-the-snapshot",level:4},{value:"4. Update the Environment Variables",id:"4-update-the-environment-variables",level:4},{value:"5. Run the Validator",id:"5-run-the-validator",level:4}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["This guide will help you start a validator node running in the docker container using ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node",children:"run-morph-node"})]}),"\n",(0,t.jsx)(n.h3,{id:"quick-start",children:"Quick Start"}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsxs)(n.p,{children:["The following quick start steps are only applicable for running a validator node on the mainnet. To set up and operate a Holesky validator node, please refer to ",(0,t.jsx)(n.a,{href:"#sync-from-snapshot",children:(0,t.jsx)(n.strong,{children:"Sync from Snapshot"})}),"."]})}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["Starting with the ",(0,t.jsx)(n.code,{children:"Quick Start"})," initiates synchronization from height 0, which can be extremely time-consuming to reach the latest state. We highly recommend using the ",(0,t.jsx)(n.a,{href:"#sync-from-snapshot",children:(0,t.jsx)(n.strong,{children:"Sync from Snapshot"})})," approach outlined below for a faster and more efficient startup."]})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"1. Clone the dockerfile repository"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/morph-l2/run-morph-node.git\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsxs)(n.strong,{children:["2. Configure ",(0,t.jsx)(n.code,{children:"morph-node/.env"})]})}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file defines the environment variables required for deploying a validator node. Below is an example configuration:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="morph-node/.env"',children:"// General settings\nMORPH_HOME=../mainnet\nMORPH_FLAG=morph\nJWT_SECRET_FILE=${MORPH_HOME}/jwt-secret.txt\nGETH_ENTRYPOINT_FILE=./entrypoint-geth.sh\n\n// Environment variables for validator node\nL1_CHAIN_ID=1\nL1_ETH_RPC=${your_layer1_execution_client_rpc_url}\nL1_BEACON_CHAIN_RPC=${your_layer1_beacon_client_rpc_url}\nL1MESSAGEQUEUE_CONTRACT=0x3931ade842f5bb8763164bdd81e5361dce6cc1ef\nROLLUP_CONTRACY=0x759894ced0e6af42c26668076ffa84d02e3cef60\nDERIVATION_START_HEIGHT=20996776\nL1_MSG_START_HEIGHT=20996776\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.em,{children:(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"Default Directory:"})})}),"\nFor running a validator on the mainnet, the ",(0,t.jsx)(n.code,{children:"MORPH_HOME"})," directory defaults to ",(0,t.jsx)(n.code,{children:"../mainnet"}),". You can customize this path to suit your setup."]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.em,{children:(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"Layer1 RPC URLs:"})})}),"\nEnsure you provide the correct RPC URLs for the Layer 1 execution client (L1_ETH_RPC) and the beacon chain client (L1_BEACON_CHAIN_RPC). These URLs are essential for the validator to fetch rollup batches and maintain synchronization."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"3. Run the following command"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd morph-node\nmake run-validator\n"})}),"\n",(0,t.jsx)(n.h3,{id:"sync-from-snapshot",children:"Sync from snapshot"}),"\n",(0,t.jsx)(n.p,{children:"We recommend synchronizing blocks using snapshot data to reduce the time required for block synchronization. This approach allows you to start the node from a specific block height, significantly reducing the time needed to reach the latest state."}),"\n",(0,t.jsx)(n.h4,{id:"1-clone-the-dockerfile-repository",children:"1. Clone the dockerfile repository"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/morph-l2/run-morph-node.git\n"})}),"\n",(0,t.jsx)(n.h4,{id:"2-download-the-snapshot",children:"2. Download the Snapshot"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," configuration file in the repository you just cloned is designed for setting up the Morph node on the mainnet. By default, it is pre-configured to use the latest snapshot."]}),"\n",(0,t.jsxs)(n.p,{children:["If you need a historical snapshot, you must manually update the ",(0,t.jsx)(n.strong,{children:"SNAPSHOT_NAME"})," in the ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file. (Note: For the ",(0,t.jsx)(n.strong,{children:"testnet"}),", the corresponding file is ",(0,t.jsx)(n.code,{children:"morph-node/.env_holesky"}),".)"]}),"\n",(0,t.jsxs)(n.p,{children:["You can find the historical snapshot names from ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information",children:(0,t.jsx)(n.strong,{children:"Snapshot Information"})}),"."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"// ...\n\nMAINNET_SNAPSHOT_NAME={your expected snapshot name} \n\n// ...\n"})}),"\n",(0,t.jsx)(n.p,{children:"Run the following command to download and decompress the snapshot for your network:"}),"\n",(0,t.jsx)(n.p,{children:"For the mainnet:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"make download-and-decompress-mainnet-snapshot\n"})}),"\n",(0,t.jsx)(n.p,{children:"For the testnet:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"make download-and-decompress-holesky-snapshot\n"})}),"\n",(0,t.jsx)(n.h4,{id:"3-set-up-the-snapshot",children:"3. Set up the snapshot"}),"\n",(0,t.jsxs)(n.p,{children:["After downloading, locate the snapshot by placing the extracted data files in the correct directory specified by the ",(0,t.jsx)(n.strong,{children:"MORPH_HOME"})," path in your ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file. Ensure the data files align with the node's expected structure to allow seamless synchronization."]}),"\n",(0,t.jsxs)(n.p,{children:["For example, if the snapshot folder is named ",(0,t.jsx)(n.code,{children:"snapshot-20241218-1"}),","]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["move the directory ",(0,t.jsx)(n.code,{children:"snapshot-20241218-1/geth"})," to the ",(0,t.jsx)(n.code,{children:"${MORPH_HOME}/geth-data"})," directory."]}),"\n",(0,t.jsxs)(n.li,{children:["move the contents from ",(0,t.jsx)(n.code,{children:"snapshot-20241218-1/data"})," to the ",(0,t.jsx)(n.code,{children:"${NODE_DATA_DIR}/data"})," directory."]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"mv ./morph-node/snapshot-20241218-1/geth ${MORPH_HOME}/geth-data\nmv ./morph-node/snapshot-20241218-1/data/* ${MORPH_HOME}/node-data/data\n"})}),"\n",(0,t.jsx)(n.p,{children:"The folder structure will be like"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-javascript",children:"\u2514\u2500\u2500 ${MORPH_HOME}\n \u251c\u2500\u2500 geth-data // data directory for geth\n \u2502\xa0\xa0 \u2514\u2500\u2500 static-nodes.json\n \u2502\xa0\xa0 \u2514\u2500\u2500 geth // directory from snapshot/geth \n \u2514\u2500\u2500 node-data // data directory for node\n \u251c\u2500\u2500 config\n \u2502\xa0\xa0 \u251c\u2500\u2500 config.toml\n \u2502\xa0\xa0 \u2514\u2500\u2500 genesis.json\n \u2514\u2500\u2500 data // data directory from snapshot/node\n"})}),"\n",(0,t.jsx)(n.h4,{id:"4-update-the-environment-variables",children:"4. Update the Environment Variables"}),"\n",(0,t.jsxs)(n.p,{children:["Before running the node, update the ",(0,t.jsx)(n.code,{children:"DERIVATION_START_HEIGHT"})," and ",(0,t.jsx)(n.code,{children:"L1_MSG_START_HEIGHT"})," variables in the ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file (or ",(0,t.jsx)(n.code,{children:".env_holesky"})," for the testnet)."]}),"\n",(0,t.jsxs)(n.p,{children:["Refer to ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information",children:"snapshot-information"})," for the specific values of the configuration heights. Ensure that the corresponding height values match the snapshot version you are configuring."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"// ...\nMAINNET_SNAPSHOT_NAME={your expected snapshot name} \n\n// ...\nDERIVATION_START_HEIGHT={the expected start height match the snapshot}\nL1_MSG_START_HEIGHT={the expected start height match the snapshot}\n\n"})}),"\n",(0,t.jsx)(n.h4,{id:"5-run-the-validator",children:"5. Run the Validator"}),"\n",(0,t.jsx)(n.p,{children:"With the snapshot and configuration files ready, navigate to the morph-node folder under your cloned repository, and start the node using the provided command"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd morph-node\nmake run-validator\n\n// or for testnet\ncd morph-node\nmake run-holesky-validator\n"})})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>a});var t=o(758);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5081.08af33ec.js b/build/assets/js/5081.08af33ec.js deleted file mode 100644 index 6c8a22953..000000000 --- a/build/assets/js/5081.08af33ec.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5081],{5081:(c,a,e)=>{e.r(a),e.d(a,{DocSearchModal:()=>h.a1});var h=e(2525)}}]); \ No newline at end of file diff --git a/build/assets/js/52171187.077ab897.js b/build/assets/js/52171187.077ab897.js deleted file mode 100644 index ef4da0827..000000000 --- a/build/assets/js/52171187.077ab897.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5027],{1520:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>h,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var t=r(6070),n=r(1582);const i={title:"Where Should I Start?",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"about-morph/where-should-i-start",title:"Where Should I Start?",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/3-where-should-i-start.md",sourceDirName:"about-morph",slug:"/about-morph/where-should-i-start",permalink:"/docs/about-morph/where-should-i-start",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/3-where-should-i-start.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Where Should I Start?",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}},h={},c=[{value:"For Developers: Dive Into Building On Morph",id:"for-developers-dive-into-building-on-morph",level:2},{value:"For Users: Embark On Your Morph Journey",id:"for-users-embark-on-your-morph-journey",level:2},{value:"For Researchers: Unraveling The Technical Depth Of Morph",id:"for-researchers-unraveling-the-technical-depth-of-morph",level:2}];function l(e){const o={a:"a",h2:"h2",p:"p",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h2,{id:"for-developers-dive-into-building-on-morph",children:"For Developers: Dive Into Building On Morph"}),"\n",(0,t.jsxs)(o.p,{children:['As a developer keen on harnessing the innovative capabilities of the Morph network, your journey begins in the "Build on Morph" section of our documentation. Here, you\'ll find all the resources you need \u2013 from comprehensive guides and tutorials to practical examples. These materials are designed to elucidate the core concepts and features of Morph, enabling you to integrate with our APIs, deploy sophisticated smart contracts, and utilize an array of tools and libraries. The ',(0,t.jsx)(o.a,{href:"/docs/build-on-morph/intro",children:'"Build on Morph"'})," guide is your gateway to crafting powerful, decentralized applications that leverage the full potential of our network."]}),"\n",(0,t.jsx)(o.h2,{id:"for-users-embark-on-your-morph-journey",children:"For Users: Embark On Your Morph Journey"}),"\n",(0,t.jsxs)(o.p,{children:["If you're eager to explore the possibilities within the Morph network, the \"Quick Start\" section in our documentation is your ideal starting point. Tailored for ease of understanding, this guide walks you through the essentials \u2013 from setting up your wallet to engaging in transactions on the network. It's designed to introduce you to the world of asset transfers, decentralized finance, and the diverse range of dApps available on Morph. Follow the ",(0,t.jsx)(o.a,{href:"/docs/quick-start/welcome-to-morph",children:'"Quick Start"'})," guide for a smooth, user-friendly introduction to leveraging Morph's functionalities in your everyday activities."]}),"\n",(0,t.jsx)(o.h2,{id:"for-researchers-unraveling-the-technical-depth-of-morph",children:"For Researchers: Unraveling The Technical Depth Of Morph"}),"\n",(0,t.jsxs)(o.p,{children:["For those intrigued by the technical intricacies of the Morph network, the ",(0,t.jsx)(o.a,{href:"/docs/how-morph-works/intro",children:'"How Morph Works"'})," section offers an in-depth exploration of its underlying architecture and mechanisms. This comprehensive resource is rich in technical details, providing an extensive understanding of Morph's innovative features and foundational principles. Whether you're delving into research or seeking a thorough grasp of blockchain technology, this section unveils the nuances and sophisticated engineering that define the Morph network."]}),"\n",(0,t.jsx)(o.p,{children:"No matter your background \u2013 developer, user, or researcher \u2013 our documentation is structured to offer you a customized pathway into the Morph ecosystem. Each guide is designed to help you leverage and understand our state-of-the-art technology and features, ensuring a rewarding experience on the Morph network."})]})}function d(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1582:(e,o,r)=>{r.d(o,{R:()=>s,x:()=>a});var t=r(758);const n={},i=t.createContext(n);function s(e){const o=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),t.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/578ca001.54e90cd3.js b/build/assets/js/578ca001.54e90cd3.js deleted file mode 100644 index 7c559a3f6..000000000 --- a/build/assets/js/578ca001.54e90cd3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6142],{761:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var t=s(6070),n=s(1582);const r={title:"Optimistic zkEVM",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},o=void 0,a={id:"how-morph-works/optimistic-zkevm",title:"Optimistic zkEVM",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/3-optimistic-zkevm.md",sourceDirName:"how-morph-works",slug:"/how-morph-works/optimistic-zkevm",permalink:"/docs/how-morph-works/optimistic-zkevm",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/3-optimistic-zkevm.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Optimistic zkEVM",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Morph Modular Design",permalink:"/docs/how-morph-works/morph-modular-design"},next:{title:"Morph's Decentralized Sequencer Network",permalink:"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network"}},l={},c=[{value:"Introduction to State Verification",id:"introduction-to-state-verification",level:2},{value:"The Problem with Optimistic Rollups",id:"the-problem-with-optimistic-rollups",level:2},{value:"What is RVP?\u200b",id:"what-is-rvp",level:2},{value:"Advantages of RVP Compared to Interactive Fraud Proofs",id:"advantages-of-rvp-compared-to-interactive-fraud-proofs",level:3},{value:"How Can RVP Shorten the Challenge Period of an Optimistic Rollup?",id:"how-can-rvp-shorten-the-challenge-period-of-an-optimistic-rollup",level:3},{value:"The Need for a Challenge Period",id:"the-need-for-a-challenge-period",level:4},{value:"Solutions to Shorten the Challenge Period",id:"solutions-to-shorten-the-challenge-period",level:4},{value:"Key Benefits of RVP in Reducing the Challenge Period",id:"key-benefits-of-rvp-in-reducing-the-challenge-period",level:4},{value:"Why is the Operating Cost Lower for L2 Based on RVP?",id:"why-is-the-operating-cost-lower-for-l2-based-on-rvp",level:3},{value:"Compression of Transactions",id:"compression-of-transactions",level:4},{value:"Efficient Data Submission",id:"efficient-data-submission",level:4},{value:"Comparison with Existing Solutions",id:"comparison-with-existing-solutions",level:4},{value:"RVP is Friendly to Challengers",id:"rvp-is-friendly-to-challengers",level:3},{value:"Why do sequencers have to take on the responsibility of submitting ZK-proofs?\u200b",id:"why-do-sequencers-have-to-take-on-the-responsibility-of-submitting-zk-proofs",level:3},{value:"Why Not Simply Employ ZK-Rollups?",id:"why-not-simply-employ-zk-rollups",level:3},{value:"The Cost of ZK-Rollup",id:"the-cost-of-zk-rollup",level:4},{value:"Block Finalization Time in ZK-Rollups",id:"block-finalization-time-in-zk-rollups",level:4},{value:"Seamless Transition with RVP-Based Rollups",id:"seamless-transition-with-rvp-based-rollups",level:4},{value:"SP1 on Morph Mainnet",id:"sp1-on-morph-mainnet",level:3},{value:"Morph Challengers Address List",id:"morph-challengers-address-list",level:3},{value:"Challenger Address List",id:"challenger-address-list",level:4}];function h(e){const i={a:"a",annotation:"annotation",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",math:"math",mi:"mi",mn:"mn",mrow:"mrow",ol:"ol",p:"p",semantics:"semantics",span:"span",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"RVP",src:s(8453).A+"",width:"4000",height:"2000"})}),"\n",(0,t.jsx)(i.h2,{id:"introduction-to-state-verification",children:"Introduction to State Verification"}),"\n",(0,t.jsx)(i.p,{children:"Layer 2 state verification traditionally falls into two categories: fraud proofs and validity proofs. Morph introduces a new verification method called Responsive Validity Proof (RVP), combining the benefits of both approaches to address their limitations. Fraud proofs, while effective, suffer from capital inefficiency and low security assumptions. Additionally, no Optimistic Rollup (OP-Rollup) has fully implemented a permissionless fraud-proof challenge mechanism. Conversely, validity proofs offer high security but face practical issues with cost and efficiency that hinder Rollup scalability."}),"\n",(0,t.jsx)(i.h2,{id:"the-problem-with-optimistic-rollups",children:"The Problem with Optimistic Rollups"}),"\n",(0,t.jsx)(i.p,{children:"In this model, Layer 2 (L2) optimistically assumes that the state changes submitted by the sequencer are valid without actively verifying their authenticity. Instead, a challenge period is introduced before the state changes are confirmed on Layer 1 (L1). During this period, external challengers verify the sequencer's submissions based on their own synchronized network status. If they find discrepancies, challengers can trigger a challenge process on L1 to prevent incorrect states from being confirmed."}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Challenge Mechanism"}),": Although all optimistic rollups claim to implement fraud proofs, only very a few had successfully deployed them on the mainnet. Furthermore, the challengers are often limited to several whitelisted addresses. Fraud proofs in current optimistic rollup projects can be categorized into two types:"]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Non-Interactive Fraud Proofs"}),": When a new state submitted by the sequencer is challenged, L1 re-executes all corresponding L2 transactions to generate a valid state for comparison with the state submitted by the sequencer. This process incurs significant gas costs and may lead to discrepancies between L2 and L1, as some transactions might produce different outcomes on L2 compared to L1, or L1 might not be able to execute certain L2 transactions. Optimism (OP) once used this approach but abandoned it due to these issues."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Interactive Fraud Proofs"}),": To address the issues of non-interactive fraud proofs, multi-round interactive fraud proofs were introduced. This method involves determining the specific instruction execution that caused the incorrectness through multiple rounds of interaction between the sequencer and the challenger, then confirming fraud by executing the corresponding instructions on L1. This approach reduces computational costs and diminishes the issue of incongruent outcomes between L1 and L2. However, it introduces complexities, such as:"]}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"Higher implementation difficulty"}),"\n",(0,t.jsx)(i.li,{children:"Longer challenge periods (sufficient time must be reserved for complex interactions)"}),"\n",(0,t.jsx)(i.li,{children:"Increased standards, impacting challengers' motivation"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"Currently, only several OP Rollups have implemented a complete interactive fraud proof mechanism on its mainnet among optimistic rollup projects. In contrast, several ZK-rollup projects have already launched on the mainnet."}),"\n",(0,t.jsx)(i.p,{children:"These complexities highlight the need for improvement in existing optimistic rollup models. Hence, Morph introduces the Responsive Validity Proof (RVP)."}),"\n",(0,t.jsx)(i.h2,{id:"what-is-rvp",children:"What is RVP?\u200b"}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"RVP",src:s(5514).A+"",width:"1770",height:"996"})}),"\n",(0,t.jsx)(i.p,{children:"Responsive Validity Proof (RVP) integrates ZK-based validity proofs into the optimistic rollup framework. The process is as follows:"}),"\n",(0,t.jsx)(i.p,{children:"When challengers detect that the sequencer has submitted incorrect data, they initiate a challenge request to the sequencer on Layer 1 (L1). The sequencer must then generate the corresponding Zero-Knowledge (ZK) proof within a specified time (challenge period) and pass the verification of the L1 contract. If the verification passes, the challenge fails; otherwise, the challenge succeeds. This process combines the benefits of optimistic rollups and ZK-rollups, providing a balanced approach to security and efficiency."}),"\n",(0,t.jsx)(i.h3,{id:"advantages-of-rvp-compared-to-interactive-fraud-proofs",children:"Advantages of RVP Compared to Interactive Fraud Proofs"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Shorter Challenge Period"}),": RVP can reduce the challenge period from the typical 7 days to just 1-3 days, improving overall efficiency and user experience. Right now the Morph mainnet has 48 hrs (2 days) challenge window."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Reduced L2 Submission Costs"}),": By using validity proofs, Layer 2 (L2) does not need to include most transaction bytes, significantly lowering submission costs."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Improved Challenger Experience"}),": With RVP, challengers only need to initiate the challenge. The sequencer must prove their correctness by generating and verifying the corresponding ZK-proof, simplifying the challenger's responsibilities."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Seamless Transition to ZK-Rollup"}),": The architectural design of RVP allows for an easy transition to a complete ZK-rollup. The primary change required is adjusting the sequencer's ZK-proof submission methods from responsive to active."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"RVP enhances the optimistic rollup model by incorporating ZK-proofs, offering a more efficient, cost-effective, and secure solution. It addresses the limitations of traditional fraud proofs and paves the way for a seamless transition to full ZK-rollup implementations in the future."}),"\n",(0,t.jsx)(i.h3,{id:"how-can-rvp-shorten-the-challenge-period-of-an-optimistic-rollup",children:"How Can RVP Shorten the Challenge Period of an Optimistic Rollup?"}),"\n",(0,t.jsx)(i.h4,{id:"the-need-for-a-challenge-period",children:"The Need for a Challenge Period"}),"\n",(0,t.jsx)(i.p,{children:"Optimistic rollups incorporate a challenge period (or withdrawal period) to ensure that any malicious submissions by the sequencer can be identified and contested. This period provides sufficient time for challengers to verify transactions, conduct fraud proofs, and complete the challenge process, thereby ensuring that only valid state changes are confirmed on Layer 1 (L1).\nTwo main factors influence the length of the challenge period:"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsx)(i.li,{children:"Completion Time: The time required for both parties to complete the challenge process."}),"\n",(0,t.jsx)(i.li,{children:"Mitigating Malicious Behavior: Ensuring that there is enough time to address any attempts by sequencers to maliciously block the challenger\u2019s transactions on L1."}),"\n"]}),"\n",(0,t.jsx)(i.h4,{id:"solutions-to-shorten-the-challenge-period",children:"Solutions to Shorten the Challenge Period"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Concise and Direct Challenge Process:"})," For multi-round interactive fraud proofs, the entire challenge process might require several rounds of interaction, each demanding significant time. For example, if the process requires 10 rounds, at least 20 blocks of time are needed to complete the challenge, considering the back-and-forth responses.\nIn contrast, RVP simplifies the challenge process by requiring only one interaction: the sequencer uploads the ZK-proof of the batch, which is then verified on L1. This streamlined process addresses the main problem of whether challengers have enough time to detect and prove incorrectness, thus significantly reducing the challenge period."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Protection Against Malicious Behavior"}),": In interactive fraud-proof systems, the challenged party might attempt to interfere with the challenge progress, such as launching a DoS attack on L1 to prevent challengers from interacting with L1 and submitting proofs.\nWith RVP, challengers only need to trigger the challenge. Once the challenge is initiated, the sequencer has no opportunity to interfere. The sequencer must then prove the correctness of its submission through the ZK-proof. This ensures that the normal challenge process is not affected by malicious behavior, further shortening the challenge period."]}),"\n",(0,t.jsx)(i.h4,{id:"key-benefits-of-rvp-in-reducing-the-challenge-period",children:"Key Benefits of RVP in Reducing the Challenge Period"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Efficiency"}),": The single interaction required for RVP simplifies the challenge process, reducing the time needed for resolution."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Security"}),": By relying on ZK-proofs, RVP provides a robust mechanism to validate state changes without lengthy interactions."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Cost-Effectiveness"}),": The reduction in the number of interactions lowers the gas costs associated with challenge processes on L1."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"By addressing these factors, RVP effectively shortens the challenge period from the traditional 7 days to just 1-3 days, offering a more efficient and secure solution for optimistic rollups."}),"\n",(0,t.jsx)(i.h3,{id:"why-is-the-operating-cost-lower-for-l2-based-on-rvp",children:"Why is the Operating Cost Lower for L2 Based on RVP?"}),"\n",(0,t.jsx)(i.h4,{id:"compression-of-transactions",children:"Compression of Transactions"}),"\n",(0,t.jsx)(i.p,{children:"In ZK-rollups, the validity of each transaction is confirmed through a submitted ZK-proof, which eliminates the need to include extensive transaction details. For example, the length of an Ethereum transaction is approximately 110 bytes, with the signature occupying around 68 bytes. In optimistic rollups, because transactions need to be replayed on L1, these signatures must be included to ensure validity. This increases the cost.\nHowever, ZK-rollups only need to retain basic transaction information because the validity proof covers the entire batch. This compression capability reduces the amount of data that needs to be submitted to L1, significantly lowering costs."}),"\n",(0,t.jsx)(i.h4,{id:"efficient-data-submission",children:"Efficient Data Submission"}),"\n",(0,t.jsx)(i.p,{children:"RVP utilizes ZK-proofs to validate transactions, adopting the ZK-rollup advantage of transaction compression during batch data submission. This reduces the overall data volume and associated costs. Additionally, when there are no challenges, the sequencer does not incur the cost of generating and submitting ZK-proofs, further lowering operational expenses."}),"\n",(0,t.jsx)(i.h4,{id:"comparison-with-existing-solutions",children:"Comparison with Existing Solutions"}),"\n",(0,t.jsx)(i.p,{children:"The design of RVP ensures that the cost of rollup operations is lower than that of both existing optimistic rollups and traditional ZK-rollups. This efficiency is achieved by:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"Reducing the need for detailed transaction replays on L1."}),"\n",(0,t.jsx)(i.li,{children:"Leveraging ZK-proofs only when necessary, minimizing unnecessary proof generation costs."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"rvp-is-friendly-to-challengers",children:"RVP is Friendly to Challengers"}),"\n",(0,t.jsx)(i.p,{children:"The core of RVP is the use of validity proofs to ultimately validate challenged data. This benefits challengers in the following ways:"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsx)(i.li,{children:(0,t.jsx)(i.strong,{children:"Simplified Challenge Process:"})}),"\n"]}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"In RVP, the sequencer is responsible for generating and verifying proofs. Challengers only need to initiate a challenge through staking, reducing the complexity and burden on challengers."}),"\n",(0,t.jsx)(i.li,{children:"This contrasts with traditional fraud proofs, where challengers must interact multiple times with the sequencer, making the process cumbersome and complex."}),"\n"]}),"\n",(0,t.jsxs)(i.ol,{start:"2",children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Lower Threshold for Challengers"}),":"]}),"\n"]}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"In many Layer 2 projects, sequencers have a high incentive to act maliciously due to potential high returns. Conversely, challengers typically see lower direct benefits, leading to a lack of motivation to challenge fraudulent transactions."}),"\n",(0,t.jsx)(i.li,{children:"RVP lowers the threshold for challengers by shifting the responsibility of proof generation to the sequencers, thus increasing the likelihood of detecting and correcting fraudulent behavior."}),"\n"]}),"\n",(0,t.jsxs)(i.ol,{start:"3",children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Mitigating Malicious Challenges"}),":"]}),"\n"]}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"While there is a risk of challengers initiating unnecessary challenges to increase costs for sequencers, RVP mitigates this by requiring challengers to compensate sequencers for the costs incurred if a challenge is unsuccessful."}),"\n",(0,t.jsx)(i.li,{children:"This mechanism discourages frivolous challenges and ensures that only legitimate disputes are raised."}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"By adopting these strategies, RVP ensures a fairer and more efficient process for validating Layer 2 transactions, ultimately lowering operating costs and enhancing the security and integrity of the network."}),"\n",(0,t.jsx)(i.h3,{id:"why-do-sequencers-have-to-take-on-the-responsibility-of-submitting-zk-proofs",children:"Why do sequencers have to take on the responsibility of submitting ZK-proofs?\u200b"}),"\n",(0,t.jsx)(i.p,{children:"Some proposals have suggested that challengers could demonstrate the falsehood of a sequencer's submission by providing their own submission and corresponding ZK-proof. The two submissions could then be compared to identify any fraudulent activity by the sequencer. However, there are significant concerns with this approach:"}),"\n",(0,t.jsx)(i.p,{children:"Challengers would need to generate ZK-proofs using the transactions provided by the sequencer. If the sequencer submits invalid transactions, challengers cannot create ZK-proofs that can be authenticated on Layer 1 (L1). Therefore, it is more effective for sequencers to prove the correctness of their submissions. This approach ensures that the entity responsible for the transactions verifies their accuracy, maintaining the integrity of the system.."}),"\n",(0,t.jsx)(i.h3,{id:"why-not-simply-employ-zk-rollups",children:"Why Not Simply Employ ZK-Rollups?"}),"\n",(0,t.jsx)(i.p,{children:"While verifying the validity of every state submission by the sequencer through numerous cryptographic calculations, as seen in current ZK-rollups, theoretically offers higher security, this approach presents several challenges:"}),"\n",(0,t.jsx)(i.h4,{id:"the-cost-of-zk-rollup",children:"The Cost of ZK-Rollup"}),"\n",(0,t.jsxs)(i.p,{children:["Currently, projects such as zkSync and Polygon zkEVM have launched on the mainnet, showing that generating and verifying ZK-proofs is no longer the most pressing issue. However, these ZK-proofs still face cost and efficiency constraints. For instance, the average transaction cost on zkSync Era ranges from ",(0,t.jsxs)(i.span,{className:"katex",children:[(0,t.jsx)(i.span,{className:"katex-mathml",children:(0,t.jsx)(i.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,t.jsxs)(i.semantics,{children:[(0,t.jsxs)(i.mrow,{children:[(0,t.jsx)(i.mn,{children:"0.51"}),(0,t.jsx)(i.mi,{children:"t"}),(0,t.jsx)(i.mi,{children:"o"}),(0,t.jsx)(i.mi,{children:"a"}),(0,t.jsx)(i.mi,{children:"s"}),(0,t.jsx)(i.mi,{children:"h"}),(0,t.jsx)(i.mi,{children:"i"}),(0,t.jsx)(i.mi,{children:"g"}),(0,t.jsx)(i.mi,{children:"h"}),(0,t.jsx)(i.mi,{children:"a"}),(0,t.jsx)(i.mi,{children:"s"})]}),(0,t.jsx)(i.annotation,{encoding:"application/x-tex",children:"0.51 to as high as "})]})})}),(0,t.jsx)(i.span,{className:"katex-html","aria-hidden":"true",children:(0,t.jsxs)(i.span,{className:"base",children:[(0,t.jsx)(i.span,{className:"strut",style:{height:"0.8889em",verticalAlign:"-0.1944em"}}),(0,t.jsx)(i.span,{className:"mord",children:"0.51"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"t"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"o"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"a"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"s"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"hi"}),(0,t.jsx)(i.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"g"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"ha"}),(0,t.jsx)(i.span,{className:"mord mathnormal",children:"s"})]})})]}),"310, depending on L1 gas fees. This is significantly more expensive than the transaction costs of optimistic rollup projects like Arbitrum and Optimism. In contrast, with RVP, the high cost is avoided during normal network operation by only compressing transaction data using ZK-proofs when challenged. Normal operation incurs minimal costs, maintaining efficiency and affordability."]}),"\n",(0,t.jsx)(i.h4,{id:"block-finalization-time-in-zk-rollups",children:"Block Finalization Time in ZK-Rollups"}),"\n",(0,t.jsx)(i.p,{children:"Theoretically, ZK-rollups should have no withdrawal period because the entire L2 state transition verification process through ZK-proof should be completed in minutes or even seconds. However, the practical reality is different. Due to technical limitations, the time required for final verification of ZK-proofs on L1 is much slower than expected. For example, zkSync Era takes about 20-24 hours for L2 blocks to be finalized, which is not significantly different from the optimized withdrawal periods of optimistic rollups."}),"\n",(0,t.jsx)(i.h4,{id:"seamless-transition-with-rvp-based-rollups",children:"Seamless Transition with RVP-Based Rollups"}),"\n",(0,t.jsx)(i.p,{children:"L2 scaling solutions incorporating RVP technology can be designed using the ZK-rollup framework, allowing for an easy transition from RVP-based L2 to standard ZK-rollup L2 as ZK technology matures. The primary adjustment needed is changing the sequencer's ZK-proof submission methods from responsive to active. Thus, RVP-based systems can seamlessly adopt full ZK-rollup benefits in the future."}),"\n",(0,t.jsx)(i.h3,{id:"sp1-on-morph-mainnet",children:"SP1 on Morph Mainnet"}),"\n",(0,t.jsx)(i.p,{children:"Morph\u2019s Responsive Validity Proof (RVP) system morphed into the optimal design with our mainnet launch, enhanced by SP1."}),"\n",(0,t.jsx)(i.p,{children:"Succinct, uniquely enables Morph\u2019s RVP with their blazing fast zkVM and excellent developer experience. It represents a generational shift in how zkEVMs are built, custom circuits are a relic of that past. This upgrade refines RVP's capabilities, pushing the boundaries of scalability and security in blockchain applications."}),"\n",(0,t.jsx)(i.p,{children:"Our RVP system with SP1 is:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"Uses a generic, more developer-friendly Rust-based implementation"}),"\n",(0,t.jsx)(i.li,{children:"Generates proofs orders of magnitudes faster with SP1\u2019s Prover Network"}),"\n",(0,t.jsx)(i.li,{children:"Handles unlimited transactions per block (previously capped at 100)"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"For users, this means:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"Improved security and smoother user experience (thoroughly audited codes with faster challenge resolution and 2-day settlement)"}),"\n",(0,t.jsx)(i.li,{children:"Lower costs (more efficient proof generation for off-chain computation)"}),"\n",(0,t.jsx)(i.li,{children:"More scalable (no more transaction caps)"}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"morph-challengers-address-list",children:"Morph Challengers Address List"}),"\n",(0,t.jsx)(i.p,{children:"As per our commitment to the decentralization of the challenging process, here is the list of all challenger addresses."}),"\n",(0,t.jsx)(i.p,{children:"These addresses are responsible for monitoring the L2 state changes and responding to any malicious activities from the sequencers."}),"\n",(0,t.jsx)(i.h4,{id:"challenger-address-list",children:"Challenger Address List"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x77b29534738e3f0f297d36635d7884965c7c8ce1",children:"0x77b29534738e3f0f297d36635d7884965c7c8ce1"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x95417708f67f4a5df1a447efe40c6c74e38ab832",children:"0x95417708f67f4a5df1a447efe40c6c74e38ab832"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xd11f9c4f5d9b1fec2d14581d3674066442b68772",children:"0xd11f9c4f5d9b1fec2d14581d3674066442b68772"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x323a78c1c910b282de98a557d735628a02e00983",children:"0x323a78c1c910b282de98a557d735628a02e00983"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x74204e3801e9394848abdbad6f378d0b11e9a091",children:"0x74204e3801e9394848abdbad6f378d0b11e9a091"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xbd9f4fdc48a9a8c7ea1075cfdf4f3bd365d50bab",children:"0xbd9f4fdc48a9a8c7ea1075cfdf4f3bd365d50bab"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x9ac29d4f41a139d9b7be32c2906df9f86fa51b2b",children:"0x9ac29d4f41a139d9b7be32c2906df9f86fa51b2b"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xbfd62b7915da8c19c701fd13237b555ad38c4b4c",children:"0xbfd62b7915da8c19c701fd13237b555ad38c4b4c"})," - ",(0,t.jsx)(i.a,{href:"https://morphl2.io",children:"Morph"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xca00091a35d0b546a15d000f8bceda56255ee4d0",children:"0xca00091a35d0b546a15d000f8bceda56255ee4d0"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x6d7cc6c62cd6ccdac482e82aa7a3763926e93854",children:"0x6d7cc6c62cd6ccdac482e82aa7a3763926e93854"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x8c0cffcbab44c7ab6e96eb607c49188de99a17cd",children:"0x8c0cffcbab44c7ab6e96eb607c49188de99a17cd"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xc4db900f76293042349448d1ba30f71518325bb3",children:"0xc4db900f76293042349448d1ba30f71518325bb3"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xf2ff0509520faf35b511074466a509e00d73c307",children:"0xf2ff0509520faf35b511074466a509e00d73c307"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xf6ee30269db1854987ca6812e1ff66c3a5f660fd",children:"0xf6ee30269db1854987ca6812e1ff66c3a5f660fd"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xf50a81c771ad3237aea2fd18e4ee8055cc4cd2b9",children:"0xf50a81c771ad3237aea2fd18e4ee8055cc4cd2b9"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x71c10870dc38e54d987c22e96ab32b46cc08564f",children:"0x71c10870dc38e54d987c22e96ab32b46cc08564f"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xb4a20d473e8c378ae742a8017dd67756a358eab6",children:"0xb4a20d473e8c378ae742a8017dd67756a358eab6"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xe48ea86dcde15e28624e5de9d6d3738fc52b6bfe",children:"0xe48ea86dcde15e28624e5de9d6d3738fc52b6bfe"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x03fd36aed3b2597aa79bb5f543f3a0eaf9deb0fa",children:"0x03fd36aed3b2597aa79bb5f543f3a0eaf9deb0fa"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x4ee3690901157be86a33371bec1e5021a10ba47c",children:"0x4ee3690901157be86a33371bec1e5021a10ba47c"})," - ",(0,t.jsx)(i.a,{href:"https://bitget.com",children:"Bitget"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xc8f7daef4b49c1593cc3996ab2afa8b56e00fcf8",children:"0xc8f7daef4b49c1593cc3996ab2afa8b56e00fcf8"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x0092bc49078f130d27e70dbeee441e227280b97d",children:"0x0092bc49078f130d27e70dbeee441e227280b97d"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xc412b4e6399f694cff21d038d225373fd6596811",children:"0xc412b4e6399f694cff21d038d225373fd6596811"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x1721d3ae2d68e3dd32525400ed2a29060f1300c6",children:"0x1721d3ae2d68e3dd32525400ed2a29060f1300c6"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0xdf063faeb46de1b4336bc70da7175f16ab4a7272",children:"0xdf063faeb46de1b4336bc70da7175f16ab4a7272"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x611e4b24e89bc524fc06f73b6fd02be3ec73d6db",children:"0x611e4b24e89bc524fc06f73b6fd02be3ec73d6db"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x92c4d5d9cadd1af74080de7aa078434007f710bb",children:"0x92c4d5d9cadd1af74080de7aa078434007f710bb"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x234acb24b1deea7f6c7530b8c29a6378ba21e1d0",children:"0x234acb24b1deea7f6c7530b8c29a6378ba21e1d0"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x5c6e1011cd3b5d7d2937c098b8f61d6b3d1aee7e",children:"0x5c6e1011cd3b5d7d2937c098b8f61d6b3d1aee7e"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"https://etherscan.io/address/0x95c373754c66fef1eb2dbb6934af821c551d9738",children:"0x95c373754c66fef1eb2dbb6934af821c551d9738"})," - ",(0,t.jsx)(i.a,{href:"https://web3.bitget.com",children:"Bitget Wallet"})]}),"\n"]})]})}function d(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},5514:(e,i,s)=>{s.d(i,{A:()=>t});const t=s.p+"assets/images/compare3-4c06621b13d69cb38eec6f6ba9ee49b9.png"},8453:(e,i,s)=>{s.d(i,{A:()=>t});const t=s.p+"assets/images/rvpbanner1-6a61bf43aee91ff017a046a76e3c85d8.jpg"},1582:(e,i,s)=>{s.d(i,{R:()=>o,x:()=>a});var t=s(758);const n={},r=t.createContext(n);function o(e){const i=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),t.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/57c15217.beeb4523.js b/build/assets/js/57c15217.beeb4523.js deleted file mode 100644 index ca2cd7b56..000000000 --- a/build/assets/js/57c15217.beeb4523.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4766],{3499:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var i=n(6070),s=n(1582);const o={title:"Rollup",lang:"en-US",keywords:["morph","ethereum","rollup"],description:"Explain how rollup process works in Morph"},r=void 0,a={id:"how-morph-works/general-protocol-design/rollup",title:"Rollup",description:"Explain how rollup process works in Morph",source:"@site/docs/how-morph-works/general-protocol-design/1-rollup.md",sourceDirName:"how-morph-works/general-protocol-design",slug:"/how-morph-works/general-protocol-design/rollup",permalink:"/docs/how-morph-works/general-protocol-design/rollup",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/general-protocol-design/1-rollup.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Rollup",lang:"en-US",keywords:["morph","ethereum","rollup"],description:"Explain how rollup process works in Morph"},sidebar:"DeveloperSidebar",previous:{title:"Morph's Decentralized Sequencer Network",permalink:"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network"},next:{title:"Communication between Morph and Ethereum",permalink:"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum"}},l={},c=[{value:"An overview of Morph Rollup Design:",id:"an-overview-of-morph-rollup-design",level:3},{value:"Constructing the Batch\u200b",id:"constructing-the-batch",level:2},{value:"Putting Multiple Batches into a Single Rollup Transaction\u200b",id:"putting-multiple-batches-into-a-single-rollup-transaction",level:2},{value:"Submitting Batch Data to the Rollup Contract\u200b",id:"submitting-batch-data-to-the-rollup-contract",level:2},{value:"Finalize the batches",id:"finalize-the-batches",level:2},{value:"What is Batch Submitter?",id:"what-is-batch-submitter",level:2},{value:"What is the relationship between Sequencers & Batch Submitters\uff1f",id:"what-is-the-relationship-between-sequencers--batch-submitters",level:2},{value:"How to decentralize the Batch Submitter\uff1f",id:"how-to-decentralize-the-batch-submitter",level:2},{value:"Submitter Rotation",id:"submitter-rotation",level:3},{value:"Timeout",id:"timeout",level:3},{value:"Penalties for Timeout",id:"penalties-for-timeout",level:3},{value:"Module Design",id:"module-design",level:2},{value:"Layer1",id:"layer1",level:3},{value:"Layer2",id:"layer2",level:3}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.admonition,{type:"info",children:[(0,i.jsx)(t.p,{children:'As the foundation of a Layer 2 project, the "Rollup" process refers to the method by which Layer 2 assembles L2 transactions and state into batches and subsequently submits them to L1, along with the L2 state.'}),(0,i.jsxs)(t.p,{children:["Within ",(0,i.jsx)(t.a,{href:"/docs/how-morph-works/morph-modular-design",children:"Morph's architecture"}),", this Rollup process is executed by the ",(0,i.jsx)(t.code,{children:"Batch Submitter"})," components."]})]}),"\n",(0,i.jsx)(t.h3,{id:"an-overview-of-morph-rollup-design",children:"An overview of Morph Rollup Design:"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"rollup",src:n(5633).A+"",width:"1920",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"constructing-the-batch",children:"Constructing the Batch\u200b"}),"\n",(0,i.jsx)(t.p,{children:"The L2 Node within the sequencer generates L2 blocks based on consensus results and updates the local state of L2. The batch submitter must query the L2 node to retrieve the latest L2 blocks."}),"\n",(0,i.jsx)(t.p,{children:"The batch submitter then reconstructs L2 blocks, compiling:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Transactions: All transactions contained within the blocks."}),"\n",(0,i.jsx)(t.li,{children:"Blockinfo : Essential information from each block."}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"The batch submitter continues fetching and reconstructing blocks until it processes a block with a BLS signature, indicating the batch point has been reached. The reconstructed block data is used to construct a batch, which contains:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"lastBlocknumber : The number of the final block in the batch."}),"\n",(0,i.jsx)(t.li,{children:"Transactions : Encoded transactions within the batch."}),"\n",(0,i.jsx)(t.li,{children:"BlockWitness : Encoded blockinfos, utilized for zkProof."}),"\n",(0,i.jsx)(t.li,{children:"PreStateRoot : The stateRoot before the batch is applied."}),"\n",(0,i.jsx)(t.li,{children:"PostStateRoot : The stateRoot after the batch is applied."}),"\n",(0,i.jsx)(t.li,{children:"WithdrawalRoot : L2 withdrawal Merkle tree root."}),"\n",(0,i.jsx)(t.li,{children:"Signature : The batch\u2019s BLS signature."}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsx)(t.p,{children:"Blockinfo (BlockWitness) is needed since Morph employs zk technology to prove the accuracy of submitted batch data. It serves as a witness in the Zero-Knowledge Proof."})}),"\n",(0,i.jsx)(t.h2,{id:"putting-multiple-batches-into-a-single-rollup-transaction",children:"Putting Multiple Batches into a Single Rollup Transaction\u200b"}),"\n",(0,i.jsx)(t.p,{children:"While it's standard for roll-up projects to include only one batch per L1 roll-up transaction, Morph optimizes by inserting as many batches as feasible into a single L1 transaction.\nThis efficiency-driven approach significantly reduces overall costs, as the L1 fee is a predominant component of the transaction costs associated with the L2. By optimizing the utilization of available space, Morph achieves cost-effectiveness without compromising transaction integrity."}),"\n",(0,i.jsx)(t.h2,{id:"submitting-batch-data-to-the-rollup-contract",children:"Submitting Batch Data to the Rollup Contract\u200b"}),"\n",(0,i.jsx)(t.p,{children:"The batch submitter will eventually send an Ethereum transaction from its L1 account to Morph's main contract."}),"\n",(0,i.jsx)(t.p,{children:"The transaction's calldata contains the batch data."}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsx)(t.p,{children:"Based on the development process of ERC-4337, future batch data will likely be incorporated into a new \u2018blob\u2019 structure to further decrease costs."})}),"\n",(0,i.jsx)(t.p,{children:"Once the transaction is submitted and confirmed on Ethereum, validator nodes can reconstruct and verify the validity of sequencers' submissions using the transactional data within the batch."}),"\n",(0,i.jsx)(t.h2,{id:"finalize-the-batches",children:"Finalize the batches"}),"\n",(0,i.jsxs)(t.p,{children:["If batches are valid according to Morph's ",(0,i.jsx)(t.a,{href:"/docs/how-morph-works/optimistic-zkevm",children:"responsive validity proof"})," standards, all transactions within the batches will be finalized, including withdrawal transactions."]}),"\n",(0,i.jsx)(t.p,{children:"Consequently, withdrawal requests will be fulfilled, and the corresponding locked assets on Layer 1 will be released."}),"\n",(0,i.jsx)(t.h1,{id:"decentralize-batch-submitter",children:"Decentralize Batch Submitter"}),"\n",(0,i.jsx)(t.h2,{id:"what-is-batch-submitter",children:"What is Batch Submitter?"}),"\n",(0,i.jsx)(t.p,{children:'A Batch Submitter plays a crucial role in the "rollup" process, acting as the bridge that connects Layer 2 (L2) data with Ethereum (Layer 1 or L1). Their primary responsibilities include:'}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Collecting L2 transactions and block data, assembling them into a cohesive batch."}),"\n",(0,i.jsx)(t.li,{children:"Embedding this batch data within a Layer 1 transaction."}),"\n",(0,i.jsx)(t.li,{children:"Executing this transaction by calling the Layer 1 contract to complete the rollup process."}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"rollup",src:n(5633).A+"",width:"1920",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"what-is-the-relationship-between-sequencers--batch-submitters",children:"What is the relationship between Sequencers & Batch Submitters\uff1f"}),"\n",(0,i.jsx)(t.p,{children:"The Batch submitter function is often integrated within the broader 'sequencer' role. In a decentralized sequencer network architecture, each sequencer is equipped with or has access to a batch submitter component. This integration is key to achieving and maintaining the highest levels of decentralization."}),"\n",(0,i.jsx)(t.p,{children:"This structure ensures that the data uploaded to Layer 1 remains decentralized, preventing a single entity from controlling the rollup process."}),"\n",(0,i.jsx)(t.h2,{id:"how-to-decentralize-the-batch-submitter",children:"How to decentralize the Batch Submitter\uff1f"}),"\n",(0,i.jsx)(t.p,{children:"To uphold the aforementioned principles, it is essential to ensure that multiple sequencers can share rollup tasks evenly within the same time frame. Our approach to achieving this involves a rotation system for sequencers to take turns with the responsibility of calling the batch submitter, as detailed below:"}),"\n",(0,i.jsx)(t.h3,{id:"submitter-rotation",children:"Submitter Rotation"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Epoch Cycle Role Switching"}),": Sequencers alternate roles as batch submitters within an established Epoch cycle."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Cross-Epoch Execution Capability"}),": Any Sequencer can perform a Rollup for another Sequencer's Epoch."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Timeout Logging"}),": The system records instances when not a single rollup happens during an epoch, the epoch will be marked as \u201ctimeout\u201d as well as the responsible sequencer."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"timeout",children:"Timeout"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Timeout Identification"}),': If an epoch passes without a rollup (batch submission), it\'s identified as a "timeout." The timing of a rollup is pegged to the confirmation time of the Layer 1 rollup transaction.']}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Epoch Rotation"}),": The duration of an epoch and the rotation schedule are governed by the sequencer network governance. Sequencers are assigned indexes which determine their responsibility for an epoch. With changes in the sequencer set, indexes are reassigned, and epochs rotate accordingly based on these new assignments."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"penalties-for-timeout",children:"Penalties for Timeout"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Accumulated Penalties"}),": Sequencers that frequently exhibit timeout behaviors may face penalties that related to their Layer 1 ETH staking, if the timeout records reaches to a certain level, sequencer may/will be slashed from the sequencer network."]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"module-design",children:"Module Design"}),"\n",(0,i.jsx)(t.p,{children:"Below you can find the contracts that are responsible for each module and their responsibilities:"}),"\n",(0,i.jsx)(t.h3,{id:"layer1",children:"Layer1"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"RollupContract"}),": records the rollup executor and sync with L2"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"layer2",children:"Layer2"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"SequencerContract"}),": Sync Sequencers"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"GovContract"}),": Manage Batch & Epoch Parameters"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"SubmitterContract"}),":","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Record Epoch information"}),"\n",(0,i.jsx)(t.li,{children:"Record Rollup history"}),"\n",(0,i.jsx)(t.li,{children:"Record Submitter Workload"}),"\n",(0,i.jsx)(t.li,{children:"Record Submitter Timeouts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"IncentiveContract"}),": Conducts Incentive and Penalty actions"]}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},5633:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/rollup-768caf2d310d19ce9909d718badd44e5.png"},1582:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var i=n(758);const s={},o=i.createContext(s);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/59db22f4.9c92db8f.js b/build/assets/js/59db22f4.9c92db8f.js deleted file mode 100644 index ac85495a4..000000000 --- a/build/assets/js/59db22f4.9c92db8f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3197],{9642:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var d=r(6070),n=r(1582);const i={},l="Class: ETHBridgeAdapter",c={id:"build-on-morph/sdk/classes/ETHBridgeAdapter",title:"ETHBridgeAdapter",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.md",sourceDirName:"build-on-morph/sdk/classes",slug:"/build-on-morph/sdk/classes/ETHBridgeAdapter",permalink:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.md",tags:[],version:"current",frontMatter:{}},o={},h=[{value:"Extends",id:"extends",level:2},{value:"Constructors",id:"constructors",level:2},{value:"new ETHBridgeAdapter()",id:"new-ethbridgeadapter",level:3},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"Inherited from",id:"inherited-from",level:4},{value:"Source",id:"source",level:4},{value:"Properties",id:"properties",level:2},{value:"estimateGas",id:"estimategas",level:3},{value:"approve()",id:"approve",level:4},{value:"Parameters",id:"parameters-1",level:5},{value:"Returns",id:"returns-1",level:5},{value:"deposit()",id:"deposit",level:4},{value:"Parameters",id:"parameters-2",level:5},{value:"Returns",id:"returns-2",level:5},{value:"withdraw()",id:"withdraw",level:4},{value:"Parameters",id:"parameters-3",level:5},{value:"Returns",id:"returns-3",level:5},{value:"Inherited from",id:"inherited-from-1",level:4},{value:"Source",id:"source-1",level:4},{value:"l1Bridge",id:"l1bridge",level:3},{value:"Inherited from",id:"inherited-from-2",level:4},{value:"Source",id:"source-2",level:4},{value:"l2Bridge",id:"l2bridge",level:3},{value:"Inherited from",id:"inherited-from-3",level:4},{value:"Source",id:"source-3",level:4},{value:"messenger",id:"messenger",level:3},{value:"Inherited from",id:"inherited-from-4",level:4},{value:"Source",id:"source-4",level:4},{value:"populateTransaction",id:"populatetransaction",level:3},{value:"approve()",id:"approve-1",level:4},{value:"Parameters",id:"parameters-4",level:5},{value:"Returns",id:"returns-4",level:5},{value:"deposit()",id:"deposit-1",level:4},{value:"Parameters",id:"parameters-5",level:5},{value:"Returns",id:"returns-5",level:5},{value:"withdraw()",id:"withdraw-1",level:4},{value:"Parameters",id:"parameters-6",level:5},{value:"Returns",id:"returns-6",level:5},{value:"Overrides",id:"overrides",level:4},{value:"Source",id:"source-5",level:4},{value:"Methods",id:"methods",level:2},{value:"approval()",id:"approval",level:3},{value:"Parameters",id:"parameters-7",level:4},{value:"Returns",id:"returns-7",level:4},{value:"Overrides",id:"overrides-1",level:4},{value:"Source",id:"source-6",level:4},{value:"approve()",id:"approve-2",level:3},{value:"Parameters",id:"parameters-8",level:4},{value:"Returns",id:"returns-8",level:4},{value:"Inherited from",id:"inherited-from-5",level:4},{value:"Source",id:"source-7",level:4},{value:"deposit()",id:"deposit-2",level:3},{value:"Parameters",id:"parameters-9",level:4},{value:"Returns",id:"returns-9",level:4},{value:"Inherited from",id:"inherited-from-6",level:4},{value:"Source",id:"source-8",level:4},{value:"getDepositsByAddress()",id:"getdepositsbyaddress",level:3},{value:"Parameters",id:"parameters-10",level:4},{value:"Returns",id:"returns-10",level:4},{value:"Overrides",id:"overrides-2",level:4},{value:"Source",id:"source-9",level:4},{value:"getWithdrawalsByAddress()",id:"getwithdrawalsbyaddress",level:3},{value:"Parameters",id:"parameters-11",level:4},{value:"Returns",id:"returns-11",level:4},{value:"Overrides",id:"overrides-3",level:4},{value:"Source",id:"source-10",level:4},{value:"supportsTokenPair()",id:"supportstokenpair",level:3},{value:"Parameters",id:"parameters-12",level:4},{value:"Returns",id:"returns-12",level:4},{value:"Overrides",id:"overrides-4",level:4},{value:"Source",id:"source-11",level:4},{value:"withdraw()",id:"withdraw-2",level:3},{value:"Parameters",id:"parameters-13",level:4},{value:"Returns",id:"returns-13",level:4},{value:"Inherited from",id:"inherited-from-7",level:4},{value:"Source",id:"source-12",level:4}];function t(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,d.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,d.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / ETHBridgeAdapter"]}),"\n",(0,d.jsx)(s.h1,{id:"class-ethbridgeadapter",children:"Class: ETHBridgeAdapter"}),"\n",(0,d.jsx)(s.p,{children:"Bridge adapter for the ETH bridge."}),"\n",(0,d.jsx)(s.h2,{id:"extends",children:"Extends"}),"\n",(0,d.jsxs)(s.ul,{children:["\n",(0,d.jsx)(s.li,{children:(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})})}),"\n"]}),"\n",(0,d.jsx)(s.h2,{id:"constructors",children:"Constructors"}),"\n",(0,d.jsx)(s.h3,{id:"new-ethbridgeadapter",children:"new ETHBridgeAdapter()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"new ETHBridgeAdapter"}),"(",(0,d.jsx)(s.code,{children:"opts"}),"): ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",children:(0,d.jsx)(s.code,{children:"ETHBridgeAdapter"})})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Creates a StandardBridgeAdapter instance."}),"\n",(0,d.jsx)(s.h4,{id:"parameters",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts"})]}),"\n",(0,d.jsx)(s.p,{children:"Options for the adapter."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.l1Bridge"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"L1 bridge contract."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.l2Bridge"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"L2 bridge contract."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.messenger"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,d.jsx)(s.code,{children:"CrossChainMessenger"})})]}),"\n",(0,d.jsx)(s.p,{children:"Provider used to make queries related to cross-chain interactions."}),"\n",(0,d.jsx)(s.h4,{id:"returns",children:"Returns"}),"\n",(0,d.jsx)(s.p,{children:(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",children:(0,d.jsx)(s.code,{children:"ETHBridgeAdapter"})})}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#constructors",children:(0,d.jsx)(s.code,{children:"constructor"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:52"}),"\n",(0,d.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,d.jsx)(s.h3,{id:"estimategas",children:"estimateGas"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"estimateGas"}),": ",(0,d.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Object that holds the functions that estimates the gas required for a given transaction.\nFollows the pattern used by ethers.js."}),"\n",(0,d.jsx)(s.h4,{id:"approve",children:"approve()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approve"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-1",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-1",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"deposit",children:"deposit()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"deposit"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-2",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-2",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"withdraw",children:"withdraw()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"withdraw"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-3",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-3",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-1",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#estimategas",children:(0,d.jsx)(s.code,{children:"estimateGas"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:405"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"l1bridge",children:"l1Bridge"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"l1Bridge"}),": ",(0,d.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"L1 bridge contract."}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-2",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#l1bridge",children:(0,d.jsx)(s.code,{children:"l1Bridge"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:41"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"l2bridge",children:"l2Bridge"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"l2Bridge"}),": ",(0,d.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"L2 bridge contract."}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-3",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#l2bridge",children:(0,d.jsx)(s.code,{children:"l2Bridge"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:42"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"messenger",children:"messenger"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"messenger"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,d.jsx)(s.code,{children:"CrossChainMessenger"})})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Provider used to make queries related to cross-chain interactions."}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-4",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#messenger",children:(0,d.jsx)(s.code,{children:"messenger"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:40"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"populatetransaction",children:"populateTransaction"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"populateTransaction"}),": ",(0,d.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Object that holds the functions that generate transactions to be signed by the user.\nFollows the pattern used by ethers.js."}),"\n",(0,d.jsx)(s.h4,{id:"approve-1",children:"approve()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approve"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"never"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-4",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-4",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"never"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"deposit-1",children:"deposit()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"deposit"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),") => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-5",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-5",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"withdraw-1",children:"withdraw()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"withdraw"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),") => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-6",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-6",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"overrides",children:"Overrides"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#populatetransaction",children:(0,d.jsx)(s.code,{children:"populateTransaction"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/eth-bridge.ts:116"}),"\n",(0,d.jsx)(s.h2,{id:"methods",children:"Methods"}),"\n",(0,d.jsx)(s.h3,{id:"approval",children:"approval()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approval"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Queries the account's approval amount for a given L1 token."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-7",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-7",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Amount of tokens approved for deposits from the account."}),"\n",(0,d.jsx)(s.h4,{id:"overrides-1",children:"Overrides"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#approval",children:(0,d.jsx)(s.code,{children:"approval"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-6",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/eth-bridge.ts:22"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"approve-2",children:"approve()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approve"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"signer"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Approves a deposit into the L2 chain."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-8",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"signer"}),": ",(0,d.jsx)(s.code,{children:"Signer"})]}),"\n",(0,d.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-8",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Transaction response for the approval transaction."}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-5",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#approve-2",children:(0,d.jsx)(s.code,{children:"approve"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-7",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:250"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"deposit-2",children:"deposit()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"deposit"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"signer"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Deposits some tokens into the L2 chain."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-9",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Amount of the token to deposit."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"signer"}),": ",(0,d.jsx)(s.code,{children:"Signer"})]}),"\n",(0,d.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-9",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Transaction response for the deposit transaction."}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-6",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#deposit-2",children:(0,d.jsx)(s.code,{children:"deposit"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-8",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:262"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"getdepositsbyaddress",children:"getDepositsByAddress()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"getDepositsByAddress"}),"(",(0,d.jsx)(s.code,{children:"address"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Gets all deposits for a given address."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-10",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"address"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,d.jsx)(s.p,{children:"Options object."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsx)(s.h4,{id:"returns-10",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,d.jsx)(s.p,{children:"All deposit token bridge messages sent by the given address."}),"\n",(0,d.jsx)(s.h4,{id:"overrides-2",children:"Overrides"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#getdepositsbyaddress",children:(0,d.jsx)(s.code,{children:"getDepositsByAddress"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-9",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/eth-bridge.ts:30"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"getwithdrawalsbyaddress",children:"getWithdrawalsByAddress()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"getWithdrawalsByAddress"}),"(",(0,d.jsx)(s.code,{children:"address"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Gets all withdrawals for a given address."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-11",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"address"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,d.jsx)(s.p,{children:"Options object."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsx)(s.h4,{id:"returns-11",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,d.jsx)(s.p,{children:"All withdrawal token bridge messages sent by the given address."}),"\n",(0,d.jsx)(s.h4,{id:"overrides-3",children:"Overrides"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#getwithdrawalsbyaddress",children:(0,d.jsx)(s.code,{children:"getWithdrawalsByAddress"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-10",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/eth-bridge.ts:64"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"supportstokenpair",children:"supportsTokenPair()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"supportsTokenPair"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),"): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"boolean"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Checks whether the given token pair is supported by the bridge."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-12",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsx)(s.h4,{id:"returns-12",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"boolean"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Whether the given token pair is supported by the bridge."}),"\n",(0,d.jsx)(s.h4,{id:"overrides-4",children:"Overrides"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#supportstokenpair",children:(0,d.jsx)(s.code,{children:"supportsTokenPair"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-11",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/eth-bridge.ts:105"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"withdraw-2",children:"withdraw()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"withdraw"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"signer"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Withdraws some tokens back to the L1 chain."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-13",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Amount of the token to withdraw."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"signer"}),": ",(0,d.jsx)(s.code,{children:"Signer"})]}),"\n",(0,d.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-13",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Transaction response for the withdraw transaction."}),"\n",(0,d.jsx)(s.h4,{id:"inherited-from-7",children:"Inherited from"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter#withdraw-2",children:(0,d.jsx)(s.code,{children:"withdraw"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-12",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:274"})]})}function a(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,d.jsx)(s,{...e,children:(0,d.jsx)(t,{...e})}):t(e)}},1582:(e,s,r)=>{r.d(s,{R:()=>l,x:()=>c});var d=r(758);const n={},i=d.createContext(n);function l(e){const s=d.useContext(i);return d.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),d.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/59f4fb6c.b63e39f4.js b/build/assets/js/59f4fb6c.b63e39f4.js deleted file mode 100644 index 691b73cf0..000000000 --- a/build/assets/js/59f4fb6c.b63e39f4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3186],{1615:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var o=t(6070),i=t(1582);const r={title:"Transactions Life Cycle",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,c={id:"how-morph-works/general-protocol-design/transactions-life-cycle",title:"Transactions Life Cycle",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/general-protocol-design/4-transactions-life-cycle.md",sourceDirName:"how-morph-works/general-protocol-design",slug:"/how-morph-works/general-protocol-design/transactions-life-cycle",permalink:"/docs/how-morph-works/general-protocol-design/transactions-life-cycle",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/general-protocol-design/4-transactions-life-cycle.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Transactions Life Cycle",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Communication between Morph and Ethereum",permalink:"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum"},next:{title:"Difference between Morph and Ethereum",permalink:"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph"}},a={},l=[{value:"How is a L2 transaction processed on Morph",id:"how-is-a-l2-transaction-processed-on-morph",level:2},{value:"Morph Transaction Status",id:"morph-transaction-status",level:2},{value:"Processing\u200b",id:"processing",level:3},{value:"Confirmed\u200b",id:"confirmed",level:3},{value:"Safe",id:"safe",level:3},{value:"Finalized\u200b",id:"finalized",level:3}];function h(e){const n={a:"a",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"how-is-a-l2-transaction-processed-on-morph",children:"How is a L2 transaction processed on Morph"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Submit Transaction"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"User-initiated transactions are first sent to the L2 node's mempool, where they await selection and processing by a sequencer."}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsx)(n.li,{children:"Transaction Consensus"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Within the sequencer network, transactions undergo a consensus process. A selected sequencer proposes a block containing the transaction and then send the blocks to the consensus layer (consensus client)."}),"\n",(0,o.jsx)(n.p,{children:"Other sequencers then validate this block by executing this block, effectively verifying the transaction's legitimacy."}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsx)(n.li,{children:"Transaction Execution"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Once all the votes on the block are finalized, each sequencer & node will apply this block to update its local state."}),"\n",(0,o.jsxs)(n.ol,{start:"4",children:["\n",(0,o.jsx)(n.li,{children:"Transaction Batching"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"When batch point is reached, each sequencer will need to construct the batch with all the blocks consensussed for the last epoch, the batch will go through consensus by requiring each sequencer to sign, all of the signature will be aggregated with BLS signature."}),"\n",(0,o.jsxs)(n.ol,{start:"5",children:["\n",(0,o.jsx)(n.li,{children:"Batch Sequencing"}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"/docs/how-morph-works/general-protocol-design/rollup",children:"selected sequencer"})," will commit the batches to the Layer 1 Rollup contract for both verification and to ensure data availability."]}),"\n",(0,o.jsxs)(n.ol,{start:"6",children:["\n",(0,o.jsx)(n.li,{children:"Batch Verification"}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["A batch (so do the transactions within the batch) will first go through the BLS signature verification by the rollup contract to confirm the L2 consensus results, and then a batch will go through a ",(0,o.jsx)(n.a,{href:"/docs/how-morph-works/optimistic-zkevm",children:"challenge period"})," to be marked as finalized, solidifying their status within the L1 and L2 state."]}),"\n",(0,o.jsx)(n.h2,{id:"morph-transaction-status",children:"Morph Transaction Status"}),"\n",(0,o.jsx)(n.h3,{id:"processing",children:"Processing\u200b"}),"\n",(0,o.jsx)(n.p,{children:"Once submitted, a transaction enters the consensus phase managed by sequencers and is placed into a block pre-execution."}),"\n",(0,o.jsx)(n.h3,{id:"confirmed",children:"Confirmed\u200b"}),"\n",(0,o.jsx)(n.p,{children:"Post-execution by the Sequencer, the transaction\u2019s updated state is local to L2. It is then batched and sent to L1, where it must undergo a challenge period before finalization."}),"\n",(0,o.jsx)(n.h3,{id:"safe",children:"Safe"}),"\n",(0,o.jsx)(n.p,{children:"The batch that contains the transaction is submitted to Layer 1 but not finalized yet."}),"\n",(0,o.jsx)(n.h3,{id:"finalized",children:"Finalized\u200b"}),"\n",(0,o.jsx)(n.p,{children:"A transaction is considered finalized after it survives the challenge period or is verified by a Zero-Knowledge Proof (ZK-Proof). Only then is it officially integrated into the final L1 and L2 state."})]})}function d(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},1582:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(758);const i={},r=o.createContext(i);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5a91095f.bc5d777d.js b/build/assets/js/5a91095f.bc5d777d.js deleted file mode 100644 index 7a0fa20f9..000000000 --- a/build/assets/js/5a91095f.bc5d777d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6819],{4284:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>a,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var s=r(6070),o=r(1582);const t={},i="Type alias: NumberLike",c={id:"build-on-morph/sdk/type-aliases/NumberLike",title:"NumberLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/NumberLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/NumberLike",permalink:"/docs/build-on-morph/sdk/type-aliases/NumberLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/NumberLike.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Source",id:"source",level:2}];function u(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / NumberLike"]}),"\n",(0,s.jsx)(n.h1,{id:"type-alias-numberlike",children:"Type alias: NumberLike"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"NumberLike"}),": ",(0,s.jsx)(n.code,{children:"string"})," | ",(0,s.jsx)(n.code,{children:"number"})," | ",(0,s.jsx)(n.code,{children:"BigNumber"})," | ",(0,s.jsx)(n.code,{children:"bigint"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Stuff that can be coerced into a number."}),"\n",(0,s.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:396"})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>c});var s=r(758);const o={},t=s.createContext(o);function i(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5aa3c257.869d8531.js b/build/assets/js/5aa3c257.869d8531.js deleted file mode 100644 index ff039132b..000000000 --- a/build/assets/js/5aa3c257.869d8531.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7362],{4885:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>h,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var r=t(6070),n=t(1582);const i={title:"Communication between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},a=void 0,o={id:"how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum",title:"Communication between Morph and Ethereum",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/general-protocol-design/2-communicate-between-morph-and-ethereum.md",sourceDirName:"how-morph-works/general-protocol-design",slug:"/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum",permalink:"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/general-protocol-design/2-communicate-between-morph-and-ethereum.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Communication between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Rollup",permalink:"/docs/how-morph-works/general-protocol-design/rollup"},next:{title:"Transactions Life Cycle",permalink:"/docs/how-morph-works/general-protocol-design/transactions-life-cycle"}},h={},d=[{value:"The Basics of Morph - Ethereum Bridge\u200b",id:"the-basics-of-morph---ethereum-bridge",level:2},{value:"Understanding the Gateway",id:"understanding-the-gateway",level:2},{value:"Deposit (L1 to L2 message)",id:"deposit-l1-to-l2-message",level:2},{value:"Constructing a Deposit Request Through the Gateway",id:"constructing-a-deposit-request-through-the-gateway",level:3},{value:"Passing the Message Through the CrossDomainMessenger",id:"passing-the-message-through-the-crossdomainmessenger",level:3},{value:"Executing the Message on Layer 2",id:"executing-the-message-on-layer-2",level:3},{value:"How to make sure Sequencer doesn't fake a deposit transaction?",id:"how-to-make-sure-sequencer-doesnt-fake-a-deposit-transaction",level:3},{value:"Finalizing the Deposit Message",id:"finalizing-the-deposit-message",level:3},{value:"Withdraw (L2 -> L1 message)",id:"withdraw-l2---l1-message",level:2},{value:"Finalizing a Withdrawal",id:"finalizing-a-withdrawal",level:3},{value:"Understanding the Withdraw Tree",id:"understanding-the-withdraw-tree",level:3},{value:"Understanding the Challenge Period & Batch Finalization",id:"understanding-the-challenge-period--batch-finalization",level:3},{value:"Cross-layer (Bridge) Errors",id:"cross-layer-bridge-errors",level:2},{value:"Cross-layer (Bridge) Failure Scenarios:",id:"cross-layer-bridge-failure-scenarios",level:3},{value:"Handling Cross-layer (Bridge) Failures:",id:"handling-cross-layer-bridge-failures",level:3}];function c(e){const s={code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.p,{children:"Although Morph is a Layer 2 solution built atop Ethereum, it remains a separate and distinct blockchain. Thus, it\u2019s essential to establish a communication channel between Morph and Ethereum to facilitate the smooth transfer of assets and messages. The communication can occur in two directions: from Ethereum to Morph and from Morph to Ethereum."}),"\n",(0,r.jsx)(s.h2,{id:"the-basics-of-morph---ethereum-bridge",children:"The Basics of Morph - Ethereum Bridge\u200b"}),"\n",(0,r.jsx)(s.p,{children:"Transferring assets between Ethereum and Morph involves the following process:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:'Asset Locking and Wrapping: To initiate the transfer, a user must lock their asset on the cross-layer bridge. When the lock is confirmed, Morph mints a Wrapped Token that represents the value of the locked asset, in a procedure referred to as a "deposit".'}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"Asset Reception: Following the minting, the user or intended recipient will receive the asset on Morph, reflecting the value of the originally locked asset."}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:'Reverse Process: Conversely, to transfer assets back to Ethereum, the bridge can unlock the original asset on Ethereum by burning the Wrapped Token on Morph. This is referred to as "withdraw".'}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Furthermore, the bridge\u2019s utility extends beyond asset transfers. It employs the same foundational principle for message transfers, enabling the conveyance of data payloads across two network layers."}),"\n",(0,r.jsx)(s.h2,{id:"understanding-the-gateway",children:"Understanding the Gateway"}),"\n",(0,r.jsx)(s.p,{children:"The Gateway serves as the primary entry point for users to interact with the entire bridge system. While the core process of transferring assets across layers still relies on message transmission, we recommend using the Gateway approach for efficient cross-layer transactions."}),"\n",(0,r.jsx)(s.p,{children:"Catering to diverse cross-layer asset transfer needs, we have designed distinct Gateways such as the ETH Gateway, standard ERC20 Gateway, and others."}),"\n",(0,r.jsx)(s.p,{children:"Furthermore, we have implemented the Gateway Router to call on different Gateways based on the type of assets you have. This facilitates seamless interaction with the Gateway Router contract."}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"L1 Gateway Contract"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L1GatewayRouter"})}),(0,r.jsx)(s.td,{children:"The gateway router supports the deposit of ETH and ERC20 tokens."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L1ETHGateway"})}),(0,r.jsx)(s.td,{children:"The gateway to deposit ETH."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L1StandardERC20Gateway"})}),(0,r.jsx)(s.td,{children:"The gateway for standard ERC20 token deposits."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L1CustomERC20Gateway"})}),(0,r.jsx)(s.td,{children:"The gateway for custom ERC20 token deposits."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L1WETHGateway"})}),(0,r.jsx)(s.td,{children:"The gateway for Wrapped ETH deposits."})]})]})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"L2 Gateway Contract"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L2GatewayRouter"})}),(0,r.jsx)(s.td,{children:"The gateway router supports the withdraw of ETH and ERC20 tokens."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L2ETHGateway"})}),(0,r.jsx)(s.td,{children:"The gateway to withdraw ETH."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L2StandardERC20Gateway"})}),(0,r.jsx)(s.td,{children:"The gateway for standard ERC20 token withdraw."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L2CustomERC20Gateway"})}),(0,r.jsx)(s.td,{children:"The gateway for custom ERC20 token withdraw."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"L2WETHGateway"})}),(0,r.jsx)(s.td,{children:"The gateway for Wrapped ETH withdraw."})]})]})]}),"\n",(0,r.jsx)(s.h2,{id:"deposit-l1-to-l2-message",children:"Deposit (L1 to L2 message)"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.img,{alt:"Deposit Process",src:t(2320).A+"",width:"2516",height:"3640"})}),"\n",(0,r.jsx)(s.h3,{id:"constructing-a-deposit-request-through-the-gateway",children:"Constructing a Deposit Request Through the Gateway"}),"\n",(0,r.jsx)(s.p,{children:"A bridge request, whether it is for ETH, ERC20, or ERC721, is essentially a cross-layer message, which necessitates the initial construction of a message."}),"\n",(0,r.jsx)(s.p,{children:"Generally, the message structure remains consistent, especially for ETH & ERC20 Gateways."}),"\n",(0,r.jsxs)(s.p,{children:["Employing a token gateway compiles a standard token gateway message and relays it to the ",(0,r.jsx)(s.code,{children:"CrossDomainMessenger"}),"."]}),"\n",(0,r.jsx)(s.h3,{id:"passing-the-message-through-the-crossdomainmessenger",children:"Passing the Message Through the CrossDomainMessenger"}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.code,{children:"CrossDomainMessenger"})," serves as the core unit of cross-layer communication,\nwith corresponding messenger contracts on both Layer 1 and Layer 2."]}),"\n",(0,r.jsx)(s.p,{children:"For a deposit, the L1 messenger sends a message to the L2 messenger, akin to a contract call on Layer 1, which means custom messages (contract interactions) can be constructed to perform various types of cross-layer interactions."}),"\n",(0,r.jsx)(s.h3,{id:"executing-the-message-on-layer-2",children:"Executing the Message on Layer 2"}),"\n",(0,r.jsxs)(s.p,{children:["The cross-domain message is delivered to the ",(0,r.jsx)(s.code,{children:"L1MessageQueueWithGasPriceOracle"}),", which then triggers an event called ",(0,r.jsx)(s.code,{children:"QueueTransaction"}),"."]}),"\n",(0,r.jsx)(s.p,{children:"The Sequencer will monitor this event and include a Layer 2 transaction in its next block."}),"\n",(0,r.jsx)(s.h3,{id:"how-to-make-sure-sequencer-doesnt-fake-a-deposit-transaction",children:"How to make sure Sequencer doesn't fake a deposit transaction?"}),"\n",(0,r.jsx)(s.p,{children:"Sequencers may have the motivation to forge a non-existent deposit transaction, such as minting a large amount of Layer 2 tokens and transferring these to an address they own."}),"\n",(0,r.jsx)(s.p,{children:"Morph prevents these risks with two measures:"}),"\n",(0,r.jsx)(s.p,{children:"Due to Morph\u2019s decentralized Sequencer architecture, forging transactions would require control of at least two-thirds of the Sequencers, a challenging feat."}),"\n",(0,r.jsx)(s.p,{children:"Morph's optimistic zkEVM framework allows challengers to detect such malicious behavior and initiate challenges to correct the misconduct."}),"\n",(0,r.jsx)(s.p,{children:"A Layer 2 executor, holding the cross-layer message, interacts with the L2 messenger to execute the message, which may include transferring L2 ETH or ERC20 tokens to the recipient."}),"\n",(0,r.jsx)(s.h3,{id:"finalizing-the-deposit-message",children:"Finalizing the Deposit Message"}),"\n",(0,r.jsx)(s.p,{children:"The completion of the deposit process involves more than just executing the request on Layer 2. There is a possibility that the Layer 2 execution and its corresponding state update could be reverted due to incorrect batch data being identified through the challenge process."}),"\n",(0,r.jsx)(s.p,{children:"Therefore, a deposit request is only considered complete once the corresponding batch of the deposit execution transaction is finalized."}),"\n",(0,r.jsx)(s.p,{children:"Typically, this follows a simple workflow:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"The deposit execution transactions are compiled into a batch and submitted to Layer 1 by batch submitters."}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Following the challenge period, valid batches are finalized by subsequent batch submissions using ",(0,r.jsx)(s.code,{children:"rollup.commitBatch"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["During finalization, the ",(0,r.jsx)(s.code,{children:"L1MessageQueueAndGasPriceOracle"})," removes(pop) the deposit message from the queue, marking the completion of the deposit process."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"withdraw-l2---l1-message",children:"Withdraw (L2 -> L1 message)"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.img,{alt:"Withdraw Process",src:t(7866).A+"",width:"1420",height:"1772"})}),"\n",(0,r.jsx)(s.h3,{id:"finalizing-a-withdrawal",children:"Finalizing a Withdrawal"}),"\n",(0,r.jsx)(s.p,{children:"Unlike Deposits, a withdrawal request must undergo 2 processes for execution:"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"Prove that a withdraw request actually happened on Layer 2 by verifying a Merkle tree proof against the withdrawal tree root committed by sequencers."}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"Wait for the challenge period to end and finalize the withdraw tree root, addressing the risk of sequencer submitting incorrect batch data, including the withdraw tree root."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.p,{children:["Typically, these 2 processes happen at the same time. Once the withdraw tree root is finalized, users can call the ",(0,r.jsx)(s.code,{children:"proveAndRelayMessage"})," method within the ",(0,r.jsx)(s.code,{children:"L1CrossDomainMessenger"})," contract to execute the withdrawal message."]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-solidity",children:"function proveAndRelayMessage(\n address _from,\n address _to,\n uint256 _value,\n uint256 _nonce,\n bytes memory _message,\n bytes32[32] calldata _withdrawalProof,\n bytes32 _withdrawalRoot\n )\n\n"})}),"\n",(0,r.jsx)(s.p,{children:"This function serves two primary purposes:"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsx)(s.li,{children:"It checks if the withdraw tree root associated with this message has been finalized through the rollup contract."}),"\n",(0,r.jsx)(s.li,{children:"It verifies whether the withdraw request actually occurred by validating the provided Merkle proof."}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Upon successful completion of both processes, this method will execute the corresponding action, such as releasing the user's ETH on Layer 1 for a standard ETH withdrawal request."}),"\n",(0,r.jsx)(s.h3,{id:"understanding-the-withdraw-tree",children:"Understanding the Withdraw Tree"}),"\n",(0,r.jsx)(s.p,{children:"Withdrawal actions involve interacting with L1 assets/contracts as a result of a Layer 2 transaction. Consequently, it\u2019s imperative to verify the existence of a Layer 2 transaction that triggers a withdrawal request, in a manner that is verifiable on Layer 1."}),"\n",(0,r.jsx)(s.p,{children:"To achieve this, we introduce a structure known as a Withdraw Tree, which records every L2 withdrawal transaction within a Merkle tree. Thus, a Merkle tree's properties can be leveraged to confirm a withdrawal request\u2019s occurrence."}),"\n",(0,r.jsx)(s.p,{children:"The term Withdraw Tree refers to an append-only Sparse Merkle Tree (SMT) with leaf nodes that capture information on assets being transferred out of the network.\nEach leaf in the Withdraw Tree, known as a Withdraw leaf, falls into two categories: type 0 for recording asset(s) information and type 1 for recording messaging information."}),"\n",(0,r.jsx)(s.p,{children:"A withdraw leaf, in particular, is a Keccak256 hash of the ABI encoded packed structure with cross domain message."}),"\n",(0,r.jsx)(s.p,{children:"The Withdraw Tree is instrumental in cataloging withdrawal transactions and ascertaining the legitimacy of withdrawal requests."}),"\n",(0,r.jsx)(s.p,{children:"Morph has pre-deployed a Simple Merkle Tree contract dedicated to constructing the Layer 2 withdraw tree."}),"\n",(0,r.jsx)(s.p,{children:"This tree incorporates three methods:"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"getTreeroot"})," - Retrieves the current tree's root hash."]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"appendMessageHash"})," - Appends a new leaf node to the tree."]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"verifyMerkleProof"})," - Verifies if a leaf node exists in the tree, indicating the validity of the bridge request it represents."]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"understanding-the-challenge-period--batch-finalization",children:"Understanding the Challenge Period & Batch Finalization"}),"\n",(0,r.jsx)(s.p,{children:"The Optimistic zkEVM architecture mandates that each L2 transaction be submitted to Layer 1 and undergo a challenge period before finalization."}),"\n",(0,r.jsx)(s.p,{children:"This process is vital to validate the Layer 2 state, eventually validating the authenticity of the withdraw request."}),"\n",(0,r.jsx)(s.p,{children:"The withdraw tree root, integral for withdrawal request verification, is also submitted by sequencers once the challenge period, batches, and states have been finalized."}),"\n",(0,r.jsx)(s.h2,{id:"cross-layer-bridge-errors",children:"Cross-layer (Bridge) Errors"}),"\n",(0,r.jsx)(s.p,{children:"With the design of cross-layer bridges, the cross-layer message for deposits needs to be executed and have its Layer 2 states updated. Sending a cross-chain request successfully does not guarantee its successful execution on L2."}),"\n",(0,r.jsx)(s.p,{children:"Prior to this, there is a possibility of the cross-layer message failing during execution on Layer 2.\nThis section outlines the potential scenarios and solutions for handling failed cross-layer deposit messages."}),"\n",(0,r.jsx)(s.h3,{id:"cross-layer-bridge-failure-scenarios",children:"Cross-layer (Bridge) Failure Scenarios:"}),"\n",(0,r.jsx)(s.p,{children:"Two primary types of failures can occur in cross-layer (bridge) communications:"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"Gas Failure: Cross-layer messages sent from the L1 to the L2 might fail during execution on the L2 due to limitations in gasLimit or code logic."}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"Skipped Message: Some data executions may trigger overflows in the circuits of L2 nodes, leading to the omission or skipping of cross-layer messages."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"handling-cross-layer-bridge-failures",children:"Handling Cross-layer (Bridge) Failures:"}),"\n",(0,r.jsx)(s.p,{children:"For Gas Failures:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["When the ",(0,r.jsx)(s.code,{children:"L1CrossDomainMessenger"})," contract on L1 dispatches a cross-layer message, it records the corresponding message hash but does not incorporate the gasLimit in this record. Post-execution on L2, the ",(0,r.jsx)(s.code,{children:"L2CrossDomainMessenger"})," performs an equivalent calculation, storing the contract call result in ",(0,r.jsx)(s.code,{children:"mapping(isL1MessageExecuted)"}),". This measure prevents multiple executions of the same message and facilitates the adjustment of gasLimit parameters for replaying failed messages."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Replay Message: If gasLimit is insufficient, causing a failed execution on the L2, a new cross-layer message with a revised gasLimit parameter can be sent by calling ",(0,r.jsx)(s.code,{children:"L1CrossDomainMessenger.replayMessage"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"For Skipped Messages:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Messages dropped due to potential circuit overflow on the L2 are skipped and not executed. Custom cross-layer calling contracts need to implement the\n",(0,r.jsx)(s.code,{children:"onDropMessage"})," method to consider such cases."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"The gateway contract includes the onDropMessage method, designed to refund the initiator of the cross-layer message."}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Calling ",(0,r.jsx)(s.code,{children:"L1CrossDomainMessenger.dropMessage"})," discards the cross-layer message and triggers the onDropMessage method in the originating contract, passing the transaction's value and message as msg.value and method parameters, accordingly."]}),"\n"]}),"\n"]})]})}function l(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},2320:(e,s,t)=>{t.d(s,{A:()=>r});const r=t.p+"assets/images/deposit-cf5de32f737bb412d4f2e8043a984287.png"},7866:(e,s,t)=>{t.d(s,{A:()=>r});const r=t.p+"assets/images/withdraw-e4ea40dac68ef9cc3ee73a43eb46a3b2.png"},1582:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>o});var r=t(758);const n={},i=r.createContext(n);function a(e){const s=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),r.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5acb1cf6.9f129d6c.js b/build/assets/js/5acb1cf6.9f129d6c.js deleted file mode 100644 index 5edfe033b..000000000 --- a/build/assets/js/5acb1cf6.9f129d6c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3210],{3593:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>i,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var n=t(6070),d=t(1582);const o={},s="Interface: BridgeAdapterData",a={id:"build-on-morph/sdk/interfaces/BridgeAdapterData",title:"BridgeAdapterData",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/BridgeAdapterData",permalink:"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.md",tags:[],version:"current",frontMatter:{}},i={},c=[{value:"Indexable",id:"indexable",level:2}];function l(e){const r={a:"a",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,d.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / BridgeAdapterData"]}),"\n",(0,n.jsx)(r.h1,{id:"interface-bridgeadapterdata",children:"Interface: BridgeAdapterData"}),"\n",(0,n.jsx)(r.p,{children:"Something that looks like the list of custom bridges."}),"\n",(0,n.jsx)(r.h2,{id:"indexable",children:"Indexable"}),"\n",(0,n.jsxs)(r.p,{children:["[",(0,n.jsx)(r.code,{children:"name"}),": ",(0,n.jsx)(r.code,{children:"string"}),"]: ",(0,n.jsx)(r.code,{children:"object"})]})]})}function h(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1582:(e,r,t)=>{t.d(r,{R:()=>s,x:()=>a});var n=t(758);const d={},o=n.createContext(d);function s(e){const r=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:s(e.components),n.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5bc5b9ce.f3bc9251.js b/build/assets/js/5bc5b9ce.f3bc9251.js deleted file mode 100644 index f6853e2af..000000000 --- a/build/assets/js/5bc5b9ce.f3bc9251.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3457],{9010:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>c,frontMatter:()=>i,metadata:()=>d,toc:()=>h});var o=t(6070),r=t(1582);const i={title:"Bridge between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,d={id:"build-on-morph/build-on-morph/bridge-between-morph-and-ethereum",title:"Bridge between Morph and Ethereum",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md",sourceDirName:"build-on-morph/build-on-morph",slug:"/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum",permalink:"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Bridge between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Verify Your Smart Contracts",permalink:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts"},next:{title:"Use SDK to interact with Morph",permalink:"/docs/build-on-morph/sdk/globals"}},a={},h=[{value:"Deposit ETH and ERC20 Tokens from L1\u200b",id:"deposit-eth-and-erc20-tokens-from-l1",level:2},{value:"Withdraw ETH and ERC20 tokens from L2",id:"withdraw-eth-and-erc20-tokens-from-l2",level:2},{value:"Finalize your Withdrawal",id:"finalize-your-withdrawal",level:3},{value:"Add your Token to the Official Bridge",id:"add-your-token-to-the-official-bridge",level:2},{value:"Add Tokens to the gateway through Morph Bridge Frontend",id:"add-tokens-to-the-gateway-through-morph-bridge-frontend",level:3},{value:"Add token support to the bridge frontend",id:"add-token-support-to-the-bridge-frontend",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Please first review our documentation on ",(0,o.jsx)(n.a,{href:"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum",children:"Communication Between Morph and Ethereum"})," for some required fundamental knowledge."]}),"\n",(0,o.jsx)(n.h2,{id:"deposit-eth-and-erc20-tokens-from-l1",children:"Deposit ETH and ERC20 Tokens from L1\u200b"}),"\n",(0,o.jsx)(n.p,{children:"The Gateway Router allows ETH and ERC20 token bridging from L1 to L2 using the depositETH and depositERC20 functions respectively. It is a permissionless bridge deployed on L1. Notice that ERC20 tokens will have a different address on L2, you can use the getL2ERC20Address function to query the new address."}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"depositETH"})})," and ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"depositERC20"})})," are payable functions, the amount of ETH sent to these functions will be used\nto pay for L2 fees. If the amount is not enough, the transaction will not be sent. All excess ETH will be sent back to\nthe sender. ",(0,o.jsx)(n.code,{children:"0.00001 ETH"})," should be more than enough to process a token deposit."]})}),"\n",(0,o.jsxs)(n.p,{children:["When bridging ERC20 tokens, you don\u2019t have to worry about selecting the right Gateway. This is because the ",(0,o.jsx)(n.code,{children:"L1GatewayRouter"})," will choose the correct underlying entry point to send the message:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.strong,{children:[(0,o.jsx)(n.code,{children:"L1StandardERC20Gateway"}),":"]})," This Gateway permits any ERC20 deposit and will be selected as the default by the L1GatewayRouter for an ERC20 token that doesn\u2019t need custom logic on L2. On the very first token bridging, a new token will be created on L2 that implements the MorphStandardERC20. To bridge a token, call the ",(0,o.jsx)(n.code,{children:"depositERC20"})," function on the ",(0,o.jsx)(n.code,{children:"L1GatewayRouter"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["All Gateway contracts will form the message and send it to the ",(0,o.jsx)(n.code,{children:"L1CrossDomainMessenger"})," which can send arbitrary messages to L2. The ",(0,o.jsx)(n.code,{children:"L1CrossDomainMessenger"})," passes the message to the ",(0,o.jsx)(n.code,{children:"L1MessageQueueWithGasPriceOracle"}),". Any user can send messages directly to the Messenger to execute arbitrary data on L2."]}),"\n",(0,o.jsx)(n.p,{children:"This means they can execute any function on L2 from a transaction made on L1 via the bridge. Although an application could directly pass messages to existing token contracts, the Gateway abstracts the specifics and simplifies making transfers and calls."}),"\n",(0,o.jsxs)(n.p,{children:["When a new block gets created on L1, the Sequencer will detect the message on the ",(0,o.jsx)(n.code,{children:"L1MessageQueue"}),", and submit the transaction to the L2 via the L2 node. Finally, the L2 node will pass the transaction to the ",(0,o.jsx)(n.code,{children:"L2CrossDomainMessenger"})," contract for execution on L2."]}),"\n",(0,o.jsx)(n.h2,{id:"withdraw-eth-and-erc20-tokens-from-l2",children:"Withdraw ETH and ERC20 tokens from L2"}),"\n",(0,o.jsxs)(n.p,{children:["The L2 Gateway is very similar to the L1 Gateway. We can withdraw ETH and ERC20 tokens back to L1 using the ",(0,o.jsx)(n.code,{children:"withdrawETH"})," and ",(0,o.jsx)(n.code,{children:"withdrawERC20"})," functions. The contract address is deployed on L2. We use the ",(0,o.jsx)(n.code,{children:"getL1ERC20Address"})," to retrieve the token address on L1."]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"withdrawETH"})})," and ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"withdrawERC20"})})," are payable functions, and the amount of ETH sent to these functions will be used to pay for L1 fees. If the amount is not enough, the transaction will not be sent. All excess ETH will be sent back to the sender. Fees will depend on L1 activity but ",(0,o.jsx)(n.code,{children:"0.005 ETH"})," should be enough to process a token withdrawal."]})}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Ensure transactions won\u2019t revert on L1 while sending from L2"})," There is no way to recover bridged ETH, tokens, or NFTs if your transaction reverts on L1. All assets are burned on Morph when the transaction is sent, and it's impossible to mint them again."]})}),"\n",(0,o.jsx)(n.h3,{id:"finalize-your-withdrawal",children:"Finalize your Withdrawal"}),"\n",(0,o.jsx)(n.p,{children:"Besides starting a withdrawal request on Morph, there is one additional step to do. You need to finalize your withdrawal on Ethereum."}),"\n",(0,o.jsxs)(n.p,{children:["This is because of Morph's optimistic zkEVM design, you can read the details ",(0,o.jsx)(n.a,{href:"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum",children:"here"}),":"]}),"\n",(0,o.jsx)(n.p,{children:"To do this, first you need to make sure:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["The batch containing the withdraw transactions has passed the challenge period and is marked as finalized (meaning in the ",(0,o.jsx)(n.code,{children:"Rollup"}),"contract, ",(0,o.jsx)(n.strong,{children:"withdrawalRoots[batchDataStore[_batchIndex].withdrawalRoot] = true"}),")."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Once confirmed, you can call our backend services interface:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.code,{children:"/getProof?nonce=withdraw.index"})}),"\n",(0,o.jsx)(n.p,{children:"to obtain all the information you need to finalize your withdraw, which include:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Index: The position of the withdrawal transaction in the withdraw tree, or rank of your transaction among all the L2->L1 transactions."}),"\n",(0,o.jsx)(n.li,{children:"Leaf: The hash value of your withdraw transaction that stored in the tree."}),"\n",(0,o.jsx)(n.li,{children:"Proof: The merkel proof of your withdraw transaction."}),"\n",(0,o.jsx)(n.li,{children:"Root: The withdraw tree root."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["you need to use the ",(0,o.jsx)(n.code,{children:"proveAndRelayMessage"})," function of the ",(0,o.jsx)(n.code,{children:"L1CrossDomainMessenger"})," contract."]}),"\n",(0,o.jsxs)(n.p,{children:["After obtaining the above information, the finalization of the withdraw operation can be carried out by calling ",(0,o.jsx)(n.code,{children:"L1CrossDomainMessenger.proveAndRelayMessage()"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"The required parameters are"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:" address _from, \n address _to, \n uint256 _value, \n uint256 _nonce, \n bytes memory _message, \n bytes32[32] calldata _withdrawalProof, \n bytes32 _withdrawalRoot\n"})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"_from"}),", ",(0,o.jsx)(n.code,{children:"_to"}),", ",(0,o.jsx)(n.code,{children:"_value"}),", ",(0,o.jsx)(n.code,{children:"_nonce"}),", and ",(0,o.jsx)(n.code,{children:"_message"})," are the original content of the withdraw transaction, which can be obtained from the Event ",(0,o.jsx)(n.code,{children:"SentMessage"})," included in the transaction initiated by the L2 layer withdraw."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"_withdrawalProof"})," and ",(0,o.jsx)(n.code,{children:"_withdrawalRoot"})," can be obtained from the aforementioned backend API interface."]}),"\n",(0,o.jsx)(n.admonition,{title:"Use the SDK",type:"tip",children:(0,o.jsxs)(n.p,{children:["You can also try our SDK to interact with the bridge system by referring to our ",(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"SDK Doc"}),"."]})}),"\n",(0,o.jsx)(n.h2,{id:"add-your-token-to-the-official-bridge",children:"Add your Token to the Official Bridge"}),"\n",(0,o.jsx)(n.p,{children:"Currently, our canonical bridge only supports certain pre-defined tokens to be bridged. If you want to bridge your own tokens, you need to manually add the token, and here is how to do it."}),"\n",(0,o.jsx)(n.h3,{id:"add-tokens-to-the-gateway-through-morph-bridge-frontend",children:"Add Tokens to the gateway through Morph Bridge Frontend"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way to support your token is to manually add it on our ",(0,o.jsx)(n.a,{href:"https://bridge-holesky.morphl2.io/",children:"canonical bridge frontend"}),", you can simply do it with the following steps:"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Click the token selection button on Morph Holesky Bridge"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"tokenlist1",src:t(2334).A+"",width:"2826",height:"1722"})}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsx)(n.li,{children:"Input & Confirm your desire Ethereum token contract address under the custom token section"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"tokenlist2",src:t(165).A+"",width:"2838",height:"1750"})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsx)(n.li,{children:"Get the Layer 2 token contract address and confirm it."}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"tokenlist3",src:t(4252).A+"",width:"2852",height:"1752"})}),"\n",(0,o.jsxs)(n.ol,{start:"4",children:["\n",(0,o.jsx)(n.li,{children:"Now it is supported and you and other users can start to bridge it!"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"tokenlist4",src:t(1651).A+"",width:"2870",height:"1758"})}),"\n",(0,o.jsx)(n.h3,{id:"add-token-support-to-the-bridge-frontend",children:"Add token support to the bridge frontend"}),"\n",(0,o.jsx)(n.p,{children:"By adding your token to the gateway, you and other users can bridge the token by inputting the token address.You need to raise a PR to our bridge repo if you want your token shown on the bridge frontend token list."}),"\n",(0,o.jsxs)(n.p,{children:["You can find how to do it in the ",(0,o.jsx)(n.a,{href:"https://github.com/morph-l2/morph-list",children:"morph list repo"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Keep in mind that:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"You need to add both your L1 & L2 token to the list."}),"\n",(0,o.jsx)(n.li,{children:"The L2 token contract address is obtained by adding your tokens through Morph bridge frontend."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Here is an ",(0,o.jsx)(n.a,{href:"https://github.com/morph-l2/morph-list/pull/27/commits/228481db6b8d69b8f40e7369dae62722aa570eb7",children:"example PR commit"})," for your reference."]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},2334:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/tokenlist1-ec52b3b1b3f60e802cf106df55eb4090.png"},165:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/tokenlist2-0fbc5cfcd77ce1b4d2306b9afd179a98.png"},4252:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/tokenlist3-28ed57c8d69932cab63386f505f5c970.png"},1651:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/tokenlist4-0c123dddfae82f9b16ef1bedc26e5476.png"},1582:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>d});var o=t(758);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5c242b2e.a21dcfac.js b/build/assets/js/5c242b2e.a21dcfac.js deleted file mode 100644 index 7f1bd11c0..000000000 --- a/build/assets/js/5c242b2e.a21dcfac.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1394],{7216:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>l,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>a});var n=t(6070),s=t(1582);const r={title:"Account Abstraction",lang:"en-US"},c=void 0,i={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction",title:"Account Abstraction",description:"Biconomy",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/3-account-abstraction.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/3-account-abstraction.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Account Abstraction",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"RPC Services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services"},next:{title:"Blockchain Indexing Services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services"}},l={},a=[{value:"Biconomy",id:"biconomy",level:3}];function u(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h3,{id:"biconomy",children:"Biconomy"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"biconomy",src:t(1078).A+"",width:"2880",height:"1476"})}),"\n",(0,n.jsx)(o.p,{children:"The Biconomy SDK is an Account Abstraction toolkit that enables the simplest UX on your dApp, wallet, or appchain. Built on top of ERC 4337, Biconomy offer a full-stack solution for tapping into the power of our Smart Accounts Platform, Paymasters, and Bundlers."}),"\n",(0,n.jsx)(o.p,{children:"Biconomy is live on Morph Mainnet."}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.a,{href:"https://docs.biconomy.io/smartAccountsV2/quickstart-react",children:"Integration Documentation"})})]})}function d(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1078:(e,o,t)=>{t.d(o,{A:()=>n});const n=t.p+"assets/images/biconomy-837b6cf4a7c94f3bf1da46a565cc25e6.png"},1582:(e,o,t)=>{t.d(o,{R:()=>c,x:()=>i});var n=t(758);const s={},r=n.createContext(s);function c(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function i(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5d313dc3.562fab67.js b/build/assets/js/5d313dc3.562fab67.js deleted file mode 100644 index f7c6576ca..000000000 --- a/build/assets/js/5d313dc3.562fab67.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3147],{365:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>a,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>l});var t=n(6070),r=n(1582);const s={title:"Prune State",lang:"en-US"},i=void 0,d={id:"build-on-morph/developer-resources/node-operation/prune-state",title:"Prune State",description:"The performance of a full node will degrade when the storage size reaches a high volume. We suggest that the fullnode always keep light storage by pruning the storage.",source:"@site/docs/build-on-morph/developer-resources/node-operation/1-prune-state.md",sourceDirName:"build-on-morph/developer-resources/node-operation",slug:"/build-on-morph/developer-resources/node-operation/prune-state",permalink:"/docs/build-on-morph/developer-resources/node-operation/prune-state",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/1-prune-state.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Prune State",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Upgrade node running on the host",permalink:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host"},next:{title:"Contract Addresses",permalink:"/docs/build-on-morph/developer-resources/contracts"}},a={},l=[{value:"How to Prune",id:"how-to-prune",level:3}];function u(e){const o={admonition:"admonition",code:"code",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.p,{children:"The performance of a full node will degrade when the storage size reaches a high volume. We suggest that the fullnode always keep light storage by pruning the storage."}),"\n",(0,t.jsx)(o.h3,{id:"how-to-prune",children:"How to Prune"}),"\n",(0,t.jsxs)(o.ol,{children:["\n",(0,t.jsx)(o.li,{children:"Stop the node, including the consensus client(morphnode) and the execution client(geth)"}),"\n",(0,t.jsxs)(o.li,{children:["Run ",(0,t.jsx)(o.code,{children:'nohup geth snapshot prune-zk-state --datadir "$GETH_DB_DIR" > prune.log &'}),". It will take 5~7 hours to finish."]}),"\n",(0,t.jsx)(o.li,{children:"Start the node once it is done."}),"\n"]}),"\n",(0,t.jsxs)(o.p,{children:["The hardware is important, ",(0,t.jsx)(o.strong,{children:"make sure the SSD meets: solid-state drive(SSD), 8k IOPS, 500 MB/S throughput, read latency < 1ms."})]}),"\n",(0,t.jsx)(o.admonition,{type:"note",children:(0,t.jsx)(o.p,{children:"To prune a Geth node at least 200 GB of free disk space is recommended. This means pruning cannot be used to save a hard drive that has been completely filled. A good rule of thumb is to prune before the node fills ~80% of the available disk space."})})]})}function h(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1582:(e,o,n)=>{n.d(o,{R:()=>i,x:()=>d});var t=n(758);const r={},s=t.createContext(r);function i(e){const o=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/5e95c892.9856b0c7.js b/build/assets/js/5e95c892.9856b0c7.js deleted file mode 100644 index 6e1570a5f..000000000 --- a/build/assets/js/5e95c892.9856b0c7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9647],{6130:(e,r,s)=>{s.r(r),s.d(r,{default:()=>n});s(758);var c=s(3526),u=s(926),a=s(7998),o=s(1977),d=s(8437),h=s(6070);function n(e){return(0,h.jsx)(u.e3,{className:(0,c.A)(a.G.wrapper.docsPages),children:(0,h.jsx)(d.A,{children:(0,o.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/build/assets/js/60479fa4.69d66973.js b/build/assets/js/60479fa4.69d66973.js deleted file mode 100644 index d96f833c9..000000000 --- a/build/assets/js/60479fa4.69d66973.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[44],{3264:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>l,contentTitle:()=>c,default:()=>d,frontMatter:()=>n,metadata:()=>s,toc:()=>p});var t=r(6070),i=r(1582);const n={title:"Introduction",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},c=void 0,s={id:"how-morph-works/intro",title:"Introduction",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/1-intro.md",sourceDirName:"how-morph-works",slug:"/how-morph-works/intro",permalink:"/docs/how-morph-works/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/1-intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Introduction",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}},l={},p=[];function h(e){const o={li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.p,{children:"This section provides an overview of Morph\u2019s protocol architecture, including:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"The Decentralized Sequencer Network"}),"\n",(0,t.jsx)(o.li,{children:"Optimistic zkEVM & Responsive Validity Proof (RVP)"}),"\n",(0,t.jsx)(o.li,{children:"Morph's Modular Architecture"}),"\n",(0,t.jsx)(o.li,{children:"General Protocol Design"}),"\n"]})]})}function d(e={}){const{wrapper:o}={...(0,i.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},1582:(e,o,r)=>{r.d(o,{R:()=>c,x:()=>s});var t=r(758);const i={},n=t.createContext(i);function c(e){const o=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),t.createElement(n.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/618914bf.ad5ace09.js b/build/assets/js/618914bf.ad5ace09.js deleted file mode 100644 index 508c594a5..000000000 --- a/build/assets/js/618914bf.ad5ace09.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9266],{7333:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>s,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>h});var r=t(6070),n=t(1582);const i={title:"Welcome to Morph!",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,c={id:"quick-start/welcome-to-morph",title:"Welcome to Morph!",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/quick-start/1-welcome-to-morph.md",sourceDirName:"quick-start",slug:"/quick-start/welcome-to-morph",permalink:"/docs/quick-start/welcome-to-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/quick-start/1-welcome-to-morph.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Welcome to Morph!",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}},a={},h=[{value:"Looking for help",id:"looking-for-help",level:3}];function l(e){const o={a:"a",admonition:"admonition",h3:"h3",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.p,{children:"Thank you for choosing Morph! We're excited to have you onboard with the first optimistic ZK-EVM scaling solution for Ethereum. Morph is designed to meet a variety of needs, and you can easily navigate to the most relevant information for your interests."}),"\n",(0,r.jsx)(o.admonition,{type:"tip",children:(0,r.jsx)(o.p,{children:"Mainnet Beta Stage: Morph is currently in the mainnet beta phase, offering a brand-new platform for exploration. We encourage you to delve into its features and capabilities."})}),"\n",(0,r.jsxs)(o.p,{children:[(0,r.jsx)(o.strong,{children:"Web3 Enthusiasts"}),": If you are a web3 enthusiast who wants to try out the Morph, you can start with how to ",(0,r.jsx)(o.a,{href:"/docs/quick-start/wallet-setup",children:"connect to Morph"}),"."]}),"\n",(0,r.jsxs)(o.p,{children:[(0,r.jsx)(o.strong,{children:"Researchers"}),": For those seeking in-depth understanding of Morph's unique offerings compared to other solutions, the ",(0,r.jsx)(o.a,{href:"/docs/how-morph-works/intro",children:"how Morph works"})," section is your go-to resource for comprehensive details."]}),"\n",(0,r.jsxs)(o.p,{children:[(0,r.jsx)(o.strong,{children:"Developers"}),": As a skilled developer ready to build on Morph, the ",(0,r.jsx)(o.a,{href:"/docs/build-on-morph/intro",children:"developer documentation"})," provides all necessary resources and guides to kickstart your development journey."]}),"\n",(0,r.jsx)(o.h3,{id:"looking-for-help",children:"Looking for help"}),"\n",(0,r.jsxs)(o.p,{children:["Having issues while developing or exploring? Join our ",(0,r.jsx)(o.a,{href:"https://discord.com/invite/MorphLayer",children:"discord channel"})," and talk to us in the right channel. We would love to hear your thoughts or feedback on how we can improve your experience, too."]})]})}function p(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1582:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>c});var r=t(758);const n={},i=r.createContext(n);function s(e){const o=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function c(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/61b1ff91.01109030.js b/build/assets/js/61b1ff91.01109030.js deleted file mode 100644 index 5385533b8..000000000 --- a/build/assets/js/61b1ff91.01109030.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8525],{3830:(s,e,i)=>{i.r(e),i.d(e,{assets:()=>h,contentTitle:()=>o,default:()=>t,frontMatter:()=>d,metadata:()=>l,toc:()=>c});var r=i(6070),n=i(1582);const d={},o="@morph-l2/sdk",l={id:"build-on-morph/sdk/intro",title:"intro",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/intro.md",sourceDirName:"build-on-morph/sdk",slug:"/build-on-morph/sdk/intro",permalink:"/docs/build-on-morph/sdk/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/intro.md",tags:[],version:"current",frontMatter:{}},h={},c=[{value:"Enumerations",id:"enumerations",level:2},{value:"Classes",id:"classes",level:2},{value:"Interfaces",id:"interfaces",level:2},{value:"Type Aliases",id:"type-aliases",level:2},{value:"Variables",id:"variables",level:2},{value:"Functions",id:"functions",level:2}];function a(s){const e={a:"a",h1:"h1",h2:"h2",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...s.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(e.hr,{}),"\n",(0,r.jsx)(e.h1,{id:"morph-l2sdk",children:"@morph-l2/sdk"}),"\n",(0,r.jsx)(e.h2,{id:"enumerations",children:"Enumerations"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/L1ChainID",children:"L1ChainID"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/L1RpcUrls",children:"L1RpcUrls"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/L2ChainID",children:"L2ChainID"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/L2RpcUrls",children:"L2RpcUrls"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:"MessageDirection"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus",children:"MessageReceiptStatus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageStatus",children:"MessageStatus"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"classes",children:"Classes"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:"CrossChainMessenger"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",children:"ETHBridgeAdapter"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:"StandardBridgeAdapter"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"interfaces",children:"Interfaces"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData",children:"BridgeAdapterData"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",children:"BridgeAdapters"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:"CoreCrossChainMessage"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:"CrossChainMessage"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",children:"CrossChainMessageRequest"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:"IActionOptions"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:"IBridgeAdapter"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/L2Block",children:"L2Block"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions",children:"L2BlockWithTransactions"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/L2Transaction",children:"L2Transaction"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",children:"MessageReceipt"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContracts",children:"OEContracts"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",children:"OEContractsLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEL1Contracts",children:"OEL1Contracts"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEL2Contracts",children:"OEL2Contracts"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal",children:"ProvenWithdrawal"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRoot",children:"StateRoot"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRootBatch",children:"StateRootBatch"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader",children:"StateRootBatchHeader"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:"TokenBridgeMessage"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof",children:"WithdrawMessageProof"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/WithdrawalEntry",children:"WithdrawalEntry"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"type-aliases",children:"Type Aliases"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:"AddressLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",children:"DeepPartial"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/L1Provider",children:"L1Provider"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/L2Provider",children:"L2Provider"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",children:"LowLevelMessage"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:"MessageLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike",children:"MessageRequestLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:"NumberLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike",children:"OEL1ContractsLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike",children:"OEL2ContractsLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:"ProviderLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerLike",children:"SignerLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",children:"SignerOrProviderLike"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",children:"TransactionLike"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"variables",children:"Variables"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA",children:"BRIDGE_ADAPTER_DATA"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES",children:"CHAIN_BLOCK_TIMES"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES",children:"CONTRACT_ADDRESSES"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES",children:"DEFAULT_L1_CONTRACT_ADDRESSES"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES",children:"DEFAULT_L2_CONTRACT_ADDRESSES"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS",children:"DEPOSIT_CONFIRMATION_BLOCKS"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/l1BridgeName",children:"l1BridgeName"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName",children:"l1CrossDomainMessengerName"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/l2BridgeName",children:"l2BridgeName"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName",children:"l2CrossDomainMessengerName"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"functions",children:"Functions"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/asL2Provider",children:"asL2Provider"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/estimateL1Gas",children:"estimateL1Gas"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/estimateL1GasCost",children:"estimateL1GasCost"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/estimateL2GasCost",children:"estimateL2GasCost"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/estimateTotalGasCost",children:"estimateTotalGasCost"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/getAllOEContracts",children:"getAllOEContracts"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/getBridgeAdapters",children:"getBridgeAdapters"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/getL1GasPrice",children:"getL1GasPrice"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/getOEContract",children:"getOEContract"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2",children:"hashLowLevelMessageV2"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/hashMessageHash",children:"hashMessageHash"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/isL2Provider",children:"isL2Provider"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit",children:"migratedWithdrawalGasLimit"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/omit",children:"omit"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/toAddress",children:"toAddress"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/toBigNumber",children:"toBigNumber"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/toNumber",children:"toNumber"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/toProvider",children:"toProvider"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/toSignerOrProvider",children:"toSignerOrProvider"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/functions/toTransactionHash",children:"toTransactionHash"})}),"\n"]})]})}function t(s={}){const{wrapper:e}={...(0,n.R)(),...s.components};return e?(0,r.jsx)(e,{...s,children:(0,r.jsx)(a,{...s})}):a(s)}},1582:(s,e,i)=>{i.d(e,{R:()=>o,x:()=>l});var r=i(758);const n={},d=r.createContext(n);function o(s){const e=r.useContext(d);return r.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function l(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(n):s.components||n:o(s.components),r.createElement(d.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/68efb262.36868b50.js b/build/assets/js/68efb262.36868b50.js deleted file mode 100644 index 88ec8d3fe..000000000 --- a/build/assets/js/68efb262.36868b50.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8744],{1966:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/build/assets/js/69301e8b.f3c5089c.js b/build/assets/js/69301e8b.f3c5089c.js deleted file mode 100644 index c70d94793..000000000 --- a/build/assets/js/69301e8b.f3c5089c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6913],{6121:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>l,default:()=>u,frontMatter:()=>c,metadata:()=>t,toc:()=>d});var r=s(6070),o=s(1582);const c={},l="Enumeration: L1RpcUrls",t={id:"build-on-morph/sdk/enumerations/L1RpcUrls",title:"L1RpcUrls",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/L1RpcUrls.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/L1RpcUrls",permalink:"/docs/build-on-morph/sdk/enumerations/L1RpcUrls",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/L1RpcUrls.md",tags:[],version:"current",frontMatter:{}},i={},d=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"HOLESKY",id:"holesky",level:3},{value:"Source",id:"source",level:4},{value:"MORPH_LOCAL_DEVNET",id:"morph_local_devnet",level:3},{value:"Source",id:"source-1",level:4},{value:"SEPOLIA",id:"sepolia",level:3},{value:"Source",id:"source-2",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L1RpcUrls"]}),"\n",(0,r.jsx)(n.h1,{id:"enumeration-l1rpcurls",children:"Enumeration: L1RpcUrls"}),"\n",(0,r.jsx)(n.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,r.jsx)(n.h3,{id:"holesky",children:"HOLESKY"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"HOLESKY"}),": ",(0,r.jsx)(n.code,{children:'"https://1rpc.io/holesky"'})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:41"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"morph_local_devnet",children:"MORPH_LOCAL_DEVNET"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"MORPH_LOCAL_DEVNET"}),": ",(0,r.jsx)(n.code,{children:'"http://localhost:9545"'})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:39"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"sepolia",children:"SEPOLIA"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"SEPOLIA"}),": ",(0,r.jsx)(n.code,{children:'"https://1rpc.io/sepolia"'})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:40"})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>t});var r=s(758);const o={},c=r.createContext(o);function l(e){const n=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),r.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/6a8ddb26.a8d54b20.js b/build/assets/js/6a8ddb26.a8d54b20.js deleted file mode 100644 index c7088028f..000000000 --- a/build/assets/js/6a8ddb26.a8d54b20.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7762],{213:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>d});var o=n(6070),r=n(1582);const t={},i="Type alias: MessageRequestLike",c={id:"build-on-morph/sdk/type-aliases/MessageRequestLike",title:"MessageRequestLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/MessageRequestLike",permalink:"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.md",tags:[],version:"current",frontMatter:{}},a={},d=[{value:"Source",id:"source",level:2}];function l(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / MessageRequestLike"]}),"\n",(0,o.jsx)(s.h1,{id:"type-alias-messagerequestlike",children:"Type alias: MessageRequestLike"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"MessageRequestLike"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",children:(0,o.jsx)(s.code,{children:"CrossChainMessageRequest"})})," | ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,o.jsx)(s.code,{children:"CrossChainMessage"})})," | ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",children:(0,o.jsx)(s.code,{children:"TransactionLike"})})," | ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,o.jsx)(s.code,{children:"TokenBridgeMessage"})})]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Stuff that can be coerced into a CrossChainMessageRequest."}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/interfaces/types.ts:367"})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>c});var o=n(758);const r={},t=o.createContext(r);function i(e){const s=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/6ba36391.bdee8d58.js b/build/assets/js/6ba36391.bdee8d58.js deleted file mode 100644 index 0c02e4da9..000000000 --- a/build/assets/js/6ba36391.bdee8d58.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9720],{8256:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var t=n(6070),i=n(1582);const s={},o="Function: migratedWithdrawalGasLimit()",d={id:"build-on-morph/sdk/functions/migratedWithdrawalGasLimit",title:"migratedWithdrawalGasLimit",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/migratedWithdrawalGasLimit",permalink:"/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.md",tags:[],version:"current",frontMatter:{}},a={},c=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function l(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(r.hr,{}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / migratedWithdrawalGasLimit"]}),"\n",(0,t.jsx)(r.h1,{id:"function-migratedwithdrawalgaslimit",children:"Function: migratedWithdrawalGasLimit()"}),"\n",(0,t.jsxs)(r.blockquote,{children:["\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"migratedWithdrawalGasLimit"}),"(",(0,t.jsx)(r.code,{children:"data"}),", ",(0,t.jsx)(r.code,{children:"chainID"}),"): ",(0,t.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,t.jsx)(r.p,{children:"Compute the min gas limit for a migrated withdrawal."}),"\n",(0,t.jsx)(r.h2,{id:"parameters",children:"Parameters"}),"\n",(0,t.jsxs)(r.p,{children:["\u2022 ",(0,t.jsx)(r.strong,{children:"data"}),": ",(0,t.jsx)(r.code,{children:"string"})]}),"\n",(0,t.jsxs)(r.p,{children:["\u2022 ",(0,t.jsx)(r.strong,{children:"chainID"}),": ",(0,t.jsx)(r.code,{children:"number"})]}),"\n",(0,t.jsx)(r.h2,{id:"returns",children:"Returns"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.code,{children:"BigNumber"})}),"\n",(0,t.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,t.jsx)(r.p,{children:"src/utils/message-utils.ts:35"})]})}function h(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>d});var t=n(758);const i={},s=t.createContext(i);function o(e){const r=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),t.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/6f037fd7.be4f334b.js b/build/assets/js/6f037fd7.be4f334b.js deleted file mode 100644 index a4e03048d..000000000 --- a/build/assets/js/6f037fd7.be4f334b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8308],{3711:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>d,metadata:()=>l,toc:()=>t});var i=n(6070),s=n(1582);const d={},c="Interface: L2BlockWithTransactions",l={id:"build-on-morph/sdk/interfaces/L2BlockWithTransactions",title:"L2BlockWithTransactions",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/L2BlockWithTransactions",permalink:"/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.md",tags:[],version:"current",frontMatter:{}},o={},t=[{value:"Extends",id:"extends",level:2},{value:"Properties",id:"properties",level:2},{value:"_difficulty",id:"_difficulty",level:3},{value:"Inherited from",id:"inherited-from",level:4},{value:"Source",id:"source",level:4},{value:"baseFeePerGas?",id:"basefeepergas",level:3},{value:"Inherited from",id:"inherited-from-1",level:4},{value:"Source",id:"source-1",level:4},{value:"difficulty",id:"difficulty",level:3},{value:"Inherited from",id:"inherited-from-2",level:4},{value:"Source",id:"source-2",level:4},{value:"extraData",id:"extradata",level:3},{value:"Inherited from",id:"inherited-from-3",level:4},{value:"Source",id:"source-3",level:4},{value:"gasLimit",id:"gaslimit",level:3},{value:"Inherited from",id:"inherited-from-4",level:4},{value:"Source",id:"source-4",level:4},{value:"gasUsed",id:"gasused",level:3},{value:"Inherited from",id:"inherited-from-5",level:4},{value:"Source",id:"source-5",level:4},{value:"hash",id:"hash",level:3},{value:"Inherited from",id:"inherited-from-6",level:4},{value:"Source",id:"source-6",level:4},{value:"miner",id:"miner",level:3},{value:"Inherited from",id:"inherited-from-7",level:4},{value:"Source",id:"source-7",level:4},{value:"nonce",id:"nonce",level:3},{value:"Inherited from",id:"inherited-from-8",level:4},{value:"Source",id:"source-8",level:4},{value:"number",id:"number",level:3},{value:"Inherited from",id:"inherited-from-9",level:4},{value:"Source",id:"source-9",level:4},{value:"parentHash",id:"parenthash",level:3},{value:"Inherited from",id:"inherited-from-10",level:4},{value:"Source",id:"source-10",level:4},{value:"stateRoot",id:"stateroot",level:3},{value:"Source",id:"source-11",level:4},{value:"timestamp",id:"timestamp",level:3},{value:"Inherited from",id:"inherited-from-11",level:4},{value:"Source",id:"source-12",level:4},{value:"transactions",id:"transactions",level:3},{value:"Overrides",id:"overrides",level:4},{value:"Source",id:"source-13",level:4}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,i.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,i.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L2BlockWithTransactions"]}),"\n",(0,i.jsx)(r.h1,{id:"interface-l2blockwithtransactions",children:"Interface: L2BlockWithTransactions"}),"\n",(0,i.jsx)(r.p,{children:"JSON block representation when returned by L2Geth nodes. Just a normal block but with\nL2Transaction objects instead of the standard transaction response object."}),"\n",(0,i.jsx)(r.h2,{id:"extends",children:"Extends"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions"})}),"\n"]}),"\n",(0,i.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,i.jsx)(r.h3,{id:"_difficulty",children:"_difficulty"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"_difficulty"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions._difficulty"})}),"\n",(0,i.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:41"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"basefeepergas",children:"baseFeePerGas?"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.code,{children:"optional"})," ",(0,i.jsx)(r.strong,{children:"baseFeePerGas"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-1",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.baseFeePerGas"})}),"\n",(0,i.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:46"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"difficulty",children:"difficulty"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"difficulty"}),": ",(0,i.jsx)(r.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-2",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.difficulty"})}),"\n",(0,i.jsx)(r.h4,{id:"source-2",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:40"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"extradata",children:"extraData"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"extraData"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-3",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.extraData"})}),"\n",(0,i.jsx)(r.h4,{id:"source-3",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:45"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"gaslimit",children:"gasLimit"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"gasLimit"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-4",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.gasLimit"})}),"\n",(0,i.jsx)(r.h4,{id:"source-4",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:42"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"gasused",children:"gasUsed"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"gasUsed"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-5",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.gasUsed"})}),"\n",(0,i.jsx)(r.h4,{id:"source-5",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:43"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"hash",children:"hash"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"hash"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-6",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.hash"})}),"\n",(0,i.jsx)(r.h4,{id:"source-6",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:35"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"miner",children:"miner"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"miner"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-7",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.miner"})}),"\n",(0,i.jsx)(r.h4,{id:"source-7",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:44"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"nonce",children:"nonce"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"nonce"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-8",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.nonce"})}),"\n",(0,i.jsx)(r.h4,{id:"source-8",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:39"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"number",children:"number"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"number"}),": ",(0,i.jsx)(r.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-9",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.number"})}),"\n",(0,i.jsx)(r.h4,{id:"source-9",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:37"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"parenthash",children:"parentHash"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"parentHash"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-10",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.parentHash"})}),"\n",(0,i.jsx)(r.h4,{id:"source-10",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:36"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"stateroot",children:"stateRoot"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"stateRoot"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"source-11",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"src/interfaces/l2-provider.ts:35"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"timestamp",children:"timestamp"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"timestamp"}),": ",(0,i.jsx)(r.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-11",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.timestamp"})}),"\n",(0,i.jsx)(r.h4,{id:"source-12",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:38"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"transactions",children:"transactions"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"transactions"}),": [",(0,i.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/L2Transaction",children:(0,i.jsx)(r.code,{children:"L2Transaction"})}),"]"]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"overrides",children:"Overrides"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"BlockWithTransactions.transactions"})}),"\n",(0,i.jsx)(r.h4,{id:"source-13",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"src/interfaces/l2-provider.ts:36"})]})}function a(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>c,x:()=>l});var i=n(758);const s={},d=i.createContext(s);function c(e){const r=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(d.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/6f5ac92b.3d93dd47.js b/build/assets/js/6f5ac92b.3d93dd47.js deleted file mode 100644 index e52696211..000000000 --- a/build/assets/js/6f5ac92b.3d93dd47.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7049],{96:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var s=i(6070),n=i(1582);const r={title:"Bridge",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},a=void 0,o={id:"quick-start/bridge",title:"Bridge",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/quick-start/4-bridge.md",sourceDirName:"quick-start",slug:"/quick-start/bridge",permalink:"/docs/quick-start/bridge",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/quick-start/4-bridge.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Bridge",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Faucet",permalink:"/docs/quick-start/faucet"},next:{title:"Build on Morph",permalink:"/docs/build-on-morph/developer-navigation-page"}},c={},l=[{value:"Deposit from Ethereum to Morph Mainnet",id:"deposit-from-ethereum-to-morph-mainnet",level:2},{value:"Instructions:",id:"instructions",level:2},{value:"How long does it take for a token to arrive to Morph Testnet ?",id:"how-long-does-it-take-for-a-token-to-arrive-to-morph-testnet-",level:2},{value:"Initiate withdrawal",id:"initiate-withdrawal",level:2},{value:"Waiting for the verification challenge period",id:"waiting-for-the-verification-challenge-period",level:2},{value:"Claim the Withdrawal",id:"claim-the-withdrawal",level:2}];function d(e){const t={a:"a",admonition:"admonition",em:"em",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"deposit-from-ethereum-to-morph-mainnet",children:"Deposit from Ethereum to Morph Mainnet"}),"\n",(0,s.jsxs)(t.p,{children:["Please refer to the ",(0,s.jsx)(t.a,{href:"https://morph.ghost.io/how-to-bridge-eth-to-morph-official-bridge/",children:"Morph Season 2 - Bridge Guide."})]}),"\n",(0,s.jsx)(t.h1,{id:"deposit-from-ethereum-holesky-to-morph-testnet",children:"Deposit from Ethereum Holesky to Morph Testnet"}),"\n",(0,s.jsx)(t.h2,{id:"instructions",children:"Instructions:"}),"\n",(0,s.jsx)(t.admonition,{title:"Use the bridge here",type:"tip",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.a,{href:"https://bridge-holesky.morphl2.io",children:"https://bridge-holesky.morphl2.io"})})}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Open your MetaMask wallet and switch to the ",(0,s.jsx)(t.strong,{children:"Holesky"})," network."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.img,{alt:"image1",src:i(8280).A+"",width:"2556",height:"1052"}),"\n",(0,s.jsx)(t.img,{alt:"image1",src:i(2771).A+"",width:"1830",height:"1278"})]}),"\n",(0,s.jsxs)(t.ol,{start:"2",children:["\n",(0,s.jsxs)(t.li,{children:["Within Morph\u2019s Bridge app, click ",(0,s.jsx)(t.strong,{children:"Connect wallet"}),", select MetaMask, and approve the connection if prompted."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image2",src:i(7562).A+"",width:"2588",height:"1288"})}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Make sure that ",(0,s.jsx)(t.strong,{children:"Holesky"}),' is selected under \u2018From\u2019 and Morph L2 under \u2018To\u2019. If not, click the "\u2193" button to switch their positions.']}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Select the token that you want to transfer."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Click the Send button to initiate the deposit."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsxs)(t.p,{children:["If this is your first time transferring an ERC20 token, you need to approve the ",(0,s.jsx)(t.strong,{children:"Holesky"})," Bridge contract to access your ERC20 token."]})}),"\n",(0,s.jsxs)(t.ol,{start:"6",children:["\n",(0,s.jsxs)(t.li,{children:["A window will pop up asking for confirmation of the transfer transaction, click ",(0,s.jsx)(t.strong,{children:"Deposit"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image3",src:i(2229).A+"",width:"1302",height:"1268"})}),"\n",(0,s.jsxs)(t.ol,{start:"7",children:["\n",(0,s.jsxs)(t.li,{children:["Click the Confirm button in MetaMask. Once the transfer transaction is finalized, the token will be deducted from your ",(0,s.jsx)(t.strong,{children:"Holesky"})," wallet address."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image5",src:i(9164).A+"",width:"1964",height:"1312"})}),"\n",(0,s.jsxs)(t.ol,{start:"8",children:["\n",(0,s.jsx)(t.li,{children:"While you wait, you can check status of your transactions by clicking on the transactions button."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image6",src:i(3447).A+"",width:"1386",height:"1132"})}),"\n",(0,s.jsx)(t.h2,{id:"how-long-does-it-take-for-a-token-to-arrive-to-morph-testnet-",children:"How long does it take for a token to arrive to Morph Testnet ?"}),"\n",(0,s.jsxs)(t.p,{children:["A token transfer from ",(0,s.jsx)(t.strong,{children:"Holesky"})," to Morph Testnet may take 8 to 14 minutes (time for block to become Safe on ",(0,s.jsx)(t.strong,{children:"Holesky"}),") before it appears in your Morph wallet. To check the progress of your deposit transactions, follow these steps:"]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Click your wallet address at the top-right corner of the Bridge web app."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image6",src:i(430).A+"",width:"2580",height:"1072"})}),"\n",(0,s.jsxs)(t.ol,{start:"2",children:["\n",(0,s.jsx)(t.li,{children:"Click on Transactions. A pop-up panel will display your recent transactions."}),"\n"]}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsxs)(t.p,{children:["Note: For deposit transactions (L1 -> L2), once your transaction is confirmed as Safe on ",(0,s.jsx)(t.strong,{children:"Holesky"})," (8 to 14 minutes), you will see a ",(0,s.jsx)(t.strong,{children:"Success"})," status. Your funds will then be relayed to L2."]})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image8",src:i(9817).A+"",width:"1712",height:"1258"})}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsxs)(t.li,{children:["Click on the most recent ",(0,s.jsx)(t.strong,{children:"Holesky"})," transaction hash."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image9",src:i(2912).A+"",width:"1674",height:"1202"})}),"\n",(0,s.jsxs)(t.ol,{start:"4",children:["\n",(0,s.jsxs)(t.li,{children:["You will be taken to a Transaction Details page in the Explorer. Verify your transaction status (this transaction is confirmed on ",(0,s.jsx)(t.strong,{children:"Holesky"}),")."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image10",src:i(8697).A+"",width:"2808",height:"1340"})}),"\n",(0,s.jsxs)(t.ol,{start:"5",children:["\n",(0,s.jsxs)(t.li,{children:["Once your transaction status shows ",(0,s.jsx)(t.em,{children:"success"})," on L2, return to the Bridge app to see a transaction hash and funds in your Morph L2 wallet."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image11",src:i(95).A+"",width:"1602",height:"1216"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image12",src:i(5604).A+"",width:"2578",height:"1316"})}),"\n",(0,s.jsx)(t.h1,{id:"withdraw-from-morph-testnet-to-holesky",children:"Withdraw from Morph Testnet to Holesky"}),"\n",(0,s.jsx)(t.p,{children:"To withdraw funds from Morph Testnet, follow these steps:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Initiate the withdrawal on Morph Testnet."}),"\n",(0,s.jsxs)(t.li,{children:["Wait for the withdrawal root to be published on L1 (",(0,s.jsx)(t.strong,{children:"Holesky"}),"). This usually takes a few minutes, but it may take longer during outages."]}),"\n",(0,s.jsx)(t.li,{children:"Prove withdrawal."}),"\n",(0,s.jsxs)(t.li,{children:["Wait for the verification challenge period, which lasts seven days from the time the withdrawal is proven on L1 (",(0,s.jsx)(t.strong,{children:"Holesky"}),")."]}),"\n",(0,s.jsx)(t.li,{children:"Claim your withdrawal."}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"initiate-withdrawal",children:"Initiate withdrawal"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Click Connect Wallet and select MetaMask. If prompted, approve the connection in your wallet."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Select Withdraw. Choose the asset and amount you wish to withdraw."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image13",src:i(2285).A+"",width:"2616",height:"1382"})}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsxs)(t.li,{children:["Click Send ETH to ",(0,s.jsx)(t.strong,{children:"Holesky"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image14",src:i(4386).A+"",width:"2642",height:"1350"})}),"\n",(0,s.jsxs)(t.ol,{start:"4",children:["\n",(0,s.jsxs)(t.li,{children:["Click Initiate withdrawal, wait for a few minutes to confirm. After it is finished, you need to switch the network in your wallet and then prove the withdrawal on ",(0,s.jsx)(t.strong,{children:"Holesky"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image15",src:i(5515).A+"",width:"1372",height:"1356"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image16",src:i(7872).A+"",width:"1976",height:"1388"})}),"\n",(0,s.jsxs)(t.ol,{start:"5",children:["\n",(0,s.jsx)(t.li,{children:"Waiting for the batch submission to be completed."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image17",src:i(4121).A+"",width:"1678",height:"1348"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image18",src:i(8558).A+"",width:"2380",height:"1342"})}),"\n",(0,s.jsx)(t.h2,{id:"waiting-for-the-verification-challenge-period",children:"Waiting for the verification challenge period"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Click your address in the top right corner."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Click Transactions and then Withdrawals. This will display a list of your recent withdrawals and their status. Or you can find a notice in the top area, by clicking the button View Account (see the pic below)."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image19",src:i(7783).A+"",width:"2640",height:"1332"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image20",src:i(4631).A+"",width:"1880",height:"1354"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image21",src:i(5134).A+"",width:"1852",height:"996"})}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsx)(t.li,{children:"You can search for the transaction hash on Morph Explorer."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image22",src:i(5346).A+"",width:"1796",height:"1282"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image23",src:i(7052).A+"",width:"2768",height:"1366"})}),"\n",(0,s.jsxs)(t.ol,{start:"4",children:["\n",(0,s.jsxs)(t.li,{children:["Click the L1 State Root Submission Tx to see when the transaction was written to L1 (",(0,s.jsx)(t.strong,{children:"Holesky"}),")."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image24",src:i(6832).A+"",width:"1436",height:"1360"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image25",src:i(2538).A+"",width:"2804",height:"1358"})}),"\n",(0,s.jsx)(t.h2,{id:"claim-the-withdrawal",children:"Claim the Withdrawal"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Once the challenge period is over, the status will change to Claim."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Click Claim withdrawal."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image26",src:i(9969).A+"",width:"2206",height:"1354"})}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsx)(t.li,{children:"Confirm the withdrawal in the wallet."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image27",src:i(2488).A+"",width:"2264",height:"1348"})}),"\n",(0,s.jsxs)(t.ol,{start:"4",children:["\n",(0,s.jsx)(t.li,{children:"Wait until the withdrawal is completed."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"image28",src:i(3647).A+"",width:"1642",height:"1198"})})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8280:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/01-27c2bb7d636a043d7e9859ebb561ba98.png"},2771:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/02-a0499364bd8da9980f211fea46b17ec1.png"},7562:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/03-c1219d2dc11ccb23f6043454dce9a2a1.png"},2229:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/04-40bfbd2ff4078468d5c5de03ce00125a.png"},9164:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/05-5906b94018c7589aa9c344af312053a6.png"},3447:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/06-32a22c9b9717a8dbbb8f80d04883e82c.png"},430:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/07-c39cf238bd5f1deaa6b66c55c3232c3e.png"},9817:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/08-2b75b7405e667c0a4ed326be801fdcbe.png"},2912:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/09-8820ab91b63c915f3d5988102715c995.png"},8697:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/10-22bdf9fc91c5cf629702a9b651d92b72.png"},95:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/11-4ed536df5ccab515473817e33da2ffb5.png"},5604:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/12-689f052e4e05db6cd8619f0a89b59bec.png"},2285:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/13-dfc7aa5bd7cc571ffed44adadfed733e.png"},4386:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/14-073db2dbe7b98001dd879cf588200ab2.png"},5515:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/15-d71cb25489e0f745d61b4d0572448e53.png"},7872:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/16-8d5a6c2144ac9e120f115e876ca15585.png"},4121:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/17-bdc095149fa2ee4c57adca17afe51ca2.png"},8558:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/18-34ab2ce5edad2dd1d8e8dbedbe8f7e46.png"},7783:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/19-48a3d1813850255cd74a906d9f1c91a3.png"},4631:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/20-1f256a3865f337d6c591d0014665770d.png"},5134:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/21-aa2ebc001ed51cd738a38ed8c7cbe1ed.png"},5346:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/22-0c7c91c0d8518e4c85479aa7c0a3a5b5.png"},7052:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/23-173e326fab8effac22e791dfeeefa625.png"},6832:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/24-2e2eeb94c0330ccd9a2afb58ac75b8e9.png"},2538:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/25-e2de55a3cc831069b95f71de2478a8d8.png"},9969:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/26-9ab4dc9cf17d1b6cc93d11743824f3c9.png"},2488:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/27-1832e352f87b6354eaa7ad6830abefea.png"},3647:(e,t,i)=>{i.d(t,{A:()=>s});const s=i.p+"assets/images/28-ca053a5f739981b7b18302d6db12669d.png"},1582:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>o});var s=i(758);const n={},r=s.createContext(n);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/70e8639a.a7b63da5.js b/build/assets/js/70e8639a.a7b63da5.js deleted file mode 100644 index 690941cd8..000000000 --- a/build/assets/js/70e8639a.a7b63da5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5130],{2205:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=s(6070),t=s(1582);const o={},c="Interface: OEContractsLike",i={id:"build-on-morph/sdk/interfaces/OEContractsLike",title:"OEContractsLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/OEContractsLike.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/OEContractsLike",permalink:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/OEContractsLike.md",tags:[],version:"current",frontMatter:{}},l={},d=[{value:"Properties",id:"properties",level:2},{value:"l1",id:"l1",level:3},{value:"Source",id:"source",level:4},{value:"l2",id:"l2",level:3},{value:"Source",id:"source-1",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / OEContractsLike"]}),"\n",(0,r.jsx)(n.h1,{id:"interface-oecontractslike",children:"Interface: OEContractsLike"}),"\n",(0,r.jsx)(n.p,{children:"Convenience type for something that looks like the OE contract interface but could be\naddresses instead of actual contract objects."}),"\n",(0,r.jsx)(n.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(n.h3,{id:"l1",children:"l1"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"l1"}),": ",(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike",children:(0,r.jsx)(n.code,{children:"OEL1ContractsLike"})})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:146"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"l2",children:"l2"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"l2"}),": ",(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike",children:(0,r.jsx)(n.code,{children:"OEL2ContractsLike"})})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:147"})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>i});var r=s(758);const t={},o=r.createContext(t);function c(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/720f9cb5.1be73404.js b/build/assets/js/720f9cb5.1be73404.js deleted file mode 100644 index 8c7985e02..000000000 --- a/build/assets/js/720f9cb5.1be73404.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1141],{5329:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var r=s(6070),o=s(1582);const t={},i="Enumeration: MessageDirection",c={id:"build-on-morph/sdk/enumerations/MessageDirection",title:"MessageDirection",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/MessageDirection.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/MessageDirection",permalink:"/docs/build-on-morph/sdk/enumerations/MessageDirection",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/MessageDirection.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"L1_TO_L2",id:"l1_to_l2",level:3},{value:"Source",id:"source",level:4},{value:"L2_TO_L1",id:"l2_to_l1",level:3},{value:"Source",id:"source-1",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / MessageDirection"]}),"\n",(0,r.jsx)(n.h1,{id:"enumeration-messagedirection",children:"Enumeration: MessageDirection"}),"\n",(0,r.jsx)(n.p,{children:"Enum describing the direction of a message."}),"\n",(0,r.jsx)(n.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,r.jsx)(n.h3,{id:"l1_to_l2",children:"L1_TO_L2"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"L1_TO_L2"}),": ",(0,r.jsx)(n.code,{children:"0"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:223"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"l2_to_l1",children:"L2_TO_L1"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"L2_TO_L1"}),": ",(0,r.jsx)(n.code,{children:"1"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:224"})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>c});var r=s(758);const o={},t=r.createContext(o);function i(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/72171cd8.74acb7db.js b/build/assets/js/72171cd8.74acb7db.js deleted file mode 100644 index e23f7d533..000000000 --- a/build/assets/js/72171cd8.74acb7db.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8324],{9415:(r,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>t,toc:()=>l});var o=n(6070),s=n(1582);const d={},i="Function: asL2Provider()",t={id:"build-on-morph/sdk/functions/asL2Provider",title:"asL2Provider",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/asL2Provider.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/asL2Provider",permalink:"/docs/build-on-morph/sdk/functions/asL2Provider",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/asL2Provider.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Type parameters",id:"type-parameters",level:2},{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function a(r){const e={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...r.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(e.hr,{}),"\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / asL2Provider"]}),"\n",(0,o.jsx)(e.h1,{id:"function-asl2provider",children:"Function: asL2Provider()"}),"\n",(0,o.jsxs)(e.blockquote,{children:["\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.strong,{children:"asL2Provider"}),"<",(0,o.jsx)(e.code,{children:"TProvider"}),">(",(0,o.jsx)(e.code,{children:"provider"}),"): ",(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/L2Provider",children:(0,o.jsx)(e.code,{children:"L2Provider"})}),"<",(0,o.jsx)(e.code,{children:"TProvider"}),">"]}),"\n"]}),"\n",(0,o.jsx)(e.p,{children:"Returns an provider wrapped as an Morph L2 provider. Adds a few extra helper functions to\nsimplify the process of estimating the gas usage for a transaction on Morph. Returns a COPY\nof the original provider."}),"\n",(0,o.jsx)(e.h2,{id:"type-parameters",children:"Type parameters"}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"TProvider"})," ",(0,o.jsx)(e.em,{children:"extends"})," ",(0,o.jsx)(e.code,{children:"Provider"}),"<",(0,o.jsx)(e.code,{children:"TProvider"}),">"]}),"\n",(0,o.jsx)(e.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"provider"}),": ",(0,o.jsx)(e.code,{children:"TProvider"})]}),"\n",(0,o.jsx)(e.p,{children:"Provider to wrap into an L2 provider."}),"\n",(0,o.jsx)(e.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/L2Provider",children:(0,o.jsx)(e.code,{children:"L2Provider"})}),"<",(0,o.jsx)(e.code,{children:"TProvider"}),">"]}),"\n",(0,o.jsx)(e.p,{children:"Provider wrapped as an L2 provider."}),"\n",(0,o.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(e.p,{children:"src/l2-provider.ts:171"})]})}function h(r={}){const{wrapper:e}={...(0,s.R)(),...r.components};return e?(0,o.jsx)(e,{...r,children:(0,o.jsx)(a,{...r})}):a(r)}},1582:(r,e,n)=>{n.d(e,{R:()=>i,x:()=>t});var o=n(758);const s={},d=o.createContext(s);function i(r){const e=o.useContext(d);return o.useMemo((function(){return"function"==typeof r?r(e):{...e,...r}}),[e,r])}function t(r){let e;return e=r.disableParentContext?"function"==typeof r.components?r.components(s):r.components||s:i(r.components),o.createElement(d.Provider,{value:e},r.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/7242.6da46571.js b/build/assets/js/7242.6da46571.js deleted file mode 100644 index 3c7336b6e..000000000 --- a/build/assets/js/7242.6da46571.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7242],{6900:(e,t,n)=>{n.d(t,{A:()=>a});n(758);var o=n(3526),i=n(7260),s=n(2406),r=n(6070);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,o.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(i.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},7242:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});n(758);var o=n(7260),i=n(926),s=n(8437),r=n(6900),a=n(6070);function h(){const e=(0,o.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/build/assets/js/73af12fb.015067f7.js b/build/assets/js/73af12fb.015067f7.js deleted file mode 100644 index 5def27e77..000000000 --- a/build/assets/js/73af12fb.015067f7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5577],{3702:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>i,metadata:()=>h,toc:()=>d});var t=o(6070),n=o(1582);const i={title:"Morph Integration One Page",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,h={id:"build-on-morph/build-on-morph/integration-one-page",title:"Morph Integration One Page",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/build-on-morph/1-integration-one-page.md",sourceDirName:"build-on-morph/build-on-morph",slug:"/build-on-morph/build-on-morph/integration-one-page",permalink:"/docs/build-on-morph/build-on-morph/integration-one-page",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/build-on-morph/1-integration-one-page.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Morph Integration One Page",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Understand Transaction Cost on Morph",permalink:"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph"},next:{title:"Development Setup",permalink:"/docs/build-on-morph/build-on-morph/development-setup"}},l={},d=[{value:"Network Parameters",id:"network-parameters",level:3},{value:"Explorer Information",id:"explorer-information",level:3},{value:"Bridge Information",id:"bridge-information",level:3},{value:"New Bridge Asset Support:",id:"new-bridge-asset-support",level:4},{value:"Transaction Fees & Blocks",id:"transaction-fees--blocks",level:3},{value:"Important Contracts",id:"important-contracts",level:3},{value:"Node Deployment",id:"node-deployment",level:3}];function p(e){const r={a:"a",admonition:"admonition",h3:"h3",h4:"h4",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.h3,{id:"network-parameters",children:"Network Parameters"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Network"}),(0,t.jsx)(r.th,{children:"Chain ID"}),(0,t.jsx)(r.th,{children:"RPC URL"}),(0,t.jsx)(r.th,{children:"Block Explorer URL"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Morph Mainnet"}),(0,t.jsx)(r.td,{children:"2818"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://rpc-quicknode.morphl2.io",children:"https://rpc-quicknode.morphl2.io"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://explorer.morphl2.io/",children:"https://explorer.morphl2.io/"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Ethereum Mainnet"}),(0,t.jsx)(r.td,{children:"1"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://ethereum-rpc.publicnode.com/",children:"https://ethereum-rpc.publicnode.com/"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://etherscan.io/",children:"https://etherscan.io/"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Morph Holesky Testnet"}),(0,t.jsx)(r.td,{children:"2810"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://rpc-quicknode-holesky.morphl2.io",children:"https://rpc-quicknode-holesky.morphl2.io"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/",children:"https://explorer-holesky.morphl2.io/"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Holesky Testnet"}),(0,t.jsx)(r.td,{children:"17000"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://ethereum-holesky-rpc.publicnode.com/",children:"https://ethereum-holesky-rpc.publicnode.com/"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://holesky.etherscan.io/",children:"https://holesky.etherscan.io/"})})]})]})]}),"\n",(0,t.jsx)(r.p,{children:"To notice, we have set a rate limit for the public RPC access, currently 600 requests per minute per IP."}),"\n",(0,t.jsxs)(r.p,{children:["If you need higher tps, please contact our team for private RPC access. You can also use our partner ",(0,t.jsx)(r.a,{href:"https://www.quicknode.com/",children:"quicknode"})," or ",(0,t.jsx)(r.a,{href:"https://tenderly.co/",children:"tenderly"})," to create your own private RPC."]}),"\n",(0,t.jsx)(r.admonition,{title:"Websocket Connection",type:"tip",children:(0,t.jsx)(r.p,{children:"wss://rpc-quicknode.morphl2.io"})}),"\n",(0,t.jsx)(r.h3,{id:"explorer-information",children:"Explorer Information"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://explorer.morphl2.io",children:"Official Mainnet Explorer"})}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io",children:"Official Testnet Explorer"})}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://explorer.morphl2.io/api-docs",children:"Explorer API Documentation"})}),"\n",(0,t.jsxs)(r.p,{children:["Explorer API: ",(0,t.jsx)(r.a,{href:"https://explorer-api.morphl2.io/api",children:"https://explorer-api.morphl2.io/api"})]}),"\n",(0,t.jsxs)(r.p,{children:["Testnet Explorer API: ",(0,t.jsx)(r.a,{href:"https://explorer-holesky-api.morphl2.io/api",children:"https://explorer-holesky-api.morphl2.io/api"})]}),"\n",(0,t.jsxs)(r.p,{children:["For detail guide on how to verify your contract on Morph explorer, ",(0,t.jsx)(r.a,{href:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts",children:"click here"})]}),"\n",(0,t.jsx)(r.h3,{id:"bridge-information",children:"Bridge Information"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://bridge.morphl2.io",children:"Official Bridge"})}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://bridge-holesky.morphl2.io",children:"Official Testnet Bridge"})}),"\n",(0,t.jsxs)(r.admonition,{title:"Withdrawal and Deposit Time",type:"tip",children:[(0,t.jsx)(r.p,{children:"Due to Morph opzkEVM design, each withdrawal request will need to go through a 48 hours withdrawal period (challenge window) to be finalized."}),(0,t.jsx)(r.p,{children:"Deposit needs to wait for 2 Ethereum epoch (about 13~20 min)."})]}),"\n",(0,t.jsx)(r.h4,{id:"new-bridge-asset-support",children:"New Bridge Asset Support:"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://docs.morphl2.io/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum#add-your-token-to-the-official-bridge",children:"Add your Token to the Official Bridge"})}),"\n",(0,t.jsx)(r.p,{children:"You can also use LayerZero to wrap your token:"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://docs.layerzero.network/v2/developers/evm/technical-reference/deployed-contracts#morph",children:"LayerZero on Morph"})}),"\n",(0,t.jsx)(r.h3,{id:"transaction-fees--blocks",children:"Transaction Fees & Blocks"}),"\n",(0,t.jsx)(r.p,{children:"For Ethereum Layer2, there are 2 part of fees: L1 fee and L2 fee."}),"\n",(0,t.jsxs)(r.p,{children:["For L2 fee, Morph currently using the ",(0,t.jsx)(r.a,{href:"https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md",children:"EIP-1559"})," mechanism for transaction fees same as Ethereum mainnet. Each transaction will have a base fee and a priority fee. The base fee is set to 0.001 Gwei. If the block transaction limit (100 per block) is not reached, only pay base fee is enough."]}),"\n",(0,t.jsx)(r.admonition,{type:"tip",children:(0,t.jsx)(r.p,{children:"Please note we have a lowest L2 priority fee setting (0.01 gwei) for testnet, this is in order to prevent spams. For mainnet, we are able process transaction without priority fee."})}),"\n",(0,t.jsx)(r.p,{children:"Morph currently produce 1 block per second for non-empty block, if there is no new transaction, we will produce 1 empty block every 5 seconds."}),"\n",(0,t.jsx)(r.p,{children:"Each block can have 100 transactions maximum and we will keep raising the limit."}),"\n",(0,t.jsx)(r.h3,{id:"important-contracts",children:"Important Contracts"}),"\n",(0,t.jsxs)(r.p,{children:["We have documented all the important contracts on Morph, you can find them ",(0,t.jsx)(r.a,{href:"/docs/build-on-morph/developer-resources/contracts",children:"here"})]}),"\n",(0,t.jsx)(r.h3,{id:"node-deployment",children:"Node Deployment"}),"\n",(0,t.jsx)(r.p,{children:"Right now we support you to run the Morph node (full node and validator node) in docker and run on host."}),"\n",(0,t.jsxs)(r.p,{children:["You can check the ",(0,t.jsx)(r.a,{href:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",children:"node deployment guide"})," for more details."]})]})}function c(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},1582:(e,r,o)=>{o.d(r,{R:()=>s,x:()=>h});var t=o(758);const n={},i=t.createContext(n);function s(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function h(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),t.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/7426.0fe1a9ef.js b/build/assets/js/7426.0fe1a9ef.js deleted file mode 100644 index 22d8a19d0..000000000 --- a/build/assets/js/7426.0fe1a9ef.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7426],{7426:(c,e,h)=>{h.r(e)}}]); \ No newline at end of file diff --git a/build/assets/js/76db7a6d.2bcc76ed.js b/build/assets/js/76db7a6d.2bcc76ed.js deleted file mode 100644 index b8deae4fc..000000000 --- a/build/assets/js/76db7a6d.2bcc76ed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[408],{6068:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var o=n(6070),r=n(1582);const i={},t="Type alias: MessageLike",c={id:"build-on-morph/sdk/type-aliases/MessageLike",title:"MessageLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/MessageLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/MessageLike",permalink:"/docs/build-on-morph/sdk/type-aliases/MessageLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/MessageLike.md",tags:[],version:"current",frontMatter:{}},a={},d=[{value:"Source",id:"source",level:2}];function l(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / MessageLike"]}),"\n",(0,o.jsx)(s.h1,{id:"type-alias-messagelike",children:"Type alias: MessageLike"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"MessageLike"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,o.jsx)(s.code,{children:"CrossChainMessage"})})," | ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",children:(0,o.jsx)(s.code,{children:"TransactionLike"})})," | ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,o.jsx)(s.code,{children:"TokenBridgeMessage"})})]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Stuff that can be coerced into a CrossChainMessage."}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/interfaces/types.ts:359"})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>t,x:()=>c});var o=n(758);const r={},i=o.createContext(r);function t(e){const s=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),o.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/7824cff9.dde82ce4.js b/build/assets/js/7824cff9.dde82ce4.js deleted file mode 100644 index eacb04b4c..000000000 --- a/build/assets/js/7824cff9.dde82ce4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8676],{2644:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>c,metadata:()=>l,toc:()=>t});var r=s(6070),o=s(1582);const c={},i="Enumeration: L1ChainID",l={id:"build-on-morph/sdk/enumerations/L1ChainID",title:"L1ChainID",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/L1ChainID.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/L1ChainID",permalink:"/docs/build-on-morph/sdk/enumerations/L1ChainID",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/L1ChainID.md",tags:[],version:"current",frontMatter:{}},d={},t=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"HOLESKY",id:"holesky",level:3},{value:"Source",id:"source",level:4},{value:"MAINNET",id:"mainnet",level:3},{value:"Source",id:"source-1",level:4},{value:"MORPH_LOCAL_DEVNET",id:"morph_local_devnet",level:3},{value:"Source",id:"source-2",level:4},{value:"MORPH_QANET",id:"morph_qanet",level:3},{value:"Source",id:"source-3",level:4},{value:"SEPOLIA",id:"sepolia",level:3},{value:"Source",id:"source-4",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L1ChainID"]}),"\n",(0,r.jsx)(n.h1,{id:"enumeration-l1chainid",children:"Enumeration: L1ChainID"}),"\n",(0,r.jsx)(n.p,{children:"L1 network chain IDs"}),"\n",(0,r.jsx)(n.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,r.jsx)(n.h3,{id:"holesky",children:"HOLESKY"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"HOLESKY"}),": ",(0,r.jsx)(n.code,{children:"17000"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:23"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"mainnet",children:"MAINNET"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"MAINNET"}),": ",(0,r.jsx)(n.code,{children:"1"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:17"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"morph_local_devnet",children:"MORPH_LOCAL_DEVNET"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"MORPH_LOCAL_DEVNET"}),": ",(0,r.jsx)(n.code,{children:"900"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:20"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"morph_qanet",children:"MORPH_QANET"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"MORPH_QANET"}),": ",(0,r.jsx)(n.code,{children:"900"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-3",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:21"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"sepolia",children:"SEPOLIA"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"SEPOLIA"}),": ",(0,r.jsx)(n.code,{children:"11155111"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-4",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:22"})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>l});var r=s(758);const o={},c=r.createContext(o);function i(e){const n=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/79dc0904.3b3a5e18.js b/build/assets/js/79dc0904.3b3a5e18.js deleted file mode 100644 index 02953aff0..000000000 --- a/build/assets/js/79dc0904.3b3a5e18.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4405],{9247:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var r=s(6070),o=s(1582);const t={},i="Type alias: SignerLike",c={id:"build-on-morph/sdk/type-aliases/SignerLike",title:"SignerLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/SignerLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/SignerLike",permalink:"/docs/build-on-morph/sdk/type-aliases/SignerLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/SignerLike.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Source",id:"source",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / SignerLike"]}),"\n",(0,r.jsx)(n.h1,{id:"type-alias-signerlike",children:"Type alias: SignerLike"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"SignerLike"}),": ",(0,r.jsx)(n.code,{children:"string"})," | ",(0,r.jsx)(n.code,{children:"Signer"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Stuff that can be coerced into a signer."}),"\n",(0,r.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:381"})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>c});var r=s(758);const o={},t=r.createContext(o);function i(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/7a5975a7.6a0313ab.js b/build/assets/js/7a5975a7.6a0313ab.js deleted file mode 100644 index a230bbf9e..000000000 --- a/build/assets/js/7a5975a7.6a0313ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3961],{4059:(e,o,s)=>{s.r(o),s.d(o,{assets:()=>d,contentTitle:()=>t,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=s(6070),r=s(1582);const i={title:"Blockchain Indexing Services",lang:"en-US"},t=void 0,c={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services",title:"Blockchain Indexing Services",description:"Goldsky",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/4-blockchain-indexing-services.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/4-blockchain-indexing-services.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Blockchain Indexing Services",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Account Abstraction",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction"},next:{title:"Blockchain Oracles",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles"}},d={},l=[{value:"Goldsky",id:"goldsky",level:3},{value:"Envio",id:"envio",level:3}];function a(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h3,{id:"goldsky",children:"Goldsky"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"goldsky",src:s(1087).A+"",width:"2284",height:"1548"})}),"\n",(0,n.jsx)(o.p,{children:"We have partnered with Goldsky to provide indexing and subgraph services for Morph Holesky and Morph Mainnet."}),"\n",(0,n.jsx)(o.p,{children:"Goldsky also allow us to grant selected developers with free subgraph services now. If you want to deploy a subgraph with Goldsky, please raise a ticket in our Discord to let us know how we can help."}),"\n",(0,n.jsxs)(o.p,{children:["For more information, please refer to ",(0,n.jsx)(o.a,{href:"https://docs.goldsky.com/chains/morph",children:"their documentation"}),"."]}),"\n",(0,n.jsx)(o.h3,{id:"envio",children:"Envio"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"envio",src:s(1359).A+"",width:"1920",height:"1080"})}),"\n",(0,n.jsx)(o.p,{children:"Envio is a modern, multi-chain EVM blockchain indexing framework speed-optimized for querying real-time and historical data on Morph Holesky and Morph Mainnet."}),"\n",(0,n.jsx)(o.p,{children:"Designed with a core focus on delivering superior performance and seamless developer experience, Envio empowers the next generation of consumer apps."}),"\n",(0,n.jsxs)(o.p,{children:["The ",(0,n.jsx)(o.a,{href:"https://docs.envio.dev/docs/HyperIndex/contract-import",children:"Quickstart"})," allows you to instantly autogenerate a basic indexer and query your smart contract data on Morph. This is the quickest way to get going and likely the starting point for most developers."]}),"\n",(0,n.jsxs)(o.p,{children:["For more information, please refer to ",(0,n.jsx)(o.a,{href:"https://docs.envio.dev",children:"their documentation"}),"."]}),"\n",(0,n.jsxs)(o.p,{children:["Click ",(0,n.jsx)(o.a,{href:"https://envio.dev/explorer",children:"here"})," for live indexer examples to be inspired."]})]})}function p(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1359:(e,o,s)=>{s.d(o,{A:()=>n});const n=s.p+"assets/images/envio-b6ab67a576429dcc70f99275a1c85f04.png"},1087:(e,o,s)=>{s.d(o,{A:()=>n});const n=s.p+"assets/images/goldsky-c0d8510a51ed749e42c2752506049baa.png"},1582:(e,o,s)=>{s.d(o,{R:()=>t,x:()=>c});var n=s(758);const r={},i=n.createContext(r);function t(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function c(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),n.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/7c1e7b23.0cceff70.js b/build/assets/js/7c1e7b23.0cceff70.js deleted file mode 100644 index e8072c7ee..000000000 --- a/build/assets/js/7c1e7b23.0cceff70.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[841],{5968:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>a,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var r=n(6070),o=n(1582);const t={},i="Interface: CrossChainMessageRequest",c={id:"build-on-morph/sdk/interfaces/CrossChainMessageRequest",title:"CrossChainMessageRequest",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/CrossChainMessageRequest",permalink:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Properties",id:"properties",level:2},{value:"direction",id:"direction",level:3},{value:"Source",id:"source",level:4},{value:"message",id:"message",level:3},{value:"Source",id:"source-1",level:4},{value:"target",id:"target",level:3},{value:"Source",id:"source-2",level:4}];function h(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / CrossChainMessageRequest"]}),"\n",(0,r.jsx)(s.h1,{id:"interface-crosschainmessagerequest",children:"Interface: CrossChainMessageRequest"}),"\n",(0,r.jsx)(s.p,{children:"Partial message that needs to be signed and executed by a specific signer."}),"\n",(0,r.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(s.h3,{id:"direction",children:"direction"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"direction"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:231"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"message",children:"message"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:233"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"target",children:"target"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"target"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:232"})]})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>c});var r=n(758);const o={},t=r.createContext(o);function i(e){const s=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/7c45cc48.7deaf08e.js b/build/assets/js/7c45cc48.7deaf08e.js deleted file mode 100644 index 55e08eaa2..000000000 --- a/build/assets/js/7c45cc48.7deaf08e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1282],{2122:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>t,metadata:()=>l,toc:()=>d});var s=r(6070),o=r(1582);const t={},c="Enumeration: L2RpcUrls",l={id:"build-on-morph/sdk/enumerations/L2RpcUrls",title:"L2RpcUrls",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/L2RpcUrls.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/L2RpcUrls",permalink:"/docs/build-on-morph/sdk/enumerations/L2RpcUrls",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/L2RpcUrls.md",tags:[],version:"current",frontMatter:{}},i={},d=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"MORPH_HOLESKY",id:"morph_holesky",level:3},{value:"Source",id:"source",level:4},{value:"MORPH_LOCAL_DEVNET",id:"morph_local_devnet",level:3},{value:"Source",id:"source-1",level:4},{value:"MORPH_TESTNET",id:"morph_testnet",level:3},{value:"Source",id:"source-2",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L2RpcUrls"]}),"\n",(0,s.jsx)(n.h1,{id:"enumeration-l2rpcurls",children:"Enumeration: L2RpcUrls"}),"\n",(0,s.jsx)(n.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,s.jsx)(n.h3,{id:"morph_holesky",children:"MORPH_HOLESKY"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_HOLESKY"}),": ",(0,s.jsx)(n.code,{children:'"https://rpc-holesky.morphl2.io"'})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:47"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"morph_local_devnet",children:"MORPH_LOCAL_DEVNET"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_LOCAL_DEVNET"}),": ",(0,s.jsx)(n.code,{children:'"http://localhost:8545"'})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:45"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"morph_testnet",children:"MORPH_TESTNET"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_TESTNET"}),": ",(0,s.jsx)(n.code,{children:'"https://rpc-testnet.morphl2.io"'})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:46"})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>l});var s=r(758);const o={},t=s.createContext(o);function c(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/81f29526.ef9fe313.js b/build/assets/js/81f29526.ef9fe313.js deleted file mode 100644 index a0c5e20e8..000000000 --- a/build/assets/js/81f29526.ef9fe313.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1508],{5356:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var s=o(6070),n=o(1582);const t={},i="Type alias: ProviderLike",d={id:"build-on-morph/sdk/type-aliases/ProviderLike",title:"ProviderLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/ProviderLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/ProviderLike",permalink:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/ProviderLike.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Source",id:"source",level:2}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / ProviderLike"]}),"\n",(0,s.jsx)(r.h1,{id:"type-alias-providerlike",children:"Type alias: ProviderLike"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"ProviderLike"}),": ",(0,s.jsx)(r.code,{children:"string"})," | ",(0,s.jsx)(r.code,{children:"Provider"})]}),"\n"]}),"\n",(0,s.jsx)(r.p,{children:"Stuff that can be coerced into a provider."}),"\n",(0,s.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:376"})]})}function h(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1582:(e,r,o)=>{o.d(r,{R:()=>i,x:()=>d});var s=o(758);const n={},t=s.createContext(n);function i(e){const r=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),s.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/82419dfd.11312935.js b/build/assets/js/82419dfd.11312935.js deleted file mode 100644 index 7d6b772b7..000000000 --- a/build/assets/js/82419dfd.11312935.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2061],{6825:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>n,metadata:()=>c,toc:()=>d});var o=r(6070),i=r(1582),s=r(1601);const n={title:"Welcome to Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},a=void 0,c={id:"about-morph/user-navigation-page",title:"Welcome to Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/0-user-navigation-page.md",sourceDirName:"about-morph",slug:"/about-morph/user-navigation-page",permalink:"/docs/about-morph/user-navigation-page",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/0-user-navigation-page.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Welcome to Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",next:{title:"Overview",permalink:"/docs/about-morph/overview-of-morph"}},l={},d=[{value:"What is Morph?",id:"what-is-morph",level:3},{value:"Getting Started",id:"getting-started",level:3},{value:"Engage in Our Ecosystem",id:"engage-in-our-ecosystem",level:3},{value:"Explore and Connect",id:"explore-and-connect",level:3}];function h(e){const t={a:"a",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:["We\u2019re thrilled to have you here, exploring the world of Morph. If you\u2019re a developer looking for technical documentation, head over to our ",(0,o.jsx)(t.a,{href:"/docs/build-on-morph/developer-navigation-page",children:"For Developers section"}),". But if you\u2019re here to understand what Morph is all about, you\u2019re in the right place!"]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"userpage",src:r(9516).A+"",width:"4000",height:"2000"})}),"\n",(0,o.jsx)(t.h3,{id:"what-is-morph",children:"What is Morph?"}),"\n",(0,o.jsx)(t.p,{children:"Morph is a cutting-edge Layer 2 solution built on Ethereum, combining the best of optimistic rollups and zk technology. This makes us scalable, secure, and perfect for everyday applications. Our mission is to build the first blockchain for consumers, where user-friendly applications integrate seamlessly into everyday life, becoming indispensable utilities. We prioritize enabling blockchain applications that enhance daily experiences over chasing trivial technical milestones. Our focus is on creating meaningful, practical solutions that transform blockchain technology into core aspects of daily life"}),"\n",(0,o.jsx)(t.h3,{id:"getting-started",children:"Getting Started"}),"\n",(0,o.jsx)(t.p,{children:"To help you navigate through our resources, here\u2019s a quick guide:"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Introductory Concepts"}),": Get a general understanding of Morph, including what makes it unique, our vision and mission, key concepts, and a look at our roadmap. This section will help you grasp the basics and understand the foundation of Morph."]}),"\n",(0,o.jsxs)(s.A,{className:"md:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsx)(s.Z,{href:"/docs/about-morph/morphs-vision-and-mission",icon:"/img/cards/users.svg",text:"Morph's Vision and Mission"}),(0,o.jsx)(s.Z,{href:"/docs/about-morph/morphs-architecture",icon:"/img/cards/research.svg",text:"Morph's Architecture"}),(0,o.jsx)(s.Z,{href:"/docs/about-morph/roadmap",icon:"/img/cards/guide.svg",text:"Roadmap"})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Step-by-Step Guides"}),": Follow these practical tutorials for setting up your wallet, using the faucet, bridging assets, and exploring the Morph ecosystem. These guides are perfect for hands-on learning and getting started with Morph."]}),"\n",(0,o.jsxs)(s.A,{className:"md:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsx)(s.Z,{href:"/docs/quick-start/wallet-setup",icon:"/img/cards/wallet.svg",text:"Wallet Setup"}),(0,o.jsx)(s.Z,{href:"/docs/quick-start/wallet-setup",icon:"./img/cards/faucet.svg",text:"Faucet"}),(0,o.jsx)(s.Z,{href:"/docs/quick-start/wallet-setup",icon:"/img/cards/bridge.svg",text:"Bridge"})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Links and Tools"}),": Access useful tools such as the Morph Holesky Explorer and the official bridge. This section provides all the necessary links and resources to interact with and explore the Morph network effectively."]}),"\n",(0,o.jsxs)(s.A,{className:"md:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsx)(s.Z,{href:"https://bridge.morphl2.io/",icon:"./img/cards/bridge.svg",text:"Morph Bridge"}),(0,o.jsx)(s.Z,{href:"https://explorer.morphl2.io/",icon:"/img/cards/guide.svg",text:"Morph Explorer"}),(0,o.jsx)(s.Z,{href:"https://morphfaucet.com",icon:"/img/cards/faucet.svg",text:"Morph Faucet"})]}),"\n",(0,o.jsx)(t.h3,{id:"engage-in-our-ecosystem",children:"Engage in Our Ecosystem"}),"\n",(0,o.jsx)(t.p,{children:"Want to skip most of the reading and get started with exploring more right away? These are the guides that will get you right into the action:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Wallet Setup"}),": Learn how to set up your wallet to interact with Morph."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Using the Faucet"}),": Get test tokens to start experimenting on our testnet."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Bridging Assets"}),": Understand how to bridge assets between Morph and Ethereum."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Exploring Morph Zoo"}),": Dive into the diverse range of dApps and projects in the Morph ecosystem."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Morph Holesky Explorer"}),": Use our explorer to track transactions and explore the blockchain."]}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"explore-and-connect",children:"Explore and Connect"}),"\n",(0,o.jsxs)(t.p,{children:["We believe in building a vibrant community around Morph. Join us on ",(0,o.jsx)(t.a,{href:"https://discord.com/invite/MorphLayer",children:"Discord"})," to engage with other users and follow us on ",(0,o.jsx)(t.a,{href:"https://x.com/MorphLayer",children:"Twitter"})," to stay updated with our latest news and developments."]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},1601:(e,t,r)=>{r.d(t,{A:()=>c,Z:()=>l});var o=r(7500),i=r.n(o),s=r(7838),n=r(3958),a=r(6070);const c=e=>{let{className:t,children:r}=e;return(0,a.jsx)("div",{className:"flex gap-4 mb-8 grid "+t,children:r})},l=e=>{let{className:t,href:r,icon:o,darkIcon:c,text:l,children:d}=e;const{withBaseUrl:h}=(0,s.h)(),p={light:h(o),dark:h(c??o)};return(0,a.jsxs)("a",{href:r,target:r?.startsWith("http")?"_blank":"_self",className:i()("no-underline items-center hover:no-underline bg-card-background cursor-pointer rounded-[4px] text-card-text border border-solid border-card-border py-5 px-4 flex flex-row",{"hover:border-[#14A800] hover:text-brand":r}),children:[(0,a.jsx)(n.A,{className:i()("w-6 h-6"),alt:o,sources:p}),(0,a.jsx)("span",{className:"ml-2 text-[16px] leading-[20px]",children:l})]})}},9516:(e,t,r)=>{r.d(t,{A:()=>o});const o=r.p+"assets/images/userpage-dd6c915f303c8e17ee4c99d625ca9fd6.png"},1582:(e,t,r)=>{r.d(t,{R:()=>n,x:()=>a});var o=r(758);const i={},s=o.createContext(i);function n(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:n(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/829b4b9b.d5f25fd7.js b/build/assets/js/829b4b9b.d5f25fd7.js deleted file mode 100644 index f597c2896..000000000 --- a/build/assets/js/829b4b9b.d5f25fd7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3427],{7706:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>i});var o=n(6070),r=n(1582);const t={},c="Variable: DEFAULT_L2_CONTRACT_ADDRESSES",d={id:"build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES",title:"DEFAULT_L2_CONTRACT_ADDRESSES",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES",permalink:"/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.md",tags:[],version:"current",frontMatter:{}},l={},i=[{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / DEFAULT_L2_CONTRACT_ADDRESSES"]}),"\n",(0,o.jsx)(s.h1,{id:"variable-default_l2_contract_addresses",children:"Variable: DEFAULT_L2_CONTRACT_ADDRESSES"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.code,{children:"const"})," ",(0,o.jsx)(s.strong,{children:"DEFAULT_L2_CONTRACT_ADDRESSES"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike",children:(0,o.jsx)(s.code,{children:"OEL2ContractsLike"})})]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Full list of default L2 contract addresses."}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/utils/chain-constants.ts:37"})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>d});var o=n(758);const r={},t=o.createContext(r);function c(e){const s=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/829cd294.d14b23ab.js b/build/assets/js/829cd294.d14b23ab.js deleted file mode 100644 index 58e481434..000000000 --- a/build/assets/js/829cd294.d14b23ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9248],{164:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>d,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>c,toc:()=>l});var s=r(6070),t=r(1582);const n={title:"RPC Services",lang:"en-US"},i=void 0,c={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services",title:"RPC Services",description:"Quicknode",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/2-rpc-services.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/2-rpc-services.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"RPC Services",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Safe Multi-Signature Wallet",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet"},next:{title:"Account Abstraction",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction"}},d={},l=[{value:"Quicknode",id:"quicknode",level:3},{value:"Tenderly",id:"tenderly",level:3}];function a(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h3,{id:"quicknode",children:"Quicknode"}),"\n",(0,s.jsx)(o.p,{children:"QuickNode is transforming blockchain infrastructure and tooling by simplifying web3 development and providing high-performance access to Morph."}),"\n",(0,s.jsx)(o.p,{children:"Developers in the Morph ecosystem are now eligible for free QuickNode credits/discounts!"}),"\n",(0,s.jsx)(o.p,{children:"Read more about what you can get here:"}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.a,{href:"https://quicknode.notion.site/QuickNode-Benefits-for-Morph-Developers-4baf42f78dd64f389a2405e61350a0a6",children:"Quicknode Partnership"})}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"QuickNode",src:r(7231).A+"",width:"1440",height:"1845"})}),"\n",(0,s.jsx)(o.h3,{id:"tenderly",children:"Tenderly"}),"\n",(0,s.jsx)(o.p,{children:"Tenderly is a full-stack Web3 infrastructure \u2013 node RPC, dev environments & exploration tools."}),"\n",(0,s.jsxs)(o.p,{children:["Build & scale with ease. Get started ",(0,s.jsx)(o.a,{href:"https://blog.tenderly.co/building-dapps-on-morph-with-tenderly/",children:"here"})]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"tenderly",src:r(3615).A+"",width:"2558",height:"1590"})})]})}function p(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},7231:(e,o,r)=>{r.d(o,{A:()=>s});const s=r.p+"assets/images/quicknode-945411ff7555a71106ac7e989720c510.png"},3615:(e,o,r)=>{r.d(o,{A:()=>s});const s=r.p+"assets/images/tenderly-37aa9e647d64e8a05c58b91fa7c7786a.png"},1582:(e,o,r)=>{r.d(o,{R:()=>i,x:()=>c});var s=r(758);const t={},n=s.createContext(t);function i(e){const o=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function c(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(n.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/833a0690.57155aee.js b/build/assets/js/833a0690.57155aee.js deleted file mode 100644 index 833894ad8..000000000 --- a/build/assets/js/833a0690.57155aee.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8237],{5629:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>a,frontMatter:()=>d,metadata:()=>c,toc:()=>h});var n=r(6070),i=r(1582);const d={},o="Interface: CrossChainMessage",c={id:"build-on-morph/sdk/interfaces/CrossChainMessage",title:"CrossChainMessage",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/CrossChainMessage.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/CrossChainMessage",permalink:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/CrossChainMessage.md",tags:[],version:"current",frontMatter:{}},l={},h=[{value:"Extends",id:"extends",level:2},{value:"Properties",id:"properties",level:2},{value:"blockNumber",id:"blocknumber",level:3},{value:"Source",id:"source",level:4},{value:"direction",id:"direction",level:3},{value:"Source",id:"source-1",level:4},{value:"logIndex",id:"logindex",level:3},{value:"Source",id:"source-2",level:4},{value:"message",id:"message",level:3},{value:"Inherited from",id:"inherited-from",level:4},{value:"Source",id:"source-3",level:4},{value:"messageNonce",id:"messagenonce",level:3},{value:"Inherited from",id:"inherited-from-1",level:4},{value:"Source",id:"source-4",level:4},{value:"minGasLimit",id:"mingaslimit",level:3},{value:"Inherited from",id:"inherited-from-2",level:4},{value:"Source",id:"source-5",level:4},{value:"sender",id:"sender",level:3},{value:"Inherited from",id:"inherited-from-3",level:4},{value:"Source",id:"source-6",level:4},{value:"target",id:"target",level:3},{value:"Inherited from",id:"inherited-from-4",level:4},{value:"Source",id:"source-7",level:4},{value:"transactionHash",id:"transactionhash",level:3},{value:"Source",id:"source-8",level:4},{value:"value",id:"value",level:3},{value:"Inherited from",id:"inherited-from-5",level:4},{value:"Source",id:"source-9",level:4}];function t(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / CrossChainMessage"]}),"\n",(0,n.jsx)(s.h1,{id:"interface-crosschainmessage",children:"Interface: CrossChainMessage"}),"\n",(0,n.jsx)(s.p,{children:"Describes a message that is sent between L1 and L2. Direction determines where the message was\nsent from and where it's being sent to."}),"\n",(0,n.jsx)(s.h2,{id:"extends",children:"Extends"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})})}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(s.h3,{id:"blocknumber",children:"blockNumber"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"blockNumber"}),": ",(0,n.jsx)(s.code,{children:"number"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:255"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"direction",children:"direction"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"direction"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,n.jsx)(s.code,{children:"MessageDirection"})})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:253"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"logindex",children:"logIndex"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"logIndex"}),": ",(0,n.jsx)(s.code,{children:"number"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:254"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"message",children:"message"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"message"}),": ",(0,n.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"inherited-from",children:"Inherited from"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})}),".",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage#message",children:(0,n.jsx)(s.code,{children:"message"})})]}),"\n",(0,n.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:242"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"messagenonce",children:"messageNonce"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"messageNonce"}),": ",(0,n.jsx)(s.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"inherited-from-1",children:"Inherited from"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})}),".",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage#messagenonce",children:(0,n.jsx)(s.code,{children:"messageNonce"})})]}),"\n",(0,n.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:243"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"mingaslimit",children:"minGasLimit"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"minGasLimit"}),": ",(0,n.jsx)(s.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"inherited-from-2",children:"Inherited from"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})}),".",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage#mingaslimit",children:(0,n.jsx)(s.code,{children:"minGasLimit"})})]}),"\n",(0,n.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:245"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"sender",children:"sender"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"sender"}),": ",(0,n.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"inherited-from-3",children:"Inherited from"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})}),".",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage#sender",children:(0,n.jsx)(s.code,{children:"sender"})})]}),"\n",(0,n.jsx)(s.h4,{id:"source-6",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:240"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"target",children:"target"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"target"}),": ",(0,n.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"inherited-from-4",children:"Inherited from"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})}),".",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage#target",children:(0,n.jsx)(s.code,{children:"target"})})]}),"\n",(0,n.jsx)(s.h4,{id:"source-7",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:241"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"transactionhash",children:"transactionHash"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"transactionHash"}),": ",(0,n.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"source-8",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:256"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"value",children:"value"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"value"}),": ",(0,n.jsx)(s.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"inherited-from-5",children:"Inherited from"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,n.jsx)(s.code,{children:"CoreCrossChainMessage"})}),".",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage#value",children:(0,n.jsx)(s.code,{children:"value"})})]}),"\n",(0,n.jsx)(s.h4,{id:"source-9",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:244"})]})}function a(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(t,{...e})}):t(e)}},1582:(e,s,r)=>{r.d(s,{R:()=>o,x:()=>c});var n=r(758);const i={},d=n.createContext(i);function o(e){const s=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/8347fa88.ca8e39f6.js b/build/assets/js/8347fa88.ca8e39f6.js deleted file mode 100644 index 9d3df1a02..000000000 --- a/build/assets/js/8347fa88.ca8e39f6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8752],{8547:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var o=t(6070),r=t(1582);const s={title:"Bridge between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},i=void 0,a={id:"build-on-morph/code-examples/bridge-between-morph-and-ethereum",title:"Bridge between Morph and Ethereum",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/code-examples/2-bridge-between-morph-and-ethereum.md",sourceDirName:"build-on-morph/code-examples",slug:"/build-on-morph/code-examples/bridge-between-morph-and-ethereum",permalink:"/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/code-examples/2-bridge-between-morph-and-ethereum.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Bridge between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}},d={},c=[{value:"Bridge an ERC20 through custom gateway",id:"bridge-an-erc20-through-custom-gateway",level:2},{value:"Step 1: Launch a token on Holesky",id:"step-1-launch-a-token-on-holesky",level:2},{value:"Step 2: Launch the counterpart token on Morph Holesky testnet",id:"step-2-launch-the-counterpart-token-on-morph-holesky-testnet",level:2},{value:"Step 3: Add the token to the Morph Bridge",id:"step-3-add-the-token-to-the-morph-bridge",level:2},{value:"Step 4: Deposit tokens",id:"step-4-deposit-tokens",level:2},{value:"Step 5: Withdraw tokens",id:"step-5-withdraw-tokens",level:2},{value:"Send messages between Morph and Ethereum",id:"send-messages-between-morph-and-ethereum",level:2},{value:"Deploying the Contracts",id:"deploying-the-contracts",level:2},{value:"Target Smart Contract",id:"target-smart-contract",level:3},{value:"Operator Smart Contract",id:"operator-smart-contract",level:3},{value:"Calling a Cross-chain Function",id:"calling-a-cross-chain-function",level:2},{value:"Relay the Message when sending from L2 to L1",id:"relay-the-message-when-sending-from-l2-to-l1",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"bridge-an-erc20-through-custom-gateway",children:"Bridge an ERC20 through custom gateway"}),"\n",(0,o.jsx)(n.h2,{id:"step-1-launch-a-token-on-holesky",children:"Step 1: Launch a token on Holesky"}),"\n",(0,o.jsx)(n.p,{children:"First, we need a token to bridge. There is no need for a particular ERC20 implementation in order for a token to be compatible with L2. If you already have a token, feel free to skip this step. If you want to deploy a new token, use the following contract of a simple ERC20 token that mints 1 million tokens to the deployer when launched."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.16;\n\nimport "@openzeppelin/contracts/token/ERC20/ERC20.sol";\n\ncontract L1Token is ERC20 {\n constructor() ERC20("My Token L1", "MTL1") {\n _mint(msg.sender, 1_000_000 ether);\n }\n}\n'})}),"\n",(0,o.jsx)(n.h2,{id:"step-2-launch-the-counterpart-token-on-morph-holesky-testnet",children:"Step 2: Launch the counterpart token on Morph Holesky testnet"}),"\n",(0,o.jsx)(n.p,{children:"Next, you'll launch a counterpart to this token on Morph, which will represent the original token on Holesky. This token can implement custom logic to match that of the L1 token or even add additional features beyond those of the L1 token."}),"\n",(0,o.jsx)(n.p,{children:"For this to work:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["The token must implement the ",(0,o.jsx)(n.code,{children:"IMorphStandardERC20"})," interface in order to be compatible with the bridge."]}),"\n",(0,o.jsxs)(n.li,{children:["The contract should provide the gateway address and the counterpart token addresses (the L1 token we just launched) under the ",(0,o.jsx)(n.code,{children:"gateway()"})," and ",(0,o.jsx)(n.code,{children:"counterpart()"})," functions. It should also allow the L2 gateway to call the token ",(0,o.jsx)(n.code,{children:"mint()"})," and ",(0,o.jsx)(n.code,{children:"burn()"})," functions, which are called when a token is deposited and withdrawn."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["The following is a complete example of a token compatible with the bridge. To the constructor, you will pass the official Morph Custom Gateway address (",(0,o.jsx)(n.code,{children:"0x058dec71E53079F9ED053F3a0bBca877F6f3eAcf"}),") and the address of the token launched on Holesky."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.16;\n\nimport "@openzeppelin/contracts/token/ERC20/ERC20.sol";\nimport "@Morph-tech/contracts@0.1.0/libraries/token/IMorphERC20Extension.sol";\n\ncontract L2Token is ERC20, IMorphERC20Extension {\n // We store the gateway and the L1 token address to provide the gateway() and counterpart() functions which are needed from the Morph Standard ERC20 interface\n address _gateway;\n address _counterpart;\n\n // In the constructor we pass as parameter the Custom L2 Gateway and the L1 token address as parameters\n constructor(address gateway_, address counterpart_) ERC20("My Token L2", "MTL2") {\n _gateway = gateway_;\n _counterpart = counterpart_;\n }\n\n function gateway() public view returns (address) {\n return _gateway;\n }\n\n function counterpart() external view returns (address) {\n return _counterpart;\n }\n\n // We allow minting only to the Gateway so it can mint new tokens when bridged from L1\n function transferAndCall(address receiver, uint256 amount, bytes calldata data) external returns (bool success) {\n transfer(receiver, amount);\n data;\n return true;\n }\n\n // We allow minting only to the Gateway so it can mint new tokens when bridged from L1\n function mint(address _to, uint256 _amount) external onlyGateway {\n _mint(_to, _amount);\n }\n\n // Similarly to minting, the Gateway is able to burn tokens when bridged from L2 to L1\n function burn(address _from, uint256 _amount) external onlyGateway {\n _burn(_from, _amount);\n }\n\n modifier onlyGateway() {\n require(gateway() == _msgSender(), "Ownable: caller is not the gateway");\n _;\n }\n}\n'})}),"\n",(0,o.jsx)(n.h2,{id:"step-3-add-the-token-to-the-morph-bridge",children:"Step 3: Add the token to the Morph Bridge"}),"\n",(0,o.jsxs)(n.p,{children:["You need to contact the Morph team to add the token to ",(0,o.jsx)(n.code,{children:"L2CustomERC20Gateway"})," contract in Morph and ",(0,o.jsx)(n.code,{children:"L1CustomERC20Gateway"})," contract in L1. In addition, follow the instructions on the ",(0,o.jsx)(n.a,{href:"https://github.com/Morph-tech/token-list",children:"token lists"})," repository to add your token to the Morph canonical bridge frontend."]}),"\n",(0,o.jsx)(n.h2,{id:"step-4-deposit-tokens",children:"Step 4: Deposit tokens"}),"\n",(0,o.jsxs)(n.p,{children:["Once your token has been approved by the Morph team, you should be able to deposit tokens from L1. To do so, you must first approve the ",(0,o.jsx)(n.code,{children:"L1CustomGateway"})," contract address on Holesky (",(0,o.jsx)(n.code,{children:"0x31C994F2017E71b82fd4D8118F140c81215bbb37"}),"). Then, deposit tokens by calling the ",(0,o.jsx)(n.code,{children:"depositERC20"})," function from the ",(0,o.jsx)(n.code,{children:"L1CustomGateway"})," contract. This can be done using ",(0,o.jsx)(n.a,{href:"https://Morph.io/bridge",children:"our bridge UI"}),", ",(0,o.jsx)(n.a,{href:"https://Holesky.etherscan.io/address/0x31C994F2017E71b82fd4D8118F140c81215bbb37#writeProxyContract",children:"Etherscan Holesky"}),", or a smart contract."]}),"\n",(0,o.jsx)(n.h2,{id:"step-5-withdraw-tokens",children:"Step 5: Withdraw tokens"}),"\n",(0,o.jsxs)(n.p,{children:["You will follow similar steps to send tokens back from L2 to L1. First, approve the ",(0,o.jsx)(n.code,{children:"L2CustomGateway"})," address (",(0,o.jsx)(n.code,{children:"0x058dec71E53079F9ED053F3a0bBca877F6f3eAcf"}),") and then withdraw the tokens calling the ",(0,o.jsx)(n.code,{children:"withdrawERC20"})," from the ",(0,o.jsx)(n.code,{children:"L2CustomGateway"})," contract."]}),"\n",(0,o.jsx)(n.h2,{id:"send-messages-between-morph-and-ethereum",children:"Send messages between Morph and Ethereum"}),"\n",(0,o.jsx)(n.h2,{id:"deploying-the-contracts",children:"Deploying the Contracts"}),"\n",(0,o.jsx)(n.h3,{id:"target-smart-contract",children:"Target Smart Contract"}),"\n",(0,o.jsx)(n.p,{children:"Let\u2019s start by deploying the target smart contract. We will use the Greeter contract for this\nexample, but you can use any other contract. Deploy it to either Holesky or Morph. On Morph, L1\nand L2 use the same API, so it\u2019s up to you."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.16;\n\n// This Greeter contract will be interacted with through the MorphMessenger across the bridge\ncontract Greeter {\n string public greeting = "Hello World!";\n\n // This function will be called by executeFunctionCrosschain on the Operator Smart Contract\n function setGreeting(string memory greeting_) public {\n greeting = greeting_;\n }\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["We will now execute ",(0,o.jsx)(n.code,{children:"setGreeting"})," in a cross-chain way."]}),"\n",(0,o.jsx)(n.h3,{id:"operator-smart-contract",children:"Operator Smart Contract"}),"\n",(0,o.jsxs)(n.p,{children:["Switch to the other chain and deploy the ",(0,o.jsx)(n.code,{children:"GreeterOperator"}),". So, if you deployed the ",(0,o.jsx)(n.code,{children:"Greeter"})," contract on L1, deploy the ",(0,o.jsx)(n.code,{children:"GreeterOperator"})," on L2 or vice versa."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.16;\n\n// The Morph Messenger interface is the same on both L1 and L2, it allows sending cross-chain transactions\n// Let\'s import it directly from the Morph Contracts library\nimport "@Morph-tech/contracts@0.1.0/libraries/IMorphMessenger.sol";\n\n// The GreeterOperator is capable of executing the Greeter function through the bridge\ncontract GreeterOperator {\n // This function will execute setGreeting on the Greeter contract\n function executeFunctionCrosschain(\n address MorphMessengerAddress,\n address targetAddress,\n uint256 value,\n string memory greeting,\n uint32 gasLimit\n ) public payable {\n IMorphMessenger MorphMessenger = IMorphMessenger(MorphMessengerAddress);\n // sendMessage is able to execute any function by encoding the abi using the encodeWithSignature function\n MorphMessenger.sendMessage{ value: msg.value }(\n targetAddress,\n value,\n abi.encodeWithSignature("setGreeting(string)", greeting),\n gasLimit,\n msg.sender\n );\n }\n}\n'})}),"\n",(0,o.jsx)(n.h2,{id:"calling-a-cross-chain-function",children:"Calling a Cross-chain Function"}),"\n",(0,o.jsxs)(n.p,{children:["We pass the message by executing ",(0,o.jsx)(n.code,{children:"executeFunctionCrosschain"})," and passing the following parameters:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"MorphMessengerAddress"}),": This will depend on where you deployed the ",(0,o.jsx)(n.code,{children:"GreeterOperator"})," contract.","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["If you deployed it on Holesky use ",(0,o.jsx)(n.code,{children:"0x50c7d3e7f7c656493D1D76aaa1a836CedfCBB16A"}),". If you deployed on Morph Holesky use ",(0,o.jsx)(n.code,{children:"0xBa50f5340FB9F3Bd074bD638c9BE13eCB36E603d"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"targetAddress"}),": The address of the ",(0,o.jsx)(n.code,{children:"Greeter"})," contract on the opposite chain."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"value"}),": In this case, it is ",(0,o.jsx)(n.code,{children:"0"})," because the ",(0,o.jsx)(n.code,{children:"setGreeting"}),"is not payable."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"greeting"}),": This is the parameter that will be sent through the message. Try passing ",(0,o.jsx)(n.code,{children:"\u201cThis message was cross-chain!\u201d"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"gasLimit"}),":","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["If you are sending the message from L1 to L2, around ",(0,o.jsx)(n.code,{children:"1000000"})," gas limit should be more than enough. That said, if you set this too high, and ",(0,o.jsx)(n.code,{children:"msg.value"})," doesn't cover ",(0,o.jsx)(n.code,{children:"gasLimit"})," * ",(0,o.jsx)(n.code,{children:"baseFee"}),", the transaction will revert. If ",(0,o.jsx)(n.code,{children:"msg.value"})," is greater than the gas fee, the unused portion will be refunded."]}),"\n",(0,o.jsxs)(n.li,{children:["If you are sending the message from L2 to L1, pass ",(0,o.jsx)(n.code,{children:"0"}),", as the transaction will be completed by executing an additional transaction on L1."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"relay-the-message-when-sending-from-l2-to-l1",children:"Relay the Message when sending from L2 to L1"}),"\n",(0,o.jsxs)(n.p,{children:['When a transaction is passed from L2 to L1, an additional "execute withdrawal transaction" must be sent on L1. To do this, you must call ',(0,o.jsx)(n.code,{children:"relayMessageWithProof"})," on the L1 Morph Messenger\ncontract from an EOA wallet."]}),"\n",(0,o.jsxs)(n.p,{children:["You can do this directly on ",(0,o.jsx)(n.a,{href:"https://Holesky.etherscan.io/address/0x50c7d3e7f7c656493d1d76aaa1a836cedfcbb16a#writeProxyContract#F3",children:"Etherscan Holesky"}),".\nTo do so, you will need to pass a Merkle inclusion proof for the bridged transaction and other parameters. You'll query these using the Morph Bridge API."]}),"\n","\n",(0,o.jsx)(n.p,{children:"We're finalizing the API specifics, but for now, fetch or curl the following endpoint:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:'curl "https://Holesky-api-bridge.Morph.io/api/claimable?page_size=10&page=1&address=GREETER_OPERATOR_ADDRESS_ON_L2"\n'})}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsx)(n.p,{children:"This API was made for our Bridge UI. It is not yet finalized and may change in the future. We will update this guide\nwhen the API is finalized."})}),"\n",(0,o.jsx)(n.admonition,{title:"Anyone can execute your message",type:"tip",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"relayMessageWithProof"})," is fully permissionless, so anyone can call it on your behalf if they're willing to pay the L1\ngas fees. This feature allows for additional support infrastructure, including tooling to automate this process for\napplications and users."]})}),"\n",(0,o.jsxs)(n.p,{children:["After executing and confirming the transaction on both L1 and L2, the new state of ",(0,o.jsx)(n.code,{children:"greeting"})," on the ",(0,o.jsx)(n.code,{children:"Greeter"})," contract should be ",(0,o.jsx)(n.code,{children:"\u201cThis message was cross-chain!\u201d"}),". Sending a message from one chain to the other should take around 20 minutes after the transactions are confirmed on the origin chain."]}),"\n",(0,o.jsx)(n.p,{children:"Congratulations, you now executed a transaction from one chain to the other using our native bridge!"})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},1582:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(758);const r={},s=o.createContext(r);function i(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/8613d4b8.a112ff98.js b/build/assets/js/8613d4b8.a112ff98.js deleted file mode 100644 index 7d429c7e1..000000000 --- a/build/assets/js/8613d4b8.a112ff98.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7975],{3933:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>m,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var o=s(6070),r=s(1582);const t={},c="Function: omit()",i={id:"build-on-morph/sdk/functions/omit",title:"omit",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/omit.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/omit",permalink:"/docs/build-on-morph/sdk/functions/omit",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/omit.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Type parameters",id:"type-parameters",level:2},{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / omit"]}),"\n",(0,o.jsx)(n.h1,{id:"function-omit",children:"Function: omit()"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"omit"}),"<",(0,o.jsx)(n.code,{children:"T"}),", ",(0,o.jsx)(n.code,{children:"K"}),">(",(0,o.jsx)(n.code,{children:"obj"}),", ...",(0,o.jsx)(n.code,{children:"keys"}),"): ",(0,o.jsx)(n.code,{children:"Omit"}),"<",(0,o.jsx)(n.code,{children:"T"}),", ",(0,o.jsx)(n.code,{children:"K"}),">"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Returns a copy of the given object ( ...obj ) with the given keys omitted."}),"\n",(0,o.jsx)(n.h2,{id:"type-parameters",children:"Type parameters"}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"T"})," ",(0,o.jsx)(n.em,{children:"extends"})," ",(0,o.jsx)(n.code,{children:"object"})]}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"K"})," ",(0,o.jsx)(n.em,{children:"extends"})," ",(0,o.jsx)(n.code,{children:"string"})," | ",(0,o.jsx)(n.code,{children:"number"})," | ",(0,o.jsx)(n.code,{children:"symbol"})]}),"\n",(0,o.jsx)(n.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"obj"}),": ",(0,o.jsx)(n.code,{children:"T"})]}),"\n",(0,o.jsx)(n.p,{children:"Object to return with the keys omitted."}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ...",(0,o.jsx)(n.strong,{children:"keys"}),": ",(0,o.jsx)(n.code,{children:"K"}),"[]"]}),"\n",(0,o.jsx)(n.p,{children:"Keys to omit from the returned object."}),"\n",(0,o.jsx)(n.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Omit"}),"<",(0,o.jsx)(n.code,{children:"T"}),", ",(0,o.jsx)(n.code,{children:"K"}),">"]}),"\n",(0,o.jsx)(n.p,{children:"A copy of the given object with the given keys omitted."}),"\n",(0,o.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(n.p,{children:"src/utils/misc-utils.ts:11"})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>i});var o=s(758);const r={},t=o.createContext(r);function c(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/868b6fb8.ccb36e11.js b/build/assets/js/868b6fb8.ccb36e11.js deleted file mode 100644 index 8b93ee771..000000000 --- a/build/assets/js/868b6fb8.ccb36e11.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2985],{4061:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/build/assets/js/8b6091b0.2cc43598.js b/build/assets/js/8b6091b0.2cc43598.js deleted file mode 100644 index 50a58e425..000000000 --- a/build/assets/js/8b6091b0.2cc43598.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8451],{2896:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>a});var r=o(6070),s=o(1582);const t={},c="Variable: BRIDGE_ADAPTER_DATA",d={id:"build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA",title:"BRIDGE_ADAPTER_DATA",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA",permalink:"/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.md",tags:[],version:"current",frontMatter:{}},i={},a=[{value:"Source",id:"source",level:2}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / BRIDGE_ADAPTER_DATA"]}),"\n",(0,r.jsx)(n.h1,{id:"variable-bridge_adapter_data",children:"Variable: BRIDGE_ADAPTER_DATA"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"const"})," ",(0,r.jsx)(n.strong,{children:"BRIDGE_ADAPTER_DATA"}),": ",(0,r.jsx)(n.code,{children:"{ [ChainID in L2ChainID]?: BridgeAdapterData }"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Mapping of L1 chain IDs to the list of custom bridge addresses for each chain."}),"\n",(0,r.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/utils/chain-constants.ts:128"})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>c,x:()=>d});var r=o(758);const s={},t=r.createContext(s);function c(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/8d0b932e.3e2c9c72.js b/build/assets/js/8d0b932e.3e2c9c72.js deleted file mode 100644 index a1aff2f16..000000000 --- a/build/assets/js/8d0b932e.3e2c9c72.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2322],{30:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var n=o(6070),i=o(1582);const r={title:"Dapp Examples on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},a=void 0,s={id:"build-on-morph/developer-resources/dapp-examples-on-morph",title:"Dapp Examples on Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/developer-resources/7-dapp-examples-on-morph.md",sourceDirName:"build-on-morph/developer-resources",slug:"/build-on-morph/developer-resources/dapp-examples-on-morph",permalink:"/docs/build-on-morph/developer-resources/dapp-examples-on-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/7-dapp-examples-on-morph.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{title:"Dapp Examples on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Contract Addresses",permalink:"/docs/build-on-morph/developer-resources/contracts"},next:{title:"Morph JSON-RPC API Methods",permalink:"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods"}},l={},p=[{value:"Example Dapp: Building a Decentralized Hotel Booking System on Morph",id:"example-dapp-building-a-decentralized-hotel-booking-system-on-morph",level:2},{value:"Example Dapp: Building a fractionalized real-estate dApp",id:"example-dapp-building-a-fractionalized-real-estate-dapp",level:2},{value:"Query and Index Smart Contracts on Morph using Goldsky",id:"query-and-index-smart-contracts-on-morph-using-goldsky",level:2}];function d(e){const t={a:"a",admonition:"admonition",h2:"h2",img:"img",p:"p",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["We provide multiple example Dapps for developers, built on our ",(0,n.jsx)(t.a,{href:"https://github.com/morph-l2/morph_starter_kit",children:"Morph starter template"}),", deployed on the Morph Testnet, and accompanied by corresponding frontends."]}),"\n",(0,n.jsx)(t.p,{children:"These examples are very helpful for developers to go through the entire development process on Morph. Below is a brief introduction of the example Dapps and tutorial links."}),"\n",(0,n.jsx)(t.admonition,{title:"Morph Starter Template",type:"tip",children:(0,n.jsx)(t.p,{children:"The Morph starter kit helps developers quickly and efficiently, build dApps on the Morph blockchain. It is a comprehensive template for building fullstack dApps."})}),"\n",(0,n.jsx)(t.h2,{id:"example-dapp-building-a-decentralized-hotel-booking-system-on-morph",children:"Example Dapp: Building a Decentralized Hotel Booking System on Morph"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Okido Finance",src:o(8343).A+"",width:"1600",height:"874"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://morph.ghost.io/developer-guide-building-a-decentralized-hotel-booking-system-on-morph-2/",children:"Check the tutorial"})}),"\n",(0,n.jsx)(t.p,{children:"This guide walks you through the process of building a decentralized hotel booking system on the MorphL2 blockchain using Solidity smart contracts and a React & Wagmi front-end. This system allows hotel owners to add rooms, manage room availability, accept bookings, and receive reviews from guests."}),"\n",(0,n.jsx)(t.h2,{id:"example-dapp-building-a-fractionalized-real-estate-dapp",children:"Example Dapp: Building a fractionalized real-estate dApp"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Okido Finance",src:o(7708).A+"",width:"1600",height:"1032"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://morph.ghost.io/developer-guide-realestate-dapp/",children:"Check the tutorial"})}),"\n",(0,n.jsx)(t.p,{children:"Imagine being able to invest in a high-value real estate property without needing to shell out a huge amount of money upfront. Sounds pretty appealing, right? This is the magic of fractionalization. By dividing a property into smaller, more affordable shares, fractionalization makes it possible for just about anyone to get in on the real estate action. It\u2019s like turning a luxury mansion into a bunch of reasonably priced slices that you can buy and sell easily, just like stocks."}),"\n",(0,n.jsx)(t.p,{children:"Our project today, Okido Finance, takes this idea and builds a decentralized application (DApp) around it. With Okido Finance, property owners can create shares of their real estate assets and investors can buy these shares using a custom ERC20 token. This not only democratizes real estate investment but also adds a layer of liquidity, making it easier to trade shares and get in or out of investments."}),"\n",(0,n.jsx)(t.p,{children:"In this tutorial, I\u2019ll walk you through building the Okido Finance DApp step by step. We\u2019ll start with setting up the development environment, move on to deploying smart contracts, and finish with designing a user-friendly UI."}),"\n",(0,n.jsx)(t.p,{children:"By the end, you\u2019ll have a solid grasp of how to build a decentralized real estate fractionalization platform. Whether you\u2019re looking to create something similar or just want to learn more about these technologies, you\u2019ll be well-equipped to dive deeper into fractionalization. Let\u2019s get started!"}),"\n",(0,n.jsx)(t.h2,{id:"query-and-index-smart-contracts-on-morph-using-goldsky",children:"Query and Index Smart Contracts on Morph using Goldsky"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Okido Finance",src:o(6694).A+"",width:"1600",height:"855"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://morph.ghost.io/query-and-index-smart-contracts-on-morph-using-goldsky/",children:"Check the tutorial"})}),"\n",(0,n.jsx)(t.p,{children:"Picture this: you're a developer with a brand-new smart contract deployed on the Morph. Your next challenge is to efficiently query and retrieve on-chain data for your decentralized application (dApp). That's where subgraphs come in. Subgraphs offer a powerful and flexible way to index and query blockchain data, making it easy to build responsive and data-rich dApps."}),"\n",(0,n.jsx)(t.p,{children:"In this tutorial, we'll walk through deploying a smart contract on the Morph chain and setting up a subgraph to query this contract. We\u2019ll also introduce Goldsky, a tool that makes creating and managing subgraphs a breeze. Let\u2019s get started and see what we can build together!"})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8343:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/ExampleDapp1-96e1594e7db7d9945a90a121447ad21c.png"},7708:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/ExampleDapp2-bdb0b04b62866c0000bac8cf45d693b8.png"},6694:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/subg-c6633cc1c116f6b625a78ca4d006b583.png"},1582:(e,t,o)=>{o.d(t,{R:()=>a,x:()=>s});var n=o(758);const i={},r=n.createContext(i);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9235c071.f936f4f6.js b/build/assets/js/9235c071.f936f4f6.js deleted file mode 100644 index f2303c129..000000000 --- a/build/assets/js/9235c071.f936f4f6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1971],{4605:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>h,contentTitle:()=>c,default:()=>a,frontMatter:()=>t,metadata:()=>l,toc:()=>i});var o=n(6070),r=n(1582);const t={},c="Function: hashLowLevelMessageV2()",l={id:"build-on-morph/sdk/functions/hashLowLevelMessageV2",title:"hashLowLevelMessageV2",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/hashLowLevelMessageV2",permalink:"/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.md",tags:[],version:"current",frontMatter:{}},h={},i=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function d(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / hashLowLevelMessageV2"]}),"\n",(0,o.jsx)(s.h1,{id:"function-hashlowlevelmessagev2",children:"Function: hashLowLevelMessageV2()"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"hashLowLevelMessageV2"}),"(",(0,o.jsx)(s.code,{children:"message"}),"): ",(0,o.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Utility for hashing a LowLevelMessage object."}),"\n",(0,o.jsx)(s.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(s.p,{children:["\u2022 ",(0,o.jsx)(s.strong,{children:"message"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",children:(0,o.jsx)(s.code,{children:"LowLevelMessage"})})]}),"\n",(0,o.jsx)(s.p,{children:"LowLevelMessage object to hash."}),"\n",(0,o.jsx)(s.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsx)(s.p,{children:(0,o.jsx)(s.code,{children:"string"})}),"\n",(0,o.jsx)(s.p,{children:"Hash of the given LowLevelMessage."}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/utils/message-utils.ts:82"})]})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>l});var o=n(758);const r={},t=o.createContext(r);function c(e){const s=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/935f2afb.0bdf028c.js b/build/assets/js/935f2afb.0bdf028c.js deleted file mode 100644 index cc1bd4af2..000000000 --- a/build/assets/js/935f2afb.0bdf028c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"UserSidebar":[{"type":"link","label":"Welcome to Morph","href":"/docs/about-morph/user-navigation-page","docId":"about-morph/user-navigation-page","unlisted":false},{"type":"category","label":"Introductory Concepts","items":[{"type":"link","label":"Overview","href":"/docs/about-morph/overview-of-morph","docId":"about-morph/overview-of-morph","unlisted":false},{"type":"link","label":"The Technology Behind Morph","href":"/docs/about-morph/the-technology-behind-morph","docId":"about-morph/the-technology-behind-morph","unlisted":false},{"type":"link","label":"Morph\'s Architecture","href":"/docs/about-morph/morphs-architecture","docId":"about-morph/morphs-architecture","unlisted":false},{"type":"link","label":"Morph\'s Vision and Mission","href":"/docs/about-morph/morphs-vision-and-mission","docId":"about-morph/morphs-vision-and-mission","unlisted":false},{"type":"link","label":"Key Concepts","href":"/docs/about-morph/key-concepts","docId":"about-morph/key-concepts","unlisted":false},{"type":"link","label":"Roadmap","href":"/docs/about-morph/roadmap","docId":"about-morph/roadmap","unlisted":false},{"type":"link","label":"FAQs","href":"/docs/about-morph/faqs","docId":"about-morph/faqs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Step-by-Step Guides","items":[{"type":"link","label":"Wallet Setup","href":"/docs/quick-start/wallet-setup","docId":"quick-start/wallet-setup","unlisted":false},{"type":"link","label":"Faucet","href":"/docs/quick-start/faucet","docId":"quick-start/faucet","unlisted":false},{"type":"link","label":"Bridge","href":"/docs/quick-start/bridge","docId":"quick-start/bridge","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Links and Tools","items":[{"type":"link","href":"https://bridge.morphl2.io/","label":"Morph Official Bridge"},{"type":"link","href":"https://explorer.morphl2.io/","label":"Morph Mainnet Explorer"},{"type":"link","href":"https://bridge-holesky.morphl2.io/","label":"Morph Holesky Official Bridge"},{"type":"link","href":"https://explorer-holesky.morphl2.io/","label":"Morph Holesky Explorer"},{"type":"link","href":"https://holesky.etherscan.io/","label":"Ethereum Holesky Explorer"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Build on Morph","href":"/docs/build-on-morph/developer-navigation-page","docId":"build-on-morph/developer-navigation-page","unlisted":false},{"type":"category","label":"Fundamental Concepts","items":[{"type":"link","label":"Morph Modular Design","href":"/docs/how-morph-works/morph-modular-design","docId":"how-morph-works/morph-modular-design","unlisted":false},{"type":"link","label":"Optimistic zkEVM","href":"/docs/how-morph-works/optimistic-zkevm","docId":"how-morph-works/optimistic-zkevm","unlisted":false},{"type":"category","label":"Decentralized Sequencers","items":[{"type":"link","label":"Morph\'s Decentralized Sequencer Network","href":"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","docId":"how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"General Protocol Design","items":[{"type":"link","label":"Rollup","href":"/docs/how-morph-works/general-protocol-design/rollup","docId":"how-morph-works/general-protocol-design/rollup","unlisted":false},{"type":"link","label":"Communication between Morph and Ethereum","href":"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","docId":"how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","unlisted":false},{"type":"link","label":"Transactions Life Cycle","href":"/docs/how-morph-works/general-protocol-design/transactions-life-cycle","docId":"how-morph-works/general-protocol-design/transactions-life-cycle","unlisted":false},{"type":"link","label":"Difference between Morph and Ethereum","href":"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","docId":"how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","unlisted":false},{"type":"link","label":"Understand Transaction Cost on Morph","href":"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph","docId":"build-on-morph/build-on-morph/understand-transaction-cost-on-morph","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Developer Guides","items":[{"type":"link","label":"Morph Integration One Page","href":"/docs/build-on-morph/build-on-morph/integration-one-page","docId":"build-on-morph/build-on-morph/integration-one-page","unlisted":false},{"type":"link","label":"Development Setup","href":"/docs/build-on-morph/build-on-morph/development-setup","docId":"build-on-morph/build-on-morph/development-setup","unlisted":false},{"type":"link","label":"Deploy Contracts on Morph","href":"/docs/build-on-morph/code-examples/deploy-contract-on-morph","docId":"build-on-morph/code-examples/deploy-contract-on-morph","unlisted":false},{"type":"link","label":"Verify Your Smart Contracts","href":"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts","docId":"build-on-morph/build-on-morph/verify-your-smart-contracts","unlisted":false},{"type":"link","label":"Bridge between Morph and Ethereum","href":"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","docId":"build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","unlisted":false},{"type":"link","label":"Use SDK to interact with Morph","href":"/docs/build-on-morph/sdk/globals","docId":"build-on-morph/sdk/globals","unlisted":false},{"type":"category","label":"Use Ecosystem Developer Tools","items":[{"type":"link","label":"User Onboarding","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","unlisted":false},{"type":"link","label":"Cross Chain Interoperability","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","unlisted":false},{"type":"link","label":"Safe Multi-Signature Wallet","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","unlisted":false},{"type":"link","label":"RPC Services","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","unlisted":false},{"type":"link","label":"Account Abstraction","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","unlisted":false},{"type":"link","label":"Blockchain Indexing Services","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","unlisted":false},{"type":"link","label":"Blockchain Oracles","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","unlisted":false},{"type":"link","label":"Block Explorer","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","unlisted":false},{"type":"link","label":"Artificial Intelligence","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","unlisted":false},{"type":"link","label":"Decentralized Naming Services","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Node Operation","items":[{"type":"category","label":"Full Node","items":[{"type":"link","label":"Run a full node with docker","href":"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker","docId":"build-on-morph/developer-resources/node-operation/full-node/run-in-docker","unlisted":false},{"type":"link","label":"Run a full node from source","href":"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host","docId":"build-on-morph/developer-resources/node-operation/full-node/run-on-host","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Validator","items":[{"type":"link","label":"Run a validator with docker","href":"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","docId":"build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","unlisted":false},{"type":"link","label":"Run a validator from source","href":"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host","docId":"build-on-morph/developer-resources/node-operation/validator-node/run-on-host","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Upgrade Node","items":[{"type":"link","label":"Upgrade node running from docker","href":"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","docId":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","unlisted":false},{"type":"link","label":"Upgrade node running on the host","href":"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","docId":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Prune State","href":"/docs/build-on-morph/developer-resources/node-operation/prune-state","docId":"build-on-morph/developer-resources/node-operation/prune-state","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Developer Resources","items":[{"type":"link","label":"Contract Addresses","href":"/docs/build-on-morph/developer-resources/contracts","docId":"build-on-morph/developer-resources/contracts","unlisted":false},{"type":"link","label":"Dapp Examples on Morph","href":"/docs/build-on-morph/developer-resources/dapp-examples-on-morph","docId":"build-on-morph/developer-resources/dapp-examples-on-morph","unlisted":false},{"type":"link","label":"Morph JSON-RPC API Methods","href":"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods","docId":"build-on-morph/developer-resources/morph-json-rpc-api-methods","unlisted":false},{"type":"link","href":"https://explorer-holesky.morphl2.io/","label":"Morph Holesky Explorer"},{"type":"link","href":"https://holesky.etherscan.io/","label":"Ethereum Holesky Explorer"}],"collapsed":true,"collapsible":true}],"DeveloperSidebar":[{"type":"link","label":"Welcome to Morph","href":"/docs/about-morph/user-navigation-page","docId":"about-morph/user-navigation-page","unlisted":false},{"type":"category","label":"Introductory Concepts","items":[{"type":"link","label":"Overview","href":"/docs/about-morph/overview-of-morph","docId":"about-morph/overview-of-morph","unlisted":false},{"type":"link","label":"The Technology Behind Morph","href":"/docs/about-morph/the-technology-behind-morph","docId":"about-morph/the-technology-behind-morph","unlisted":false},{"type":"link","label":"Morph\'s Architecture","href":"/docs/about-morph/morphs-architecture","docId":"about-morph/morphs-architecture","unlisted":false},{"type":"link","label":"Morph\'s Vision and Mission","href":"/docs/about-morph/morphs-vision-and-mission","docId":"about-morph/morphs-vision-and-mission","unlisted":false},{"type":"link","label":"Key Concepts","href":"/docs/about-morph/key-concepts","docId":"about-morph/key-concepts","unlisted":false},{"type":"link","label":"Roadmap","href":"/docs/about-morph/roadmap","docId":"about-morph/roadmap","unlisted":false},{"type":"link","label":"FAQs","href":"/docs/about-morph/faqs","docId":"about-morph/faqs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Step-by-Step Guides","items":[{"type":"link","label":"Wallet Setup","href":"/docs/quick-start/wallet-setup","docId":"quick-start/wallet-setup","unlisted":false},{"type":"link","label":"Faucet","href":"/docs/quick-start/faucet","docId":"quick-start/faucet","unlisted":false},{"type":"link","label":"Bridge","href":"/docs/quick-start/bridge","docId":"quick-start/bridge","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Links and Tools","items":[{"type":"link","href":"https://bridge.morphl2.io/","label":"Morph Official Bridge"},{"type":"link","href":"https://explorer.morphl2.io/","label":"Morph Mainnet Explorer"},{"type":"link","href":"https://bridge-holesky.morphl2.io/","label":"Morph Holesky Official Bridge"},{"type":"link","href":"https://explorer-holesky.morphl2.io/","label":"Morph Holesky Explorer"},{"type":"link","href":"https://holesky.etherscan.io/","label":"Ethereum Holesky Explorer"}],"collapsed":true,"collapsible":true},{"type":"link","label":"Build on Morph","href":"/docs/build-on-morph/developer-navigation-page","docId":"build-on-morph/developer-navigation-page","unlisted":false},{"type":"category","label":"Fundamental Concepts","items":[{"type":"link","label":"Morph Modular Design","href":"/docs/how-morph-works/morph-modular-design","docId":"how-morph-works/morph-modular-design","unlisted":false},{"type":"link","label":"Optimistic zkEVM","href":"/docs/how-morph-works/optimistic-zkevm","docId":"how-morph-works/optimistic-zkevm","unlisted":false},{"type":"category","label":"Decentralized Sequencers","items":[{"type":"link","label":"Morph\'s Decentralized Sequencer Network","href":"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","docId":"how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"General Protocol Design","items":[{"type":"link","label":"Rollup","href":"/docs/how-morph-works/general-protocol-design/rollup","docId":"how-morph-works/general-protocol-design/rollup","unlisted":false},{"type":"link","label":"Communication between Morph and Ethereum","href":"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","docId":"how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","unlisted":false},{"type":"link","label":"Transactions Life Cycle","href":"/docs/how-morph-works/general-protocol-design/transactions-life-cycle","docId":"how-morph-works/general-protocol-design/transactions-life-cycle","unlisted":false},{"type":"link","label":"Difference between Morph and Ethereum","href":"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","docId":"how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","unlisted":false},{"type":"link","label":"Understand Transaction Cost on Morph","href":"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph","docId":"build-on-morph/build-on-morph/understand-transaction-cost-on-morph","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Developer Guides","items":[{"type":"link","label":"Morph Integration One Page","href":"/docs/build-on-morph/build-on-morph/integration-one-page","docId":"build-on-morph/build-on-morph/integration-one-page","unlisted":false},{"type":"link","label":"Development Setup","href":"/docs/build-on-morph/build-on-morph/development-setup","docId":"build-on-morph/build-on-morph/development-setup","unlisted":false},{"type":"link","label":"Deploy Contracts on Morph","href":"/docs/build-on-morph/code-examples/deploy-contract-on-morph","docId":"build-on-morph/code-examples/deploy-contract-on-morph","unlisted":false},{"type":"link","label":"Verify Your Smart Contracts","href":"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts","docId":"build-on-morph/build-on-morph/verify-your-smart-contracts","unlisted":false},{"type":"link","label":"Bridge between Morph and Ethereum","href":"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","docId":"build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","unlisted":false},{"type":"link","label":"Use SDK to interact with Morph","href":"/docs/build-on-morph/sdk/globals","docId":"build-on-morph/sdk/globals","unlisted":false},{"type":"category","label":"Use Ecosystem Developer Tools","items":[{"type":"link","label":"User Onboarding","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","unlisted":false},{"type":"link","label":"Cross Chain Interoperability","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","unlisted":false},{"type":"link","label":"Safe Multi-Signature Wallet","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","unlisted":false},{"type":"link","label":"RPC Services","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","unlisted":false},{"type":"link","label":"Account Abstraction","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","unlisted":false},{"type":"link","label":"Blockchain Indexing Services","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","unlisted":false},{"type":"link","label":"Blockchain Oracles","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","unlisted":false},{"type":"link","label":"Block Explorer","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","unlisted":false},{"type":"link","label":"Artificial Intelligence","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","unlisted":false},{"type":"link","label":"Decentralized Naming Services","href":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","docId":"build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Node Operation","items":[{"type":"category","label":"Full Node","items":[{"type":"link","label":"Run a full node with docker","href":"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker","docId":"build-on-morph/developer-resources/node-operation/full-node/run-in-docker","unlisted":false},{"type":"link","label":"Run a full node from source","href":"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host","docId":"build-on-morph/developer-resources/node-operation/full-node/run-on-host","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Validator","items":[{"type":"link","label":"Run a validator with docker","href":"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","docId":"build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","unlisted":false},{"type":"link","label":"Run a validator from source","href":"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host","docId":"build-on-morph/developer-resources/node-operation/validator-node/run-on-host","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Upgrade Node","items":[{"type":"link","label":"Upgrade node running from docker","href":"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","docId":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","unlisted":false},{"type":"link","label":"Upgrade node running on the host","href":"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","docId":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Prune State","href":"/docs/build-on-morph/developer-resources/node-operation/prune-state","docId":"build-on-morph/developer-resources/node-operation/prune-state","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Developer Resources","items":[{"type":"link","label":"Contract Addresses","href":"/docs/build-on-morph/developer-resources/contracts","docId":"build-on-morph/developer-resources/contracts","unlisted":false},{"type":"link","label":"Dapp Examples on Morph","href":"/docs/build-on-morph/developer-resources/dapp-examples-on-morph","docId":"build-on-morph/developer-resources/dapp-examples-on-morph","unlisted":false},{"type":"link","label":"Morph JSON-RPC API Methods","href":"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods","docId":"build-on-morph/developer-resources/morph-json-rpc-api-methods","unlisted":false},{"type":"link","href":"https://explorer-holesky.morphl2.io/","label":"Morph Holesky Explorer"},{"type":"link","href":"https://holesky.etherscan.io/","label":"Ethereum Holesky Explorer"}],"collapsed":true,"collapsible":true}]},"docs":{"about-morph/faqs":{"id":"about-morph/faqs","title":"FAQs","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/key-concepts":{"id":"about-morph/key-concepts","title":"Key Concepts","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/key-concepts/optimistic-rollup":{"id":"about-morph/key-concepts/optimistic-rollup","title":"optimistic-rollup","description":""},"about-morph/morphs-architecture":{"id":"about-morph/morphs-architecture","title":"Morph\'s Architecture","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/morphs-vision-and-mission":{"id":"about-morph/morphs-vision-and-mission","title":"Morph\'s Vision and Mission","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/overview-of-morph":{"id":"about-morph/overview-of-morph","title":"Overview","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/roadmap":{"id":"about-morph/roadmap","title":"Roadmap","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/the-technology-behind-morph":{"id":"about-morph/the-technology-behind-morph","title":"The Technology Behind Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/user-navigation-page":{"id":"about-morph/user-navigation-page","title":"Welcome to Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"about-morph/where-should-i-start":{"id":"about-morph/where-should-i-start","title":"Where Should I Start?","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},"build-on-morph/build-on-morph/bridge-between-morph-and-ethereum":{"id":"build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","title":"Bridge between Morph and Ethereum","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/build-on-morph/development-setup":{"id":"build-on-morph/build-on-morph/development-setup","title":"Development Setup","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/build-on-morph/integration-one-page":{"id":"build-on-morph/build-on-morph/integration-one-page","title":"Morph Integration One Page","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/build-on-morph/integration-one-page-cn":{"id":"build-on-morph/build-on-morph/integration-one-page-cn","title":"\u4e2d\u6587\u5f00\u53d1\u8005\u96c6\u6210\u6587\u6863","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},"build-on-morph/build-on-morph/understand-transaction-cost-on-morph":{"id":"build-on-morph/build-on-morph/understand-transaction-cost-on-morph","title":"Understand Transaction Cost on Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/build-on-morph/verify-your-smart-contracts":{"id":"build-on-morph/build-on-morph/verify-your-smart-contracts","title":"Verify Your Smart Contracts","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/code-examples/bridge-between-morph-and-ethereum":{"id":"build-on-morph/code-examples/bridge-between-morph-and-ethereum","title":"Bridge between Morph and Ethereum","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},"build-on-morph/code-examples/deploy-contract-on-morph":{"id":"build-on-morph/code-examples/deploy-contract-on-morph","title":"Deploy Contracts on Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/developer-navigation-page":{"id":"build-on-morph/developer-navigation-page","title":"Build on Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/contracts":{"id":"build-on-morph/developer-resources/contracts","title":"Contract Addresses","description":"Morph Network Info","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/dapp-examples-on-morph":{"id":"build-on-morph/developer-resources/dapp-examples-on-morph","title":"Dapp Examples on Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/how-to-run-a-morph-node":{"id":"build-on-morph/developer-resources/how-to-run-a-morph-node","title":"How to Run a Morph Node","description":"Run a Morph Full Node"},"build-on-morph/developer-resources/morph-json-rpc-api-methods":{"id":"build-on-morph/developer-resources/morph-json-rpc-api-methods","title":"Morph JSON-RPC API Methods","description":"Most methods are similar to Ethereum\'s. For those methods, we recommend you visit Ethereum JSON-RPC API.","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/full-node/run-in-docker":{"id":"build-on-morph/developer-resources/node-operation/full-node/run-in-docker","title":"Run a full node with docker","description":"This guide will help you start a full node running in the docker container using run-morph-node","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/full-node/run-on-host":{"id":"build-on-morph/developer-resources/node-operation/full-node/run-on-host","title":"Run a full node from source","description":"This guide outlines the steps to start a Morph node. The example assumes the home directory is ~/.morph","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/prune-state":{"id":"build-on-morph/developer-resources/node-operation/prune-state","title":"Prune State","description":"The performance of a full node will degrade when the storage size reaches a high volume. We suggest that the fullnode always keep light storage by pruning the storage.","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker":{"id":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","title":"Upgrade node running from docker","description":"Docker Images","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host":{"id":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","title":"Upgrade node running on the host","description":"Upgrading the node is straightforward. Simply install the new version of the node executable file and replace the previous version. Then, stop the currently running node and restart it with the updated version. Node 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":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/validator-node/run-in-docker":{"id":"build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","title":"Run a validator with docker","description":"This guide will help you start a validator node running in the docker container using run-morph-node","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/node-operation/validator-node/run-on-host":{"id":"build-on-morph/developer-resources/node-operation/validator-node/run-on-host","title":"Run a validator from source","description":"Run a Morph Validator","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","title":"Account Abstraction","description":"Biconomy","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","title":"Artificial Intelligence","description":"ORA","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","title":"Block Explorer","description":"Besides the native Morph explorer, we have also partnered with 3rd party providers for different Morph blockchain data presentations forms.","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","title":"Blockchain Indexing Services","description":"Goldsky","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","title":"Blockchain Oracles","description":"Pyth Network","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","title":"Cross Chain Interoperability","description":"LayerZero","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","title":"Decentralized Naming Services","description":"SpaceID","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","title":"RPC Services","description":"Quicknode","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","title":"Safe Multi-Signature Wallet","description":"What is Morph Safe?","sidebar":"DeveloperSidebar"},"build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding":{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","title":"User Onboarding","description":"Reown (prev. known as WalletConnect)","sidebar":"DeveloperSidebar"},"build-on-morph/intro":{"id":"build-on-morph/intro","title":"Developer Docs","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},"build-on-morph/sdk/classes/CrossChainMessenger":{"id":"build-on-morph/sdk/classes/CrossChainMessenger","title":"CrossChainMessenger","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/classes/ETHBridgeAdapter":{"id":"build-on-morph/sdk/classes/ETHBridgeAdapter","title":"ETHBridgeAdapter","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/classes/StandardBridgeAdapter":{"id":"build-on-morph/sdk/classes/StandardBridgeAdapter","title":"StandardBridgeAdapter","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/L1ChainID":{"id":"build-on-morph/sdk/enumerations/L1ChainID","title":"L1ChainID","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/L1RpcUrls":{"id":"build-on-morph/sdk/enumerations/L1RpcUrls","title":"L1RpcUrls","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/L2ChainID":{"id":"build-on-morph/sdk/enumerations/L2ChainID","title":"L2ChainID","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/L2RpcUrls":{"id":"build-on-morph/sdk/enumerations/L2RpcUrls","title":"L2RpcUrls","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/MessageDirection":{"id":"build-on-morph/sdk/enumerations/MessageDirection","title":"MessageDirection","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/MessageReceiptStatus":{"id":"build-on-morph/sdk/enumerations/MessageReceiptStatus","title":"MessageReceiptStatus","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/enumerations/MessageStatus":{"id":"build-on-morph/sdk/enumerations/MessageStatus","title":"MessageStatus","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/asL2Provider":{"id":"build-on-morph/sdk/functions/asL2Provider","title":"asL2Provider","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/estimateL1Gas":{"id":"build-on-morph/sdk/functions/estimateL1Gas","title":"estimateL1Gas","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/estimateL1GasCost":{"id":"build-on-morph/sdk/functions/estimateL1GasCost","title":"estimateL1GasCost","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/estimateL2GasCost":{"id":"build-on-morph/sdk/functions/estimateL2GasCost","title":"estimateL2GasCost","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/estimateTotalGasCost":{"id":"build-on-morph/sdk/functions/estimateTotalGasCost","title":"estimateTotalGasCost","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/getAllOEContracts":{"id":"build-on-morph/sdk/functions/getAllOEContracts","title":"getAllOEContracts","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/getBridgeAdapters":{"id":"build-on-morph/sdk/functions/getBridgeAdapters","title":"getBridgeAdapters","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/getL1GasPrice":{"id":"build-on-morph/sdk/functions/getL1GasPrice","title":"getL1GasPrice","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/getOEContract":{"id":"build-on-morph/sdk/functions/getOEContract","title":"getOEContract","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/hashLowLevelMessageV2":{"id":"build-on-morph/sdk/functions/hashLowLevelMessageV2","title":"hashLowLevelMessageV2","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/hashMessageHash":{"id":"build-on-morph/sdk/functions/hashMessageHash","title":"hashMessageHash","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/isL2Provider":{"id":"build-on-morph/sdk/functions/isL2Provider","title":"isL2Provider","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/migratedWithdrawalGasLimit":{"id":"build-on-morph/sdk/functions/migratedWithdrawalGasLimit","title":"migratedWithdrawalGasLimit","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/omit":{"id":"build-on-morph/sdk/functions/omit","title":"omit","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/toAddress":{"id":"build-on-morph/sdk/functions/toAddress","title":"toAddress","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/toBigNumber":{"id":"build-on-morph/sdk/functions/toBigNumber","title":"toBigNumber","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/toNumber":{"id":"build-on-morph/sdk/functions/toNumber","title":"toNumber","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/toProvider":{"id":"build-on-morph/sdk/functions/toProvider","title":"toProvider","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/toSignerOrProvider":{"id":"build-on-morph/sdk/functions/toSignerOrProvider","title":"toSignerOrProvider","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/functions/toTransactionHash":{"id":"build-on-morph/sdk/functions/toTransactionHash","title":"toTransactionHash","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/globals":{"id":"build-on-morph/sdk/globals","title":"Use SDK to interact with Morph","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"build-on-morph/sdk/interfaces/BridgeAdapterData":{"id":"build-on-morph/sdk/interfaces/BridgeAdapterData","title":"BridgeAdapterData","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/BridgeAdapters":{"id":"build-on-morph/sdk/interfaces/BridgeAdapters","title":"BridgeAdapters","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/CoreCrossChainMessage":{"id":"build-on-morph/sdk/interfaces/CoreCrossChainMessage","title":"CoreCrossChainMessage","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/CrossChainMessage":{"id":"build-on-morph/sdk/interfaces/CrossChainMessage","title":"CrossChainMessage","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/CrossChainMessageRequest":{"id":"build-on-morph/sdk/interfaces/CrossChainMessageRequest","title":"CrossChainMessageRequest","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/IActionOptions":{"id":"build-on-morph/sdk/interfaces/IActionOptions","title":"IActionOptions","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/IBridgeAdapter":{"id":"build-on-morph/sdk/interfaces/IBridgeAdapter","title":"IBridgeAdapter","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/L2Block":{"id":"build-on-morph/sdk/interfaces/L2Block","title":"L2Block","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/L2BlockWithTransactions":{"id":"build-on-morph/sdk/interfaces/L2BlockWithTransactions","title":"L2BlockWithTransactions","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/L2Transaction":{"id":"build-on-morph/sdk/interfaces/L2Transaction","title":"L2Transaction","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/MessageReceipt":{"id":"build-on-morph/sdk/interfaces/MessageReceipt","title":"MessageReceipt","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/OEContracts":{"id":"build-on-morph/sdk/interfaces/OEContracts","title":"OEContracts","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/OEContractsLike":{"id":"build-on-morph/sdk/interfaces/OEContractsLike","title":"OEContractsLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/OEL1Contracts":{"id":"build-on-morph/sdk/interfaces/OEL1Contracts","title":"OEL1Contracts","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/OEL2Contracts":{"id":"build-on-morph/sdk/interfaces/OEL2Contracts","title":"OEL2Contracts","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/ProvenWithdrawal":{"id":"build-on-morph/sdk/interfaces/ProvenWithdrawal","title":"ProvenWithdrawal","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/StateRoot":{"id":"build-on-morph/sdk/interfaces/StateRoot","title":"StateRoot","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/StateRootBatch":{"id":"build-on-morph/sdk/interfaces/StateRootBatch","title":"StateRootBatch","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/StateRootBatchHeader":{"id":"build-on-morph/sdk/interfaces/StateRootBatchHeader","title":"StateRootBatchHeader","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/TokenBridgeMessage":{"id":"build-on-morph/sdk/interfaces/TokenBridgeMessage","title":"TokenBridgeMessage","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/WithdrawalEntry":{"id":"build-on-morph/sdk/interfaces/WithdrawalEntry","title":"WithdrawalEntry","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/interfaces/WithdrawMessageProof":{"id":"build-on-morph/sdk/interfaces/WithdrawMessageProof","title":"WithdrawMessageProof","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/intro":{"id":"build-on-morph/sdk/intro","title":"intro","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/AddressLike":{"id":"build-on-morph/sdk/type-aliases/AddressLike","title":"AddressLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/DeepPartial":{"id":"build-on-morph/sdk/type-aliases/DeepPartial","title":"DeepPartial","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/L1Provider":{"id":"build-on-morph/sdk/type-aliases/L1Provider","title":"L1Provider","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/L2Provider":{"id":"build-on-morph/sdk/type-aliases/L2Provider","title":"L2Provider","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/LowLevelMessage":{"id":"build-on-morph/sdk/type-aliases/LowLevelMessage","title":"LowLevelMessage","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/MessageLike":{"id":"build-on-morph/sdk/type-aliases/MessageLike","title":"MessageLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/MessageRequestLike":{"id":"build-on-morph/sdk/type-aliases/MessageRequestLike","title":"MessageRequestLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/NumberLike":{"id":"build-on-morph/sdk/type-aliases/NumberLike","title":"NumberLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/OEL1ContractsLike":{"id":"build-on-morph/sdk/type-aliases/OEL1ContractsLike","title":"OEL1ContractsLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/OEL2ContractsLike":{"id":"build-on-morph/sdk/type-aliases/OEL2ContractsLike","title":"OEL2ContractsLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/ProviderLike":{"id":"build-on-morph/sdk/type-aliases/ProviderLike","title":"ProviderLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/SignerLike":{"id":"build-on-morph/sdk/type-aliases/SignerLike","title":"SignerLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/SignerOrProviderLike":{"id":"build-on-morph/sdk/type-aliases/SignerOrProviderLike","title":"SignerOrProviderLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/type-aliases/TransactionLike":{"id":"build-on-morph/sdk/type-aliases/TransactionLike","title":"TransactionLike","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA":{"id":"build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA","title":"BRIDGE_ADAPTER_DATA","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES":{"id":"build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES","title":"CHAIN_BLOCK_TIMES","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/CONTRACT_ADDRESSES":{"id":"build-on-morph/sdk/variables/CONTRACT_ADDRESSES","title":"CONTRACT_ADDRESSES","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES":{"id":"build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES","title":"DEFAULT_L1_CONTRACT_ADDRESSES","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES":{"id":"build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES","title":"DEFAULT_L2_CONTRACT_ADDRESSES","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS":{"id":"build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS","title":"DEPOSIT_CONFIRMATION_BLOCKS","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/l1BridgeName":{"id":"build-on-morph/sdk/variables/l1BridgeName","title":"l1BridgeName","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/l1CrossDomainMessengerName":{"id":"build-on-morph/sdk/variables/l1CrossDomainMessengerName","title":"l1CrossDomainMessengerName","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/l2BridgeName":{"id":"build-on-morph/sdk/variables/l2BridgeName","title":"l2BridgeName","description":"@morph-l2/sdk \u2022 Docs"},"build-on-morph/sdk/variables/l2CrossDomainMessengerName":{"id":"build-on-morph/sdk/variables/l2CrossDomainMessengerName","title":"l2CrossDomainMessengerName","description":"@morph-l2/sdk \u2022 Docs"},"how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network":{"id":"how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","title":"Morph\'s Decentralized Sequencer Network","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum":{"id":"how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","title":"Communication between Morph and Ethereum","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"how-morph-works/general-protocol-design/difference-between-ethereum-and-morph":{"id":"how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","title":"Difference between Morph and Ethereum","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"how-morph-works/general-protocol-design/rollup":{"id":"how-morph-works/general-protocol-design/rollup","title":"Rollup","description":"Explain how rollup process works in Morph","sidebar":"DeveloperSidebar"},"how-morph-works/general-protocol-design/transactions-life-cycle":{"id":"how-morph-works/general-protocol-design/transactions-life-cycle","title":"Transactions Life Cycle","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"how-morph-works/intro":{"id":"how-morph-works/intro","title":"Introduction","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},"how-morph-works/morph-modular-design":{"id":"how-morph-works/morph-modular-design","title":"Morph Modular Design","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"how-morph-works/optimistic-zkevm":{"id":"how-morph-works/optimistic-zkevm","title":"Optimistic zkEVM","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"quick-start/bridge":{"id":"quick-start/bridge","title":"Bridge","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"quick-start/faucet":{"id":"quick-start/faucet","title":"Faucet","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"quick-start/wallet-setup":{"id":"quick-start/wallet-setup","title":"Wallet Setup","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!","sidebar":"DeveloperSidebar"},"quick-start/welcome-to-morph":{"id":"quick-start/welcome-to-morph","title":"Welcome to Morph!","description":"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}}}')}}]); \ No newline at end of file diff --git a/build/assets/js/9505.7523b444.js b/build/assets/js/9505.7523b444.js deleted file mode 100644 index df1a2d70f..000000000 --- a/build/assets/js/9505.7523b444.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9505],{9505:(c,e,h)=>{h.r(e)}}]); \ No newline at end of file diff --git a/build/assets/js/95a7ae32.3ed4f3ad.js b/build/assets/js/95a7ae32.3ed4f3ad.js deleted file mode 100644 index ee6516bd1..000000000 --- a/build/assets/js/95a7ae32.3ed4f3ad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5116],{5485:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>a});var t=n(6070),r=n(1582);const o={},c="Enumeration: MessageReceiptStatus",i={id:"build-on-morph/sdk/enumerations/MessageReceiptStatus",title:"MessageReceiptStatus",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/MessageReceiptStatus",permalink:"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.md",tags:[],version:"current",frontMatter:{}},d={},a=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"RELAYED_FAILED",id:"relayed_failed",level:3},{value:"Source",id:"source",level:4},{value:"RELAYED_SUCCEEDED",id:"relayed_succeeded",level:3},{value:"Source",id:"source-1",level:4}];function l(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / MessageReceiptStatus"]}),"\n",(0,t.jsx)(s.h1,{id:"enumeration-messagereceiptstatus",children:"Enumeration: MessageReceiptStatus"}),"\n",(0,t.jsx)(s.p,{children:"Enum describing the status of a CrossDomainMessage message receipt."}),"\n",(0,t.jsx)(s.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,t.jsx)(s.h3,{id:"relayed_failed",children:"RELAYED_FAILED"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"RELAYED_FAILED"}),": ",(0,t.jsx)(s.code,{children:"0"})]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,t.jsx)(s.p,{children:"src/interfaces/types.ts:299"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsx)(s.h3,{id:"relayed_succeeded",children:"RELAYED_SUCCEEDED"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"RELAYED_SUCCEEDED"}),": ",(0,t.jsx)(s.code,{children:"1"})]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,t.jsx)(s.p,{children:"src/interfaces/types.ts:300"})]})}function u(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>i});var t=n(758);const r={},o=t.createContext(r);function c(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/979f48c0.2b0cba0c.js b/build/assets/js/979f48c0.2b0cba0c.js deleted file mode 100644 index 4e6e2279b..000000000 --- a/build/assets/js/979f48c0.2b0cba0c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3679],{588:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>i,default:()=>a,frontMatter:()=>d,metadata:()=>t,toc:()=>l});var n=s(6070),o=s(1582);const d={},i="Interface: WithdrawMessageProof",t={id:"build-on-morph/sdk/interfaces/WithdrawMessageProof",title:"WithdrawMessageProof",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/WithdrawMessageProof",permalink:"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Properties",id:"properties",level:2},{value:"withdrawalIndex",id:"withdrawalindex",level:3},{value:"Source",id:"source",level:4},{value:"withdrawalLeaf",id:"withdrawalleaf",level:3},{value:"Source",id:"source-1",level:4},{value:"withdrawalProof",id:"withdrawalproof",level:3},{value:"Source",id:"source-2",level:4},{value:"withdrawalRoot",id:"withdrawalroot",level:3},{value:"Source",id:"source-3",level:4}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / WithdrawMessageProof"]}),"\n",(0,n.jsx)(r.h1,{id:"interface-withdrawmessageproof",children:"Interface: WithdrawMessageProof"}),"\n",(0,n.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(r.h3,{id:"withdrawalindex",children:"withdrawalIndex"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"withdrawalIndex"}),": ",(0,n.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/cross-chain-messenger.ts:61"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"withdrawalleaf",children:"withdrawalLeaf"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"withdrawalLeaf"}),": ",(0,n.jsx)(r.code,{children:"any"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/cross-chain-messenger.ts:64"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"withdrawalproof",children:"withdrawalProof"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"withdrawalProof"}),": ",(0,n.jsx)(r.code,{children:"string"}),"[]"]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-2",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/cross-chain-messenger.ts:62"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"withdrawalroot",children:"withdrawalRoot"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"withdrawalRoot"}),": ",(0,n.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-3",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/cross-chain-messenger.ts:63"})]})}function a(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>i,x:()=>t});var n=s(758);const o={},d=n.createContext(o);function i(e){const r=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/98d1a41e.a0a45743.js b/build/assets/js/98d1a41e.a0a45743.js deleted file mode 100644 index a9a9d28eb..000000000 --- a/build/assets/js/98d1a41e.a0a45743.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[720],{3074:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>t});var r=s(6070),c=s(1582);const o={},i="Interface: TokenBridgeMessage",d={id:"build-on-morph/sdk/interfaces/TokenBridgeMessage",title:"TokenBridgeMessage",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/TokenBridgeMessage",permalink:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.md",tags:[],version:"current",frontMatter:{}},l={},t=[{value:"Properties",id:"properties",level:2},{value:"amount",id:"amount",level:3},{value:"Source",id:"source",level:4},{value:"blockNumber",id:"blocknumber",level:3},{value:"Source",id:"source-1",level:4},{value:"data",id:"data",level:3},{value:"Source",id:"source-2",level:4},{value:"direction",id:"direction",level:3},{value:"Source",id:"source-3",level:4},{value:"from",id:"from",level:3},{value:"Source",id:"source-4",level:4},{value:"l1Token",id:"l1token",level:3},{value:"Source",id:"source-5",level:4},{value:"l2Token",id:"l2token",level:3},{value:"Source",id:"source-6",level:4},{value:"logIndex",id:"logindex",level:3},{value:"Source",id:"source-7",level:4},{value:"to",id:"to",level:3},{value:"Source",id:"source-8",level:4},{value:"transactionHash",id:"transactionhash",level:3},{value:"Source",id:"source-9",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,c.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / TokenBridgeMessage"]}),"\n",(0,r.jsx)(n.h1,{id:"interface-tokenbridgemessage",children:"Interface: TokenBridgeMessage"}),"\n",(0,r.jsx)(n.p,{children:"Describes a token withdrawal or deposit, along with the underlying raw cross chain message\nbehind the deposit or withdrawal."}),"\n",(0,r.jsx)(n.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(n.h3,{id:"amount",children:"amount"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"amount"}),": ",(0,r.jsx)(n.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:280"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"blocknumber",children:"blockNumber"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"blockNumber"}),": ",(0,r.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:283"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"data",children:"data"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"data"}),": ",(0,r.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:281"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"direction",children:"direction"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"direction"}),": ",(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(n.code,{children:"MessageDirection"})})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-3",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:275"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"from",children:"from"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"from"}),": ",(0,r.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-4",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:276"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"l1token",children:"l1Token"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"l1Token"}),": ",(0,r.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-5",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:278"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"l2token",children:"l2Token"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"l2Token"}),": ",(0,r.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-6",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:279"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"logindex",children:"logIndex"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"logIndex"}),": ",(0,r.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-7",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:282"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"to",children:"to"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"to"}),": ",(0,r.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-8",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:277"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h3,{id:"transactionhash",children:"transactionHash"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"transactionHash"}),": ",(0,r.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"source-9",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/interfaces/types.ts:284"})]})}function u(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>d});var r=s(758);const c={},o=r.createContext(c);function i(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/99b8a708.398eb8a9.js b/build/assets/js/99b8a708.398eb8a9.js deleted file mode 100644 index 1845dcfce..000000000 --- a/build/assets/js/99b8a708.398eb8a9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8371],{339:(e,i,o)=>{o.r(i),o.d(i,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var n=o(6070),t=o(1582);const r={title:"Morph's Vision and Mission",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"about-morph/morphs-vision-and-mission",title:"Morph's Vision and Mission",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/5-morphs-vision-and-mission.md",sourceDirName:"about-morph",slug:"/about-morph/morphs-vision-and-mission",permalink:"/docs/about-morph/morphs-vision-and-mission",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/5-morphs-vision-and-mission.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Morph's Vision and Mission",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Morph's Architecture",permalink:"/docs/about-morph/morphs-architecture"},next:{title:"Key Concepts",permalink:"/docs/about-morph/key-concepts"}},c={},l=[{value:"We Seek to Bridge the Gap\u200b",id:"we-seek-to-bridge-the-gap",level:2},{value:"Why Morph?\u200b",id:"why-morph",level:2},{value:"Commitment to Our Community\u200b",id:"commitment-to-our-community",level:2}];function h(e){const i={h2:"h2",li:"li",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.p,{children:"Morph is redefining the blockchain landscape with a clear focus on the consumer. Our vision is rooted in the belief that blockchain technology should be an accessible, practical tool for daily life, rather than a complex concept reserved for experts. We aim to transform how individuals interact with blockchain technology, making it as integral and user-friendly as any essential service in the digital age."}),"\n",(0,n.jsx)(i.h2,{id:"we-seek-to-bridge-the-gap",children:"We Seek to Bridge the Gap\u200b"}),"\n",(0,n.jsx)(i.p,{children:"Our mission is to build an ecosystem of on-chain consumer applications on a completely decentralized infrastructure. Morph was created as a more approachable and practical blockchain solution in response to the gap in existing Layer 2 offerings \u2013 a lack of focus on the end-user experience and practicality."}),"\n",(0,n.jsx)(i.h2,{id:"why-morph",children:"Why Morph?\u200b"}),"\n",(0,n.jsx)(i.p,{children:"The inspiration behind Morph is a fusion of dreams and precision. Our platform is named after Morpheus, the Greek god of dreams, symbolizing our ability to influence both the commonplace and the extraordinary. Morph also draws on the mathematical principle of morphology, representing transformations that maintain structure and integrity. The combination of these concepts represents our ability to bring revolutionary blockchain applications that focus on improving everyday life with precision and reliability."}),"\n",(0,n.jsx)(i.h2,{id:"commitment-to-our-community",children:"Commitment to Our Community\u200b"}),"\n",(0,n.jsx)(i.p,{children:"At Morph, our commitment extends beyond technology. We prioritize:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Consumer-Centric Innovation: Focusing on the needs and experiences of users, ensuring that our platform is intuitive, efficient, and beneficial for everyday use."}),"\n",(0,n.jsx)(i.li,{children:"Transparency and Trust: Building a community grounded in openness and mutual trust, where every step we take is communicated clearly and honestly."}),"\n",(0,n.jsx)(i.li,{children:"Collaborative Ecosystem: Encouraging active participation and feedback from our community, ensuring that Morph evolves in alignment with the needs and demands of its users."}),"\n"]})]})}function p(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,i,o)=>{o.d(i,{R:()=>s,x:()=>a});var n=o(758);const t={},r=n.createContext(t);function s(e){const i=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9a9366b1.ab1a0d5d.js b/build/assets/js/9a9366b1.ab1a0d5d.js deleted file mode 100644 index e32bf29bc..000000000 --- a/build/assets/js/9a9366b1.ab1a0d5d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2106],{8490:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>s,metadata:()=>c,toc:()=>h});var i=n(6070),d=n(1582);const s={},l="Interface: L2Block",c={id:"build-on-morph/sdk/interfaces/L2Block",title:"L2Block",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/L2Block.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/L2Block",permalink:"/docs/build-on-morph/sdk/interfaces/L2Block",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/L2Block.md",tags:[],version:"current",frontMatter:{}},o={},h=[{value:"Extends",id:"extends",level:2},{value:"Properties",id:"properties",level:2},{value:"_difficulty",id:"_difficulty",level:3},{value:"Inherited from",id:"inherited-from",level:4},{value:"Source",id:"source",level:4},{value:"baseFeePerGas?",id:"basefeepergas",level:3},{value:"Inherited from",id:"inherited-from-1",level:4},{value:"Source",id:"source-1",level:4},{value:"difficulty",id:"difficulty",level:3},{value:"Inherited from",id:"inherited-from-2",level:4},{value:"Source",id:"source-2",level:4},{value:"extraData",id:"extradata",level:3},{value:"Inherited from",id:"inherited-from-3",level:4},{value:"Source",id:"source-3",level:4},{value:"gasLimit",id:"gaslimit",level:3},{value:"Inherited from",id:"inherited-from-4",level:4},{value:"Source",id:"source-4",level:4},{value:"gasUsed",id:"gasused",level:3},{value:"Inherited from",id:"inherited-from-5",level:4},{value:"Source",id:"source-5",level:4},{value:"hash",id:"hash",level:3},{value:"Inherited from",id:"inherited-from-6",level:4},{value:"Source",id:"source-6",level:4},{value:"miner",id:"miner",level:3},{value:"Inherited from",id:"inherited-from-7",level:4},{value:"Source",id:"source-7",level:4},{value:"nonce",id:"nonce",level:3},{value:"Inherited from",id:"inherited-from-8",level:4},{value:"Source",id:"source-8",level:4},{value:"number",id:"number",level:3},{value:"Inherited from",id:"inherited-from-9",level:4},{value:"Source",id:"source-9",level:4},{value:"parentHash",id:"parenthash",level:3},{value:"Inherited from",id:"inherited-from-10",level:4},{value:"Source",id:"source-10",level:4},{value:"stateRoot",id:"stateroot",level:3},{value:"Source",id:"source-11",level:4},{value:"timestamp",id:"timestamp",level:3},{value:"Inherited from",id:"inherited-from-11",level:4},{value:"Source",id:"source-12",level:4},{value:"transactions",id:"transactions",level:3},{value:"Inherited from",id:"inherited-from-12",level:4},{value:"Source",id:"source-13",level:4}];function t(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,i.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,i.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L2Block"]}),"\n",(0,i.jsx)(r.h1,{id:"interface-l2block",children:"Interface: L2Block"}),"\n",(0,i.jsx)(r.p,{children:"JSON block representation when returned by L2Geth nodes. Just a normal block but with\nan added stateRoot field."}),"\n",(0,i.jsx)(r.h2,{id:"extends",children:"Extends"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.code,{children:"Block"})}),"\n"]}),"\n",(0,i.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,i.jsx)(r.h3,{id:"_difficulty",children:"_difficulty"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"_difficulty"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block._difficulty"})}),"\n",(0,i.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:41"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"basefeepergas",children:"baseFeePerGas?"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.code,{children:"optional"})," ",(0,i.jsx)(r.strong,{children:"baseFeePerGas"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-1",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.baseFeePerGas"})}),"\n",(0,i.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:46"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"difficulty",children:"difficulty"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"difficulty"}),": ",(0,i.jsx)(r.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-2",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.difficulty"})}),"\n",(0,i.jsx)(r.h4,{id:"source-2",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:40"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"extradata",children:"extraData"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"extraData"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-3",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.extraData"})}),"\n",(0,i.jsx)(r.h4,{id:"source-3",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:45"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"gaslimit",children:"gasLimit"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"gasLimit"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-4",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.gasLimit"})}),"\n",(0,i.jsx)(r.h4,{id:"source-4",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:42"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"gasused",children:"gasUsed"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"gasUsed"}),": ",(0,i.jsx)(r.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-5",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.gasUsed"})}),"\n",(0,i.jsx)(r.h4,{id:"source-5",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:43"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"hash",children:"hash"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"hash"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-6",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.hash"})}),"\n",(0,i.jsx)(r.h4,{id:"source-6",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:35"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"miner",children:"miner"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"miner"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-7",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.miner"})}),"\n",(0,i.jsx)(r.h4,{id:"source-7",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:44"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"nonce",children:"nonce"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"nonce"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-8",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.nonce"})}),"\n",(0,i.jsx)(r.h4,{id:"source-8",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:39"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"number",children:"number"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"number"}),": ",(0,i.jsx)(r.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-9",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.number"})}),"\n",(0,i.jsx)(r.h4,{id:"source-9",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:37"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"parenthash",children:"parentHash"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"parentHash"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-10",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.parentHash"})}),"\n",(0,i.jsx)(r.h4,{id:"source-10",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:36"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"stateroot",children:"stateRoot"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"stateRoot"}),": ",(0,i.jsx)(r.code,{children:"string"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"source-11",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"src/interfaces/l2-provider.ts:27"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"timestamp",children:"timestamp"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"timestamp"}),": ",(0,i.jsx)(r.code,{children:"number"})]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-11",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.timestamp"})}),"\n",(0,i.jsx)(r.h4,{id:"source-12",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:38"}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"transactions",children:"transactions"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"transactions"}),": ",(0,i.jsx)(r.code,{children:"string"}),"[]"]}),"\n"]}),"\n",(0,i.jsx)(r.h4,{id:"inherited-from-12",children:"Inherited from"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.code,{children:"Block.transactions"})}),"\n",(0,i.jsx)(r.h4,{id:"source-13",children:"Source"}),"\n",(0,i.jsx)(r.p,{children:"node_modules/@ethersproject/abstract-provider/lib/index.d.ts:49"})]})}function a(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(t,{...e})}):t(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>l,x:()=>c});var i=n(758);const d={},s=i.createContext(d);function l(e){const r=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:l(e.components),i.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9b96db99.65caf0fb.js b/build/assets/js/9b96db99.65caf0fb.js deleted file mode 100644 index a882bf12e..000000000 --- a/build/assets/js/9b96db99.65caf0fb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7855],{2708:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>l});var n=s(6070),i=s(1582);const o={},d="Type alias: L1Provider<TProvider>",t={id:"build-on-morph/sdk/type-aliases/L1Provider",title:"L1Provider",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/L1Provider.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/L1Provider",permalink:"/docs/build-on-morph/sdk/type-aliases/L1Provider",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/L1Provider.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Type declaration",id:"type-declaration",level:2},{value:"_isL1Provider",id:"_isl1provider",level:3},{value:"estimateCrossDomainMessageFee()",id:"estimatecrossdomainmessagefee",level:3},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"Type parameters",id:"type-parameters",level:2},{value:"Source",id:"source",level:2}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L1Provider"]}),"\n",(0,n.jsx)(r.h1,{id:"type-alias-l1providertprovider",children:"Type alias: L1Provider<TProvider>"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L1Provider"}),"<",(0,n.jsx)(r.code,{children:"TProvider"}),">: ",(0,n.jsx)(r.code,{children:"TProvider"})," & ",(0,n.jsx)(r.code,{children:"object"})]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:"Represents an extended version of an normal ethers Provider that returns additional L1 info and\nhas special functions for L1-specific interactions."}),"\n",(0,n.jsx)(r.h2,{id:"type-declaration",children:"Type declaration"}),"\n",(0,n.jsx)(r.h3,{id:"_isl1provider",children:"_isL1Provider"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"_isL1Provider"}),": ",(0,n.jsx)(r.code,{children:"true"})]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:"Internal property to determine if a provider is a L1Provider\nYou are likely looking for the isL2Provider function"}),"\n",(0,n.jsx)(r.h3,{id:"estimatecrossdomainmessagefee",children:"estimateCrossDomainMessageFee()"}),"\n",(0,n.jsx)(r.p,{children:"Gets the current L1 (data) gas price."}),"\n",(0,n.jsx)(r.h4,{id:"parameters",children:"Parameters"}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"l1Provider"}),": ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,n.jsx)(r.code,{children:"ProviderLike"})})]}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"sender"}),": ",(0,n.jsx)(r.code,{children:"string"})]}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"gasLimit"}),": ",(0,n.jsx)(r.code,{children:"number"})," | ",(0,n.jsx)(r.code,{children:"bigint"})," | ",(0,n.jsx)(r.code,{children:"BigNumber"})]}),"\n",(0,n.jsx)(r.h4,{id:"returns",children:"Returns"}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.code,{children:"Promise"}),"<",(0,n.jsx)(r.code,{children:"BigNumber"}),">"]}),"\n",(0,n.jsx)(r.p,{children:"Current L1 data gas price in wei."}),"\n",(0,n.jsx)(r.h2,{id:"type-parameters",children:"Type parameters"}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"TProvider"})," ",(0,n.jsx)(r.em,{children:"extends"})," ",(0,n.jsx)(r.code,{children:"Provider"})]}),"\n",(0,n.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/l1-provider.ts:11"})]})}function h(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>d,x:()=>t});var n=s(758);const i={},o=n.createContext(i);function d(e){const r=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),n.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9d4e1be7.a9ee7661.js b/build/assets/js/9d4e1be7.a9ee7661.js deleted file mode 100644 index 54f4e4666..000000000 --- a/build/assets/js/9d4e1be7.a9ee7661.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7220],{4775:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>s,metadata:()=>h,toc:()=>d});var t=n(6070),o=n(1582);const s={title:"Development Setup",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},i="Start Developing on Morph",h={id:"build-on-morph/build-on-morph/development-setup",title:"Development Setup",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/build-on-morph/2-development-setup.md",sourceDirName:"build-on-morph/build-on-morph",slug:"/build-on-morph/build-on-morph/development-setup",permalink:"/docs/build-on-morph/build-on-morph/development-setup",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/build-on-morph/2-development-setup.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Development Setup",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Morph Integration One Page",permalink:"/docs/build-on-morph/build-on-morph/integration-one-page"},next:{title:"Deploy Contracts on Morph",permalink:"/docs/build-on-morph/code-examples/deploy-contract-on-morph"}},l={},d=[{value:"Step 1: Network Configuration",id:"step-1-network-configuration",level:2},{value:"Step 2: Set up your developing framework",id:"step-2-set-up-your-developing-framework",level:2},{value:"Hardhat",id:"hardhat",level:3},{value:"Foundry",id:"foundry",level:3},{value:"ethers.js",id:"ethersjs",level:3},{value:"Step 1: Network Configuration",id:"step-1-network-configuration-1",level:2},{value:"Step 2: Set up your developing framework",id:"step-2-set-up-your-developing-framework-1",level:2},{value:"Hardhat",id:"hardhat-1",level:3},{value:"Foundry",id:"foundry-1",level:3},{value:"ethers.js",id:"ethersjs-1",level:3},{value:"Step 3: Acquire Ether",id:"step-3-acquire-ether",level:2}];function c(e){const r={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.h1,{id:"start-developing-on-morph",children:"Start Developing on Morph"}),"\n",(0,t.jsx)(r.p,{children:"Developing on Morph is as straightforward as developing on Ethereum."}),"\n",(0,t.jsx)(r.p,{children:"To deploy contracts onto a MorphL2 chain, simply set the RPC endpoint of your target MorphL2 chain and deploy using your preferred Ethereum development framework:"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"https://hardhat.org/",children:"Hardhat"})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"https://github.com/foundry-rs/foundry",children:"Foundry"})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"https://eth-brownie.readthedocs.io/en/stable/",children:"Brownie"})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"https://docs.alchemy.com/reference/alchemy-sdk-quickstart",children:"Alchemy"})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"https://www.quicknode.com/docs/quicknode-sdk/getting-started?utm_source=morph-docs",children:"QuickNode SDK"})}),"\n"]}),"\n",(0,t.jsx)(r.p,{children:"...it all just works!"}),"\n",(0,t.jsx)(r.h1,{id:"mainnet",children:"Mainnet:"}),"\n",(0,t.jsx)(r.h2,{id:"step-1-network-configuration",children:"Step 1: Network Configuration"}),"\n",(0,t.jsx)(r.p,{children:"Before you start, ensure you are connected to the following networks:"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Network Name"}),(0,t.jsx)(r.th,{children:"Morph Mainnet"}),(0,t.jsx)(r.th,{children:"Ethereum Mainnet"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"RPC URL"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://rpc-quicknode.morphl2.io",children:"https://rpc-quicknode.morphl2.io"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://ethereum-rpc.publicnode.com/",children:"https://ethereum-rpc.publicnode.com/"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Chain ID"}),(0,t.jsx)(r.td,{children:"2818"}),(0,t.jsx)(r.td,{children:"1"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Currency Symbol"}),(0,t.jsx)(r.td,{children:"ETH"}),(0,t.jsx)(r.td,{children:"ETH"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Block Explorer URL"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://explorer.morphl2.io/",children:"https://explorer.morphl2.io/"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://etherscan.io/",children:"https://etherscan.io/"})})]})]})]}),"\n",(0,t.jsx)(r.admonition,{title:"Websocket Connection",type:"tip",children:(0,t.jsx)(r.p,{children:"wss://rpc-quicknode.morphl2.io"})}),"\n",(0,t.jsx)(r.h2,{id:"step-2-set-up-your-developing-framework",children:"Step 2: Set up your developing framework"}),"\n",(0,t.jsx)(r.h3,{id:"hardhat",children:"Hardhat"}),"\n",(0,t.jsx)(r.p,{children:"Modify your Hardhat config file hardhat.config.ts to point at the Morph public RPC."}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-jsx",children:"const config: HardhatUserConfig = {\n ...\n networks: {\n morphl2: {\n url: 'https://rpc-quicknode.morphl2.io',\n accounts:\n process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],\n gasprice = 1000000000\n },\n },\n};\n\n"})}),"\n",(0,t.jsx)(r.h3,{id:"foundry",children:"Foundry"}),"\n",(0,t.jsx)(r.p,{children:"To deploy using Morph Public RPC, run:"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-jsx",children:"forge create ... --rpc-url= --legacy\n"})}),"\n",(0,t.jsx)(r.h3,{id:"ethersjs",children:"ethers.js"}),"\n",(0,t.jsx)(r.p,{children:"Setting up a Morph provider in an ethers script:"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-jsx",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.providers.JsonRpcProvider(\n 'https://rpc-quicknode.morphl2.io'\n);\n"})}),"\n",(0,t.jsx)(r.h1,{id:"holesky-testnet",children:"Holesky Testnet:"}),"\n",(0,t.jsx)(r.h2,{id:"step-1-network-configuration-1",children:"Step 1: Network Configuration"}),"\n",(0,t.jsx)(r.p,{children:"Before you start, ensure you are connected to the following networks:"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Network Name"}),(0,t.jsx)(r.th,{children:"Morph Holesky Testnet"}),(0,t.jsx)(r.th,{children:"Holesky Testnet"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"RPC URL"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://rpc-quicknode-holesky.morphl2.io",children:"https://rpc-quicknode-holesky.morphl2.io"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://ethereum-holesky-rpc.publicnode.com/",children:"https://ethereum-holesky-rpc.publicnode.com/"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Chain ID"}),(0,t.jsx)(r.td,{children:"2810"}),(0,t.jsx)(r.td,{children:"17000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Currency Symbol"}),(0,t.jsx)(r.td,{children:"ETH"}),(0,t.jsx)(r.td,{children:"ETH"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Block Explorer URL"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/",children:"https://explorer-holesky.morphl2.io/"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.a,{href:"https://holesky.etherscan.io/",children:"https://holesky.etherscan.io/"})})]})]})]}),"\n",(0,t.jsx)(r.admonition,{title:"Websocket Connection",type:"tip",children:(0,t.jsx)(r.p,{children:"wss://rpc-quicknode-holesky.morphl2.io"})}),"\n",(0,t.jsx)(r.h2,{id:"step-2-set-up-your-developing-framework-1",children:"Step 2: Set up your developing framework"}),"\n",(0,t.jsx)(r.h3,{id:"hardhat-1",children:"Hardhat"}),"\n",(0,t.jsx)(r.p,{children:"Modify your Hardhat config file hardhat.config.ts to point at the Morph public RPC."}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-jsx",children:"const config: HardhatUserConfig = {\n ...\n networks: {\n morphl2: {\n url: 'https://rpc-quicknode-holesky.morphl2.io',\n accounts:\n process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],\n gasprice = 2000000000\n },\n },\n};\n\n"})}),"\n",(0,t.jsx)(r.h3,{id:"foundry-1",children:"Foundry"}),"\n",(0,t.jsx)(r.p,{children:"To deploy using Morph Public RPC, run:"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-jsx",children:"forge create ... --rpc-url= --legacy\n"})}),"\n",(0,t.jsx)(r.h3,{id:"ethersjs-1",children:"ethers.js"}),"\n",(0,t.jsx)(r.p,{children:"Setting up a Morph provider in an ethers script:"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-jsx",children:"import { ethers } from 'ethers';\n\nconst provider = new ethers.providers.JsonRpcProvider(\n 'https://rpc-quicknode-holesky.morphl2.io'\n);\n"})}),"\n",(0,t.jsx)(r.h2,{id:"step-3-acquire-ether",children:"Step 3: Acquire Ether"}),"\n",(0,t.jsxs)(r.p,{children:["To start building on Morph, you may need some testnet ETH. Use a faucet to acquire holesky Ether, then ",(0,t.jsx)(r.a,{href:"https://bridge-holesky.morphl2.io",children:"bridge"})," the test Ethereum Ether to the Morph testnet."]}),"\n",(0,t.jsx)(r.p,{children:"Each faucet has its own rules and requirements, so you may need to try a few before finding one that works for you."}),"\n",(0,t.jsx)(r.p,{children:"Holesky ETH faucet websites:"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://stakely.io/en/faucet/ethereum-holesky-testnet-eth",children:"https://stakely.io/en/faucet/ethereum-holesky-testnet-eth"})}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://faucet.quicknode.com/ethereum/holesky",children:"https://faucet.quicknode.com/ethereum/holesky"})}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.a,{href:"https://holesky-faucet.pk910.de/",children:"https://holesky-faucet.pk910.de/"})}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"https://cloud.google.com/application/web3/faucet/ethereum",children:"https://cloud.google.com/application/web3/faucet/ethereum"})," (needs a Google account)"]}),"\n",(0,t.jsxs)(r.p,{children:["We have our own ",(0,t.jsx)(r.a,{href:"https://morphfaucet.com/",children:"website faucet"})," that can claim ETH & USDT for you initial usage."]}),"\n",(0,t.jsxs)(r.p,{children:["Morph also offers a ",(0,t.jsx)(r.a,{href:"/docs/quick-start/faucet#morph-holesky-eth",children:"Discord faucet"})," to obtain Morph Holesky USDT & Morph Holesky ETH."]}),"\n",(0,t.jsxs)(r.p,{children:["Once you receive ETH on Holesky, you should see it in your wallet on the\xa0",(0,t.jsx)(r.em,{children:"Holesky Network"}),". It may take a few seconds for them to appear, but you can check the status by looking for a transaction to your address on a\xa0",(0,t.jsx)(r.strong,{children:(0,t.jsx)(r.a,{href:"https://holesky.etherscan.io/",children:"Holesky Block Explorer"})}),"."]})]})}function p(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>i,x:()=>h});var t=n(758);const o={},s=t.createContext(o);function i(e){const r=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function h(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9e1db927.a0cdd623.js b/build/assets/js/9e1db927.a0cdd623.js deleted file mode 100644 index 837a8c4c3..000000000 --- a/build/assets/js/9e1db927.a0cdd623.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2960],{2600:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>a,frontMatter:()=>i,metadata:()=>c,toc:()=>t});var n=r(6070),d=r(1582);const i={},o="Interface: IBridgeAdapter",c={id:"build-on-morph/sdk/interfaces/IBridgeAdapter",title:"IBridgeAdapter",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/IBridgeAdapter",permalink:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.md",tags:[],version:"current",frontMatter:{}},l={},t=[{value:"Properties",id:"properties",level:2},{value:"estimateGas",id:"estimategas",level:3},{value:"approve()",id:"approve",level:4},{value:"Parameters",id:"parameters",level:5},{value:"Returns",id:"returns",level:5},{value:"deposit()",id:"deposit",level:4},{value:"Parameters",id:"parameters-1",level:5},{value:"Returns",id:"returns-1",level:5},{value:"withdraw()",id:"withdraw",level:4},{value:"Parameters",id:"parameters-2",level:5},{value:"Returns",id:"returns-2",level:5},{value:"Source",id:"source",level:4},{value:"l1Bridge",id:"l1bridge",level:3},{value:"Source",id:"source-1",level:4},{value:"l2Bridge",id:"l2bridge",level:3},{value:"Source",id:"source-2",level:4},{value:"messenger",id:"messenger",level:3},{value:"Source",id:"source-3",level:4},{value:"populateTransaction",id:"populatetransaction",level:3},{value:"approve()",id:"approve-1",level:4},{value:"Parameters",id:"parameters-3",level:5},{value:"Returns",id:"returns-3",level:5},{value:"deposit()",id:"deposit-1",level:4},{value:"Parameters",id:"parameters-4",level:5},{value:"Returns",id:"returns-4",level:5},{value:"withdraw()",id:"withdraw-1",level:4},{value:"Parameters",id:"parameters-5",level:5},{value:"Returns",id:"returns-5",level:5},{value:"Source",id:"source-4",level:4},{value:"Methods",id:"methods",level:2},{value:"approval()",id:"approval",level:3},{value:"Parameters",id:"parameters-6",level:4},{value:"Returns",id:"returns-6",level:4},{value:"Source",id:"source-5",level:4},{value:"approve()",id:"approve-2",level:3},{value:"Parameters",id:"parameters-7",level:4},{value:"Returns",id:"returns-7",level:4},{value:"Source",id:"source-6",level:4},{value:"deposit()",id:"deposit-2",level:3},{value:"Parameters",id:"parameters-8",level:4},{value:"Returns",id:"returns-8",level:4},{value:"Source",id:"source-7",level:4},{value:"getDepositsByAddress()",id:"getdepositsbyaddress",level:3},{value:"Parameters",id:"parameters-9",level:4},{value:"Returns",id:"returns-9",level:4},{value:"Source",id:"source-8",level:4},{value:"getWithdrawalsByAddress()",id:"getwithdrawalsbyaddress",level:3},{value:"Parameters",id:"parameters-10",level:4},{value:"Returns",id:"returns-10",level:4},{value:"Source",id:"source-9",level:4},{value:"supportsTokenPair()",id:"supportstokenpair",level:3},{value:"Parameters",id:"parameters-11",level:4},{value:"Returns",id:"returns-11",level:4},{value:"Source",id:"source-10",level:4},{value:"withdraw()",id:"withdraw-2",level:3},{value:"Parameters",id:"parameters-12",level:4},{value:"Returns",id:"returns-12",level:4},{value:"Source",id:"source-11",level:4}];function h(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",p:"p",strong:"strong",...(0,d.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / IBridgeAdapter"]}),"\n",(0,n.jsx)(s.h1,{id:"interface-ibridgeadapter",children:"Interface: IBridgeAdapter"}),"\n",(0,n.jsx)(s.p,{children:"Represents an adapter for an L1 - L2 token bridge. Each custom bridge currently needs its own\nadapter because the bridge interface is not standardized. This may change in the future."}),"\n",(0,n.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(s.h3,{id:"estimategas",children:"estimateGas"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"estimateGas"}),": ",(0,n.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Object that holds the functions that estimates the gas required for a given transaction.\nFollows the pattern used by ethers.js."}),"\n",(0,n.jsx)(s.h4,{id:"approve",children:"approve()"}),"\n",(0,n.jsx)(s.p,{children:"Estimates gas required to approve some tokens to deposit into the L2 chain."}),"\n",(0,n.jsx)(s.h5,{id:"parameters",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h5,{id:"returns",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Gas estimate for the transaction."}),"\n",(0,n.jsx)(s.h4,{id:"deposit",children:"deposit()"}),"\n",(0,n.jsx)(s.p,{children:"Estimates gas required to deposit some tokens into the L2 chain."}),"\n",(0,n.jsx)(s.h5,{id:"parameters-1",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to deposit."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h5,{id:"returns-1",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Gas estimate for the transaction."}),"\n",(0,n.jsx)(s.h4,{id:"withdraw",children:"withdraw()"}),"\n",(0,n.jsx)(s.p,{children:"Estimates gas required to withdraw some tokens back to the L1 chain."}),"\n",(0,n.jsx)(s.h5,{id:"parameters-2",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to withdraw."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h5,{id:"returns-2",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Gas estimate for the transaction."}),"\n",(0,n.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:221"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"l1bridge",children:"l1Bridge"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"l1Bridge"}),": ",(0,n.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"L1 bridge contract."}),"\n",(0,n.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:38"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"l2bridge",children:"l2Bridge"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"l2Bridge"}),": ",(0,n.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"L2 bridge contract."}),"\n",(0,n.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:43"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"messenger",children:"messenger"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"messenger"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,n.jsx)(s.code,{children:"CrossChainMessenger"})})]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Provider used to make queries related to cross-chain interactions."}),"\n",(0,n.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:33"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"populatetransaction",children:"populateTransaction"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"populateTransaction"}),": ",(0,n.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Object that holds the functions that generate transactions to be signed by the user.\nFollows the pattern used by ethers.js."}),"\n",(0,n.jsx)(s.h4,{id:"approve-1",children:"approve()"}),"\n",(0,n.jsx)(s.p,{children:"Generates a transaction for approving some tokens to deposit into the L2 chain."}),"\n",(0,n.jsx)(s.h5,{id:"parameters-3",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h5,{id:"returns-3",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Transaction that can be signed and executed to deposit the tokens."}),"\n",(0,n.jsx)(s.h4,{id:"deposit-1",children:"deposit()"}),"\n",(0,n.jsx)(s.p,{children:"Generates a transaction for depositing some tokens into the L2 chain."}),"\n",(0,n.jsx)(s.h5,{id:"parameters-4",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to deposit."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h5,{id:"returns-4",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Transaction that can be signed and executed to deposit the tokens."}),"\n",(0,n.jsx)(s.h4,{id:"withdraw-1",children:"withdraw()"}),"\n",(0,n.jsx)(s.p,{children:"Generates a transaction for withdrawing some tokens back to the L1 chain."}),"\n",(0,n.jsx)(s.h5,{id:"parameters-5",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to withdraw."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h5,{id:"returns-5",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Transaction that can be signed and executed to withdraw the tokens."}),"\n",(0,n.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:167"}),"\n",(0,n.jsx)(s.h2,{id:"methods",children:"Methods"}),"\n",(0,n.jsx)(s.h3,{id:"approval",children:"approval()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"approval"}),"(",(0,n.jsx)(s.code,{children:"l1Token"}),", ",(0,n.jsx)(s.code,{children:"l2Token"}),", ",(0,n.jsx)(s.code,{children:"opts"}),"?): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Queries the account's approval amount for a given L1 token."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-6",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h4,{id:"returns-6",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Amount of tokens approved for deposits from the account."}),"\n",(0,n.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:103"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"approve-2",children:"approve()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"approve"}),"(",(0,n.jsx)(s.code,{children:"l1Token"}),", ",(0,n.jsx)(s.code,{children:"l2Token"}),", ",(0,n.jsx)(s.code,{children:"amount"}),", ",(0,n.jsx)(s.code,{children:"signer"}),", ",(0,n.jsx)(s.code,{children:"opts"}),"?): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Approves a deposit into the L2 chain."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-7",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"signer"}),": ",(0,n.jsx)(s.code,{children:"Signer"})]}),"\n",(0,n.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h4,{id:"returns-7",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Transaction response for the approval transaction."}),"\n",(0,n.jsx)(s.h4,{id:"source-6",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:119"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"deposit-2",children:"deposit()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"deposit"}),"(",(0,n.jsx)(s.code,{children:"l1Token"}),", ",(0,n.jsx)(s.code,{children:"l2Token"}),", ",(0,n.jsx)(s.code,{children:"amount"}),", ",(0,n.jsx)(s.code,{children:"signer"}),", ",(0,n.jsx)(s.code,{children:"opts"}),"?): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Deposits some tokens into the L2 chain."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-8",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to deposit."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"signer"}),": ",(0,n.jsx)(s.code,{children:"Signer"})]}),"\n",(0,n.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h4,{id:"returns-8",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Transaction response for the deposit transaction."}),"\n",(0,n.jsx)(s.h4,{id:"source-7",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:137"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"getdepositsbyaddress",children:"getDepositsByAddress()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"getDepositsByAddress"}),"(",(0,n.jsx)(s.code,{children:"address"}),", ",(0,n.jsx)(s.code,{children:"opts"}),"?): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,n.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Gets all deposits for a given address."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-9",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"address"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,n.jsx)(s.p,{children:"Options object."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,n.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,n.jsx)(s.p,{children:"Block to start searching for messages from. If not provided, will start\nfrom the first block (block #0)."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,n.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,n.jsx)(s.p,{children:'Block to stop searching for messages at. If not provided, will stop at the\nlatest known block ("latest").'}),"\n",(0,n.jsx)(s.h4,{id:"returns-9",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,n.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,n.jsx)(s.p,{children:"All deposit token bridge messages sent by the given address."}),"\n",(0,n.jsx)(s.h4,{id:"source-8",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:56"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"getwithdrawalsbyaddress",children:"getWithdrawalsByAddress()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"getWithdrawalsByAddress"}),"(",(0,n.jsx)(s.code,{children:"address"}),", ",(0,n.jsx)(s.code,{children:"opts"}),"?): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,n.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Gets all withdrawals for a given address."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-10",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"address"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,n.jsx)(s.p,{children:"Options object."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,n.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,n.jsx)(s.p,{children:"Block to start searching for messages from. If not provided, will start\nfrom the first block (block #0)."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,n.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,n.jsx)(s.p,{children:'Block to stop searching for messages at. If not provided, will stop at the\nlatest known block ("latest").'}),"\n",(0,n.jsx)(s.h4,{id:"returns-10",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,n.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,n.jsx)(s.p,{children:"All withdrawal token bridge messages sent by the given address."}),"\n",(0,n.jsx)(s.h4,{id:"source-9",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:75"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"supportstokenpair",children:"supportsTokenPair()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"supportsTokenPair"}),"(",(0,n.jsx)(s.code,{children:"l1Token"}),", ",(0,n.jsx)(s.code,{children:"l2Token"}),"): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"boolean"}),">"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Checks whether the given token pair is supported by the bridge."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-11",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsx)(s.h4,{id:"returns-11",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"boolean"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Whether the given token pair is supported by the bridge."}),"\n",(0,n.jsx)(s.h4,{id:"source-10",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:90"}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h3,{id:"withdraw-2",children:"withdraw()"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"withdraw"}),"(",(0,n.jsx)(s.code,{children:"l1Token"}),", ",(0,n.jsx)(s.code,{children:"l2Token"}),", ",(0,n.jsx)(s.code,{children:"amount"}),", ",(0,n.jsx)(s.code,{children:"signer"}),", ",(0,n.jsx)(s.code,{children:"opts"}),"?): ",(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Withdraws some tokens back to the L1 chain."}),"\n",(0,n.jsx)(s.h4,{id:"parameters-12",children:"Parameters"}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l1Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"l2Token"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,n.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"amount"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,n.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,n.jsx)(s.p,{children:"Amount of the token to withdraw."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"signer"}),": ",(0,n.jsx)(s.code,{children:"Signer"})]}),"\n",(0,n.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,n.jsxs)(s.p,{children:["\u2022 ",(0,n.jsx)(s.strong,{children:"opts?"}),": ",(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,n.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,n.jsx)(s.p,{children:"Additional options."}),"\n",(0,n.jsx)(s.h4,{id:"returns-12",children:"Returns"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"Promise"}),"<",(0,n.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,n.jsx)(s.p,{children:"Transaction response for the withdraw transaction."}),"\n",(0,n.jsx)(s.h4,{id:"source-11",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/bridge-adapter.ts:155"})]})}function a(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,s,r)=>{r.d(s,{R:()=>o,x:()=>c});var n=r(758);const d={},i=n.createContext(d);function o(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:o(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9e78961b.e32bc84b.js b/build/assets/js/9e78961b.e32bc84b.js deleted file mode 100644 index 8b48cd48c..000000000 --- a/build/assets/js/9e78961b.e32bc84b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2428],{5575:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var s=n(6070),c=n(1582);const t={},l="Interface: OEL1Contracts",o={id:"build-on-morph/sdk/interfaces/OEL1Contracts",title:"OEL1Contracts",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/OEL1Contracts.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/OEL1Contracts",permalink:"/docs/build-on-morph/sdk/interfaces/OEL1Contracts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/OEL1Contracts.md",tags:[],version:"current",frontMatter:{}},i={},d=[{value:"Properties",id:"properties",level:2},{value:"EnforcedTxGateway",id:"enforcedtxgateway",level:3},{value:"Source",id:"source",level:4},{value:"L1CrossDomainMessenger",id:"l1crossdomainmessenger",level:3},{value:"Source",id:"source-1",level:4},{value:"L1ERC1155Gateway",id:"l1erc1155gateway",level:3},{value:"Source",id:"source-2",level:4},{value:"L1ERC721Gateway",id:"l1erc721gateway",level:3},{value:"Source",id:"source-3",level:4},{value:"L1ETHGateway",id:"l1ethgateway",level:3},{value:"Source",id:"source-4",level:4},{value:"L1GatewayRouter",id:"l1gatewayrouter",level:3},{value:"Source",id:"source-5",level:4},{value:"L1MessageQueueWithGasPriceOracle",id:"l1messagequeuewithgaspriceoracle",level:3},{value:"Source",id:"source-6",level:4},{value:"L1StandardERC20Gateway",id:"l1standarderc20gateway",level:3},{value:"Source",id:"source-7",level:4},{value:"L1WETHGateway",id:"l1wethgateway",level:3},{value:"Source",id:"source-8",level:4},{value:"MorphToken?",id:"morphtoken",level:3},{value:"Source",id:"source-9",level:4},{value:"Rollup",id:"rollup",level:3},{value:"Source",id:"source-10",level:4},{value:"Staking",id:"staking",level:3},{value:"Source",id:"source-11",level:4},{value:"WETH",id:"weth",level:3},{value:"Source",id:"source-12",level:4}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,c.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / OEL1Contracts"]}),"\n",(0,s.jsx)(r.h1,{id:"interface-oel1contracts",children:"Interface: OEL1Contracts"}),"\n",(0,s.jsx)(r.p,{children:"L1 contract references."}),"\n",(0,s.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,s.jsx)(r.h3,{id:"enforcedtxgateway",children:"EnforcedTxGateway"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"EnforcedTxGateway"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:64"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1crossdomainmessenger",children:"L1CrossDomainMessenger"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1CrossDomainMessenger"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:54"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1erc1155gateway",children:"L1ERC1155Gateway"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1ERC1155Gateway"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-2",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:63"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1erc721gateway",children:"L1ERC721Gateway"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1ERC721Gateway"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-3",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:62"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1ethgateway",children:"L1ETHGateway"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1ETHGateway"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-4",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:60"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1gatewayrouter",children:"L1GatewayRouter"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1GatewayRouter"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-5",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:59"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1messagequeuewithgaspriceoracle",children:"L1MessageQueueWithGasPriceOracle"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1MessageQueueWithGasPriceOracle"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-6",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:55"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1standarderc20gateway",children:"L1StandardERC20Gateway"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1StandardERC20Gateway"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-7",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:61"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l1wethgateway",children:"L1WETHGateway"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"L1WETHGateway"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-8",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:66"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"morphtoken",children:"MorphToken?"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"optional"})," ",(0,s.jsx)(r.strong,{children:"MorphToken"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-9",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:68"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"rollup",children:"Rollup"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"Rollup"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-10",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:58"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"staking",children:"Staking"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"Staking"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-11",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:56"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"weth",children:"WETH"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"WETH"}),": ",(0,s.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-12",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:65"})]})}function h(e={}){const{wrapper:r}={...(0,c.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>l,x:()=>o});var s=n(758);const c={},t=s.createContext(c);function l(e){const r=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:l(e.components),s.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9fc9b620.4be64ddf.js b/build/assets/js/9fc9b620.4be64ddf.js deleted file mode 100644 index 4485c9074..000000000 --- a/build/assets/js/9fc9b620.4be64ddf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8656],{1706:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=t(6070),a=t(1582);const o={title:"Key Concepts",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},r=void 0,s={id:"about-morph/key-concepts",title:"Key Concepts",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/8-key-concepts.md",sourceDirName:"about-morph",slug:"/about-morph/key-concepts",permalink:"/docs/about-morph/key-concepts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/8-key-concepts.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Key Concepts",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Morph's Vision and Mission",permalink:"/docs/about-morph/morphs-vision-and-mission"},next:{title:"Roadmap",permalink:"/docs/about-morph/roadmap"}},l={},c=[{value:"Optimistic Rollups",id:"optimistic-rollups",level:2},{value:"ZK Rollups",id:"zk-rollups",level:2},{value:"Sequencers",id:"sequencers",level:2},{value:"Fraud Proof",id:"fraud-proof",level:2},{value:"Validity Proof",id:"validity-proof",level:2},{value:"zkEVM",id:"zkevm",level:2},{value:"BLS Signatures",id:"bls-signatures",level:2},{value:"Data availability",id:"data-availability",level:2},{value:"EIP - 4844",id:"eip---4844",level:2}];function h(e){const i={a:"a",h2:"h2",p:"p",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h2,{id:"optimistic-rollups",children:"Optimistic Rollups"}),"\n",(0,n.jsx)(i.p,{children:"Optimistic rollups are a Layer 2 scaling solution for blockchains that enhance transaction throughput and reduce costs by assuming transactions are valid and only verifying them if a challenge is raised. This method relies on a challenge period during which validators can dispute transactions they believe to be incorrect. If no disputes are raised, the transactions are considered final. Optimistic rollups significantly improve scalability while maintaining security, making them an efficient solution for handling a higher volume of transactions on blockchain networks."}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.a,{href:"https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/",children:"Learn more about Optimistic Rollups"})}),"\n",(0,n.jsx)(i.h2,{id:"zk-rollups",children:"ZK Rollups"}),"\n",(0,n.jsx)(i.p,{children:"ZK rollups, or zero-knowledge rollups, are a Layer 2 scaling solution that uses cryptographic proofs to verify the validity of transactions off-chain before bundling them and submitting a proof to the main blockchain. Each batch of transactions is accompanied by a zero-knowledge proof, which ensures that all transactions within the batch are valid without revealing the underlying data. This method provides immediate finality and high security, as the main chain only needs to verify the proof rather than each individual transaction, significantly reducing the computational load and enhancing scalability."}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.a,{href:"https://ethereum.org/en/developers/docs/scaling/zk-rollups/",children:"Learn more about ZK Rollups"})}),"\n",(0,n.jsx)(i.h2,{id:"sequencers",children:"Sequencers"}),"\n",(0,n.jsx)(i.p,{children:"Sequencers are specialized nodes responsible for ordering and bundling transactions in Layer 2 scaling solutions like rollups. They play a crucial role in determining the sequence of transactions, creating blocks, and periodically committing these blocks to the main blockchain. In decentralized systems, multiple sequencers work together to enhance security and prevent single points of failure. By ensuring transactions are processed efficiently and securely, sequencers help maintain the integrity and performance of Layer 2 networks."}),"\n",(0,n.jsx)(i.h2,{id:"fraud-proof",children:"Fraud Proof"}),"\n",(0,n.jsx)(i.p,{children:"Fraud proof is a mechanism used in blockchain scaling solutions like optimistic rollups to ensure transaction validity. When a sequencer submits a batch of transactions, they are assumed to be valid unless contested. During a designated challenge period, any validator or network participant can submit a fraud proof if they detect an incorrect transaction. This proof involves verifying the transaction data and demonstrating the error to the main blockchain. If the fraud proof is validated, the incorrect transaction is rejected, ensuring the integrity and security of the network while minimizing computational costs."}),"\n",(0,n.jsx)(i.h2,{id:"validity-proof",children:"Validity Proof"}),"\n",(0,n.jsx)(i.p,{children:"Validity proof is a cryptographic method used to ensure that transactions within a rollup are correct before they are finalized on the main blockchain. In systems like ZK rollups, each batch of transactions is accompanied by a validity proof that verifies the correctness of all transactions within the batch. This approach enhances security and efficiency by eliminating the need for individual transaction verification on the main chain, providing immediate finality and reducing computational overhead."}),"\n",(0,n.jsx)(i.h2,{id:"zkevm",children:"zkEVM"}),"\n",(0,n.jsx)(i.p,{children:"zkEVM, or Zero-Knowledge Ethereum Virtual Machine, is an advanced implementation of the Ethereum Virtual Machine that integrates zero-knowledge proofs to enhance scalability and security. By using zk proofs, zkEVM allows for the validation of transactions off-chain, ensuring that only valid state transitions are submitted to the main chain. This method provides high throughput and lower transaction costs while maintaining the security and trustlessness of Ethereum."}),"\n",(0,n.jsx)(i.h2,{id:"bls-signatures",children:"BLS Signatures"}),"\n",(0,n.jsx)(i.p,{children:"BLS (Boneh-Lynn-Shacham) signatures are a cryptographic technique used to aggregate multiple signatures into a single compact signature. This is particularly useful in blockchain networks for reducing the data size and improving the efficiency of transaction verification. BLS signatures enable multiple validators to sign a message collectively, resulting in a single signature that can be verified quickly and cost-effectively, enhancing the overall scalability of the network."}),"\n",(0,n.jsx)(i.h2,{id:"data-availability",children:"Data availability"}),"\n",(0,n.jsx)(i.p,{children:"Data availability refers to the assurance that all necessary data for verifying blockchain transactions is accessible and retrievable. In the context of rollups, ensuring data availability is crucial for maintaining the integrity and security of off-chain transactions. It guarantees that anyone can download and verify the data used in rollup proofs, preventing scenarios where transactions are finalized without the possibility of verification."}),"\n",(0,n.jsx)(i.h2,{id:"eip---4844",children:"EIP - 4844"}),"\n",(0,n.jsx)(i.p,{children:"EIP-4844, also known as Proto-Danksharding, is an Ethereum Improvement Proposal aimed at introducing a new type of transaction that reduces data costs and improves scalability. It involves adding a new transaction format that can efficiently handle large amounts of data, laying the groundwork for future sharding implementations. This proposal enhances the network's ability to manage data more effectively, contributing to overall improvements in throughput and cost-efficiency."}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.a,{href:"https://www.eip4844.com/",children:"Discover how EIP-4844 impacts Morph and other rollups."})})]})}function d(e={}){const{wrapper:i}={...(0,a.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>s});var n=t(758);const a={},o=n.createContext(a);function r(e){const i=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function s(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),n.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/9ff57eaa.986eb965.js b/build/assets/js/9ff57eaa.986eb965.js deleted file mode 100644 index 52d88a636..000000000 --- a/build/assets/js/9ff57eaa.986eb965.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6107],{2130:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>m,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var o=n(6070),r=n(1582);const t={},c="Variable: l2CrossDomainMessengerName",i={id:"build-on-morph/sdk/variables/l2CrossDomainMessengerName",title:"l2CrossDomainMessengerName",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/l2CrossDomainMessengerName",permalink:"/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.md",tags:[],version:"current",frontMatter:{}},a={},l=[{value:"Source",id:"source",level:2}];function d(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / l2CrossDomainMessengerName"]}),"\n",(0,o.jsx)(s.h1,{id:"variable-l2crossdomainmessengername",children:"Variable: l2CrossDomainMessengerName"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.code,{children:"const"})," ",(0,o.jsx)(s.strong,{children:"l2CrossDomainMessengerName"}),": ",(0,o.jsx)(s.code,{children:'"L2CrossDomainMessenger"'})," = ",(0,o.jsx)(s.code,{children:"'L2CrossDomainMessenger'"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/cross-chain-messenger.ts:68"})]})}function m(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>i});var o=n(758);const r={},t=o.createContext(r);function c(e){const s=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a00dd934.091ad5c4.js b/build/assets/js/a00dd934.091ad5c4.js deleted file mode 100644 index 15c5a50e6..000000000 --- a/build/assets/js/a00dd934.091ad5c4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5784],{5656:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var r=o(6070),s=o(1582);const t={},c="Variable: CHAIN_BLOCK_TIMES",i={id:"build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES",title:"CHAIN_BLOCK_TIMES",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.md",sourceDirName:"build-on-morph/sdk/variables",slug:"/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES",permalink:"/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Source",id:"source",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / CHAIN_BLOCK_TIMES"]}),"\n",(0,r.jsx)(n.h1,{id:"variable-chain_block_times",children:"Variable: CHAIN_BLOCK_TIMES"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"const"})," ",(0,r.jsx)(n.strong,{children:"CHAIN_BLOCK_TIMES"}),": ",(0,r.jsx)(n.code,{children:"{ [ChainID in L1ChainID]: number }"})]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(n.p,{children:"src/utils/chain-constants.ts:22"})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>c,x:()=>i});var r=o(758);const s={},t=r.createContext(s);function c(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a04af9a2.a4172b2f.js b/build/assets/js/a04af9a2.a4172b2f.js deleted file mode 100644 index 0217d2734..000000000 --- a/build/assets/js/a04af9a2.a4172b2f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[819],{8179:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>s,contentTitle:()=>t,default:()=>p,frontMatter:()=>h,metadata:()=>l,toc:()=>d});var i=o(6070),n=o(1582);const h={title:"\u4e2d\u6587\u5f00\u53d1\u8005\u96c6\u6210\u6587\u6863",lang:"zh-CN",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},t=void 0,l={id:"build-on-morph/build-on-morph/integration-one-page-cn",title:"\u4e2d\u6587\u5f00\u53d1\u8005\u96c6\u6210\u6587\u6863",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/build-on-morph/6-integration-one-page-cn.md",sourceDirName:"build-on-morph/build-on-morph",slug:"/build-on-morph/build-on-morph/integration-one-page-cn",permalink:"/docs/build-on-morph/build-on-morph/integration-one-page-cn",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/build-on-morph/6-integration-one-page-cn.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"\u4e2d\u6587\u5f00\u53d1\u8005\u96c6\u6210\u6587\u6863",lang:"zh-CN",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"}},s={},d=[{value:"\u7f51\u7edc\u53c2\u6570",id:"\u7f51\u7edc\u53c2\u6570",level:3},{value:"\u6d4f\u89c8\u5668\u4fe1\u606f",id:"\u6d4f\u89c8\u5668\u4fe1\u606f",level:3},{value:"\u6865\u4fe1\u606f",id:"\u6865\u4fe1\u606f",level:3},{value:"\u65b0\u6865\u63a5\u8d44\u4ea7\u652f\u6301\uff1a",id:"\u65b0\u6865\u63a5\u8d44\u4ea7\u652f\u6301",level:4},{value:"\u4ea4\u6613\u8d39\u7528\u4e0e\u533a\u5757",id:"\u4ea4\u6613\u8d39\u7528\u4e0e\u533a\u5757",level:3},{value:"\u91cd\u8981\u5408\u7ea6",id:"\u91cd\u8981\u5408\u7ea6",level:3},{value:"\u8282\u70b9\u90e8\u7f72",id:"\u8282\u70b9\u90e8\u7f72",level:3}];function c(e){const r={a:"a",admonition:"admonition",h3:"h3",h4:"h4",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.h3,{id:"\u7f51\u7edc\u53c2\u6570",children:"\u7f51\u7edc\u53c2\u6570"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"\u7f51\u7edc"}),(0,i.jsx)(r.th,{children:"\u94fe ID"}),(0,i.jsx)(r.th,{children:"RPC URL"}),(0,i.jsx)(r.th,{children:"\u533a\u5757\u6d4f\u89c8\u5668"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Morph \u4e3b\u7f51"}),(0,i.jsx)(r.td,{children:"2818"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://rpc-quicknode.morphl2.io",children:"https://rpc-quicknode.morphl2.io"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://explorer.morphl2.io/",children:"https://explorer.morphl2.io/"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Ethereum \u4e3b\u7f51"}),(0,i.jsx)(r.td,{children:"1"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://ethereum-rpc.publicnode.com/",children:"https://ethereum-rpc.publicnode.com/"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://etherscan.io/",children:"https://etherscan.io/"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Morph Holesky \u6d4b\u8bd5\u7f51"}),(0,i.jsx)(r.td,{children:"2810"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://rpc-quicknode-holesky.morphl2.io",children:"https://rpc-quicknode-holesky.morphl2.io"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/",children:"https://explorer-holesky.morphl2.io/"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Holesky \u6d4b\u8bd5\u7f51"}),(0,i.jsx)(r.td,{children:"17000"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://ethereum-holesky-rpc.publicnode.com/",children:"https://ethereum-holesky-rpc.publicnode.com/"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.a,{href:"https://holesky.etherscan.io/",children:"https://holesky.etherscan.io/"})})]})]})]}),"\n",(0,i.jsx)(r.p,{children:"\u8bf7\u6ce8\u610f\uff0c\u6211\u4eec\u5df2\u4e3a\u516c\u5171 RPC \u8bbf\u95ee\u8bbe\u7f6e\u4e86\u901f\u7387\u9650\u5236\uff0c\u76ee\u524d\u4e3a\u6bcf\u4e2a IP \u6bcf\u5206\u949f 600 \u6b21\u8bf7\u6c42\u3002"}),"\n",(0,i.jsxs)(r.p,{children:["\u5982\u679c\u60a8\u9700\u8981\u66f4\u9ad8\u7684\u989d\u5ea6\uff0c\u8bf7\u8054\u7cfbMorph\u56e2\u961f\u4e3a\u60a8\u5f00\u653e\u66f4\u9ad8\u9650\u989d\u3002\u60a8\u8fd8\u53ef\u4ee5\u4f7f\u7528\u6211\u4eec\u7684\u5408\u4f5c\u4f19\u4f34\u4ea7\u54c1 ",(0,i.jsx)(r.a,{href:"https://www.quicknode.com/",children:"quicknode"})," \u6216 ",(0,i.jsx)(r.a,{href:"https://tenderly.co/",children:"tenderly"})," \u521b\u5efa\u81ea\u5df1\u7684\u79c1\u4eba RPC\u3002"]}),"\n",(0,i.jsx)(r.admonition,{title:"Websocket \u8fde\u63a5",type:"tip",children:(0,i.jsx)(r.p,{children:"wss://rpc-quicknode.morphl2.io"})}),"\n",(0,i.jsx)(r.h3,{id:"\u6d4f\u89c8\u5668\u4fe1\u606f",children:"\u6d4f\u89c8\u5668\u4fe1\u606f"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://explorer.morphl2.io",children:"\u5b98\u65b9\u4e3b\u7f51\u6d4f\u89c8\u5668"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io",children:"\u5b98\u65b9\u6d4b\u8bd5\u7f51\u6d4f\u89c8\u5668"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://explorer.morphl2.io/api-docs",children:"\u6d4f\u89c8\u5668 API \u6587\u6863"})}),"\n",(0,i.jsxs)(r.p,{children:["\u6d4f\u89c8\u5668 API: ",(0,i.jsx)(r.a,{href:"https://explorer-api.morphl2.io/api",children:"https://explorer-api.morphl2.io/api"})]}),"\n",(0,i.jsxs)(r.p,{children:["\u6d4b\u8bd5\u7f51\u6d4f\u89c8\u5668 API: ",(0,i.jsx)(r.a,{href:"https://explorer-holesky-api.morphl2.io/api",children:"https://explorer-holesky-api.morphl2.io/api"})]}),"\n",(0,i.jsxs)(r.p,{children:["\u6709\u5173\u5982\u4f55\u5728 Morph \u6d4f\u89c8\u5668\u4e0a\u9a8c\u8bc1\u60a8\u7684\u5408\u7ea6\u7684\u8be6\u7ec6\u6307\u5357\uff0c",(0,i.jsx)(r.a,{href:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts",children:"\u70b9\u51fb\u8fd9\u91cc"})]}),"\n",(0,i.jsx)(r.h3,{id:"\u6865\u4fe1\u606f",children:"\u6865\u4fe1\u606f"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://bridge.morphl2.io",children:"\u5b98\u65b9\u6865"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://bridge-holesky.morphl2.io",children:"\u5b98\u65b9\u6d4b\u8bd5\u7f51\u6865"})}),"\n",(0,i.jsxs)(r.admonition,{title:"\u63d0\u73b0\u548c\u5b58\u6b3e\u65f6\u95f4",type:"tip",children:[(0,i.jsx)(r.p,{children:"\u7531\u4e8e Morph opzkEVM \u8bbe\u8ba1\uff0c\u6bcf\u4e2a\u63d0\u73b0\u8bf7\u6c42\u9700\u8981\u7ecf\u8fc7 48 \u5c0f\u65f6\u7684\u63d0\u73b0\u671f\uff08\u6311\u6218\u7a97\u53e3\uff09\u624d\u80fd\u5b8c\u6210\u3002"}),(0,i.jsx)(r.p,{children:"\u5b58\u6b3e\u9700\u8981\u7b49\u5f85 2 \u4e2a\u4ee5\u592a\u574aEpoch\uff08\u5927\u7ea6 13~20 \u5206\u949f\uff09\u3002"})]}),"\n",(0,i.jsx)(r.h4,{id:"\u65b0\u6865\u63a5\u8d44\u4ea7\u652f\u6301",children:"\u65b0\u6865\u63a5\u8d44\u4ea7\u652f\u6301\uff1a"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://docs.morphl2.io/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum#add-your-token-to-the-official-bridge",children:"\u5c06\u60a8\u7684\u4ee3\u5e01\u6dfb\u52a0\u5230\u5b98\u65b9\u6865"})}),"\n",(0,i.jsx)(r.p,{children:"\u60a8\u8fd8\u53ef\u4ee5\u4f7f\u7528 LayerZero \u6765\u5305\u88c5\u60a8\u7684\u4ee3\u5e01\uff1a"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.a,{href:"https://docs.layerzero.network/v2/developers/evm/technical-reference/deployed-contracts#morph",children:"LayerZero \u5728 Morph \u4e0a"})}),"\n",(0,i.jsx)(r.h3,{id:"\u4ea4\u6613\u8d39\u7528\u4e0e\u533a\u5757",children:"\u4ea4\u6613\u8d39\u7528\u4e0e\u533a\u5757"}),"\n",(0,i.jsx)(r.p,{children:"\u5bf9\u4e8e\u4ee5\u592a\u574a Layer2\uff0c\u8d39\u7528\u5206\u4e3a\u4e24\u90e8\u5206\uff1aL1 \u8d39\u7528\u548c L2 \u8d39\u7528\u3002"}),"\n",(0,i.jsxs)(r.p,{children:["\u5bf9\u4e8e L2 \u8d39\u7528\uff0cMorph \u76ee\u524d\u4f7f\u7528\u4e0e\u4ee5\u592a\u574a\u4e3b\u7f51\u76f8\u540c\u7684 ",(0,i.jsx)(r.a,{href:"https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md",children:"EIP-1559"})," \u673a\u5236\u6765\u8ba1\u7b97\u4ea4\u6613\u8d39\u7528\u3002\u6bcf\u7b14\u4ea4\u6613\u5c06\u6709\u4e00\u4e2a\u57fa\u7840\u8d39\u7528\u548c\u4e00\u4e2a\u4f18\u5148\u8d39\u7528\u3002\u57fa\u7840\u8d39\u7528\u8bbe\u5b9a\u4e3a 0.001 Gwei\u3002\u5982\u679c\u533a\u5757\u4ea4\u6613\u9650\u5236\uff08\u6bcf\u4e2a\u533a\u5757 100 \u7b14\uff09\u672a\u8fbe\u5230\uff0c\u7528\u6237\u53ea\u9700\u8981\u4ec5\u652f\u4ed8\u57fa\u7840\u8d39\u5373\u53ef\u3002"]}),"\n",(0,i.jsx)(r.admonition,{type:"tip",children:(0,i.jsx)(r.p,{children:"\u8bf7\u6ce8\u610f,\u6211\u4eec\u5728\u6d4b\u8bd5\u7f51\u4e0a\u8bbe\u7f6e\u4e86\u6700\u4f4e\u7684 L2 \u4f18\u5148\u8d39(0.01 gwei),\u8fd9\u662f\u4e3a\u4e86\u9632\u6b62\u5783\u573e\u4ea4\u6613\u5f71\u54cd\u5176\u4ed6\u6b63\u5e38\u4ea4\u6613\u3002\u5bf9\u4e8e\u4e3b\u7f51,\u6211\u4eec\u53ef\u4ee5\u5728\u4e0d\u6536\u53d6\u4f18\u5148\u7ea7\u8d39\u7528\u7684\u60c5\u51b5\u4e0b\u5904\u7406\u4ea4\u6613\u3002"})}),"\n",(0,i.jsx)(r.p,{children:"Morph \u76ee\u524d\u6bcf\u79d2\u751f\u6210 1 \u4e2a\u975e\u7a7a\u533a\u5757\uff0c\u5982\u679c\u6ca1\u6709\u65b0\u4ea4\u6613\uff0c\u6211\u4eec\u5c06\u6bcf 5 \u79d2\u751f\u6210 1 \u4e2a\u7a7a\u533a\u5757\u3002"}),"\n",(0,i.jsx)(r.p,{children:"\u6bcf\u4e2a\u533a\u5757\u6700\u591a\u53ef\u4ee5\u5bb9\u7eb3 100 \u7b14\u4ea4\u6613\uff0c\u6211\u4eec\u5c06\u7ee7\u7eed\u63d0\u9ad8\u9650\u5236\u6765\u8fbe\u6210\u66f4\u9ad8\u7684TPS\u3002"}),"\n",(0,i.jsx)(r.h3,{id:"\u91cd\u8981\u5408\u7ea6",children:"\u91cd\u8981\u5408\u7ea6"}),"\n",(0,i.jsxs)(r.p,{children:["\u6211\u4eec\u5df2\u8bb0\u5f55\u6240\u6709\u91cd\u8981\u7684 Morph \u5408\u7ea6\uff0c\u60a8\u53ef\u4ee5\u5728 ",(0,i.jsx)(r.a,{href:"/docs/build-on-morph/developer-resources/contracts",children:"\u8fd9\u91cc"})," \u627e\u5230\u5b83\u4eec\u3002"]}),"\n",(0,i.jsx)(r.h3,{id:"\u8282\u70b9\u90e8\u7f72",children:"\u8282\u70b9\u90e8\u7f72"}),"\n",(0,i.jsx)(r.p,{children:"\u76ee\u524d\u6211\u4eec\u652f\u6301\u60a8\u5728 Docker \u4e2d\u8fd0\u884c Morph \u8282\u70b9\uff08\u5168\u8282\u70b9\u548c\u9a8c\u8bc1\u8282\u70b9\uff09\u6216\u5728Host\u4e0a\u8fd0\u884c\u3002"}),"\n",(0,i.jsxs)(r.p,{children:["\u60a8\u53ef\u4ee5\u67e5\u770b ",(0,i.jsx)(r.a,{href:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",children:"\u8282\u70b9\u90e8\u7f72\u6307\u5357"})," \u4ee5\u83b7\u53d6\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\u3002"]})]})}function p(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1582:(e,r,o)=>{o.d(r,{R:()=>t,x:()=>l});var i=o(758);const n={},h=i.createContext(n);function t(e){const r=i.useContext(h);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:t(e.components),i.createElement(h.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a0d49790.f6da78e9.js b/build/assets/js/a0d49790.f6da78e9.js deleted file mode 100644 index 55381f0d9..000000000 --- a/build/assets/js/a0d49790.f6da78e9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1243],{1287:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>l});var n=r(6070),o=r(1582);const t={},d="Type alias: AddressLike",c={id:"build-on-morph/sdk/type-aliases/AddressLike",title:"AddressLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/AddressLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/AddressLike",permalink:"/docs/build-on-morph/sdk/type-aliases/AddressLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/AddressLike.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / AddressLike"]}),"\n",(0,n.jsx)(s.h1,{id:"type-alias-addresslike",children:"Type alias: AddressLike"}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"AddressLike"}),": ",(0,n.jsx)(s.code,{children:"string"})," | ",(0,n.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Stuff that can be coerced into an address."}),"\n",(0,n.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(s.p,{children:"src/interfaces/types.ts:391"})]})}function h(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,s,r)=>{r.d(s,{R:()=>d,x:()=>c});var n=r(758);const o={},t=n.createContext(o);function d(e){const s=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),n.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a0d75a43.1b07a391.js b/build/assets/js/a0d75a43.1b07a391.js deleted file mode 100644 index 8d5849c1b..000000000 --- a/build/assets/js/a0d75a43.1b07a391.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3046],{7237:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>h,contentTitle:()=>d,default:()=>p,frontMatter:()=>s,metadata:()=>i,toc:()=>a});var t=n(6070),r=n(1582);const s={title:"Upgrade node running on the host",lang:"en-US"},d=void 0,i={id:"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host",title:"Upgrade node running on the host",description:"Upgrading the node is straightforward. Simply install the new version of the node executable file and replace the previous version. Then, stop the currently running node and restart it with the updated version. Node will automatically use the data of your old node and sync the latest blocks that were mined since you shut down the old software.",source:"@site/docs/build-on-morph/developer-resources/node-operation/upgrade-node/1-upgrade-node-host.md",sourceDirName:"build-on-morph/developer-resources/node-operation/upgrade-node",slug:"/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host",permalink:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/upgrade-node/1-upgrade-node-host.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Upgrade node running on the host",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Upgrade node running from docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker"},next:{title:"Prune State",permalink:"/docs/build-on-morph/developer-resources/node-operation/prune-state"}},h={},a=[{value:"Step1: Compile the new version of the code",id:"step1-compile-the-new-version-of-the-code",level:3},{value:"If you only update the Geth version",id:"if-you-only-update-the-geth-version",level:4},{value:"Step2: Stop nodes",id:"step2-stop-nodes",level:3},{value:"Step3: Restart",id:"step3-restart",level:3}];function l(e){const o={a:"a",admonition:"admonition",code:"code",h3:"h3",h4:"h4",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.p,{children:"Upgrading the node is straightforward. Simply install the new version of the node executable file and replace the previous version. Then, stop the currently running node and restart it with the updated version. Node will automatically use the data of your old node and sync the latest blocks that were mined since you shut down the old software."}),"\n",(0,t.jsxs)(o.p,{children:["Running the node requires two binary files: ",(0,t.jsx)(o.code,{children:"morphnode"})," and ",(0,t.jsx)(o.code,{children:"geth"}),". Choose to upgrade the binary files according to your specific needs."]}),"\n",(0,t.jsx)(o.h3,{id:"step1-compile-the-new-version-of-the-code",children:"Step1: Compile the new version of the code"}),"\n",(0,t.jsxs)(o.p,{children:["You can have the released code version from ",(0,t.jsx)(o.a,{href:"https://github.com/morph-l2/morph/releases",children:"Morph release"})," page."]}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-js",children:"git clone https://github.com/morph-l2/morph.git\n\n// checkout the latest version of the source code you need\ngit checkout ${latestVersion}\n\n// install geth\nmake geth\n\n// install morphnode\ncd ./morph/node && make build\n"})}),"\n",(0,t.jsx)(o.h4,{id:"if-you-only-update-the-geth-version",children:"If you only update the Geth version"}),"\n",(0,t.jsxs)(o.p,{children:["Check the ",(0,t.jsx)(o.code,{children:"Geth"})," version from ",(0,t.jsx)(o.a,{href:"https://github.com/morph-l2/go-ethereum/releases",children:"go-ethereum"})]}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-js",children:"git clone https://github.com/morph-l2/go-ethereum.git\n\ngit checkout ${latestVersion}\n\n// install geth\nmake geth\n"})}),"\n",(0,t.jsx)(o.h3,{id:"step2-stop-nodes",children:"Step2: Stop nodes"}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:"# stop morphnode process\npid=`ps -ef | grep morphnode | grep -v grep | awk '{print $2}'`\nkill $pid\n\n# stop geth process\npid=`ps -ef | grep geth | grep -v grep | awk '{print $2}'`\nkill $pid\n"})}),"\n",(0,t.jsx)(o.h3,{id:"step3-restart",children:"Step3: Restart"}),"\n",(0,t.jsx)(o.p,{children:"Make sure to use the same start-up command you used before the upgrade"}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:'## start geth\n./morph/go-ethereum/build/bin/geth --morph \\\n --datadir "./geth-data" \\\n --http --http.api=web3,debug,eth,txpool,net,engine \\\n --authrpc.addr localhost \\\n --authrpc.vhosts="localhost" \\\n --authrpc.port 8551 \\\n --authrpc.jwtsecret=./jwt-secret.txt \\\n --log.filename=./geth.log\n\n## start node \n./morph/node/build/bin/morphnode --home ./node-data \\\n --l2.jwt-secret ./jwt-secret.txt \\\n --l2.eth http://localhost:8545 \\\n --l2.engine http://localhost:8551 \\\n --log.filename ./node.log \n'})}),"\n",(0,t.jsx)(o.admonition,{type:"note",children:(0,t.jsxs)(o.p,{children:["For holesky network, use ",(0,t.jsx)(o.code,{children:"--morph-holesky"})," instead"]})})]})}function p(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1582:(e,o,n)=>{n.d(o,{R:()=>d,x:()=>i});var t=n(758);const r={},s=t.createContext(r);function d(e){const o=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function i(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a1f831b5.99aa2e6e.js b/build/assets/js/a1f831b5.99aa2e6e.js deleted file mode 100644 index db12e3206..000000000 --- a/build/assets/js/a1f831b5.99aa2e6e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6371],{7750:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var t=n(6070),o=n(1582);const r={},i="Function: estimateL2GasCost()",c={id:"build-on-morph/sdk/functions/estimateL2GasCost",title:"estimateL2GasCost",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/estimateL2GasCost.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/estimateL2GasCost",permalink:"/docs/build-on-morph/sdk/functions/estimateL2GasCost",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/estimateL2GasCost.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / estimateL2GasCost"]}),"\n",(0,t.jsx)(s.h1,{id:"function-estimatel2gascost",children:"Function: estimateL2GasCost()"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"estimateL2GasCost"}),"(",(0,t.jsx)(s.code,{children:"l2Provider"}),", ",(0,t.jsx)(s.code,{children:"tx"}),"): ",(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"Estimates the L2 gas cost for a given L2 transaction in wei."}),"\n",(0,t.jsx)(s.h2,{id:"parameters",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"l2Provider"}),": ",(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,t.jsx)(s.code,{children:"ProviderLike"})})]}),"\n",(0,t.jsx)(s.p,{children:"L2 provider to query the gas usage from."}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"tx"}),": ",(0,t.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,t.jsx)(s.p,{children:"Transaction to estimate L2 gas cost for."}),"\n",(0,t.jsx)(s.h2,{id:"returns",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Estimated L2 gas cost."}),"\n",(0,t.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,t.jsx)(s.p,{children:"src/l2-provider.ts:119"})]})}function h(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>c});var t=n(758);const o={},r=t.createContext(o);function i(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a2db6fd6.323f6535.js b/build/assets/js/a2db6fd6.323f6535.js deleted file mode 100644 index 8bb981d56..000000000 --- a/build/assets/js/a2db6fd6.323f6535.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3654],{524:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var r=n(6070),o=n(1582);const i={},l="Enumeration: MessageStatus",d={id:"build-on-morph/sdk/enumerations/MessageStatus",title:"MessageStatus",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/MessageStatus.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/MessageStatus",permalink:"/docs/build-on-morph/sdk/enumerations/MessageStatus",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/MessageStatus.md",tags:[],version:"current",frontMatter:{}},t={},c=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"FAILED_L1_TO_L2_MESSAGE",id:"failed_l1_to_l2_message",level:3},{value:"Source",id:"source",level:4},{value:"IN_CHALLENGE_PERIOD",id:"in_challenge_period",level:3},{value:"Source",id:"source-1",level:4},{value:"READY_FOR_RELAY",id:"ready_for_relay",level:3},{value:"Source",id:"source-2",level:4},{value:"READY_TO_PROVE",id:"ready_to_prove",level:3},{value:"Source",id:"source-3",level:4},{value:"RELAYED",id:"relayed",level:3},{value:"Source",id:"source-4",level:4},{value:"UNCONFIRMED_L1_TO_L2_MESSAGE",id:"unconfirmed_l1_to_l2_message",level:3},{value:"Source",id:"source-5",level:4},{value:"WITHDRAWAL_HASH_NOT_SYNC",id:"withdrawal_hash_not_sync",level:3},{value:"Source",id:"source-6",level:4},{value:"WITHDRAWAL_ROOT_NOT_PUBLISHED",id:"withdrawal_root_not_published",level:3},{value:"Source",id:"source-7",level:4}];function h(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / MessageStatus"]}),"\n",(0,r.jsx)(s.h1,{id:"enumeration-messagestatus",children:"Enumeration: MessageStatus"}),"\n",(0,r.jsx)(s.p,{children:"Enum describing the status of a message."}),"\n",(0,r.jsx)(s.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,r.jsx)(s.h3,{id:"failed_l1_to_l2_message",children:"FAILED_L1_TO_L2_MESSAGE"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"FAILED_L1_TO_L2_MESSAGE"}),": ",(0,r.jsx)(s.code,{children:"1"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is an L1 to L2 message and the transaction to execute the message failed.\nWhen this status is returned, you will need to resend the L1 to L2 message, probably with a\nhigher gas limit."}),"\n",(0,r.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:186"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"in_challenge_period",children:"IN_CHALLENGE_PERIOD"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"IN_CHALLENGE_PERIOD"}),": ",(0,r.jsx)(s.code,{children:"5"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is a proved L2 to L1 message and is undergoing the challenge period."}),"\n",(0,r.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:206"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"ready_for_relay",children:"READY_FOR_RELAY"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"READY_FOR_RELAY"}),": ",(0,r.jsx)(s.code,{children:"6"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is ready to be relayed."}),"\n",(0,r.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:211"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"ready_to_prove",children:"READY_TO_PROVE"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"READY_TO_PROVE"}),": ",(0,r.jsx)(s.code,{children:"4"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is ready to be proved on L1 to initiate the challenge period."}),"\n",(0,r.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:201"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"relayed",children:"RELAYED"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"RELAYED"}),": ",(0,r.jsx)(s.code,{children:"7"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message has been relayed."}),"\n",(0,r.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:216"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"unconfirmed_l1_to_l2_message",children:"UNCONFIRMED_L1_TO_L2_MESSAGE"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"UNCONFIRMED_L1_TO_L2_MESSAGE"}),": ",(0,r.jsx)(s.code,{children:"0"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is an L1 to L2 message and has not been processed by the L2."}),"\n",(0,r.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:179"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"withdrawal_hash_not_sync",children:"WITHDRAWAL_HASH_NOT_SYNC"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"WITHDRAWAL_HASH_NOT_SYNC"}),": ",(0,r.jsx)(s.code,{children:"3"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is an L2 to L1 message and withdrawal hash has not been published to backend yet."}),"\n",(0,r.jsx)(s.h4,{id:"source-6",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:196"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"withdrawal_root_not_published",children:"WITHDRAWAL_ROOT_NOT_PUBLISHED"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"WITHDRAWAL_ROOT_NOT_PUBLISHED"}),": ",(0,r.jsx)(s.code,{children:"2"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Message is an L2 to L1 message and withdrawal root has not been published yet."}),"\n",(0,r.jsx)(s.h4,{id:"source-7",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:191"})]})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>l,x:()=>d});var r=n(758);const o={},i=r.createContext(o);function l(e){const s=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),r.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a399e926.6c89943b.js b/build/assets/js/a399e926.6c89943b.js deleted file mode 100644 index 1a6834b20..000000000 --- a/build/assets/js/a399e926.6c89943b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7131],{9440:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>u});var o=r(6070),s=r(1582);const t={},c="Function: toNumber()",i={id:"build-on-morph/sdk/functions/toNumber",title:"toNumber",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/toNumber.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/toNumber",permalink:"/docs/build-on-morph/sdk/functions/toNumber",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/toNumber.md",tags:[],version:"current",frontMatter:{}},d={},u=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / toNumber"]}),"\n",(0,o.jsx)(n.h1,{id:"function-tonumber",children:"Function: toNumber()"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"toNumber"}),"(",(0,o.jsx)(n.code,{children:"num"}),"): ",(0,o.jsx)(n.code,{children:"number"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Converts a number-like into a number."}),"\n",(0,o.jsx)(n.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"num"}),": ",(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,o.jsx)(n.code,{children:"NumberLike"})})]}),"\n",(0,o.jsx)(n.p,{children:"Number-like to convert into a number."}),"\n",(0,o.jsx)(n.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.code,{children:"number"})}),"\n",(0,o.jsx)(n.p,{children:"Number-like as a number."}),"\n",(0,o.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(n.p,{children:"src/utils/coercion.ts:94"})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>i});var o=r(758);const s={},t=o.createContext(s);function c(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a4da47e1.11689d10.js b/build/assets/js/a4da47e1.11689d10.js deleted file mode 100644 index 0423b1494..000000000 --- a/build/assets/js/a4da47e1.11689d10.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4788],{6821:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var t=r(6070),n=r(1582);const i={},a="Type alias: L2Provider<TProvider>",d={id:"build-on-morph/sdk/type-aliases/L2Provider",title:"L2Provider",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/L2Provider.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/L2Provider",permalink:"/docs/build-on-morph/sdk/type-aliases/L2Provider",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/L2Provider.md",tags:[],version:"current",frontMatter:{}},o={},l=[{value:"Type declaration",id:"type-declaration",level:2},{value:"_isL2Provider",id:"_isl2provider",level:3},{value:"estimateL1Gas()",id:"estimatel1gas",level:3},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"estimateL1GasCost()",id:"estimatel1gascost",level:3},{value:"Parameters",id:"parameters-1",level:4},{value:"Returns",id:"returns-1",level:4},{value:"estimateL2GasCost()",id:"estimatel2gascost",level:3},{value:"Parameters",id:"parameters-2",level:4},{value:"Returns",id:"returns-2",level:4},{value:"estimateTotalGasCost()",id:"estimatetotalgascost",level:3},{value:"Parameters",id:"parameters-3",level:4},{value:"Returns",id:"returns-3",level:4},{value:"getL1GasPrice()",id:"getl1gasprice",level:3},{value:"Returns",id:"returns-4",level:4},{value:"Type parameters",id:"type-parameters",level:2},{value:"Source",id:"source",level:2}];function c(e){const s={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L2Provider"]}),"\n",(0,t.jsx)(s.h1,{id:"type-alias-l2providertprovider",children:"Type alias: L2Provider<TProvider>"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"L2Provider"}),"<",(0,t.jsx)(s.code,{children:"TProvider"}),">: ",(0,t.jsx)(s.code,{children:"TProvider"})," & ",(0,t.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"Represents an extended version of an normal ethers Provider that returns additional L2 info and\nhas special functions for L2-specific interactions."}),"\n",(0,t.jsx)(s.h2,{id:"type-declaration",children:"Type declaration"}),"\n",(0,t.jsx)(s.h3,{id:"_isl2provider",children:"_isL2Provider"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"_isL2Provider"}),": ",(0,t.jsx)(s.code,{children:"true"})]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"Internal property to determine if a provider is a L2Provider\nYou are likely looking for the isL2Provider function"}),"\n",(0,t.jsx)(s.h3,{id:"estimatel1gas",children:"estimateL1Gas()"}),"\n",(0,t.jsx)(s.p,{children:"Estimates the L1 (data) gas required for a transaction."}),"\n",(0,t.jsx)(s.h4,{id:"parameters",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"tx"}),": ",(0,t.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,t.jsx)(s.p,{children:"Transaction to estimate L1 gas for."}),"\n",(0,t.jsx)(s.h4,{id:"returns",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Estimated L1 gas."}),"\n",(0,t.jsx)(s.h3,{id:"estimatel1gascost",children:"estimateL1GasCost()"}),"\n",(0,t.jsx)(s.p,{children:"Estimates the L1 (data) gas cost for a transaction in wei by multiplying the estimated L1 gas\ncost by the current L1 gas price."}),"\n",(0,t.jsx)(s.h4,{id:"parameters-1",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"tx"}),": ",(0,t.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,t.jsx)(s.p,{children:"Transaction to estimate L1 gas cost for."}),"\n",(0,t.jsx)(s.h4,{id:"returns-1",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Estimated L1 gas cost."}),"\n",(0,t.jsx)(s.h3,{id:"estimatel2gascost",children:"estimateL2GasCost()"}),"\n",(0,t.jsx)(s.p,{children:"Estimates the L2 (execution) gas cost for a transaction in wei by multiplying the estimated L1\ngas cost by the current L2 gas price. This is a simple multiplication of the result of\ngetGasPrice and estimateGas for the given transaction request."}),"\n",(0,t.jsx)(s.h4,{id:"parameters-2",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"tx"}),": ",(0,t.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,t.jsx)(s.p,{children:"Transaction to estimate L2 gas cost for."}),"\n",(0,t.jsx)(s.h4,{id:"returns-2",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Estimated L2 gas cost."}),"\n",(0,t.jsx)(s.h3,{id:"estimatetotalgascost",children:"estimateTotalGasCost()"}),"\n",(0,t.jsx)(s.p,{children:"Estimates the total gas cost for a transaction in wei by adding the estimated the L1 gas cost\nand the estimated L2 gas cost."}),"\n",(0,t.jsx)(s.h4,{id:"parameters-3",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"tx"}),": ",(0,t.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,t.jsx)(s.p,{children:"Transaction to estimate total gas cost for."}),"\n",(0,t.jsx)(s.h4,{id:"returns-3",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Estimated total gas cost."}),"\n",(0,t.jsx)(s.h3,{id:"getl1gasprice",children:"getL1GasPrice()"}),"\n",(0,t.jsx)(s.p,{children:"Gets the current L1 (data) gas price."}),"\n",(0,t.jsx)(s.h4,{id:"returns-4",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Current L1 data gas price in wei."}),"\n",(0,t.jsx)(s.h2,{id:"type-parameters",children:"Type parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"TProvider"})," ",(0,t.jsx)(s.em,{children:"extends"})," ",(0,t.jsx)(s.code,{children:"Provider"})]}),"\n",(0,t.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,t.jsx)(s.p,{children:"src/interfaces/l2-provider.ts:43"})]})}function h(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1582:(e,s,r)=>{r.d(s,{R:()=>a,x:()=>d});var t=r(758);const n={},i=t.createContext(n);function a(e){const s=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a5f26d61.614e3be4.js b/build/assets/js/a5f26d61.614e3be4.js deleted file mode 100644 index 89cacf97b..000000000 --- a/build/assets/js/a5f26d61.614e3be4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9344],{6787:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var o=s(6070),t=s(1582);const r={},c="Type alias: TransactionLike",i={id:"build-on-morph/sdk/type-aliases/TransactionLike",title:"TransactionLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/TransactionLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/TransactionLike",permalink:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/TransactionLike.md",tags:[],version:"current",frontMatter:{}},a={},d=[{value:"Source",id:"source",level:2}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / TransactionLike"]}),"\n",(0,o.jsx)(n.h1,{id:"type-alias-transactionlike",children:"Type alias: TransactionLike"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"TransactionLike"}),": ",(0,o.jsx)(n.code,{children:"string"})," | ",(0,o.jsx)(n.code,{children:"TransactionReceipt"})," | ",(0,o.jsx)(n.code,{children:"TransactionResponse"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Stuff that can be coerced into a transaction."}),"\n",(0,o.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(n.p,{children:"src/interfaces/types.ts:354"})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>i});var o=s(758);const t={},r=o.createContext(t);function c(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/a7bd4aaa.cf41b24b.js b/build/assets/js/a7bd4aaa.cf41b24b.js deleted file mode 100644 index be1f5f600..000000000 --- a/build/assets/js/a7bd4aaa.cf41b24b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7098],{5679:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(758);var r=s(926),o=s(3330),t=s(4451),c=s(1977),i=s(7740),u=s(6070);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:e.version,tag:(0,o.tU)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(t.n,{version:e,children:(0,c.v)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/build/assets/js/a94703ab.03e3ac63.js b/build/assets/js/a94703ab.03e3ac63.js deleted file mode 100644 index 7d70aed87..000000000 --- a/build/assets/js/a94703ab.03e3ac63.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9048],{8652:(e,t,n)=>{n.r(t),n.d(t,{default:()=>pe});var a=n(758),o=n(3526),i=n(926),s=n(7998),l=n(3745),r=n(9387),c=n(7260),d=n(1773),u=n(9691);const m={backToTopButton:"backToTopButton_N9Ya",backToTopButtonShow:"backToTopButtonShow_Rn7A"};var b=n(6070);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.$)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3542),x=n(5557),f=n(8080),j=n(5349),_=n(7350);function v(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const g="collapseSidebarButton_ZpCQ",A="collapseSidebarButtonIcon_RA6k";function C(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",g),onClick:t,children:(0,b.jsx)(v,{className:A})})}var k=n(746),S=n(3991);const T=Symbol("EmptyContext"),N=a.createContext(T);function I(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(N.Provider,{value:i,children:t})}var y=n(1069),B=n(8492),w=n(6601),L=n(600);function E(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),type:"button",className:"clean-btn menu__caret",onClick:a})}function M(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.p)(),_=function(e){const t=(0,L.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),v=(0,l.w8)(t,i),g=(0,B.ys)(x,i),{collapsed:A,setCollapsed:C}=(0,y.u)({initialState:()=>!!h&&(!v&&t.collapsed)}),{expandedItem:k,setExpandedItem:I}=function(){const e=(0,a.useContext)(N);if(e===T)throw new S.dV("DocSidebarItemsExpandedStateProvider");return e}(),M=function(e){void 0===e&&(e=!A),I(e?null:c),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:v,collapsed:A,updateCollapsed:M}),(0,a.useEffect)((()=>{h&&null!=k&&k!==c&&f&&C(!0)}),[h,k,c,C,f]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":A},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g}),children:[(0,b.jsx)(w.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":v}),onClick:h?e=>{n?.(t),x?M(!1):(e.preventDefault(),M())}:()=>{n?.(t)},"aria-current":g?"page":void 0,"aria-expanded":h?!A:void 0,href:h?_??"#":_,...d,children:m}),x&&h&&(0,b.jsx)(E,{collapsed:A,categoryLabel:m,onClick:e=>{e.preventDefault(),M()}})]}),(0,b.jsx)(y.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:A,children:(0,b.jsx)(V,{items:u,tabIndex:A?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var H=n(5407),R=n(7550);const G="menuExternalLink_T45N";function P(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,H.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(w.A,{className:(0,o.A)("menu__link",!x&&G,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(R.A,{})]})},u)}const W="menuHtmlItem_SHKz";function F(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[W,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function D(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(M,{item:t,...n});case"html":return(0,b.jsx)(F,{item:t,...n});default:return(0,b.jsx)(P,{item:t,...n})}}function z(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(I,{children:a.map(((e,t)=>(0,b.jsx)(D,{item:e,index:t,...n},t)))})}const V=(0,a.memo)(z),Y="menu_bObF",q="menuWithAnnouncementBar_LUaF";function U(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,k.Mj)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",Y,l&&q,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:n,activePath:t,level:1})})})}const O="sidebar_qjHj",Q="sidebarWithHideableNavbar_v_84",X="sidebarHidden_fzvn",Z="sidebarLogo_yFma";function K(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,o.A)(O,s&&Q,i&&X),children:[s&&(0,b.jsx)(_.A,{tabIndex:-1,className:Z}),(0,b.jsx)(U,{path:t,sidebar:n}),l&&(0,b.jsx)(C,{onClick:a})]})}const $=a.memo(K);var J=n(5955),ee=n(8058);const te=e=>{let{sidebar:t,path:n}=e;const a=(0,ee.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ne(e){return(0,b.jsx)(J.GX,{component:te,props:e})}const ae=a.memo(ne);function oe(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)($,{...e}),a&&(0,b.jsx)(ae,{...e})]})}const ie={expandButton:"expandButton_E2R3",expandButtonIcon:"expandButtonIcon_XpyI"};function se(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ie.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(v,{className:ie.expandButtonIcon})})}const le={docSidebarContainer:"docSidebarContainer_xQ5m",docSidebarContainerHidden:"docSidebarContainerHidden_YfRI",sidebarViewport:"sidebarViewport_mqWZ"};function re(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function ce(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,le.docSidebarContainer,n&&le.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(le.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(re,{children:(0,b.jsxs)("div",{className:(0,o.A)(le.sidebarViewport,r&&le.sidebarViewportHidden),children:[(0,b.jsx)(oe,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(se,{toggleSidebar:d})]})})})}const de={docMainContainer:"docMainContainer_qBbz",docMainContainerEnhanced:"docMainContainerEnhanced_M1IX",docItemWrapperEnhanced:"docItemWrapperEnhanced_HmM2"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(de.docMainContainer,(t||!a)&&de.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",de.docItemWrapper,t&&de.docItemWrapperEnhanced),children:n})})}const me={docRoot:"docRoot_kbrQ",docsWrapper:"docsWrapper_o7i8"};function be(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:me.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:me.docRoot,children:[n&&(0,b.jsx)(ce,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ue,{hiddenSidebarContainer:o,children:t})]})]})}var he=n(6900);function pe(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(he.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(be,{children:n})})})}},6900:(e,t,n)=>{n.d(t,{A:()=>l});n(758);var a=n(3526),o=n(7260),i=n(2406),s=n(6070);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/build/assets/js/ad8d1448.e3e0b916.js b/build/assets/js/ad8d1448.e3e0b916.js deleted file mode 100644 index e1b2e00e8..000000000 --- a/build/assets/js/ad8d1448.e3e0b916.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5991],{6540:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var r=t(6070),n=t(1582);const o={title:"Morph's Architecture",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"about-morph/morphs-architecture",title:"Morph's Architecture",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/about-morph/4-morphs-architecture.md",sourceDirName:"about-morph",slug:"/about-morph/morphs-architecture",permalink:"/docs/about-morph/morphs-architecture",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/4-morphs-architecture.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Morph's Architecture",lang:"en-US",keywords:["morph","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"The Technology Behind Morph",permalink:"/docs/about-morph/the-technology-behind-morph"},next:{title:"Morph's Vision and Mission",permalink:"/docs/about-morph/morphs-vision-and-mission"}},c={},l=[{value:"The Modular Approach in Layer 2",id:"the-modular-approach-in-layer-2",level:2},{value:"Independent yet Collaborative Functions",id:"independent-yet-collaborative-functions",level:2},{value:"Diverse Roles",id:"diverse-roles",level:2},{value:"Safety and Security",id:"safety-and-security",level:2},{value:"Open-Source Codebase:",id:"open-source-codebase",level:3},{value:"Sherlock Open-Source Audit Report:",id:"sherlock-open-source-audit-report",level:3},{value:"Trail of Bits Audit Report:",id:"trail-of-bits-audit-report",level:3},{value:"Audit Scope:",id:"audit-scope",level:3}];function h(e){const i={a:"a",admonition:"admonition",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.admonition,{type:"tip",children:(0,r.jsx)(i.p,{children:'This overview offers a concise introduction to Morph\u2019s rollup technology stack. For an in-depth understanding, please refer to the "How Morph Works" section of our documentation.'})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Archi",src:t(7789).A+"",width:"3840",height:"2160"})}),"\n",(0,r.jsx)(i.h2,{id:"the-modular-approach-in-layer-2",children:"The Modular Approach in Layer 2"}),"\n",(0,r.jsx)(i.p,{children:"Traditionally, the concept of modularity has been applied to Layer 1 blockchains, segmenting them into distinct layers. At Morph, we've extended this modular philosophy to Layer 2, building our platform around this principle."}),"\n",(0,r.jsx)(i.p,{children:"In a typical Layer 1 blockchain, the architecture consists of four major layers:"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Consensus: The mechanism through which network agreement is achieved."}),"\n",(0,r.jsx)(i.li,{children:"Execution: Where transaction processing and smart contract operations occur."}),"\n",(0,r.jsx)(i.li,{children:"Settlement: The process of finalizing transactions."}),"\n",(0,r.jsx)(i.li,{children:"Data Availability: Ensuring that necessary information is accessible for validation."}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"In the context of Layer 2, Morph reinterprets these layers with unique functionalities:"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Consensus and Execution via Decentralized Sequencer Network"}),": At Morph, these functions are integrated and handled by our decentralized sequencer network. Sequencers orchestrate, process, and achieve consensus on Layer 2 transactions, forming the primary interface for user interactions."]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Archi",src:t(5928).A+"",width:"3840",height:"2160"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Settlement with Optimistic zkEVM"}),": Settlement in Morph refers to the finalization of Layer 2 transactions at the Ethereum level. It involves the crucial step of validating Layer 2 states. Morph employs the optimistic zkEVM for this purpose, a hybrid approach blending the best of optimistic rollups and zk-rollups. Layer 2 states will be eventually finalized by a significantly shorter challenge period or if gets challenged, a corresponding zk-proof."]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Archi",src:t(8890).A+"",width:"1920",height:"1080"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Data Availability through 'Rollup' Process"}),": This entails transferring essential Layer 2 data to Ethereum. In Morph, this is achieved through the 'Rollup' process, where a batch submitter compiles blocks into batches and submits them as Layer 1 transactions on Ethereum."]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Archi",src:t(1032).A+"",width:"1920",height:"1080"})}),"\n",(0,r.jsx)(i.h2,{id:"independent-yet-collaborative-functions",children:"Independent yet Collaborative Functions"}),"\n",(0,r.jsx)(i.p,{children:"Each of these major functions operates independently, facilitating asynchronous tasks and switchable implementations:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"Sequencer Network: Executes Layer 2 transactions and updates local state."}),"\n",(0,r.jsx)(i.li,{children:"Rollup Module: Transforms Layer 2 blocks into batches for submission to Layer 1."}),"\n",(0,r.jsx)(i.li,{children:"State Verification: Utilizes Layer 1 security to verify Layer 2 states under the optimistic zkEVM rules."}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"This modular architecture enhances flexibility, adaptability, and composability within the Morph ecosystem."}),"\n",(0,r.jsx)(i.h2,{id:"diverse-roles",children:"Diverse Roles"}),"\n",(0,r.jsx)(i.p,{children:"Morph\u2019s architecture is further defined by five pivotal roles: Sequencers, Validators, Nodes, Provers, and Layer 1 (Ethereum). Each role carries specific responsibilities and utilizes distinct components to fulfill its function, contributing to the seamless operation of the network."}),"\n",(0,r.jsxs)(i.p,{children:["For a deeper understanding of Morph\u2019s architecture, please visit our comprehensive ",(0,r.jsx)(i.a,{href:"/docs/build-on-morph/developer-navigation-page",children:"Developer Docs"}),"."]}),"\n",(0,r.jsx)(i.h2,{id:"safety-and-security",children:"Safety and Security"}),"\n",(0,r.jsx)(i.p,{children:"We place the highest priority on security and are committed to providing users with a safe and trustworthy environment. To achieve this, we\u2019ve implemented multiple measures, including making our codebase open-source, engaging leading third-party firms for audits, and continuously improving our systems to uphold the highest standards of transparency and security. Below are some specific efforts we\u2019ve undertaken:"}),"\n",(0,r.jsx)(i.h3,{id:"open-source-codebase",children:"Open-Source Codebase:"}),"\n",(0,r.jsx)(i.p,{children:"We\u2019re proud to make our codebase publicly available, inviting scrutiny and contributions from the community. You can review it at the following links:"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.a,{href:"https://github.com/morph-l2/morph/tree/main/contracts",children:"Morph Contracts"})}),"\n",(0,r.jsx)(i.h3,{id:"sherlock-open-source-audit-report",children:"Sherlock Open-Source Audit Report:"}),"\n",(0,r.jsx)(i.p,{children:"We commissioned a comprehensive security audit from Sherlock, and the results are publicly available. You can view the detailed report here:"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.a,{href:"https://audits.sherlock.xyz/dashboard/9b78b63a3eb0597e7ba60eec251b6888/confirm_issues",children:"Sherlock Open-Source Audit Report"})}),"\n",(0,r.jsx)(i.h3,{id:"trail-of-bits-audit-report",children:"Trail of Bits Audit Report:"}),"\n",(0,r.jsxs)(i.p,{children:["Additionally, we enlisted the renowned Trail of Bits team to conduct an in-depth audit of our codebase, including a review of implemented fixes. The ",(0,r.jsx)(i.a,{href:"https://github.com/morph-l2/audits/blob/main/tob/Morph%20-%20Comprehensive%20Report%20with%20Fix%20Review.pdf",children:"full report"})," is accessible."]}),"\n",(0,r.jsx)(i.h3,{id:"audit-scope",children:"Audit Scope:"}),"\n",(0,r.jsx)(i.p,{children:"The above audit reports cover the entirety of our codebase, including the bridge contract, ensuring that all critical components have undergone rigorous security assessments."}),"\n",(0,r.jsx)(i.p,{children:"We firmly believe that transparency and security are the cornerstones of trust. We will continue to collaborate with the community and professional organizations to elevate our security standards and provide users with peace of mind. If you have any questions or suggestions, feel free to reach out to us at any time!"})]})}function d(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},7789:(e,i,t)=>{t.d(i,{A:()=>r});const r=t.p+"assets/images/archi-d41d5b2f09000115cef0dfea3705b7aa.png"},1032:(e,i,t)=>{t.d(i,{A:()=>r});const r=t.p+"assets/images/rollup-768caf2d310d19ce9909d718badd44e5.png"},8890:(e,i,t)=>{t.d(i,{A:()=>r});const r=t.p+"assets/images/opzk-9ae9b91f62e5e1b9e4771ee2e441c2ba.png"},5928:(e,i,t)=>{t.d(i,{A:()=>r});const r=t.p+"assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png"},1582:(e,i,t)=>{t.d(i,{R:()=>s,x:()=>a});var r=t(758);const n={},o=r.createContext(n);function s(e){const i=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/af91f293.42de5a7a.js b/build/assets/js/af91f293.42de5a7a.js deleted file mode 100644 index 2b8c06b1b..000000000 --- a/build/assets/js/af91f293.42de5a7a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2708],{2986:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>d,toc:()=>a});var n=r(6070),i=r(1582);const o={title:"Verify Your Smart Contracts",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,d={id:"build-on-morph/build-on-morph/verify-your-smart-contracts",title:"Verify Your Smart Contracts",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md",sourceDirName:"build-on-morph/build-on-morph",slug:"/build-on-morph/build-on-morph/verify-your-smart-contracts",permalink:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Verify Your Smart Contracts",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Deploy Contracts on Morph",permalink:"/docs/build-on-morph/code-examples/deploy-contract-on-morph"},next:{title:"Bridge between Morph and Ethereum",permalink:"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum"}},l={},a=[{value:"Verify with development framework",id:"verify-with-development-framework",level:2},{value:"Verify with Hardhat",id:"verify-with-hardhat",level:3},{value:"Verify with Foundry",id:"verify-with-foundry",level:3},{value:"Verify with Morph explorer frontend",id:"verify-with-morph-explorer-frontend",level:2},{value:"Method: Solidity (Flattened Sources Code)",id:"method-solidity-flattened-sources-code",level:3},{value:"Frontend:",id:"frontend",level:4},{value:"Flatten",id:"flatten",level:4},{value:"Method: Solidity (Standard JSON Input)",id:"method-solidity-standard-json-input",level:3},{value:"Obtain JSON File",id:"obtain-json-file",level:4},{value:"Method: Solidity (Multi-part files)",id:"method-solidity-multi-part-files",level:3},{value:"Frontend:",id:"frontend-1",level:4},{value:"SOL File Process",id:"sol-file-process",level:4},{value:"Method: Vyper (Contracts)",id:"method-vyper-contracts",level:3},{value:"Frontend:",id:"frontend-2",level:4},{value:"Method: Vyper (Standard Json Input)",id:"method-vyper-standard-json-input",level:3},{value:"Frontend:",id:"frontend-3",level:4},{value:"Method: Vyper (Multi-part files)",id:"method-vyper-multi-part-files",level:3},{value:"Frontend:",id:"frontend-4",level:4},{value:"After Verification",id:"after-verification",level:3}];function h(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["After deploying your smart contracts, it's crucial to verify your code on our ",(0,n.jsx)(t.a,{href:"https://explorer-holesky.morphl2.io",children:"block explorer"}),". This can be automated using your development framework, such as Hardhat."]}),"\n",(0,n.jsx)(t.h2,{id:"verify-with-development-framework",children:"Verify with development framework"}),"\n",(0,n.jsx)(t.p,{children:"Most smart contract tools have plugins for verifying contracts on Etherscan. Blockscout supports Etherscan's contract verification APIs, making it straightforward to use these tools with the Morph Mainnet & Testnet."}),"\n",(0,n.jsx)(t.h3,{id:"verify-with-hardhat",children:"Verify with Hardhat"}),"\n",(0,n.jsx)(t.p,{children:"To verify your contract through hardhat, you need to add the following Etherscan and Sourcify configs to your hardhat.config.js file:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-javascript",children:"module.exports = {\n networks: {\n morph: { ... }\n },\n etherscan: {\n apiKey: {\n morph: 'anything',\n },\n customChains: [\n {\n network: 'morph',\n chainId: 2818,\n urls: {\n apiURL: 'https://explorer-api.morphl2.io/api? ',\n browserURL: 'https://explorer.morphl2.io/',\n },\n },\n ],\n },\n};\n"})}),"\n",(0,n.jsx)(t.h3,{id:"verify-with-foundry",children:"Verify with Foundry"}),"\n",(0,n.jsx)(t.p,{children:"Verification with foundry requires some flags passed to the normal verification script. You can verify using the command below:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-bash",children:" forge verify-contract YourContractAddress Counter\\\n --chain 2818 \\\n --verifier-url https://explorer-api.morphl2.io/api? \\\n --verifier blockscout --watch\n"})}),"\n",(0,n.jsx)(t.h2,{id:"verify-with-morph-explorer-frontend",children:"Verify with Morph explorer frontend"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Visit\uff1a",(0,n.jsx)(t.a,{href:"https://explorer.morphl2.io",children:"Morph block explorer"})]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"We currently support 6 different ways to verify your contracts on our block explorer."}),"\n",(0,n.jsx)(t.p,{children:"There are 2 general parameters:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Compiler: Has to be consistent with what you select when deployment."}),"\n",(0,n.jsx)(t.li,{children:"Optimization: Can be ignored if you don't have contract optimization. If you do, it has to be consistent with deployment."}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"method-solidity-flattened-sources-code",children:"Method: Solidity (Flattened Sources Code)"}),"\n",(0,n.jsx)(t.h4,{id:"frontend",children:"Frontend:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"fscs",src:r(7673).A+"",width:"1280",height:"1017"})}),"\n",(0,n.jsx)(t.h4,{id:"flatten",children:"Flatten"}),"\n",(0,n.jsxs)(t.p,{children:["Flatten through ",(0,n.jsx)(t.a,{href:"https://book.getfoundry.sh/reference/forge/forge-flatten?highlight=flatten#forge-flatten",children:"forge command"}),", for example:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"forge flatten --output FlattenedL2StandardBridge.sol ./contracts/L2/L2StandardBridge.sol\n"})}),"\n",(0,n.jsx)(t.h3,{id:"method-solidity-standard-json-input",children:"Method: Solidity (Standard JSON Input)"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"sjis1",src:r(9250).A+"",width:"1280",height:"881"})}),"\n",(0,n.jsx)(t.h4,{id:"obtain-json-file",children:"Obtain JSON File"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Can be obtained through solc"}),"\n",(0,n.jsx)(t.li,{children:"Can be obatined through remix compiler"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"sjis2",src:r(6880).A+"",width:"934",height:"542"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"sjis3",src:r(6880).A+"",width:"934",height:"542"})}),"\n",(0,n.jsx)(t.h3,{id:"method-solidity-multi-part-files",children:"Method: Solidity (Multi-part files)"}),"\n",(0,n.jsx)(t.h4,{id:"frontend-1",children:"Frontend:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["You can submit multiple contract file by your own needs\n",(0,n.jsx)(t.img,{alt:"mpfs1",src:r(838).A+"",width:"1280",height:"779"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"sol-file-process",children:"SOL File Process"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["If there is any imported file, it needs to be modified to be referenced by the same level path, and these files must be submitted together.\n",(0,n.jsx)(t.img,{alt:"mpfs2",src:r(4969).A+"",width:"1280",height:"594"})]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"method-vyper-contracts",children:"Method: Vyper (Contracts)"}),"\n",(0,n.jsx)(t.h4,{id:"frontend-2",children:"Frontend:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"cv",src:r(4018).A+"",width:"1280",height:"848"})}),"\n",(0,n.jsx)(t.h3,{id:"method-vyper-standard-json-input",children:"Method: Vyper (Standard Json Input)"}),"\n",(0,n.jsx)(t.h4,{id:"frontend-3",children:"Frontend:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"sjiv",src:r(1375).A+"",width:"1280",height:"552"})}),"\n",(0,n.jsx)(t.h3,{id:"method-vyper-multi-part-files",children:"Method: Vyper (Multi-part files)"}),"\n",(0,n.jsx)(t.h4,{id:"frontend-4",children:"Frontend:"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"mpfv",src:r(4690).A+"",width:"1280",height:"822"})}),"\n",(0,n.jsx)(t.h3,{id:"after-verification",children:"After Verification"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"avp",src:r(2522).A+"",width:"1280",height:"503"})})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},2522:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/avp-fa162f2180b681e8807908f00d195c43.png"},4018:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/cv-4d3a7c9df0e287432f8b25c935cd1ea3.png"},7673:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/flatsourcesol-41a879112babbd6397b588b2b4e69daa.png"},838:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/mpfsol-3a7d7ba4b61955208a7221a347c914c3.png"},4969:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/mpfsol2-53fcc6c9ea28eb6114b242e08ba8bb1a.png"},4690:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/mpfv-43dad07bd7fd43eb3721dc7611560ac4.png"},9250:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/sjisol1-d065f42e5cb024651428c3f700fc3662.png"},6880:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/sjisol3-71ed80d677f12848aba5fa829f7b6fb2.png"},1375:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/sjiv-2d889a272a34ef1415529bced91d39c2.png"},1582:(e,t,r)=>{r.d(t,{R:()=>s,x:()=>d});var n=r(758);const i={},o=n.createContext(i);function s(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/b0d24208.88806065.js b/build/assets/js/b0d24208.88806065.js deleted file mode 100644 index d4410f19d..000000000 --- a/build/assets/js/b0d24208.88806065.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2397],{7028:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>a});var s=n(6070),t=n(1582);const d={},o="Interface: BridgeAdapters",i={id:"build-on-morph/sdk/interfaces/BridgeAdapters",title:"BridgeAdapters",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/BridgeAdapters.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/BridgeAdapters",permalink:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/BridgeAdapters.md",tags:[],version:"current",frontMatter:{}},c={},a=[{value:"Indexable",id:"indexable",level:2}];function l(e){const r={a:"a",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / BridgeAdapters"]}),"\n",(0,s.jsx)(r.h1,{id:"interface-bridgeadapters",children:"Interface: BridgeAdapters"}),"\n",(0,s.jsx)(r.p,{children:"Something that looks like the list of custom bridges."}),"\n",(0,s.jsx)(r.h2,{id:"indexable",children:"Indexable"}),"\n",(0,s.jsxs)(r.p,{children:["[",(0,s.jsx)(r.code,{children:"name"}),": ",(0,s.jsx)(r.code,{children:"string"}),"]: ",(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,s.jsx)(r.code,{children:"IBridgeAdapter"})})]})]})}function h(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>i});var s=n(758);const t={},d=s.createContext(t);function o(e){const r=s.useContext(d);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(d.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/b137769e.2be8350d.js b/build/assets/js/b137769e.2be8350d.js deleted file mode 100644 index 52c2e9d9e..000000000 --- a/build/assets/js/b137769e.2be8350d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6951],{613:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>a,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var t=o(6070),r=o(1582);const s={title:"Run a full node from source",lang:"en-US"},i=void 0,l={id:"build-on-morph/developer-resources/node-operation/full-node/run-on-host",title:"Run a full node from source",description:"This guide outlines the steps to start a Morph node. The example assumes the home directory is ~/.morph",source:"@site/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md",sourceDirName:"build-on-morph/developer-resources/node-operation/full-node",slug:"/build-on-morph/developer-resources/node-operation/full-node/run-on-host",permalink:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Run a full node from source",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Run a full node with docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker"},next:{title:"Run a validator with docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker"}},d={},c=[{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Build executable binary",id:"build-executable-binary",level:2},{value:"Clone morph",id:"clone-morph",level:3},{value:"Build Geth",id:"build-geth",level:3},{value:"Build Node",id:"build-node",level:3},{value:"Config Preparation",id:"config-preparation",level:2},{value:"Start Node",id:"start-node",level:2},{value:"Sync from snapshot(Recommended)",id:"sync-from-snapshotrecommended",level:3},{value:"Download snapshot",id:"download-snapshot",level:4},{value:"Start execution client",id:"start-execution-client",level:4},{value:"Start consensus client",id:"start-consensus-client",level:4},{value:"Check sync status",id:"check-sync-status",level:4},{value:"Sync from genesis block",id:"sync-from-genesis-block",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["This guide outlines the steps to start a Morph node. The example assumes the home directory is ",(0,t.jsx)(n.code,{children:"~/.morph"})]}),"\n",(0,t.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,t.jsxs)(n.p,{children:["Running the morph node requires 2 processes: ",(0,t.jsx)(n.code,{children:"geth"})," and ",(0,t.jsx)(n.code,{children:"node"}),"."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"Geth"}),":the"," Morph execution layer which needs to meet the requirements as below"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Fast CPU with 4+ cores"}),"\n",(0,t.jsx)(n.li,{children:"32GB+ RAM"}),"\n",(0,t.jsx)(n.li,{children:"High-performance SSD with at least 1TB of free space"}),"\n",(0,t.jsx)(n.li,{children:"25+ MBit/sec download Internet service"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"Node"}),":the"," Morph consensus layer embedded tendermint which needs to meet the ",(0,t.jsx)(n.a,{href:"https://docs.tendermint.com/v0.34/tendermint-core/running-in-production.html#processor-and-memory",children:"tendermint hardware requirements"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsx)(n.p,{children:"According to limitations of the current geth implementation, we only support archive mode for launching a Geth. So the storage size of Geth will constantly increase along with blocks produced."})}),"\n",(0,t.jsx)(n.h2,{id:"build-executable-binary",children:"Build executable binary"}),"\n",(0,t.jsx)(n.h3,{id:"clone-morph",children:"Clone morph"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"mkdir -p ~/.morph \ncd ~/.morph\ngit clone https://github.com/morph-l2/morph.git\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Next, you need to check out a release version. You can find the available release versions on the ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/morph/releases",children:"Morph Releases"})," page. It is recommended to use the latest release version."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd morph\ngit checkout ${RELEASE_VERSION}\n"})}),"\n",(0,t.jsx)(n.h3,{id:"build-geth",children:"Build Geth"}),"\n",(0,t.jsx)(n.p,{children:"Notice: You need C compiler to build geth"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"make geth\n"})}),"\n",(0,t.jsx)(n.h3,{id:"build-node",children:"Build Node"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd ~/.morph/morph/node \nmake build\n"})}),"\n",(0,t.jsx)(n.h2,{id:"config-preparation",children:"Config Preparation"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Download the config files and make data dir"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd ~/.morph\n\n## mainnet\nwget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/mainnet/data.zip\n\n## testnet\nwget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/holesky/data.zip\n\nunzip data.zip\n"})}),"\n",(0,t.jsxs)(n.ol,{start:"2",children:["\n",(0,t.jsx)(n.li,{children:"Create a shared secret with node"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd ~/.morph\nopenssl rand -hex 32 > jwt-secret.txt\n"})}),"\n",(0,t.jsx)(n.h2,{id:"start-node",children:"Start Node"}),"\n",(0,t.jsx)(n.p,{children:"Mainnet nodes support synchronization from either the genesis block or a snapshot block, while testnet nodes only support synchronization from snapshots."}),"\n",(0,t.jsx)(n.h3,{id:"sync-from-snapshotrecommended",children:"Sync from snapshot(Recommended)"}),"\n",(0,t.jsx)(n.p,{children:"You should build the binary and prepare the config files in the above steps first, then download the snapshot."}),"\n",(0,t.jsx)(n.h4,{id:"download-snapshot",children:"Download snapshot"}),"\n",(0,t.jsx)(n.p,{children:"Download the latest snapshot corresponding to either the mainnet or testnet network."}),"\n",(0,t.jsxs)(n.p,{children:["A complete record of historical snapshots is available ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information",children:"here"}),". Below is an example of how to download a snapshot"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"## mainnet\nwget -q --show-progress https://snapshot.morphl2.io/mainnet/${SNAPSHOT_NAME}.tar.gz\ntar -xzvf ${SNAPSHOT_NAME}.tar.gz\n\n## holesky\nwget -q --show-progress https://snapshot.morphl2.io/holesky/${SNAPSHOT_NAME}.tar.gz\ntar -xzvf ${SNAPSHOT_NAME}.tar.gz\n"})}),"\n",(0,t.jsx)(n.p,{children:"Extracting snapshot data to the data directory your node points to"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mv ${SNAPSHOT_NAME}/geth geth-data\nmv ${SNAPSHOT_NAME}/data node-data\n"})}),"\n",(0,t.jsx)(n.h4,{id:"start-execution-client",children:"Start execution client"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:'title="Script for starting mainnet geth"',children:'./morph/go-ethereum/build/bin/geth --morph \\\n --datadir "./geth-data" \\\n --http --http.api=web3,debug,eth,txpool,net,engine \\\n --authrpc.addr localhost \\\n --authrpc.vhosts="localhost" \\\n --authrpc.port 8551 \\\n --authrpc.jwtsecret=./jwt-secret.txt \\\n --log.filename=./geth.log\n\n'})}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["For testnet, using ",(0,t.jsx)(n.code,{children:"--morph-holesky"})," instead"]})}),"\n",(0,t.jsxs)(n.p,{children:["tail -f ",(0,t.jsx)(n.code,{children:"geth.log"})," to check if the Geth is running properly, or you can also execute the curl command below to check if you are connected to the peer."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-Shell",children:'curl -X POST -H \'Content-Type: application/json\' --data \'{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}\' localhost:8545\n\n{"jsonrpc":"2.0","id":74,"result":"0x6"}\n'})}),"\n",(0,t.jsx)(n.h4,{id:"start-consensus-client",children:"Start consensus client"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-Bash",children:" ./morph/node/build/bin/morphnode --home ./node-data \\\n --l2.jwt-secret ./jwt-secret.txt \\\n --l2.eth http://localhost:8545 \\\n --l2.engine http://localhost:8551 \\\n --log.filename ./node.log \n"})}),"\n",(0,t.jsx)(n.p,{children:"tail -f node.log to check if the node is running properly, and you can also execute the command curl to check your node connection status."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-Bash",children:'curl http://localhost:26657/net_info\n\n{\n "jsonrpc": "2.0",\n "id": -1,\n "result": {\n "listening": true,\n "listeners": [\n "Listener(@)"\n ],\n "n_peers": "7",\n "peers": [\n {\n "node_info": {\n "protocol_version": {\n "p2p": "8",\n "block": "11",\n "app": "0"\n },\n "id": "b4ac59de479b0251d441ca0385429bc21713a208",\n "listen_addr": "tcp://0.0.0.0:26610",\n "network": "chain-morph-mainnet",\n "version": "0.37.0-alpha.1",\n "channels": "402021222338606100",\n "moniker": "morph-dataseed-node-0",\n "other": {\n "tx_index": "on",\n "rpc_address": "tcp://0.0.0.0:26657"\n }\n },\n "is_outbound": true,\n ....... \n'})}),"\n",(0,t.jsx)(n.h4,{id:"check-sync-status",children:"Check sync status"}),"\n",(0,t.jsxs)(n.p,{children:["curl ",(0,t.jsx)(n.a,{href:"http://localhost:26657/status",children:"http://localhost:26657/status"})," to check the sync status of the node"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-Bash",children:'{\n "jsonrpc": "2.0",\n "id": -1,\n "result": {\n "node_info": {\n "protocol_version": {\n "p2p": "8",\n "block": "11",\n "app": "0"\n },\n "id": "cde0d7cecfe9c82244c1dfa72c951759d02f1024",\n "listen_addr": "tcp://0.0.0.0:26656",\n "network": "chain-morph-mainnet",\n "version": "0.37.0-alpha.1",\n "channels": "402021222338606100",\n "moniker": "my-morph-node",\n "other": {\n "tx_index": "on",\n "rpc_address": "tcp://0.0.0.0:26657"\n }\n },\n "sync_info": {\n "latest_block_hash": "B4C0E514CD984B101FA89D7DB48C1FE18384F64C25E5565F618A5FE2851C42A9",\n "latest_app_hash": "",\n "latest_block_height": "2410",\n "latest_block_time": "2024-10-21T08:49:09.952573291Z",\n "earliest_block_hash": "0D66D908033DA7A3F5A95179B8D64261EDD887B944E59502A1C9EFBC1C9C4EF5",\n "earliest_app_hash": "",\n "earliest_block_height": "1",\n "earliest_block_time": "2024-10-21T06:00:00Z",\n "catching_up": false\n },\n "validator_info": {\n "address": "B7395023EFF719D0EE15AD96FFC7F69B6B9E52EF",\n "pub_key": {\n "type": "tendermint/PubKeyEd25519",\n "value": "tZI+wTExwoKeyUFgdSSYmf4sAYp4BhJu13UgPy1wDOc="\n },\n "voting_power": "0"\n }\n }\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:["The returned ",(0,t.jsx)(n.code,{children:'"catching_up"'})," indicates whether the node is in sync or not. ",(0,t.jsx)(n.em,{children:"True"})," means it is in sync."]}),"\n",(0,t.jsxs)(n.p,{children:["The returned ",(0,t.jsx)(n.code,{children:'"latest_block_height"'})," indicates the latest block height this node synced."]}),"\n",(0,t.jsx)(n.h3,{id:"sync-from-genesis-block",children:"Sync from genesis block"}),"\n",(0,t.jsx)(n.p,{children:"Start the execution client and consensus client directly without downloading snapshot."})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>l});var t=o(758);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/b202810b.3d55662b.js b/build/assets/js/b202810b.3d55662b.js deleted file mode 100644 index 4f3a7daf9..000000000 --- a/build/assets/js/b202810b.3d55662b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4734],{684:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>l,toc:()=>a});var s=r(6070),t=r(1582);const n={title:"Cross Chain Interoperability",lang:"en-US"},i=void 0,l={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability",title:"Cross Chain Interoperability",description:"LayerZero",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/0-cross-chain-interoperability.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/0-cross-chain-interoperability.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Cross Chain Interoperability",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"User Onboarding",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding"},next:{title:"Safe Multi-Signature Wallet",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet"}},c={},a=[{value:"LayerZero",id:"layerzero",level:3}];function d(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h3,{id:"layerzero",children:"LayerZero"}),"\n",(0,s.jsx)(o.p,{children:"LayerZero is a messaging protocol, not a blockchain. Using smart contracts deployed on each chain, in combination with Decentralized Verifier Networks (DVNs) and Executors, LayerZero enables different blockchains to seamlessly interact with one another."}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"layerzero",src:r(4043).A+"",width:"2878",height:"1548"})}),"\n",(0,s.jsxs)(o.p,{children:["You can find our network's endpoint ",(0,s.jsx)(o.a,{href:"https://docs.layerzero.network/v2/developers/evm/technical-reference/deployed-contracts#morph",children:"here"})]}),"\n",(0,s.jsxs)(o.p,{children:["We wrote a complete guide on ",(0,s.jsx)(o.a,{href:"https://morph.ghost.io/layerzero-v2-morph-seamless-cross-chain-token-transfers/",children:"how to leverage LayerZero's technology on Morph:"})]})]})}function p(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},4043:(e,o,r)=>{r.d(o,{A:()=>s});const s=r.p+"assets/images/layerzero-729926ffd8eadd4c2ed9ce27f314d627.png"},1582:(e,o,r)=>{r.d(o,{R:()=>i,x:()=>l});var s=r(758);const t={},n=s.createContext(t);function i(e){const o=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(n.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/b4c00acc.70d9fd4d.js b/build/assets/js/b4c00acc.70d9fd4d.js deleted file mode 100644 index caa3f110d..000000000 --- a/build/assets/js/b4c00acc.70d9fd4d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1995],{9600:(n,e,r)=>{r.r(e),r.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var o=r(6070),s=r(1582);const t={},c="Function: getAllOEContracts()",d={id:"build-on-morph/sdk/functions/getAllOEContracts",title:"getAllOEContracts",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/getAllOEContracts.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/getAllOEContracts",permalink:"/docs/build-on-morph/sdk/functions/getAllOEContracts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/getAllOEContracts.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(n){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...n.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(e.hr,{}),"\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / getAllOEContracts"]}),"\n",(0,o.jsx)(e.h1,{id:"function-getalloecontracts",children:"Function: getAllOEContracts()"}),"\n",(0,o.jsxs)(e.blockquote,{children:["\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.strong,{children:"getAllOEContracts"}),"(",(0,o.jsx)(e.code,{children:"l2ChainId"}),", ",(0,o.jsx)(e.code,{children:"opts"}),"): ",(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContracts",children:(0,o.jsx)(e.code,{children:"OEContracts"})})]}),"\n"]}),"\n",(0,o.jsx)(e.p,{children:"Automatically connects to all contract addresses, both L1 and L2, for the given L2 chain ID. The\nuser can provide custom contract address overrides for L1 or L2 contracts. If the given chain ID\nis not known then the user MUST provide custom contract addresses for ALL L1 contracts or this\nfunction will throw an error."}),"\n",(0,o.jsx)(e.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"l2ChainId"}),": ",(0,o.jsx)(e.code,{children:"number"})]}),"\n",(0,o.jsx)(e.p,{children:"Chain ID for the L2 network."}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"opts"}),"= ",(0,o.jsx)(e.code,{children:"{}"})]}),"\n",(0,o.jsx)(e.p,{children:"Additional options for connecting to the contracts."}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"opts.l1SignerOrProvider?"}),": ",(0,o.jsx)(e.code,{children:"Provider"})," | ",(0,o.jsx)(e.code,{children:"Signer"})]}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"opts.l2SignerOrProvider?"}),": ",(0,o.jsx)(e.code,{children:"Provider"})," | ",(0,o.jsx)(e.code,{children:"Signer"})]}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"opts.overrides?"}),": ",(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",children:(0,o.jsx)(e.code,{children:"DeepPartial"})}),"<",(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",children:(0,o.jsx)(e.code,{children:"OEContractsLike"})}),">"]}),"\n",(0,o.jsx)(e.p,{children:"Custom contract address overrides for L1 or L2 contracts."}),"\n",(0,o.jsx)(e.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsx)(e.p,{children:(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContracts",children:(0,o.jsx)(e.code,{children:"OEContracts"})})}),"\n",(0,o.jsx)(e.p,{children:"An object containing ethers.Contract objects connected to the appropriate addresses on\nboth L1 and L2."}),"\n",(0,o.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(e.p,{children:"src/utils/contracts.ts:88"})]})}function a(n={}){const{wrapper:e}={...(0,s.R)(),...n.components};return e?(0,o.jsx)(e,{...n,children:(0,o.jsx)(h,{...n})}):h(n)}},1582:(n,e,r)=>{r.d(e,{R:()=>c,x:()=>d});var o=r(758);const s={},t=o.createContext(s);function c(n){const e=o.useContext(t);return o.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:c(n.components),o.createElement(t.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/bce3eedd.ef73d91e.js b/build/assets/js/bce3eedd.ef73d91e.js deleted file mode 100644 index 6372c47a7..000000000 --- a/build/assets/js/bce3eedd.ef73d91e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6184],{9994:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>i,contentTitle:()=>n,default:()=>p,frontMatter:()=>c,metadata:()=>l,toc:()=>d});var s=r(6070),t=r(1582);const c={title:"Blockchain Oracles",lang:"en-US"},n=void 0,l={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles",title:"Blockchain Oracles",description:"Pyth Network",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/5-blockchain-oracles.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/5-blockchain-oracles.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Blockchain Oracles",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Blockchain Indexing Services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services"},next:{title:"Block Explorer",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer"}},i={},d=[{value:"Pyth Network",id:"pyth-network",level:3},{value:"eOracle",id:"eoracle",level:3}];function a(e){const o={a:"a",h3:"h3",img:"img",p:"p",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h3,{id:"pyth-network",children:"Pyth Network"}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"pyth",src:r(6605).A+"",width:"2772",height:"1528"})}),"\n",(0,s.jsxs)(o.p,{children:["Documentation: ",(0,s.jsx)(o.a,{href:"https://docs.pyth.network/price-feeds",children:"https://docs.pyth.network/price-feeds"})]}),"\n",(0,s.jsxs)(o.p,{children:["Right now Pyth is deployed on Morph Mainnet, check the ",(0,s.jsx)(o.a,{href:"https://explorer.morphl2.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43",children:"contract"}),"."]}),"\n",(0,s.jsx)(o.h3,{id:"eoracle",children:"eOracle"}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"eOracle",src:r(4577).A+"",width:"2592",height:"2122"})}),"\n",(0,s.jsx)(o.p,{children:"eOracle is currently in the progress of integrating Morph mainnet."}),"\n",(0,s.jsxs)(o.p,{children:["Deployed Morph Holesky testnet ",(0,s.jsx)(o.a,{href:"https://explorer-holesky.morphl2.io/address/0xbd53b35Bf458Cd22dBDeB5Da71181daA3cFb6A10",children:"contract"})]}),"\n",(0,s.jsxs)(o.p,{children:["Full price feeds and docs can be found here : ",(0,s.jsx)(o.a,{href:"https://eoracle.gitbook.io/eoracle/price-feeds/feed-addresses",children:"https://eoracle.gitbook.io/eoracle/price-feeds/feed-addresses"}),"."]})]})}function p(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},4577:(e,o,r)=>{r.d(o,{A:()=>s});const s=r.p+"assets/images/eOracle-9d570f06c3957d25e5cfb7159cb3e7cc.jpg"},6605:(e,o,r)=>{r.d(o,{A:()=>s});const s=r.p+"assets/images/pyth-27d190b1aedaa470332ff9ad3bef8b2f.jpg"},1582:(e,o,r)=>{r.d(o,{R:()=>n,x:()=>l});var s=r(758);const t={},c=s.createContext(t);function n(e){const o=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:n(e.components),s.createElement(c.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/beb6ddce.9994c5f0.js b/build/assets/js/beb6ddce.9994c5f0.js deleted file mode 100644 index bc297134d..000000000 --- a/build/assets/js/beb6ddce.9994c5f0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3732],{6689:(s,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>t,default:()=>l,frontMatter:()=>o,metadata:()=>a,toc:()=>i});var r=n(6070),h=n(1582);const o={},t="Function: hashMessageHash()",a={id:"build-on-morph/sdk/functions/hashMessageHash",title:"hashMessageHash",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/hashMessageHash.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/hashMessageHash",permalink:"/docs/build-on-morph/sdk/functions/hashMessageHash",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/hashMessageHash.md",tags:[],version:"current",frontMatter:{}},c={},i=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function d(s){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,h.R)(),...s.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(e.hr,{}),"\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / hashMessageHash"]}),"\n",(0,r.jsx)(e.h1,{id:"function-hashmessagehash",children:"Function: hashMessageHash()"}),"\n",(0,r.jsxs)(e.blockquote,{children:["\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.strong,{children:"hashMessageHash"}),"(",(0,r.jsx)(e.code,{children:"messageHash"}),"): ",(0,r.jsx)(e.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(e.p,{children:"Utility for hashing a message hash. This computes the storage slot\nwhere the message hash will be stored in state. HashZero is used\nbecause the first mapping in the contract is used."}),"\n",(0,r.jsx)(e.h2,{id:"parameters",children:"Parameters"}),"\n",(0,r.jsxs)(e.p,{children:["\u2022 ",(0,r.jsx)(e.strong,{children:"messageHash"}),": ",(0,r.jsx)(e.code,{children:"string"})]}),"\n",(0,r.jsx)(e.p,{children:"Message hash to hash."}),"\n",(0,r.jsx)(e.h2,{id:"returns",children:"Returns"}),"\n",(0,r.jsx)(e.p,{children:(0,r.jsx)(e.code,{children:"string"})}),"\n",(0,r.jsx)(e.p,{children:"Hash of the given message hash."}),"\n",(0,r.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(e.p,{children:"src/utils/message-utils.ts:24"})]})}function l(s={}){const{wrapper:e}={...(0,h.R)(),...s.components};return e?(0,r.jsx)(e,{...s,children:(0,r.jsx)(d,{...s})}):d(s)}},1582:(s,e,n)=>{n.d(e,{R:()=>t,x:()=>a});var r=n(758);const h={},o=r.createContext(h);function t(s){const e=r.useContext(o);return r.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function a(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(h):s.components||h:t(s.components),r.createElement(o.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/c30bab43.3af275f1.js b/build/assets/js/c30bab43.3af275f1.js deleted file mode 100644 index 0d2b6081a..000000000 --- a/build/assets/js/c30bab43.3af275f1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6941],{4718:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var s=n(6070),o=n(1582);const t={},c="Interface: OEContracts",d={id:"build-on-morph/sdk/interfaces/OEContracts",title:"OEContracts",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/OEContracts.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/OEContracts",permalink:"/docs/build-on-morph/sdk/interfaces/OEContracts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/OEContracts.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Properties",id:"properties",level:2},{value:"l1",id:"l1",level:3},{value:"Source",id:"source",level:4},{value:"l2",id:"l2",level:3},{value:"Source",id:"source-1",level:4}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / OEContracts"]}),"\n",(0,s.jsx)(r.h1,{id:"interface-oecontracts",children:"Interface: OEContracts"}),"\n",(0,s.jsx)(r.p,{children:"Represents Morph contracts, assumed to be connected to their appropriate\nproviders and addresses."}),"\n",(0,s.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,s.jsx)(r.h3,{id:"l1",children:"l1"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"l1"}),": ",(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/OEL1Contracts",children:(0,s.jsx)(r.code,{children:"OEL1Contracts"})})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:121"}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsx)(r.h3,{id:"l2",children:"l2"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"l2"}),": ",(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/OEL2Contracts",children:(0,s.jsx)(r.code,{children:"OEL2Contracts"})})]}),"\n"]}),"\n",(0,s.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/interfaces/types.ts:122"})]})}function a(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>c,x:()=>d});var s=n(758);const o={},t=s.createContext(o);function c(e){const r=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/c33d6554.08872042.js b/build/assets/js/c33d6554.08872042.js deleted file mode 100644 index 1201cc7f6..000000000 --- a/build/assets/js/c33d6554.08872042.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8520],{866:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var o=s(6070),n=s(1582);const r={},c="Type alias: OEL2ContractsLike",i={id:"build-on-morph/sdk/type-aliases/OEL2ContractsLike",title:"OEL2ContractsLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/OEL2ContractsLike",permalink:"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.md",tags:[],version:"current",frontMatter:{}},a={},d=[{value:"Source",id:"source",level:2}];function l(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(t.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(t.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / OEL2ContractsLike"]}),"\n",(0,o.jsx)(t.h1,{id:"type-alias-oel2contractslike",children:"Type alias: OEL2ContractsLike"}),"\n",(0,o.jsxs)(t.blockquote,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"OEL2ContractsLike"}),": ",(0,o.jsx)(t.code,{children:"{ [K in keyof OEL2Contracts]: AddressLike }"})]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Convenience type for something that looks like the L2 OE contract interface but could be\naddresses instead of actual contract objects."}),"\n",(0,o.jsx)(t.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(t.p,{children:"src/interfaces/types.ts:137"})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>i});var o=s(758);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/c4f5d8e4.466ad3d3.js b/build/assets/js/c4f5d8e4.466ad3d3.js deleted file mode 100644 index a60c2e426..000000000 --- a/build/assets/js/c4f5d8e4.466ad3d3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2634],{9421:(e,t,s)=>{s.r(t),s.d(t,{default:()=>h});s(758);var n=s(5557),r=s(6070);function a(){return(0,r.jsx)(n.rd,{to:"/docs/about-morph/user-navigation-page"})}var i=s(8437),o=s(7500),c=s.n(o),l=s(6869);function x(){return(0,r.jsxs)("header",{className:c()("relative flex flex-col items-center justify-center text-[#FFF] heroBanner h-[320px] md:h-[780px] bg-[#7D68FF] px-4"),children:[(0,r.jsx)("img",{src:"/lottie/bg-logo.svg",className:"flex absolute top-[6px] h-[95%]"}),(0,r.jsx)("p",{className:"text-[16px]",children:"Your gateway to the morph ecosystem"}),(0,r.jsx)("h2",{className:"text-[48px] leading-[70px] md:text-[85px] md:leading-[85px] xl:text-[140px] xl:leading-[100px] font-bold font-denim text-[#FFF]",children:"MORPH-DOCS"}),(0,r.jsx)("p",{className:"hidden text-[18px] text-center",children:"Learn everything about Morph here."})]})}function h(){const{siteConfig:e}=(0,l.A)();return(0,r.jsxs)(i.A,{title:`${e.title}`,className:"min-h-screen",description:"Morph is a secure, decentralized, and EVM-compatiable rollup that is cost-efficient and high-performing.",children:[(0,r.jsx)(x,{}),(0,r.jsx)("main",{children:(0,r.jsx)(a,{})})]})}}}]); \ No newline at end of file diff --git a/build/assets/js/c5f7ff1a.1a3bb12f.js b/build/assets/js/c5f7ff1a.1a3bb12f.js deleted file mode 100644 index ec5cecbd8..000000000 --- a/build/assets/js/c5f7ff1a.1a3bb12f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3764],{4429:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var o=s(6070),n=s(1582);const r={},c="Type alias: OEL1ContractsLike",i={id:"build-on-morph/sdk/type-aliases/OEL1ContractsLike",title:"OEL1ContractsLike",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/OEL1ContractsLike",permalink:"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.md",tags:[],version:"current",frontMatter:{}},a={},d=[{value:"Source",id:"source",level:2}];function l(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(t.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(t.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / OEL1ContractsLike"]}),"\n",(0,o.jsx)(t.h1,{id:"type-alias-oel1contractslike",children:"Type alias: OEL1ContractsLike"}),"\n",(0,o.jsxs)(t.blockquote,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"OEL1ContractsLike"}),": ",(0,o.jsx)(t.code,{children:"{ [K in keyof OEL1Contracts]: AddressLike }"})]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Convenience type for something that looks like the L1 OE contract interface but could be\naddresses instead of actual contract objects."}),"\n",(0,o.jsx)(t.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(t.p,{children:"src/interfaces/types.ts:129"})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1582:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>i});var o=s(758);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/c7ccd35b.88ca3abd.js b/build/assets/js/c7ccd35b.88ca3abd.js deleted file mode 100644 index 6e533bb45..000000000 --- a/build/assets/js/c7ccd35b.88ca3abd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1557],{1232:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var r=o(6070),s=o(1582);const a={title:"Safe Multi-Signature Wallet",lang:"en-US"},n=void 0,i={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet",title:"Safe Multi-Signature Wallet",description:"What is Morph Safe?",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/1-safe-multi-signature-wallet.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/1-safe-multi-signature-wallet.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Safe Multi-Signature Wallet",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Cross Chain Interoperability",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability"},next:{title:"RPC Services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services"}},l={},c=[{value:"What is Morph Safe?",id:"what-is-morph-safe",level:2}];function u(e){const t={a:"a",h2:"h2",img:"img",p:"p",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"what-is-morph-safe",children:"What is Morph Safe?"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"safemultisig",src:o(291).A+"",width:"2430",height:"1316"})}),"\n",(0,r.jsxs)(t.p,{children:["Morph Safe is a fork managed by the Morph team in collaboration with ",(0,r.jsx)(t.a,{href:"https://www.protofire.io/",children:"Protofire"}),", an official partner of the Safe team. It is a multi-signature smart contract wallet, which means it requires a minimum number of signatures to approve a transaction before it can occur."]}),"\n",(0,r.jsx)(t.p,{children:"For example, if your business has three main stakeholders, you can configure the wallet to require approval from either two out of three or all three individuals before a transaction can proceed. This security measure ensures that no single person can compromise the funds."}),"\n",(0,r.jsx)(t.p,{children:"In addition to robust security, Morph Safe offers complete self-custody over funds. The smart contract deployed for the wallet has full control over the wallet's contents and does not rely on any trusted external party for execution."}),"\n",(0,r.jsxs)(t.p,{children:["To create your Morph Mainnet Safe wallet click ",(0,r.jsx)(t.a,{href:"https://safe.morphl2.io/welcome/accounts?chain=morph",children:"here"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},291:(e,t,o)=>{o.d(t,{A:()=>r});const r=o.p+"assets/images/safemultisig-af738a8a2e55a1aeaa11c3e37bdedc87.png"},1582:(e,t,o)=>{o.d(t,{R:()=>n,x:()=>i});var r=o(758);const s={},a=r.createContext(s);function n(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:n(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/ca4c51aa.fd464d9a.js b/build/assets/js/ca4c51aa.fd464d9a.js deleted file mode 100644 index 7bf18934f..000000000 --- a/build/assets/js/ca4c51aa.fd464d9a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4300],{1904:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>a});var n=s(6070),t=s(1582);const o={},d="Interface: WithdrawalEntry",i={id:"build-on-morph/sdk/interfaces/WithdrawalEntry",title:"WithdrawalEntry",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/WithdrawalEntry",permalink:"/docs/build-on-morph/sdk/interfaces/WithdrawalEntry",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.md",tags:[],version:"current",frontMatter:{}},c={},a=[{value:"Properties",id:"properties",level:2},{value:"MessagePassed",id:"messagepassed",level:3},{value:"Source",id:"source",level:4}];function l(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / WithdrawalEntry"]}),"\n",(0,n.jsx)(r.h1,{id:"interface-withdrawalentry",children:"Interface: WithdrawalEntry"}),"\n",(0,n.jsx)(r.p,{children:"Represents a withdrawal entry within the logs of a L2 to L1\nCrossChainMessage"}),"\n",(0,n.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(r.h3,{id:"messagepassed",children:"MessagePassed"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"MessagePassed"}),": ",(0,n.jsx)(r.code,{children:"any"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:292"})]})}function h(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>d,x:()=>i});var n=s(758);const t={},o=n.createContext(t);function d(e){const r=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),n.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/cfe67a99.1a4c4cf9.js b/build/assets/js/cfe67a99.1a4c4cf9.js deleted file mode 100644 index fc0332f60..000000000 --- a/build/assets/js/cfe67a99.1a4c4cf9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9567],{9103:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var s=o(6070),t=o(1582);const r={title:"User Onboarding",lang:"en-US"},i="User Onboarding",l={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding",title:"User Onboarding",description:"Reown (prev. known as WalletConnect)",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/9-user-onboarding.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/9-user-onboarding.md",tags:[],version:"current",sidebarPosition:9,frontMatter:{title:"User Onboarding",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Use SDK to interact with Morph",permalink:"/docs/build-on-morph/sdk/globals"},next:{title:"Cross Chain Interoperability",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability"}},a={},c=[{value:"Reown (prev. known as WalletConnect)",id:"reown-prev-known-as-walletconnect",level:2},{value:"AppKit",id:"appkit",level:3},{value:"WalletKit",id:"walletkit",level:3}];function d(e){const n={a:"a",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"user-onboarding",children:"User Onboarding"}),"\n",(0,s.jsx)(n.h2,{id:"reown-prev-known-as-walletconnect",children:"Reown (prev. known as WalletConnect)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://reown.com/?utm_source=morph&utm_medium=docs&utm_campaign=backlinks",children:"Reown"})})," gives developers the tools to build user experiences that make digital ownership effortless, intuitive, and secure."]}),"\n",(0,s.jsxs)(n.p,{children:["Reown has two major product offerings, they are, ",(0,s.jsx)(n.strong,{children:"AppKit"})," and ",(0,s.jsx)(n.strong,{children:"WalletKit"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"appkit",children:"AppKit"}),"\n",(0,s.jsx)(n.p,{children:"AppKit is a powerful, free, and fully open-source SDK for developers looking to integrate wallet connections and other Web3 functionalities into their apps on any EVM and non-EVM chain. In just a few simple steps, you can provide your users with seamless wallet access, one-click authentication, social logins, and notifications\u2014streamlining their experience while enabling advanced features like on-ramp functionality, in-app token swaps and smart accounts."}),"\n",(0,s.jsx)(n.h3,{id:"walletkit",children:"WalletKit"}),"\n",(0,s.jsx)(n.p,{children:"WalletKit is a robust, open-source SDK designed to empower seamless wallet connections and interactions across any blockchain. With WalletKit, you can offer your users a simple and secure way to connect with thousands of apps, enabling features like one-click authentication, secure transaction signing, and streamlined wallet address verification. Its chain-agnostic design ensures effortless multi-chain support, eliminating the need for complex integrations while delivering unmatched connectivity and security."}),"\n",(0,s.jsxs)(n.p,{children:["To summarize, ",(0,s.jsx)(n.strong,{children:"AppKit"})," is for ",(0,s.jsx)(n.strong,{children:"Web3 applications"})," and ",(0,s.jsx)(n.strong,{children:"WalletKit"})," is for ",(0,s.jsx)(n.strong,{children:"Web3 wallets"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"You will be able to use Reown AppKit to power end-to-end wallet interactions on your Web3 app deployed on Morph."}),"\n",(0,s.jsx)(n.p,{children:"Some links to learn more about Reown:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://reown.com/?utm_source=morph&utm_medium=docs&utm_campaign=backlinks",children:"Website"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://reown.com/blog?utm_source=morph&utm_medium=docs&utm_campaign=backlinks",children:"Blog"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.reown.com/?utm_source=morph&utm_medium=docs&utm_campaign=backlinks",children:"Docs"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>l});var s=o(758);const t={},r=s.createContext(t);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/d26d133a.fac89a01.js b/build/assets/js/d26d133a.fac89a01.js deleted file mode 100644 index 581bdda00..000000000 --- a/build/assets/js/d26d133a.fac89a01.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2487],{3566:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>h,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>a});var i=l(6070),n=l(1582);const r={title:"Wallet Setup",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},o=void 0,s={id:"quick-start/wallet-setup",title:"Wallet Setup",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/quick-start/2-wallet-setup.md",sourceDirName:"quick-start",slug:"/quick-start/wallet-setup",permalink:"/docs/quick-start/wallet-setup",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/quick-start/2-wallet-setup.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Wallet Setup",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"FAQs",permalink:"/docs/about-morph/faqs"},next:{title:"Faucet",permalink:"/docs/quick-start/faucet"}},h={},a=[{value:"Wallet",id:"wallet",level:2},{value:"Bitget Wallet",id:"bitget-wallet",level:3},{value:"OKX Walllet",id:"okx-walllet",level:3},{value:"MetaMask",id:"metamask",level:3},{value:"Manual network configuration",id:"manual-network-configuration",level:3},{value:"Network Configuration",id:"network-configuration",level:4}];function c(e){const t={a:"a",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"wallet",children:"Wallet"}),"\n",(0,i.jsx)(t.p,{children:"To interact with dApps on Morph, you need a compatible wallet. Below are some example wallets and configuration tips."}),"\n",(0,i.jsx)(t.h3,{id:"bitget-wallet",children:"Bitget Wallet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Bitget Wallet",src:l(220).A+"",width:"1024",height:"512"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Installation: Bitget Wallet can be installed from their ",(0,i.jsx)(t.a,{href:"https://web3.bitget.com/en/wallet-download",children:"official website"}),"."]}),"\n",(0,i.jsx)(t.li,{children:"Importing Configurations:"}),"\n"]}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["To add Morph mainnet within Bitget Wallet, go to ",(0,i.jsx)(t.em,{children:"Wallet"})," tab"]}),"\n",(0,i.jsxs)(t.li,{children:["Click on the mainnet dropdown, and select ",(0,i.jsx)(t.em,{children:"Add Mainnet"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:["Search for Morph in the list and select it (to add testnet, select ",(0,i.jsx)(t.em,{children:"Morph Holesky"}),")."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"okx-walllet",children:"OKX Walllet"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Installation: You can download ",(0,i.jsx)(t.a,{href:"https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",children:"OKX wallet extension"})," for desktop usage and use OKX wallet on mobile by downloading OKX app."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"metamask",children:"MetaMask"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Installation: MetaMask can be installed from their ",(0,i.jsx)(t.a,{href:"https://metamask.io/download/",children:"official website"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:['Importing Configurations: To set up MetaMask for Morph, click the "add to wallet" button on the ',(0,i.jsx)(t.a,{href:"https://explorer.morphl2.io/",children:"Morph Holesky block explorer page"}),". This will automatically import the chain ID and RPC URLs for the Morph Mainnet & Testnet."]}),"\n",(0,i.jsx)(t.li,{children:'Using Ethereum Holesky Testnet: Morph Testnet utilizes the Ethereum Holesky testnet as its underlying L1, which is already configured in MetaMask by default. To access it, enable "Show/hide test networks" in the MetaMask network selection dropdown.'}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"manual-network-configuration",children:"Manual network configuration"}),"\n",(0,i.jsx)(t.p,{children:"Currently, the Add to wallet links may not be compatible with all wallets yet. If you are having issues using them, you may need to manually add the Morph Mainnet & Testnet by inserting the configuration details from the table below:"}),"\n",(0,i.jsx)(t.h4,{id:"network-configuration",children:"Network Configuration"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"RPC Url(s)"}),(0,i.jsx)(t.th,{children:"Chain ID"}),(0,i.jsx)(t.th,{children:"Block explorer"}),(0,i.jsx)(t.th,{children:"Symbol"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Morph Mainnet"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://rpc-quicknode.morphl2.io",children:"https://rpc-quicknode.morphl2.io"})}),(0,i.jsx)(t.td,{children:"2818"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://explorer.morphl2.io",children:"https://explorer.morphl2.io"})}),(0,i.jsx)(t.td,{children:"ETH"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Ethereum Mainnet"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://ethereum-rpc.publicnode.com/",children:"https://ethereum-rpc.publicnode.com/"})}),(0,i.jsx)(t.td,{children:"1"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://etherscan.io",children:"https://etherscan.io"})}),(0,i.jsx)(t.td,{children:"ETH"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Morph Holesky Testnet"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://rpc-quicknode-holesky.morphl2.io",children:"https://rpc-quicknode-holesky.morphl2.io"})}),(0,i.jsx)(t.td,{children:"2810"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://explorer-holesky.morphl2.io",children:"https://explorer-holesky.morphl2.io"})}),(0,i.jsx)(t.td,{children:"ETH"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"Ethereum Holesky"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://ethereum-holesky-rpc.publicnode.com/",children:"https://ethereum-holesky-rpc.publicnode.com/"})}),(0,i.jsx)(t.td,{children:"17000"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"https://holesky.etherscan.io",children:"https://holesky.etherscan.io"})}),(0,i.jsx)(t.td,{children:"ETH"})]})]})]}),"\n",(0,i.jsxs)(t.p,{children:["You can also visit ",(0,i.jsx)(t.a,{href:"https://chainlist.org/?chain=11155111&search=morph&testnets=true",children:"chainlist"})," to add Morph."]})]})}function d(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},220:(e,t,l)=>{l.d(t,{A:()=>i});const i=l.p+"assets/images/bitgetwallet-daacbe3eec4f40e395c926e7082694a2.png"},1582:(e,t,l)=>{l.d(t,{R:()=>o,x:()=>s});var i=l(758);const n={},r=i.createContext(n);function o(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/d475c619.99c439c5.js b/build/assets/js/d475c619.99c439c5.js deleted file mode 100644 index a0f682eb5..000000000 --- a/build/assets/js/d475c619.99c439c5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5042],{3084:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>h,contentTitle:()=>d,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>a});var r=i(6070),n=i(1582);const o={title:"Use SDK to interact with Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},d="@morph-l2/sdk",l={id:"build-on-morph/sdk/globals",title:"Use SDK to interact with Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/sdk/globals.md",sourceDirName:"build-on-morph/sdk",slug:"/build-on-morph/sdk/globals",permalink:"/docs/build-on-morph/sdk/globals",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/globals.md",tags:[],version:"current",frontMatter:{title:"Use SDK to interact with Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Bridge between Morph and Ethereum",permalink:"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum"},next:{title:"User Onboarding",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding"}},h={},a=[{value:"Installation",id:"installation",level:2},{value:"Docs",id:"docs",level:2},{value:"Using the SDK",id:"using-the-sdk",level:2},{value:"CrossChainMessenger",id:"crosschainmessenger",level:3},{value:"L2Provider and related utilities",id:"l2provider-and-related-utilities",level:3},{value:"Other utilities",id:"other-utilities",level:3},{value:"Documents",id:"documents",level:2},{value:"Enumerations",id:"enumerations",level:3},{value:"Classes",id:"classes",level:3},{value:"Interfaces",id:"interfaces",level:3},{value:"Type Aliases",id:"type-aliases",level:3},{value:"Variables",id:"variables",level:3},{value:"Functions",id:"functions",level:3}];function t(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"@morph-l2/sdk"})," \u2022 ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(s.strong,{children:"Docs"})})]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h1,{id:"morph-l2sdk",children:"@morph-l2/sdk"}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.code,{children:"@morph-l2/sdk"})," package provides a set of tools for interacting with Morph."]}),"\n",(0,r.jsx)(s.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{children:"npm install @morph-l2/sdk@latest\n"})}),"\n",(0,r.jsx)(s.h2,{id:"docs",children:"Docs"}),"\n",(0,r.jsxs)(s.p,{children:["You can find auto-generated API documentation over at ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/sdk/globals/",children:"docs.morphl2.io"}),"."]}),"\n",(0,r.jsx)(s.h2,{id:"using-the-sdk",children:"Using the SDK"}),"\n",(0,r.jsx)(s.h3,{id:"crosschainmessenger",children:"CrossChainMessenger"}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,r.jsx)(s.code,{children:"CrossChainMessenger"})})," class simplifies the process of moving assets and data between Ethereum and Morph.\nYou can use this class to, for example, initiate a withdrawal of ERC20 tokens from Morph back to Ethereum, accurately track when the withdrawal is ready to be finalized on Ethereum, and execute the finalization transaction after the challenge period has elapsed.\nThe ",(0,r.jsx)(s.code,{children:"CrossChainMessenger"})," can handle deposits and withdrawals of ETH and any ERC20-compatible token.\nThe ",(0,r.jsx)(s.code,{children:"CrossChainMessenger"})," automatically connects to all relevant contracts so complex configuration is not necessary."]}),"\n",(0,r.jsx)(s.h3,{id:"l2provider-and-related-utilities",children:"L2Provider and related utilities"}),"\n",(0,r.jsxs)(s.p,{children:["The Morph SDK includes ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/sdk/type-aliases/L2Provider",children:"various utilities"})," for handling Morph's ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph/",children:"transaction fee model"}),".\nFor instance, ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/sdk/functions/estimateTotalGasCost",children:(0,r.jsx)(s.code,{children:"estimateTotalGasCost"})})," will estimate the total cost (in wei) to send at transaction on Morph including both the L2 execution cost and the L1 data cost.\nYou can also use the ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/sdk/functions/asL2Provider",children:(0,r.jsx)(s.code,{children:"asL2Provider"})})," function to wrap an ethers Provider object into an ",(0,r.jsx)(s.code,{children:"L2Provider"})," which will have all of these helper functions attached."]}),"\n",(0,r.jsx)(s.h3,{id:"other-utilities",children:"Other utilities"}),"\n",(0,r.jsxs)(s.p,{children:["The SDK contains other useful helper functions and constants.\nFor a complete list, refer to the auto-generated ",(0,r.jsx)(s.a,{href:"https://docs.morphl2.io/docs/build-on-morph/sdk/globals/",children:"SDK documentation"})]}),"\n",(0,r.jsx)(s.h2,{id:"documents",children:"Documents"}),"\n",(0,r.jsx)(s.h3,{id:"enumerations",children:"Enumerations"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/L1ChainID",children:"L1ChainID"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/L1RpcUrls",children:"L1RpcUrls"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/L2ChainID",children:"L2ChainID"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/L2RpcUrls",children:"L2RpcUrls"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:"MessageDirection"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus",children:"MessageReceiptStatus"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageStatus",children:"MessageStatus"})}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"classes",children:"Classes"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:"CrossChainMessenger"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",children:"ETHBridgeAdapter"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:"StandardBridgeAdapter"})}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"interfaces",children:"Interfaces"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData",children:"BridgeAdapterData"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",children:"BridgeAdapters"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:"CoreCrossChainMessage"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:"CrossChainMessage"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",children:"CrossChainMessageRequest"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:"IActionOptions"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:"IBridgeAdapter"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/L2Block",children:"L2Block"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions",children:"L2BlockWithTransactions"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/L2Transaction",children:"L2Transaction"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",children:"MessageReceipt"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContracts",children:"OEContracts"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",children:"OEContractsLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/OEL1Contracts",children:"OEL1Contracts"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/OEL2Contracts",children:"OEL2Contracts"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal",children:"ProvenWithdrawal"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRoot",children:"StateRoot"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRootBatch",children:"StateRootBatch"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader",children:"StateRootBatchHeader"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:"TokenBridgeMessage"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof",children:"WithdrawMessageProof"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/WithdrawalEntry",children:"WithdrawalEntry"})}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"type-aliases",children:"Type Aliases"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:"AddressLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",children:"DeepPartial"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/L1Provider",children:"L1Provider"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/L2Provider",children:"L2Provider"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",children:"LowLevelMessage"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:"MessageLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike",children:"MessageRequestLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:"NumberLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike",children:"OEL1ContractsLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike",children:"OEL2ContractsLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:"ProviderLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerLike",children:"SignerLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",children:"SignerOrProviderLike"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",children:"TransactionLike"})}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"variables",children:"Variables"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA",children:"BRIDGE_ADAPTER_DATA"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES",children:"CHAIN_BLOCK_TIMES"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES",children:"CONTRACT_ADDRESSES"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES",children:"DEFAULT_L1_CONTRACT_ADDRESSES"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES",children:"DEFAULT_L2_CONTRACT_ADDRESSES"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS",children:"DEPOSIT_CONFIRMATION_BLOCKS"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/l1BridgeName",children:"l1BridgeName"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName",children:"l1CrossDomainMessengerName"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/l2BridgeName",children:"l2BridgeName"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName",children:"l2CrossDomainMessengerName"})}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"functions",children:"Functions"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/asL2Provider",children:"asL2Provider"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/estimateL1Gas",children:"estimateL1Gas"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/estimateL1GasCost",children:"estimateL1GasCost"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/estimateL2GasCost",children:"estimateL2GasCost"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/estimateTotalGasCost",children:"estimateTotalGasCost"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/getAllOEContracts",children:"getAllOEContracts"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/getBridgeAdapters",children:"getBridgeAdapters"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/getL1GasPrice",children:"getL1GasPrice"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/getOEContract",children:"getOEContract"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2",children:"hashLowLevelMessageV2"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/hashMessageHash",children:"hashMessageHash"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/isL2Provider",children:"isL2Provider"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit",children:"migratedWithdrawalGasLimit"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/omit",children:"omit"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/toAddress",children:"toAddress"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/toBigNumber",children:"toBigNumber"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/toNumber",children:"toNumber"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/toProvider",children:"toProvider"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/toSignerOrProvider",children:"toSignerOrProvider"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/functions/toTransactionHash",children:"toTransactionHash"})}),"\n"]})]})}function c(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(t,{...e})}):t(e)}},1582:(e,s,i)=>{i.d(s,{R:()=>d,x:()=>l});var r=i(758);const n={},o=r.createContext(n);function d(e){const s=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),r.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/d4781eda.7819b49e.js b/build/assets/js/d4781eda.7819b49e.js deleted file mode 100644 index 60cd8e5a9..000000000 --- a/build/assets/js/d4781eda.7819b49e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1201],{5859:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var n=r(6070),s=r(1582);const o={},c="Interface: StateRootBatchHeader",d={id:"build-on-morph/sdk/interfaces/StateRootBatchHeader",title:"StateRootBatchHeader",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/StateRootBatchHeader",permalink:"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.md",tags:[],version:"current",frontMatter:{}},i={},l=[{value:"Properties",id:"properties",level:2},{value:"batchIndex",id:"batchindex",level:3},{value:"Source",id:"source",level:4},{value:"batchRoot",id:"batchroot",level:3},{value:"Source",id:"source-1",level:4},{value:"batchSize",id:"batchsize",level:3},{value:"Source",id:"source-2",level:4},{value:"extraData",id:"extradata",level:3},{value:"Source",id:"source-3",level:4},{value:"prevTotalElements",id:"prevtotalelements",level:3},{value:"Source",id:"source-4",level:4}];function a(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(t.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(t.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / StateRootBatchHeader"]}),"\n",(0,n.jsx)(t.h1,{id:"interface-staterootbatchheader",children:"Interface: StateRootBatchHeader"}),"\n",(0,n.jsx)(t.p,{children:"Header for a state root batch."}),"\n",(0,n.jsx)(t.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(t.h3,{id:"batchindex",children:"batchIndex"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"batchIndex"}),": ",(0,n.jsx)(t.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:326"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.h3,{id:"batchroot",children:"batchRoot"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"batchRoot"}),": ",(0,n.jsx)(t.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:327"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.h3,{id:"batchsize",children:"batchSize"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"batchSize"}),": ",(0,n.jsx)(t.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source-2",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:328"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.h3,{id:"extradata",children:"extraData"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"extraData"}),": ",(0,n.jsx)(t.code,{children:"string"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source-3",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:330"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.h3,{id:"prevtotalelements",children:"prevTotalElements"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"prevTotalElements"}),": ",(0,n.jsx)(t.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"source-4",children:"Source"}),"\n",(0,n.jsx)(t.p,{children:"src/interfaces/types.ts:329"})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,t,r)=>{r.d(t,{R:()=>c,x:()=>d});var n=r(758);const s={},o=n.createContext(s);function c(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/d8273606.8055d03c.js b/build/assets/js/d8273606.8055d03c.js deleted file mode 100644 index c3bd13096..000000000 --- a/build/assets/js/d8273606.8055d03c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7275],{6663:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var n=s(6070),d=s(1582);const t={},o="Function: getBridgeAdapters()",i={id:"build-on-morph/sdk/functions/getBridgeAdapters",title:"getBridgeAdapters",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/getBridgeAdapters.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/getBridgeAdapters",permalink:"/docs/build-on-morph/sdk/functions/getBridgeAdapters",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/getBridgeAdapters.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,d.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / getBridgeAdapters"]}),"\n",(0,n.jsx)(r.h1,{id:"function-getbridgeadapters",children:"Function: getBridgeAdapters()"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"getBridgeAdapters"}),"(",(0,n.jsx)(r.code,{children:"l2ChainId"}),", ",(0,n.jsx)(r.code,{children:"messenger"}),", ",(0,n.jsx)(r.code,{children:"opts"}),"?): ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",children:(0,n.jsx)(r.code,{children:"BridgeAdapters"})})]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:"Gets a series of bridge adapters for the given L2 chain ID."}),"\n",(0,n.jsx)(r.h2,{id:"parameters",children:"Parameters"}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"l2ChainId"}),": ",(0,n.jsx)(r.code,{children:"number"})]}),"\n",(0,n.jsx)(r.p,{children:"Chain ID for the L2 network."}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"messenger"}),": ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,n.jsx)(r.code,{children:"CrossChainMessenger"})})]}),"\n",(0,n.jsx)(r.p,{children:"Cross chain messenger to connect to the bridge adapters"}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"opts?"})]}),"\n",(0,n.jsx)(r.p,{children:"Additional options for connecting to the custom bridges."}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"opts.contracts?"}),": ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",children:(0,n.jsx)(r.code,{children:"DeepPartial"})}),"<",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",children:(0,n.jsx)(r.code,{children:"OEContractsLike"})}),">"]}),"\n",(0,n.jsxs)(r.p,{children:["\u2022 ",(0,n.jsx)(r.strong,{children:"opts.overrides?"}),": ",(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData",children:(0,n.jsx)(r.code,{children:"BridgeAdapterData"})})]}),"\n",(0,n.jsx)(r.p,{children:"Custom bridge adapters."}),"\n",(0,n.jsx)(r.h2,{id:"returns",children:"Returns"}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",children:(0,n.jsx)(r.code,{children:"BridgeAdapters"})})}),"\n",(0,n.jsx)(r.p,{children:"An object containing all bridge adapters"}),"\n",(0,n.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/utils/contracts.ts:142"})]})}function a(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>o,x:()=>i});var n=s(758);const d={},t=n.createContext(d);function o(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:o(e.components),n.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/dcf2e50b.f1ec2836.js b/build/assets/js/dcf2e50b.f1ec2836.js deleted file mode 100644 index 2511a6ebb..000000000 --- a/build/assets/js/dcf2e50b.f1ec2836.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6232],{5130:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=t(6070),i=t(1582);const r={title:"Morph's Decentralized Sequencer Network",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},o=void 0,a={id:"how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",title:"Morph's Decentralized Sequencer Network",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/decentralized-sequencers/1-morph-decentralized-sequencer-network.md",sourceDirName:"how-morph-works/decentralized-sequencers",slug:"/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",permalink:"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/decentralized-sequencers/1-morph-decentralized-sequencer-network.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Morph's Decentralized Sequencer Network",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Optimistic zkEVM",permalink:"/docs/how-morph-works/optimistic-zkevm"},next:{title:"Rollup",permalink:"/docs/how-morph-works/general-protocol-design/rollup"}},c={},l=[{value:"The Importance of Decentralized Sequencers",id:"the-importance-of-decentralized-sequencers",level:2},{value:"What is a sequencer and what does it do?",id:"what-is-a-sequencer-and-what-does-it-do",level:3},{value:"What are the problems with centralized sequencers?",id:"what-are-the-problems-with-centralized-sequencers",level:3},{value:"Vulnerability of a Single Point of Failure",id:"vulnerability-of-a-single-point-of-failure",level:4},{value:"Excessive Transaction Censorship",id:"excessive-transaction-censorship",level:4},{value:"Monopoly Over MEV",id:"monopoly-over-mev",level:4},{value:"What's Morph's Approach to Decentralized Sequencers?",id:"whats-morphs-approach-to-decentralized-sequencers",level:2},{value:"Efficiency:\u200b",id:"efficiency",level:3},{value:"Scalable and Manageable:\u200b",id:"scalable-and-manageable",level:3},{value:"Solutions Formulated on These Principles\u200b",id:"solutions-formulated-on-these-principles",level:3},{value:"Architecture",id:"architecture",level:3},{value:"Sequencer Set Selection",id:"sequencer-set-selection",level:4},{value:"Layer 2 Blocks Generation",id:"layer-2-blocks-generation",level:3},{value:"Batching",id:"batching",level:3},{value:"Consensus Verification",id:"consensus-verification",level:3},{value:"Summary",id:"summary",level:2},{value:"Roadmap",id:"roadmap",level:2}];function h(e){const n={admonition:"admonition",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"RVP",src:t(2213).A+"",width:"4000",height:"2000"})}),"\n",(0,s.jsx)(n.h2,{id:"the-importance-of-decentralized-sequencers",children:"The Importance of Decentralized Sequencers"}),"\n",(0,s.jsx)(n.h3,{id:"what-is-a-sequencer-and-what-does-it-do",children:"What is a sequencer and what does it do?"}),"\n",(0,s.jsx)(n.p,{children:"In a traditional Layer 1 blockchain, transactions are packaged and processed by miners in proof-of-work systems or validators nodes in proof-of-stake systems. These entities earn the authority to package, sequence, and produce blocks either through the competitive task of computational mining or via staking-based elections."}),"\n",(0,s.jsx)(n.p,{children:"However, many current Layer 2 designs employ a single role, unburdened by competition or staking costs, responsible for packaging and sequencing all Layer 2 transactions. This entity is known as the \u201csequencer\u201d. Its duties extend beyond sequencing; it is also tasked with generating L2 blocks, periodically committing Layer 2 transactions and state changes to Layer 1, and addressing any potential challenges to its submissions."}),"\n",(0,s.jsx)(n.p,{children:"Centralized sequencers present a challenge due to their sole dominion over the sequencing and packaging of Layer 2 transactions. This monopoly raises concerns, largely stemming from this centralized control."}),"\n",(0,s.jsx)(n.h3,{id:"what-are-the-problems-with-centralized-sequencers",children:"What are the problems with centralized sequencers?"}),"\n",(0,s.jsx)(n.h4,{id:"vulnerability-of-a-single-point-of-failure",children:"Vulnerability of a Single Point of Failure"}),"\n",(0,s.jsx)(n.p,{children:"The proper functioning of Layer 2 is intrinsically tied to the operation of the sequencer. If the sequencer stops working, transactions from all Layer 2 users will not be processed, effectively bringing down Layer 2 operations. The problem is magnified when a single entity controls the sequencer. Should the entity fail, the entirety of the Layer 2 is paralyzed, rendering the system vulnerable to a single point of failure. Therefore, centralized sequencers pose a significant risk to the stability of Layer 2."}),"\n",(0,s.jsx)(n.h4,{id:"excessive-transaction-censorship",children:"Excessive Transaction Censorship"}),"\n",(0,s.jsx)(n.p,{children:"Centralized sequencers have the ability to reject user-submitted transactions, rendering them unprocessable \u2014 a blatant form of transaction censorship. In a scenario where a centralized Layer 2 deliberately blocks transactions involving its governance tokens, panic and selling among users is likely to follow.\nSome solutions allow users to submit their intended transactions directly on Layer 1. However, this process is time-consuming, often taking several hours, and burdens users with Layer 1 gas fees. Therefore, this alternative does not fundamentally solve the problem.\nIn a decentralized sequencer framework, should one sequencer decline a transaction, users can still relay it to alternative sequencers. The content of the next block is ultimately determined through consensus, ensuring no single entity can censor transactions based on personal interests."}),"\n",(0,s.jsx)(n.h4,{id:"monopoly-over-mev",children:"Monopoly Over MEV"}),"\n",(0,s.jsx)(n.p,{children:'Because the sequencer can determine the order (or "sequence") of received transactions, it effectively has a monopoly over all Miner Extractable Value (MEV). In this scenario, users must bear any potential losses incurred by the sequencer\u2019s exclusive control over MEV, necessitating an additional and unwarranted layer of trust in the sequencer.\nDecentralized sequencers introduce a competitive dynamic among multiple entities aiming for MEV. This competition eliminates the monopoly of any single sequencer, mitigating the adverse effects of unchecked MEV on users.'}),"\n",(0,s.jsx)(n.h2,{id:"whats-morphs-approach-to-decentralized-sequencers",children:"What's Morph's Approach to Decentralized Sequencers?"}),"\n",(0,s.jsx)(n.p,{children:"Morph is distinct from other Rollup projects due to the emphasis on establishing a decentralized sequencer network from inception. This design is guided by the following core principles:"}),"\n",(0,s.jsx)(n.h3,{id:"efficiency",children:"Efficiency:\u200b"}),"\n",(0,s.jsx)(n.p,{children:"Morph is first and foremost an Ethereum scaling solution, focused on improved efficiency and cost reduction. Our solution must guarantee fast execution and transaction confirmation at Layer 2 while maintaining the highest possible level of decentralization."}),"\n",(0,s.jsx)(n.h3,{id:"scalable-and-manageable",children:"Scalable and Manageable:\u200b"}),"\n",(0,s.jsx)(n.p,{children:"The sequencer network\u2019s design prioritizes ease of maintenance, expansion, and updating. If one network functionality requires maintenance, it should not disrupt the operation of other functionalities. In addition, the sequencer network should be adaptable and easily upgradable as new and more efficient solutions emerge."}),"\n",(0,s.jsx)(n.h3,{id:"solutions-formulated-on-these-principles",children:"Solutions Formulated on These Principles\u200b"}),"\n",(0,s.jsx)(n.p,{children:"With these principles, Morph\u2019s sequencer network design includes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Modularity: The structure emphasizes modular components that are loosely connected, allowing for swift upgrades or replacements."}),"\n",(0,s.jsx)(n.li,{children:"Byzantine Fault Tolerant (BFT) Consensus: Sequencers employ a BFT consensus for L2 block generation."}),"\n",(0,s.jsx)(n.li,{children:"BLS Signature for Batch Signing: Sequencers sign a collective of L2 blocks using the BLS signature method. The L1 contract then verifies this L2 consensus through the BLS signature."}),"\n"]}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsx)(n.p,{children:"Why BLS signature?"}),(0,s.jsx)(n.p,{children:"A current basic signature algorithm such as ECDSA in Ethereum has an excessive cost. This issue arises because the signature data needs to be submitted to the Layer 1 contract and requires payment of the corresponding cost. As the number of validators increases, this cost will also increase proportionally. By using BLS signatures, the cost of uploading signatures can be maintained at a constant level, unaffected by the gradual growth of the sequencer's quantity."})]}),"\n",(0,s.jsx)(n.h3,{id:"architecture",children:"Architecture"}),"\n",(0,s.jsx)(n.p,{children:"The following is a simple illustration of Morph\u2019s decentralized sequencing network architecture."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Sequencer Network Archi",src:t(4673).A+"",width:"3840",height:"2160"})}),"\n",(0,s.jsx)(n.h4,{id:"sequencer-set-selection",children:"Sequencer Set Selection"}),"\n",(0,s.jsx)(n.p,{children:"A complete Morph decentralized sequencer network consists of two parts:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequencer Set"})," : This forms the core group that provides sequencing services"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequencer Staking Contract"}),": This contract facilitates the selection of the sequencer set via an election process."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Through the sequencer staking contract, members are elected into the sequencer set, where they collaboratively provide services for the Morph network. Periodically, the election results are synchronized to the Layer 1 Rollup contract. This synchronized data is utilized to obtain the BLS aggregate signatures of sequencer network participants for comparison and verification."}),"\n",(0,s.jsx)(n.h3,{id:"layer-2-blocks-generation",children:"Layer 2 Blocks Generation"}),"\n",(0,s.jsx)(n.p,{children:"Given Morph's modular design, each sequencer operates a consensus client that runs BFT to communicate with other sequencers."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Block Generation",src:t(4751).A+"",width:"3540",height:"1992"})}),"\n",(0,s.jsx)(n.p,{children:"Following the BFT consensus protocol, the selected sequencer extracts transactions from the mempool, constructs blocks, and synchronizes these blocks with other sequencers to undergo verification and voting. The end result is the generation of new Layer 2 blocks."}),"\n",(0,s.jsx)(n.h3,{id:"batching",children:"Batching"}),"\n",(0,s.jsx)(n.p,{children:"Considering the costs of uploading to and validating signatures on Layer 1, sequencers will sign a batch of blocks with BLS signatures at designated checkpoints."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"BlockSign",src:t(3809).A+"",width:"3540",height:"1992"})}),"\n",(0,s.jsx)(n.p,{children:"Post-signing, the designated sequencer forwards the collective batch of blocks to Layer 1 through its batch submitter component."}),"\n",(0,s.jsx)(n.h3,{id:"consensus-verification",children:"Consensus Verification"}),"\n",(0,s.jsx)(n.p,{children:"The selected sequencer must submit to the Layer 1 contract:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"The aggregated BLS signatures"}),"\n",(0,s.jsx)(n.li,{children:"The batch of transactions"}),"\n",(0,s.jsx)(n.li,{children:"The consensus-determined state"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The Layer 1 contract will verify the submitted signature to confirm the transaction's consensus."}),"\n",(0,s.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Morph operates a native decentralized sequencer network based on BFT consensus."}),"\n",(0,s.jsx)(n.li,{children:"Through protocol and network optimization, Morph maximizes the scalability of Ethereum while ensuring decentralization."}),"\n",(0,s.jsx)(n.li,{children:"Based on BLS signatures, other participants in Layer 1 and Layer 2 can effectively verify the consensus results of Layer 2, ensuring the security provided by the sequencer network is confirmable at the Layer 1 level."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"roadmap",children:"Roadmap"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Stage 1"}),": Close test on morph beta testnet"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Stage 2"}),": Decentralized sequencer network live on mainnet"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Stage 3"}),": Open election of sequencer set"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Stage 4"}),": Open Morph's sequencer network to the public l2 space"]})]})}function d(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},3809:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/batch-sign-8ddddc5b593f0238b63eff3a0f679b32.png"},4751:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/block-con-175b7060545d69ab99290496c4ca3d16.png"},2213:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/dseq1-afce583c551d8ca96f458ddb7ed2eac3.jpg"},4673:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png"},1582:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var s=t(758);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/dfd8dfaf.60141c7c.js b/build/assets/js/dfd8dfaf.60141c7c.js deleted file mode 100644 index 4f2be17db..000000000 --- a/build/assets/js/dfd8dfaf.60141c7c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7430],{6418:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>p,contentTitle:()=>s,default:()=>a,frontMatter:()=>c,metadata:()=>i,toc:()=>u});var n=e(6070),r=e(1582);const c={},s=void 0,i={id:"about-morph/key-concepts/optimistic-rollup",title:"optimistic-rollup",description:"",source:"@site/docs/about-morph/key-concepts/1-optimistic-rollup.md",sourceDirName:"about-morph/key-concepts",slug:"/about-morph/key-concepts/optimistic-rollup",permalink:"/docs/about-morph/key-concepts/optimistic-rollup",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/about-morph/key-concepts/1-optimistic-rollup.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{}},p={},u=[];function m(t){return(0,n.jsx)(n.Fragment,{})}function a(t={}){const{wrapper:o}={...(0,r.R)(),...t.components};return o?(0,n.jsx)(o,{...t,children:(0,n.jsx)(m,{...t})}):m()}},1582:(t,o,e)=>{e.d(o,{R:()=>s,x:()=>i});var n=e(758);const r={},c=n.createContext(r);function s(t){const o=n.useContext(c);return n.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function i(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),n.createElement(c.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e3875bab.72a3ed86.js b/build/assets/js/e3875bab.72a3ed86.js deleted file mode 100644 index 71bb618c6..000000000 --- a/build/assets/js/e3875bab.72a3ed86.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[6956],{360:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var r=n(6070),t=n(1582);const o={},i="Function: estimateL1Gas()",c={id:"build-on-morph/sdk/functions/estimateL1Gas",title:"estimateL1Gas",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/estimateL1Gas.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/estimateL1Gas",permalink:"/docs/build-on-morph/sdk/functions/estimateL1Gas",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/estimateL1Gas.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / estimateL1Gas"]}),"\n",(0,r.jsx)(s.h1,{id:"function-estimatel1gas",children:"Function: estimateL1Gas()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"estimateL1Gas"}),"(",(0,r.jsx)(s.code,{children:"l2Provider"}),", ",(0,r.jsx)(s.code,{children:"tx"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates the amount of L1 gas required for a given L2 transaction."}),"\n",(0,r.jsx)(s.h2,{id:"parameters",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Provider"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,r.jsx)(s.code,{children:"ProviderLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"L2 provider to query the gas usage from."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"tx"}),": ",(0,r.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,r.jsx)(s.p,{children:"Transaction to estimate L1 gas for."}),"\n",(0,r.jsx)(s.h2,{id:"returns",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Estimated L1 gas."}),"\n",(0,r.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/l2-provider.ts:71"})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>c});var r=n(758);const t={},o=r.createContext(t);function i(e){const s=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e3bda051.aa9f2698.js b/build/assets/js/e3bda051.aa9f2698.js deleted file mode 100644 index f975db487..000000000 --- a/build/assets/js/e3bda051.aa9f2698.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4352],{6320:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>t,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var s=r(6070),i=r(1582);const o={},c="Interface: IActionOptions",d={id:"build-on-morph/sdk/interfaces/IActionOptions",title:"IActionOptions",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/IActionOptions.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/IActionOptions",permalink:"/docs/build-on-morph/sdk/interfaces/IActionOptions",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/IActionOptions.md",tags:[],version:"current",frontMatter:{}},t={},l=[{value:"Param",id:"param",level:2},{value:"Param",id:"param-1",level:2},{value:"Param",id:"param-2",level:2},{value:"Param",id:"param-3",level:2},{value:"Properties",id:"properties",level:2},{value:"direction?",id:"direction",level:3},{value:"Source",id:"source",level:4},{value:"from?",id:"from",level:3},{value:"Source",id:"source-1",level:4},{value:"overrides?",id:"overrides",level:3},{value:"Type declaration",id:"type-declaration",level:4},{value:"gatewayAddress?",id:"gatewayaddress",level:5},{value:"gatewayName?",id:"gatewayname",level:5},{value:"Source",id:"source-2",level:4},{value:"recipient?",id:"recipient",level:3},{value:"Source",id:"source-3",level:4},{value:"signer?",id:"signer",level:3},{value:"Source",id:"source-4",level:4}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / IActionOptions"]}),"\n",(0,s.jsx)(n.h1,{id:"interface-iactionoptions",children:"Interface: IActionOptions"}),"\n",(0,s.jsx)(n.h2,{id:"param",children:"Param"}),"\n",(0,s.jsx)(n.p,{children:"Optional signer to use to send the transaction."}),"\n",(0,s.jsx)(n.h2,{id:"param-1",children:"Param"}),"\n",(0,s.jsx)(n.p,{children:"Optional address to receive the funds on chain. Defaults to sender."}),"\n",(0,s.jsx)(n.h2,{id:"param-2",children:"Param"}),"\n",(0,s.jsx)(n.p,{children:"Direction to search for messages in. If not provided, will attempt to"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"automatically search both directions under the assumption that a transaction hash will only"}),"\n",(0,s.jsx)(n.li,{children:"exist on one chain. If the hash exists on both chains, will throw an error."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"param-3",children:"Param"}),"\n",(0,s.jsx)(n.p,{children:"Optional transaction overrides."}),"\n",(0,s.jsx)(n.h2,{id:"properties",children:"Properties"}),"\n",(0,s.jsx)(n.h3,{id:"direction",children:"direction?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"direction"}),": ",(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,s.jsx)(n.code,{children:"MessageDirection"})})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:412"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"from",children:"from?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"from"}),": ",(0,s.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:410"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"overrides",children:"overrides?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"overrides"}),": ",(0,s.jsx)(n.code,{children:"object"})," & ",(0,s.jsx)(n.code,{children:"CallOverrides"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"type-declaration",children:"Type declaration"}),"\n",(0,s.jsx)(n.h5,{id:"gatewayaddress",children:"gatewayAddress?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"gatewayAddress"}),": ",(0,s.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,s.jsx)(n.h5,{id:"gatewayname",children:"gatewayName?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"gatewayName"}),": ",(0,s.jsx)(n.code,{children:"string"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:413"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"recipient",children:"recipient?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"recipient"}),": ",(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,s.jsx)(n.code,{children:"AddressLike"})})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-3",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:411"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"signer",children:"signer?"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"optional"})," ",(0,s.jsx)(n.strong,{children:"signer"}),": ",(0,s.jsx)(n.code,{children:"Signer"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-4",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:409"})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>d});var s=r(758);const i={},o=s.createContext(i);function c(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e6305dab.3df2285d.js b/build/assets/js/e6305dab.3df2285d.js deleted file mode 100644 index 63ef56684..000000000 --- a/build/assets/js/e6305dab.3df2285d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9817],{2359:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>r,toc:()=>d});var n=s(6070),t=s(1582);const a={title:"Decentralized Naming Services",lang:"en-US"},o=void 0,r={id:"build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services",title:"Decentralized Naming Services",description:"SpaceID",source:"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/8-decentralized-naming-services.md",sourceDirName:"build-on-morph/developer-resources/use-ecosystem-developer-tools",slug:"/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/8-decentralized-naming-services.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Decentralized Naming Services",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Artificial Intelligence",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence"},next:{title:"Run a full node with docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker"}},c={},d=[{value:"SpaceID",id:"spaceid",level:2},{value:"The Space ID .mph domain integration",id:"the-space-id-mph-domain-integration",level:3},{value:"How SpaceID works",id:"how-spaceid-works",level:3},{value:"Key features of SpaceID",id:"key-features-of-spaceid",level:3},{value:"Multi-Chain Name Service",id:"multi-chain-name-service",level:4},{value:"Web3 Name SDK & API",id:"web3-name-sdk--api",level:4},{value:"Benefits of DNS",id:"benefits-of-dns",level:3},{value:"Use Case of SpaceID",id:"use-case-of-spaceid",level:3}];function l(e){const i={a:"a",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h2,{id:"spaceid",children:"SpaceID"}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Space ID",src:s(7511).A+"",width:"1670",height:"688"})}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.a,{href:"https://space.id/",children:"Space ID"})," offers a universal namespace for blockchain, enabling users to register and manage domain names across different blockchains. It enhances cross-chain interoperability and simplifies user identification across the Web3 ecosystem. This project supports a broad range of applications, from crypto trading to token lending and NFT minting, showcasing a versatile approach to decentralized digital identities."]}),"\n",(0,n.jsxs)(i.p,{children:["Space ID has launched the .mph domain specific for Morph. If you are looking for integration, ",(0,n.jsx)(i.a,{href:"https://docs.google.com/document/d/1gozy52Z-MhinPdQuB0hveUhXTBfAONt4HH2QC8T4BWg/edit?usp=sharing",children:"please refer to this doc"})]}),"\n",(0,n.jsx)(i.h3,{id:"the-space-id-mph-domain-integration",children:"The Space ID .mph domain integration"}),"\n",(0,n.jsx)(i.h3,{id:"how-spaceid-works",children:"How SpaceID works"}),"\n",(0,n.jsxs)(i.p,{children:["SPACE ID aims to create a universal name service network that connects decentralized identities with the physical and digital worlds. It is progressing toward becoming a comprehensive digital identity solution for Web3. Read the details ",(0,n.jsx)(i.a,{href:"https://docs.space.id/",children:"here"})]}),"\n",(0,n.jsx)(i.h3,{id:"key-features-of-spaceid",children:"Key features of SpaceID"}),"\n",(0,n.jsx)(i.h4,{id:"multi-chain-name-service",children:"Multi-Chain Name Service"}),"\n",(0,n.jsx)(i.p,{children:"Among the top priorities of SPACE ID is supporting more blockchains and top-level domains (TLDs). Unlike SPACE ID 1.0, whose main emphasis was on .bnb Name Service, SPACE ID 2.0 instead focuses on multi-chain name service. SPACE ID has reached out to various blockchains for partnership discussions, and expects its ecosystem to flourish with time."}),"\n",(0,n.jsx)(i.h4,{id:"web3-name-sdk--api",children:"Web3 Name SDK & API"}),"\n",(0,n.jsx)(i.p,{children:"SPACE ID aims to streamline web3 services through the use of a single SDK to assist in the building of DApps. This saves developers time, since they don\u2019t have to work with multiple protocols and be encumbered with issues of blockchain incompatibility. This vision is being realized by adding an all-in-one API over the SDK, allowing current and future partners to seamlessly integrate their web3 services with their unified Web3 Name SDK."}),"\n",(0,n.jsx)(i.h3,{id:"benefits-of-dns",children:"Benefits of DNS"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Simplified Address Management: Users can use easy-to-remember names instead of long hexadecimal addresses, reducing the risk of errors in transactions."}),"\n",(0,n.jsx)(i.li,{children:"Interoperability: SpaceID names can point to various types of addresses and resources, supporting multiple blockchain networks and off-chain data."}),"\n",(0,n.jsx)(i.li,{children:"Decentralization: SpaceID is built on blockchain, ensuring that no single entity controls the naming system, which enhances security and censorship resistance."}),"\n",(0,n.jsx)(i.li,{children:"Flexibility: Domain owners have full control over their domains, including the ability to create subdomains, update addresses, and manage metadata."}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"use-case-of-spaceid",children:"Use Case of SpaceID"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Cryptocurrency Wallets: Users can receive payments using simple names instead of complex addresses."}),"\n",(0,n.jsx)(i.li,{children:"Decentralized Websites: SpaceID names can point to Greenfield content, enabling decentralized websites."}),"\n",(0,n.jsx)(i.li,{children:"Identity Management: SpaceID can be used as part of a decentralized identity system, linking a user\u2019s SpaceID to their decentralized identifiers and attestations."}),"\n",(0,n.jsx)(i.li,{children:"DApps and Smart Contracts: Developers can use SpaceID to provide human-readable names for their smart contracts and decentralized applications, improving user experience."}),"\n"]})]})}function p(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},7511:(e,i,s)=>{s.d(i,{A:()=>n});const n=s.p+"assets/images/spaceid-29fd0d4f081ffeee5410ca83a259a04e.png"},1582:(e,i,s)=>{s.d(i,{R:()=>o,x:()=>r});var n=s(758);const t={},a=n.createContext(t);function o(e){const i=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),n.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e6f27cd2.ede20334.js b/build/assets/js/e6f27cd2.ede20334.js deleted file mode 100644 index 61b7c90a0..000000000 --- a/build/assets/js/e6f27cd2.ede20334.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7450],{779:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>c,toc:()=>l});var n=o(6070),i=o(1582),t=o(1601);const s={title:"Build on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},d=void 0,c={id:"build-on-morph/developer-navigation-page",title:"Build on Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/0-developer-navigation-page.md",sourceDirName:"build-on-morph",slug:"/build-on-morph/developer-navigation-page",permalink:"/docs/build-on-morph/developer-navigation-page",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/0-developer-navigation-page.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Build on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Bridge",permalink:"/docs/quick-start/bridge"},next:{title:"Morph Modular Design",permalink:"/docs/how-morph-works/morph-modular-design"}},a={},l=[{value:"What is Morph?",id:"what-is-morph",level:3},{value:"Getting Started",id:"getting-started",level:3},{value:"Engage in Our Developer Community\u200b",id:"engage-in-our-developer-community",level:3}];function p(e){const r={a:"a",h3:"h3",img:"img",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.p,{children:"If you\u2019re ready to build applications on Morph, you're in the right place."}),"\n",(0,n.jsxs)(r.p,{children:["For those who are regular users or visiting for the first time, we recommend starting with our ",(0,n.jsx)(r.a,{href:"/docs/about-morph/user-navigation-page",children:"For Users section"})," to explore introductory content such as definitions, our vision, key concepts, and more."]}),"\n",(0,n.jsx)(r.h3,{id:"what-is-morph",children:"What is Morph?"}),"\n",(0,n.jsx)(r.p,{children:"Morph is the first optimistic zkEVM Ethereum Layer 2 solution that is 100% EVM compatible. Building on Morph is just like building on Ethereum. If you\u2019re experienced in Ethereum development, you'll find your existing code, tooling, and dependencies are fully compatible with Morph."}),"\n",(0,n.jsx)(r.p,{children:"We provide a one-page for Morph integration resources if you want to get started quickly."}),"\n",(0,n.jsxs)(t.A,{className:"md:grid-cols-2 xl:grid-cols-2",children:[(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/build-on-morph/integration-one-page",icon:"/img/cards/research.svg",text:"Morph Integration One-Page (English)"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/build-on-morph/integration-one-page-cn",icon:"/img/cards/research.svg",text:"Morph Integration One-Page (Mandarin)"})]}),"\n",(0,n.jsx)(r.h3,{id:"getting-started",children:"Getting Started"}),"\n",(0,n.jsx)(r.p,{children:"To help you get started, here\u2019s a recommended navigation through our documentation:"}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Fundamental Concepts"}),": Start here to learn the core components of Morph, including Morph\u2019s Modular Design, the Decentralized Sequencer Network, and the Responsive Validity Proof system."]}),"\n",(0,n.jsxs)(t.A,{className:"md:grid-cols-2 xl:grid-cols-3",children:[(0,n.jsx)(t.Z,{href:"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",icon:"/img/cards/research.svg",text:"Decentralized Sequencers"}),(0,n.jsx)(t.Z,{href:"/docs/how-morph-works/optimistic-zkevm",icon:"/img/cards/research.svg",text:"Optimistic zkEVM"}),(0,n.jsx)(t.Z,{href:"/docs/how-morph-works/general-protocol-design/rollup",icon:"/img/cards/research.svg",text:"General Protocol Design"})]}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Developer Guides"}),": Access comprehensive guides on verifying smart contracts, running a Morph node, deploying contracts, and more."]}),"\n",(0,n.jsxs)(t.A,{className:"md:grid-cols-2 xl:grid-cols-3",children:[(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/build-on-morph/development-setup",icon:"/img/cards/dev.svg",text:"Development Setup"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts",icon:"/img/cards/dev.svg",text:"Verify Your Contracts"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum",icon:"/img/cards/bridge.svg",text:"Ethereum <=> Morph Bridge"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/sdk/globals",icon:"/img/cards/dev.svg",text:"Using SDK"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",icon:"/img/cards/node.svg",text:"Node Operations"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet",icon:"/img/cards/tools.svg",text:"Leverage Ecosystem Infra"})]}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Developer Resources"}),": Find detailed API methods, contract addresses and other useful developer resources."]}),"\n",(0,n.jsxs)(t.A,{className:"md:grid-cols-2 xl:grid-cols-3",children:[(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/developer-resources/contracts",icon:"/img/cards/contract.svg",text:"Contract Addresses"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/developer-resources/dapp-examples-on-morph",icon:"/img/cards/guide.svg",text:"Dapp Examples"}),(0,n.jsx)(t.Z,{href:"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods",icon:"/img/cards/tools.svg",text:"Morph JSON-RPC API"})]}),"\n",(0,n.jsx)(r.h3,{id:"engage-in-our-developer-community",children:"Engage in Our Developer Community\u200b"}),"\n",(0,n.jsxs)(r.p,{children:["We're actively enhancing our network with more integrations and support infrastructure, progressing towards our Mainnet release. Join our growing developer community. You can find us on ",(0,n.jsx)(r.a,{href:"https://discord.com/invite/MorphLayer",children:"Discord"})," or follow our progress on ",(0,n.jsx)(r.a,{href:"https://x.com/MorphLayer",children:"Twitter"}),"."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"devintro",src:o(2015).A+"",width:"4000",height:"2000"})})]})}function h(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},1601:(e,r,o)=>{o.d(r,{A:()=>c,Z:()=>a});var n=o(7500),i=o.n(n),t=o(7838),s=o(3958),d=o(6070);const c=e=>{let{className:r,children:o}=e;return(0,d.jsx)("div",{className:"flex gap-4 mb-8 grid "+r,children:o})},a=e=>{let{className:r,href:o,icon:n,darkIcon:c,text:a,children:l}=e;const{withBaseUrl:p}=(0,t.h)(),h={light:p(n),dark:p(c??n)};return(0,d.jsxs)("a",{href:o,target:o?.startsWith("http")?"_blank":"_self",className:i()("no-underline items-center hover:no-underline bg-card-background cursor-pointer rounded-[4px] text-card-text border border-solid border-card-border py-5 px-4 flex flex-row",{"hover:border-[#14A800] hover:text-brand":o}),children:[(0,d.jsx)(s.A,{className:i()("w-6 h-6"),alt:n,sources:h}),(0,d.jsx)("span",{className:"ml-2 text-[16px] leading-[20px]",children:a})]})}},2015:(e,r,o)=>{o.d(r,{A:()=>n});const n=o.p+"assets/images/devintro-af1fa91181efcded8682d179b40db272.png"},1582:(e,r,o)=>{o.d(r,{R:()=>s,x:()=>d});var n=o(758);const i={},t=n.createContext(i);function s(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(t.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e7a84acc.42a29373.js b/build/assets/js/e7a84acc.42a29373.js deleted file mode 100644 index 61c4cc1c9..000000000 --- a/build/assets/js/e7a84acc.42a29373.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3667],{7479:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>n,default:()=>i,frontMatter:()=>a,metadata:()=>t,toc:()=>l});var d=s(6070),h=s(1582);const a={title:"Contract Addresses",lang:"en-US"},n=void 0,t={id:"build-on-morph/developer-resources/contracts",title:"Contract Addresses",description:"Morph Network Info",source:"@site/docs/build-on-morph/developer-resources/1-contracts.md",sourceDirName:"build-on-morph/developer-resources",slug:"/build-on-morph/developer-resources/contracts",permalink:"/docs/build-on-morph/developer-resources/contracts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/1-contracts.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Contract Addresses",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Prune State",permalink:"/docs/build-on-morph/developer-resources/node-operation/prune-state"},next:{title:"Dapp Examples on Morph",permalink:"/docs/build-on-morph/developer-resources/dapp-examples-on-morph"}},c={},l=[{value:"Morph Network Info",id:"morph-network-info",level:2},{value:"Morph Mainnet",id:"morph-mainnet",level:3},{value:"Morph Holesky Testnet",id:"morph-holesky-testnet",level:3},{value:"Morph Mainnet Contracts",id:"morph-mainnet-contracts",level:2},{value:"Main Contract",id:"main-contract",level:3},{value:"L1 Contract",id:"l1-contract",level:4},{value:"L2 Contract",id:"l2-contract",level:4},{value:"Gateway",id:"gateway",level:3},{value:"L1 Gateway",id:"l1-gateway",level:4},{value:"L2 Gateway",id:"l2-gateway",level:4},{value:"Other Layer 2 Predeploys",id:"other-layer-2-predeploys",level:3},{value:"Tokens",id:"tokens",level:3},{value:"L1 Tokens",id:"l1-tokens",level:4},{value:"L2 Tokens",id:"l2-tokens",level:4},{value:"Morph Holesky Contracts",id:"morph-holesky-contracts",level:2},{value:"Main Contract",id:"main-contract-1",level:3},{value:"L1 Contract",id:"l1-contract-1",level:4},{value:"L2 Contract",id:"l2-contract-1",level:4},{value:"L2 Tokens",id:"l2-tokens-1",level:4},{value:"Gateway",id:"gateway-1",level:3},{value:"L1 Gateway",id:"l1-gateway-1",level:4},{value:"L2 Gateway",id:"l2-gateway-1",level:4},{value:"Other Layer 2 Predeploys",id:"other-layer-2-predeploys-1",level:3}];function o(e){const r={a:"a",admonition:"admonition",h2:"h2",h3:"h3",h4:"h4",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,h.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(r.h2,{id:"morph-network-info",children:"Morph Network Info"}),"\n",(0,d.jsx)(r.h3,{id:"morph-mainnet",children:"Morph Mainnet"}),"\n",(0,d.jsxs)(r.table,{children:[(0,d.jsx)(r.thead,{children:(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.th,{children:"Network Name"}),(0,d.jsx)(r.th,{children:"Morph Mainnet"}),(0,d.jsx)(r.th,{children:"Ethereum Mainnet"})]})}),(0,d.jsxs)(r.tbody,{children:[(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"RPC URL"}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://rpc-quicknode.morphl2.io",children:"https://rpc-quicknode.morphl2.io"})}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://ethereum-rpc.publicnode.com/",children:"https://ethereum-rpc.publicnode.com/"})})]}),(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"Chain ID"}),(0,d.jsx)(r.td,{children:"2818"}),(0,d.jsx)(r.td,{children:"1"})]}),(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"Currency Symbol"}),(0,d.jsx)(r.td,{children:"ETH"}),(0,d.jsx)(r.td,{children:"ETH"})]}),(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"Block Explorer URL"}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/",children:"https://explorer.morphl2.io/"})}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://etherscan.io/",children:"https://etherscan.io/"})})]})]})]}),"\n",(0,d.jsx)(r.h3,{id:"morph-holesky-testnet",children:"Morph Holesky Testnet"}),"\n",(0,d.jsxs)(r.table,{children:[(0,d.jsx)(r.thead,{children:(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.th,{children:"Network Name"}),(0,d.jsx)(r.th,{children:"Morph Holesky Testnet"}),(0,d.jsx)(r.th,{children:"Ethereum Holesky Testnet"})]})}),(0,d.jsxs)(r.tbody,{children:[(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"RPC URL"}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://rpc-quicknode-holesky.morphl2.io",children:"https://rpc-quicknode-holesky.morphl2.io"})}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://ethereum-holesky-rpc.publicnode.com/",children:"https://ethereum-holesky-rpc.publicnode.com/"})})]}),(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"Chain ID"}),(0,d.jsx)(r.td,{children:"2810"}),(0,d.jsx)(r.td,{children:"17000"})]}),(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"Currency Symbol"}),(0,d.jsx)(r.td,{children:"ETH"}),(0,d.jsx)(r.td,{children:"ETH"})]}),(0,d.jsxs)(r.tr,{children:[(0,d.jsx)(r.td,{children:"Block Explorer URL"}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/",children:"https://explorer-holesky.morphl2.io/"})}),(0,d.jsx)(r.td,{children:(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/",children:"https://holesky.etherscan.io/"})})]})]})]}),"\n",(0,d.jsx)(r.h2,{id:"morph-mainnet-contracts",children:"Morph Mainnet Contracts"}),"\n",(0,d.jsx)(r.h3,{id:"main-contract",children:"Main Contract"}),"\n",(0,d.jsx)(r.h4,{id:"l1-contract",children:"L1 Contract"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x0dc417f8af88388737c5053ff73f345f080543f7",children:"Staking"}),": 0x0dc417f8af88388737c5053ff73f345f080543f7"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x759894ced0e6af42c26668076ffa84d02e3cef60",children:"Rollup"}),": 0x759894ced0e6af42c26668076ffa84d02e3cef60"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x3931ade842f5bb8763164bdd81e5361dce6cc1ef",children:"L1MessageQueueWithGasPriceOracle"}),": 0x3931ade842f5bb8763164bdd81e5361dce6cc1ef"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0xdc71366effa760804dcfc3edf87fa2a6f1623304",children:"L1CrossDomainMessenger"}),": 0xdc71366effa760804dcfc3edf87fa2a6f1623304"]}),"\n",(0,d.jsx)(r.h4,{id:"l2-contract",children:"L2 Contract"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000001",children:"L2ToL1MessagePasser"}),": 0x5300000000000000000000000000000000000001"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000017",children:"Sequencer"}),": 0x5300000000000000000000000000000000000017"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000004",children:"Gov"}),": 0x5300000000000000000000000000000000000004"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000007",children:"L2CrossDomainMessenger"}),": 0x5300000000000000000000000000000000000007"]}),"\n",(0,d.jsx)(r.h3,{id:"gateway",children:"Gateway"}),"\n",(0,d.jsx)(r.h4,{id:"l1-gateway",children:"L1 Gateway"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x7497756ada7e656ae9f00781af49fc0fd08f8a8a",children:"L1GatewayRouter"}),": 0x7497756ada7e656ae9f00781af49fc0fd08f8a8a"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x1c1ffb5828c3a48b54e8910f1c75256a498ade68",children:"L1ETHGateway"}),": 0x1c1ffb5828c3a48b54e8910f1c75256a498ade68"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x788890ba6f105cca373c4ff01055cd34de01877f",children:"L1WETHGateway"}),": 0x788890ba6f105cca373c4ff01055cd34de01877f"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8",children:"L1StandardERC20Gateway"}),": 0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0xa534badd09b4c62b7b1c32c41df310aa17b52ef1",children:"L1CustomERC20Gateway"}),": 0xa534badd09b4c62b7b1c32c41df310aa17b52ef1"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x5ae782c23a303c0d70ae697a0aee9eae9a5d77c4",children:"L1ERC721Gateway"}),": 0x5ae782c23a303c0d70ae697a0aee9eae9a5d77c4"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x7c9a3d9531692d057d496d04938bdb7d367e9765",children:"L1ERC1155Gateway"}),": 0x7c9a3d9531692d057d496d04938bdb7d367e9765"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x2C8314f5AADa5D7a9D32eeFebFc43aCCAbe1b289",children:"L1USDCGateway"}),": 0x2C8314f5AADa5D7a9D32eeFebFc43aCCAbe1b289"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0xc5fa3b8968c7fabeea2b530a20b88d0c2ed8abb7",children:"EnforcedTxGateway"}),": 0xc5fa3b8968c7fabeea2b530a20b88d0c2ed8abb7"]}),"\n",(0,d.jsx)(r.h4,{id:"l2-gateway",children:"L2 Gateway"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000002",children:"L2GatewayRouter"}),": 0x5300000000000000000000000000000000000002"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000008",children:"L2StandardERC20Gateway"}),": 0x5300000000000000000000000000000000000008"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000009",children:"L2ERC721Gateway"}),": 0x5300000000000000000000000000000000000009"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000c",children:"L2ERC1155Gateway"}),": 0x530000000000000000000000000000000000000c"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0xc5e44E2fFe9523809146eD17D62bb382ECCf426B",children:"L2USDCGateway"}),":0xc5e44E2fFe9523809146eD17D62bb382ECCf426B"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000010",children:"L2WETHGateway"}),": 0x5300000000000000000000000000000000000010"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000006",children:"L2ETHGateway"}),": 0x5300000000000000000000000000000000000006"]}),"\n",(0,d.jsx)(r.h3,{id:"other-layer-2-predeploys",children:"Other Layer 2 Predeploys"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000015",children:"L2Staking"}),": 0x5300000000000000000000000000000000000015"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000a",children:"L2TxFeeVault"}),": 0x530000000000000000000000000000000000000a"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000016",children:"L2CustomERC20Gateway"}),": 0x5300000000000000000000000000000000000016"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000b",children:"ProxyAdmin"}),": 0x530000000000000000000000000000000000000b"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000d",children:"MorphStandardERC20"}),": 0x530000000000000000000000000000000000000d"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000e",children:"MorphStandardERC20Factory"}),": 0x530000000000000000000000000000000000000e"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000f",children:"GasPriceOracle"}),": 0x530000000000000000000000000000000000000f"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000011",children:"L2WETH"}),": 0x5300000000000000000000000000000000000011"]}),"\n",(0,d.jsx)(r.h3,{id:"tokens",children:"Tokens"}),"\n",(0,d.jsx)(r.h4,{id:"l1-tokens",children:"L1 Tokens"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",children:"WETH"}),": 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7",children:"USDT"}),": 0xdAC17F958D2ee523a2206206994597C13D831ec7"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",children:"USDC"}),": 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F",children:"DAI"}),": 0x6B175474E89094C44Da98b954EedeAC495271d0F"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://etherscan.io/address/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",children:"WBTC"}),": 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"]}),"\n",(0,d.jsx)(r.h4,{id:"l2-tokens",children:"L2 Tokens"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x5300000000000000000000000000000000000011",children:"WETH"}),": 0x5300000000000000000000000000000000000011"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0xc7D67A9cBB121b3b0b9c053DD9f469523243379A",children:"USDT"}),": 0xc7D67A9cBB121b3b0b9c053DD9f469523243379A"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x803DcE4D3f4Ae2e17AF6C51343040dEe320C149D",children:"WBTC"}),": 0x803DcE4D3f4Ae2e17AF6C51343040dEe320C149D"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0xe34c91815d7fc18A9e2148bcD4241d0a5848b693",children:"USDC"}),": 0xe34c91815d7fc18A9e2148bcD4241d0a5848b693"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0xef8A24599229D002B28bA2F5C0eBdD3c0EFFbed4",children:"DAI"}),": 0xef8A24599229D002B28bA2F5C0eBdD3c0EFFbed4"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x7DCC39B4d1C53CB31e1aBc0e358b43987FEF80f7",children:"weETH"}),": 0x7DCC39B4d1C53CB31e1aBc0e358b43987FEF80f7"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer.morphl2.io/address/0x55d1f1879969bdbB9960d269974564C58DBc3238",children:"BGB"}),": 0x55d1f1879969bdbB9960d269974564C58DBc3238"]}),"\n",(0,d.jsx)(r.h2,{id:"morph-holesky-contracts",children:"Morph Holesky Contracts"}),"\n",(0,d.jsx)(r.admonition,{type:"tip",children:(0,d.jsx)(r.p,{children:"Please not the following is the contract address of the Morph Holesky Testnet."})}),"\n",(0,d.jsx)(r.h3,{id:"main-contract-1",children:"Main Contract"}),"\n",(0,d.jsx)(r.h4,{id:"l1-contract-1",children:"L1 Contract"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0x868dd5d1c268277e331b726bb438edde8221d389",children:"Staking"}),": 0x868dd5d1c268277e331b726bb438edde8221d389"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0xd8c5c541d56f59d65cf775de928ccf4a47d4985c",children:"Rollup"}),": 0xd8c5c541d56f59d65cf775de928ccf4a47d4985c"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0x778d1d9a4d8b6b9ade36d967a9ac19455ec3fd0b",children:"L1MessageQueueWithGasPriceOracle"}),": 0x778d1d9a4d8b6b9ade36d967a9ac19455ec3fd0b"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0xecc966ab425f3f5bd58085ce4ebdbf81d829126f",children:"L1CrossDomainMessenger"}),": 0xecc966ab425f3f5bd58085ce4ebdbf81d829126f"]}),"\n",(0,d.jsx)(r.h4,{id:"l2-contract-1",children:"L2 Contract"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000001",children:"L2ToL1MessagePasser"}),": 0x5300000000000000000000000000000000000001"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000003",children:"L2Sequencer"}),": 0x5300000000000000000000000000000000000003"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000004",children:"L2Gov"}),": 0x5300000000000000000000000000000000000004"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000005",children:"L2Submitter"}),": 0x5300000000000000000000000000000000000005"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000007",children:"L2CrossDomainMessenger"}),": 0x5300000000000000000000000000000000000007"]}),"\n",(0,d.jsx)(r.h4,{id:"l2-tokens-1",children:"L2 Tokens"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x9E12AD42c4E4d2acFBADE01a96446e48e6764B98",children:"L2USDT"}),":0x9E12AD42c4E4d2acFBADE01a96446e48e6764B98"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0xeA2610c28B4c5857689EAFa8b2116a617206d283",children:"L2USDC"}),":0xeA2610c28B4c5857689EAFa8b2116a617206d283"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0xAa19d46626947C6E1E5F281aE835971579827DDC",children:"L2DAI"}),":0xAa19d46626947C6E1E5F281aE835971579827DDC"]}),"\n",(0,d.jsx)(r.h3,{id:"gateway-1",children:"Gateway"}),"\n",(0,d.jsx)(r.h4,{id:"l1-gateway-1",children:"L1 Gateway"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0xea593b730d745fb5fe01b6d20e6603915252c6bf",children:"L1GatewayRouter"}),": 0xea593b730d745fb5fe01b6d20e6603915252c6bf"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0xcc3d455481967dc97346ef1771a112d7a14c8f12",children:"L1ETHGateway"}),": 0xcc3d455481967dc97346ef1771a112d7a14c8f12"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0xbbdb317b50313d96823eba0fc2c1d9e469dc1906",children:"L1WETHGateway"}),": 0xbbdb317b50313d96823eba0fc2c1d9e469dc1906"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://holesky.etherscan.io/address/0xb26dafdb434ae93e3b8efde4f0193934955d86cd",children:"L1StandardERC20Gateway"}),": 0xb26dafdb434ae93e3b8efde4f0193934955d86cd"]}),"\n",(0,d.jsx)(r.h4,{id:"l2-gateway-1",children:"L2 Gateway"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000002",children:"L2GatewayRouter"}),": 0x5300000000000000000000000000000000000002"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000008",children:"L2StandardERC20Gateway"}),": 0x5300000000000000000000000000000000000008"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000009",children:"L2ERC721Gateway"}),": 0x5300000000000000000000000000000000000009"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x530000000000000000000000000000000000000c",children:"L2ERC1155Gateway"}),": 0x530000000000000000000000000000000000000c"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000010",children:"L2WETHGateway"}),": 0x5300000000000000000000000000000000000010"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000006",children:"L2ETHGateway"}),": 0x5300000000000000000000000000000000000006"]}),"\n",(0,d.jsx)(r.h3,{id:"other-layer-2-predeploys-1",children:"Other Layer 2 Predeploys"}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x530000000000000000000000000000000000000a",children:"L2TxFeeVault"}),": 0x530000000000000000000000000000000000000a"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x530000000000000000000000000000000000000b",children:"ProxyAdmin"}),": 0x530000000000000000000000000000000000000b"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x530000000000000000000000000000000000000d",children:"MorphStandardERC20"}),": 0x530000000000000000000000000000000000000d"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x530000000000000000000000000000000000000e",children:"MorphStandardERC20Factory"}),": 0x530000000000000000000000000000000000000e"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x530000000000000000000000000000000000000f",children:"GasPriceOracle"}),": 0x530000000000000000000000000000000000000f"]}),"\n",(0,d.jsxs)(r.p,{children:[(0,d.jsx)(r.a,{href:"https://explorer-holesky.morphl2.io/address/0x5300000000000000000000000000000000000011",children:"L2WETH"}),": 0x5300000000000000000000000000000000000011"]})]})}function i(e={}){const{wrapper:r}={...(0,h.R)(),...e.components};return r?(0,d.jsx)(r,{...e,children:(0,d.jsx)(o,{...e})}):o(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>n,x:()=>t});var d=s(758);const h={},a=d.createContext(h);function n(e){const r=d.useContext(a);return d.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(h):e.components||h:n(e.components),d.createElement(a.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e7f02677.feb86e37.js b/build/assets/js/e7f02677.feb86e37.js deleted file mode 100644 index 230cb5957..000000000 --- a/build/assets/js/e7f02677.feb86e37.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4991],{5747:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>d,metadata:()=>o,toc:()=>h});var r=n(6070),i=n(1582);const d={},c="Class: CrossChainMessenger",o={id:"build-on-morph/sdk/classes/CrossChainMessenger",title:"CrossChainMessenger",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/classes/CrossChainMessenger.md",sourceDirName:"build-on-morph/sdk/classes",slug:"/build-on-morph/sdk/classes/CrossChainMessenger",permalink:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/classes/CrossChainMessenger.md",tags:[],version:"current",frontMatter:{}},l={},h=[{value:"Constructors",id:"constructors",level:2},{value:"new CrossChainMessenger()",id:"new-crosschainmessenger",level:3},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"Source",id:"source",level:4},{value:"Properties",id:"properties",level:2},{value:"backendURL",id:"backendurl",level:3},{value:"Source",id:"source-1",level:4},{value:"bridges",id:"bridges",level:3},{value:"Source",id:"source-2",level:4},{value:"contracts",id:"contracts",level:3},{value:"Source",id:"source-3",level:4},{value:"estimateGas",id:"estimategas",level:3},{value:"approveERC20()",id:"approveerc20",level:4},{value:"Parameters",id:"parameters-1",level:5},{value:"Returns",id:"returns-1",level:5},{value:"depositERC20()",id:"depositerc20",level:4},{value:"Parameters",id:"parameters-2",level:5},{value:"Returns",id:"returns-2",level:5},{value:"depositETH()",id:"depositeth",level:4},{value:"Parameters",id:"parameters-3",level:5},{value:"Returns",id:"returns-3",level:5},{value:"proveAndRelayMessage()",id:"proveandrelaymessage",level:4},{value:"Parameters",id:"parameters-4",level:5},{value:"Returns",id:"returns-4",level:5},{value:"sendMessage()",id:"sendmessage",level:4},{value:"Parameters",id:"parameters-5",level:5},{value:"Returns",id:"returns-5",level:5},{value:"withdrawERC20()",id:"withdrawerc20",level:4},{value:"Parameters",id:"parameters-6",level:5},{value:"Returns",id:"returns-6",level:5},{value:"withdrawETH()",id:"withdraweth",level:4},{value:"Parameters",id:"parameters-7",level:5},{value:"Returns",id:"returns-7",level:5},{value:"Source",id:"source-4",level:4},{value:"l1ChainId",id:"l1chainid",level:3},{value:"Source",id:"source-5",level:4},{value:"l1CrossDomainMessenger",id:"l1crossdomainmessenger",level:3},{value:"Source",id:"source-6",level:4},{value:"l1SignerOrProvider",id:"l1signerorprovider",level:3},{value:"Source",id:"source-7",level:4},{value:"l2ChainId",id:"l2chainid",level:3},{value:"Source",id:"source-8",level:4},{value:"l2CrossDomainMessenger",id:"l2crossdomainmessenger",level:3},{value:"Source",id:"source-9",level:4},{value:"l2SignerOrProvider",id:"l2signerorprovider",level:3},{value:"Source",id:"source-10",level:4},{value:"populateTransaction",id:"populatetransaction",level:3},{value:"approveERC20()",id:"approveerc20-1",level:4},{value:"Parameters",id:"parameters-8",level:5},{value:"Returns",id:"returns-8",level:5},{value:"depositERC20()",id:"depositerc20-1",level:4},{value:"Parameters",id:"parameters-9",level:5},{value:"Returns",id:"returns-9",level:5},{value:"depositETH()",id:"depositeth-1",level:4},{value:"Parameters",id:"parameters-10",level:5},{value:"Returns",id:"returns-10",level:5},{value:"proveAndRelayMessage()",id:"proveandrelaymessage-1",level:4},{value:"Parameters",id:"parameters-11",level:5},{value:"Returns",id:"returns-11",level:5},{value:"sendMessage()",id:"sendmessage-1",level:4},{value:"Parameters",id:"parameters-12",level:5},{value:"Returns",id:"returns-12",level:5},{value:"withdrawERC20()",id:"withdrawerc20-1",level:4},{value:"Parameters",id:"parameters-13",level:5},{value:"Returns",id:"returns-13",level:5},{value:"withdrawETH()",id:"withdraweth-1",level:4},{value:"Parameters",id:"parameters-14",level:5},{value:"Returns",id:"returns-14",level:5},{value:"Source",id:"source-11",level:4},{value:"Accessors",id:"accessors",level:2},{value:"l1Provider",id:"l1provider",level:3},{value:"Returns",id:"returns-15",level:4},{value:"Source",id:"source-12",level:4},{value:"l1Signer",id:"l1signer",level:3},{value:"Returns",id:"returns-16",level:4},{value:"Source",id:"source-13",level:4},{value:"l2Provider",id:"l2provider",level:3},{value:"Returns",id:"returns-17",level:4},{value:"Source",id:"source-14",level:4},{value:"l2Signer",id:"l2signer",level:3},{value:"Returns",id:"returns-18",level:4},{value:"Source",id:"source-15",level:4},{value:"Methods",id:"methods",level:2},{value:"approval()",id:"approval",level:3},{value:"Parameters",id:"parameters-15",level:4},{value:"Returns",id:"returns-19",level:4},{value:"Source",id:"source-16",level:4},{value:"approveERC20()",id:"approveerc20-2",level:3},{value:"Parameters",id:"parameters-16",level:4},{value:"Returns",id:"returns-20",level:4},{value:"Source",id:"source-17",level:4},{value:"depositERC20()",id:"depositerc20-2",level:3},{value:"Parameters",id:"parameters-17",level:4},{value:"Returns",id:"returns-21",level:4},{value:"Source",id:"source-18",level:4},{value:"depositETH()",id:"depositeth-2",level:3},{value:"Parameters",id:"parameters-18",level:4},{value:"Returns",id:"returns-22",level:4},{value:"Source",id:"source-19",level:4},{value:"encodeFunctionMessage()",id:"encodefunctionmessage",level:3},{value:"Parameters",id:"parameters-19",level:4},{value:"Returns",id:"returns-23",level:4},{value:"Source",id:"source-20",level:4},{value:"estimateL2MessageGasLimit()",id:"estimatel2messagegaslimit",level:3},{value:"Parameters",id:"parameters-20",level:4},{value:"Returns",id:"returns-24",level:4},{value:"Source",id:"source-21",level:4},{value:"getBackendTreeSyncIndex()",id:"getbackendtreesyncindex",level:3},{value:"Returns",id:"returns-25",level:4},{value:"Source",id:"source-22",level:4},{value:"getBridgeForTokenPair()",id:"getbridgefortokenpair",level:3},{value:"Parameters",id:"parameters-21",level:4},{value:"Returns",id:"returns-26",level:4},{value:"Source",id:"source-23",level:4},{value:"getCommittedL2BlockNumber()",id:"getcommittedl2blocknumber",level:3},{value:"Returns",id:"returns-27",level:4},{value:"Source",id:"source-24",level:4},{value:"getDepositsByAddress()",id:"getdepositsbyaddress",level:3},{value:"Parameters",id:"parameters-22",level:4},{value:"Returns",id:"returns-28",level:4},{value:"Source",id:"source-25",level:4},{value:"getFinalizedL2BlockNumber()",id:"getfinalizedl2blocknumber",level:3},{value:"Returns",id:"returns-29",level:4},{value:"Source",id:"source-26",level:4},{value:"getMessageReceipt()",id:"getmessagereceipt",level:3},{value:"Parameters",id:"parameters-23",level:4},{value:"Returns",id:"returns-30",level:4},{value:"Source",id:"source-27",level:4},{value:"getMessageStatus()",id:"getmessagestatus",level:3},{value:"Parameters",id:"parameters-24",level:4},{value:"Returns",id:"returns-31",level:4},{value:"Source",id:"source-28",level:4},{value:"getMessagesByTransaction()",id:"getmessagesbytransaction",level:3},{value:"Parameters",id:"parameters-25",level:4},{value:"Returns",id:"returns-32",level:4},{value:"Source",id:"source-29",level:4},{value:"getProvenWithdrawal()",id:"getprovenwithdrawal",level:3},{value:"Parameters",id:"parameters-26",level:4},{value:"Returns",id:"returns-33",level:4},{value:"Source",id:"source-30",level:4},{value:"getWithdrawMessageProof()",id:"getwithdrawmessageproof",level:3},{value:"Parameters",id:"parameters-27",level:4},{value:"Returns",id:"returns-34",level:4},{value:"Source",id:"source-31",level:4},{value:"getWithdrawalsByAddress()",id:"getwithdrawalsbyaddress",level:3},{value:"Parameters",id:"parameters-28",level:4},{value:"Returns",id:"returns-35",level:4},{value:"Source",id:"source-32",level:4},{value:"proveAndRelayMessage()",id:"proveandrelaymessage-2",level:3},{value:"Parameters",id:"parameters-29",level:4},{value:"Returns",id:"returns-36",level:4},{value:"Source",id:"source-33",level:4},{value:"sendMessage()",id:"sendmessage-2",level:3},{value:"Parameters",id:"parameters-30",level:4},{value:"Returns",id:"returns-37",level:4},{value:"Source",id:"source-34",level:4},{value:"toCrossChainMessage()",id:"tocrosschainmessage",level:3},{value:"Parameters",id:"parameters-31",level:4},{value:"Returns",id:"returns-38",level:4},{value:"Source",id:"source-35",level:4},{value:"toLowLevelMessage()",id:"tolowlevelmessage",level:3},{value:"Parameters",id:"parameters-32",level:4},{value:"Returns",id:"returns-39",level:4},{value:"Source",id:"source-36",level:4},{value:"waitBatchFinalize()",id:"waitbatchfinalize",level:3},{value:"Parameters",id:"parameters-33",level:4},{value:"Returns",id:"returns-40",level:4},{value:"Source",id:"source-37",level:4},{value:"waitForMessageReceipt()",id:"waitformessagereceipt",level:3},{value:"Parameters",id:"parameters-34",level:4},{value:"Returns",id:"returns-41",level:4},{value:"Source",id:"source-38",level:4},{value:"waitForMessageStatus()",id:"waitformessagestatus",level:3},{value:"Parameters",id:"parameters-35",level:4},{value:"Returns",id:"returns-42",level:4},{value:"Source",id:"source-39",level:4},{value:"waitRollupSuccess()",id:"waitrollupsuccess",level:3},{value:"Parameters",id:"parameters-36",level:4},{value:"Returns",id:"returns-43",level:4},{value:"Source",id:"source-40",level:4},{value:"waitSyncSuccess()",id:"waitsyncsuccess",level:3},{value:"Parameters",id:"parameters-37",level:4},{value:"Returns",id:"returns-44",level:4},{value:"Source",id:"source-41",level:4},{value:"withdrawERC20()",id:"withdrawerc20-2",level:3},{value:"Parameters",id:"parameters-38",level:4},{value:"Returns",id:"returns-45",level:4},{value:"Source",id:"source-42",level:4},{value:"withdrawETH()",id:"withdraweth-2",level:3},{value:"Parameters",id:"parameters-39",level:4},{value:"Returns",id:"returns-46",level:4},{value:"Source",id:"source-43",level:4}];function t(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / CrossChainMessenger"]}),"\n",(0,r.jsx)(s.h1,{id:"class-crosschainmessenger",children:"Class: CrossChainMessenger"}),"\n",(0,r.jsx)(s.h2,{id:"constructors",children:"Constructors"}),"\n",(0,r.jsx)(s.h3,{id:"new-crosschainmessenger",children:"new CrossChainMessenger()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"new CrossChainMessenger"}),"(",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,r.jsx)(s.code,{children:"CrossChainMessenger"})})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Creates a new CrossChainProvider instance."}),"\n",(0,r.jsx)(s.h4,{id:"parameters",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"})]}),"\n",(0,r.jsx)(s.p,{children:"Options for the provider."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.backendURL?"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"backend for withdraw proof gen."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.bridges?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData",children:(0,r.jsx)(s.code,{children:"BridgeAdapterData"})})]}),"\n",(0,r.jsx)(s.p,{children:"Optional bridge address list."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.contracts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",children:(0,r.jsx)(s.code,{children:"DeepPartial"})}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",children:(0,r.jsx)(s.code,{children:"OEContractsLike"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Optional contract address overrides."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.l1ChainId"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Chain ID for the L1 chain."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.l1SignerOrProvider"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",children:(0,r.jsx)(s.code,{children:"SignerOrProviderLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Signer or Provider for the L1 chain, or a JSON-RPC url."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.l2ChainId"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Chain ID for the L2 chain."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.l2SignerOrProvider"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",children:(0,r.jsx)(s.code,{children:"SignerOrProviderLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Signer or Provider for the L2 chain, or a JSON-RPC url."}),"\n",(0,r.jsx)(s.h4,{id:"returns",children:"Returns"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,r.jsx)(s.code,{children:"CrossChainMessenger"})})}),"\n",(0,r.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:130"}),"\n",(0,r.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(s.h3,{id:"backendurl",children:"backendURL"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"backendURL"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Backend url for withdrawal prove server"}),"\n",(0,r.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:76"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"bridges",children:"bridges"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"bridges"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",children:(0,r.jsx)(s.code,{children:"BridgeAdapters"})})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"List of custom bridges for the given network."}),"\n",(0,r.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:116"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"contracts",children:"contracts"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"contracts"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/OEContracts",children:(0,r.jsx)(s.code,{children:"OEContracts"})})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Contract objects attached to their respective providers and addresses."}),"\n",(0,r.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:111"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"estimategas",children:"estimateGas"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"estimateGas"}),": ",(0,r.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Object that holds the functions that estimates the gas required for a given transaction.\nFollows the pattern used by ethers.js."}),"\n",(0,r.jsx)(s.h4,{id:"approveerc20",children:"approveERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"approveERC20"}),": (",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to approve some tokens to deposit into the L2 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-1",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-1",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"depositerc20",children:"depositERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"depositERC20"}),": (",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to deposit some ERC20 tokens into the L2 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-2",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L1 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L2 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount to deposit."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-2",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"depositeth",children:"depositETH()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"depositETH"}),": (",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to deposit some ETH into the L2 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-3",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of ETH to deposit."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-3",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"proveandrelaymessage",children:"proveAndRelayMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"proveAndRelayMessage"}),": (",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to proveAndRelay a cross chain message. Only applies to L2 to L1 messages."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-4",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to generate the proving transaction for."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-4",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"sendmessage",children:"sendMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"sendMessage"}),": (",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to send a cross chain message."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-5",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",children:(0,r.jsx)(s.code,{children:"CrossChainMessageRequest"})})]}),"\n",(0,r.jsx)(s.p,{children:"Cross chain message to send."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-5",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"withdrawerc20",children:"withdrawERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"withdrawERC20"}),": (",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to withdraw some ERC20 tokens back to the L1 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-6",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L1 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L2 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount to withdraw."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-6",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"withdraweth",children:"withdrawETH()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"withdrawETH"}),": (",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates gas required to withdraw some ETH back to the L1 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-7",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of ETH to withdraw."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-7",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1600"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l1chainid",children:"l1ChainId"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"l1ChainId"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Chain ID for the L1 network."}),"\n",(0,r.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:101"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l1crossdomainmessenger",children:"l1CrossDomainMessenger"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"l1CrossDomainMessenger"}),": ",(0,r.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"CrossDomainMessenger connected to the L1 chain."}),"\n",(0,r.jsx)(s.h4,{id:"source-6",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:91"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l1signerorprovider",children:"l1SignerOrProvider"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"l1SignerOrProvider"}),": ",(0,r.jsx)(s.code,{children:"Provider"})," | ",(0,r.jsx)(s.code,{children:"Signer"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Provider connected to the L1 chain."}),"\n",(0,r.jsx)(s.h4,{id:"source-7",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:81"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l2chainid",children:"l2ChainId"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"l2ChainId"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Chain ID for the L2 network."}),"\n",(0,r.jsx)(s.h4,{id:"source-8",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:106"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l2crossdomainmessenger",children:"l2CrossDomainMessenger"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"l2CrossDomainMessenger"}),": ",(0,r.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"CrossDomainMessenger connected to the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"source-9",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:96"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l2signerorprovider",children:"l2SignerOrProvider"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"l2SignerOrProvider"}),": ",(0,r.jsx)(s.code,{children:"Provider"})," | ",(0,r.jsx)(s.code,{children:"Signer"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Provider connected to the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"source-10",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:86"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"populatetransaction",children:"populateTransaction"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"populateTransaction"}),": ",(0,r.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Object that holds the functions that generate transactions to be signed by the user.\nFollows the pattern used by ethers.js."}),"\n",(0,r.jsx)(s.h4,{id:"approveerc20-1",children:"approveERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"approveERC20"}),": (",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a transaction for approving some tokens to deposit into the L2 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-8",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-8",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"depositerc20-1",children:"depositERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"depositERC20"}),": (",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?, ",(0,r.jsx)(s.code,{children:"isEstimatingGas"}),") => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a transaction for depositing some ERC20 tokens into the L2 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-9",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L1 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L2 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount to deposit."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"isEstimatingGas?"}),": ",(0,r.jsx)(s.code,{children:"boolean"}),"= ",(0,r.jsx)(s.code,{children:"false"})]}),"\n",(0,r.jsx)(s.h5,{id:"returns-9",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"depositeth-1",children:"depositETH()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"depositETH"}),": (",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?, ",(0,r.jsx)(s.code,{children:"isEstimatingGas"}),") => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a transaction for depositing some ETH into the L2 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-10",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of ETH to deposit."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"isEstimatingGas?"}),": ",(0,r.jsx)(s.code,{children:"boolean"}),"= ",(0,r.jsx)(s.code,{children:"false"})]}),"\n",(0,r.jsx)(s.h5,{id:"returns-10",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"proveandrelaymessage-1",children:"proveAndRelayMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"proveAndRelayMessage"}),": (",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a message proving and relaying transaction that can be signed and executed. Only\napplicable for L2 to L1 messages."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-11",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to generate the proving transaction for."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-11",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"sendmessage-1",children:"sendMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"sendMessage"}),": (",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a transaction that sends a given cross chain message. This transaction can be signed\nand executed by a signer."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-12",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",children:(0,r.jsx)(s.code,{children:"CrossChainMessageRequest"})})]}),"\n",(0,r.jsx)(s.p,{children:"Cross chain message to send."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h5,{id:"returns-12",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"withdrawerc20-1",children:"withdrawERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"withdrawERC20"}),": (",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?, ",(0,r.jsx)(s.code,{children:"isEstimatingGas"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a transaction for withdrawing some ERC20 tokens back to the L1 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-13",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L1 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L2 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount to withdraw."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"isEstimatingGas?"}),": ",(0,r.jsx)(s.code,{children:"boolean"})]}),"\n",(0,r.jsx)(s.h5,{id:"returns-13",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"withdraweth-1",children:"withdrawETH()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"withdrawETH"}),": (",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?, ",(0,r.jsx)(s.code,{children:"isEstimatingGas"}),"?) => ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates a transaction for withdrawing some ETH back to the L1 chain."}),"\n",(0,r.jsx)(s.h5,{id:"parameters-14",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of ETH to withdraw."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"isEstimatingGas?"}),": ",(0,r.jsx)(s.code,{children:"boolean"})]}),"\n",(0,r.jsx)(s.h5,{id:"returns-14",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-11",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1304"}),"\n",(0,r.jsx)(s.h2,{id:"accessors",children:"Accessors"}),"\n",(0,r.jsx)(s.h3,{id:"l1provider",children:"l1Provider"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"get"})," ",(0,r.jsx)(s.strong,{children:"l1Provider"}),"(): ",(0,r.jsx)(s.code,{children:"Provider"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Provider connected to the L1 chain."}),"\n",(0,r.jsx)(s.h4,{id:"returns-15",children:"Returns"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"Provider"})}),"\n",(0,r.jsx)(s.h4,{id:"source-12",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:193"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l1signer",children:"l1Signer"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"get"})," ",(0,r.jsx)(s.strong,{children:"l1Signer"}),"(): ",(0,r.jsx)(s.code,{children:"Signer"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Signer connected to the L1 chain."}),"\n",(0,r.jsx)(s.h4,{id:"returns-16",children:"Returns"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"Signer"})}),"\n",(0,r.jsx)(s.h4,{id:"source-13",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:215"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l2provider",children:"l2Provider"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"get"})," ",(0,r.jsx)(s.strong,{children:"l2Provider"}),"(): ",(0,r.jsx)(s.code,{children:"Provider"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Provider connected to the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"returns-17",children:"Returns"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"Provider"})}),"\n",(0,r.jsx)(s.h4,{id:"source-14",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:204"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"l2signer",children:"l2Signer"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"get"})," ",(0,r.jsx)(s.strong,{children:"l2Signer"}),"(): ",(0,r.jsx)(s.code,{children:"Signer"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Signer connected to the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"returns-18",children:"Returns"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"Signer"})}),"\n",(0,r.jsx)(s.h4,{id:"source-15",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:226"}),"\n",(0,r.jsx)(s.h2,{id:"methods",children:"Methods"}),"\n",(0,r.jsx)(s.h3,{id:"approval",children:"approval()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"approval"}),"(",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Queries the account's approval amount for a given L1 token."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-15",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-19",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Amount of tokens approved for deposits from the account."}),"\n",(0,r.jsx)(s.h4,{id:"source-16",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1214"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"approveerc20-2",children:"approveERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"approveERC20"}),"(",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Approves a deposit into the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-16",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-20",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the approval transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-17",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1233"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"depositerc20-2",children:"depositERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"depositERC20"}),"(",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Deposits some ERC20 tokens into the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-17",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L1 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L2 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount to deposit."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-21",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the deposit transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-18",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1256"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"depositeth-2",children:"depositETH()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"depositETH"}),"(",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Deposits some ETH into the L2 chain."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-18",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of ETH to deposit (in wei)."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-22",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the deposit transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-19",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1183"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"encodefunctionmessage",children:"encodeFunctionMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"encodeFunctionMessage"}),"(",(0,r.jsx)(s.code,{children:"options"}),"): ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"L2CrossDomainMessenger contract encode message, such as hashCrossDomainMessagev1"}),"\n",(0,r.jsx)(s.h4,{id:"parameters-19",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"options"})]}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"options.message"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"The message passed along with the cross domain message"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"options.messageNonce"}),": ",(0,r.jsx)(s.code,{children:"BigNumber"})]}),"\n",(0,r.jsx)(s.p,{children:"The cross domain message nonce"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"options.sender"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"The sender of the cross domain message"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"options.target"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"The target of the cross domain message"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"options.value"}),": ",(0,r.jsx)(s.code,{children:"BigNumber"})]}),"\n",(0,r.jsx)(s.p,{children:"The value being sent with the cross domain message"}),"\n",(0,r.jsx)(s.h4,{id:"returns-23",children:"Returns"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"string"})}),"\n",(0,r.jsx)(s.h4,{id:"source-20",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:972"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"estimatel2messagegaslimit",children:"estimateL2MessageGasLimit()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"estimateL2MessageGasLimit"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates the amount of gas required to fully execute a given message on L2. Only applies to\nL1 => L2 messages. You would supply this gas limit when sending the message to L2."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-20",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike",children:(0,r.jsx)(s.code,{children:"MessageRequestLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message get a gas estimate for."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,r.jsx)(s.p,{children:"Options object."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.bufferPercent?"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Percentage of gas to add to the estimate. Defaults to 20."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.from?"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Address to use as the sender."}),"\n",(0,r.jsx)(s.h4,{id:"returns-24",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Estimates L2 gas limit."}),"\n",(0,r.jsx)(s.h4,{id:"source-21",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:918"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getbackendtreesyncindex",children:"getBackendTreeSyncIndex()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getBackendTreeSyncIndex"}),"(): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"number"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"returns-25",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"number"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-22",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1122"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getbridgefortokenpair",children:"getBridgeForTokenPair()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getBridgeForTokenPair"}),"(",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,r.jsx)(s.code,{children:"IBridgeAdapter"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Finds the appropriate bridge adapter for a given L1 - L2 token pair. Will throw if no bridges\nsupport the token pair or if more than one bridge supports the token pair."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-21",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"L1 token address."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"L2 token address."}),"\n",(0,r.jsx)(s.h4,{id:"returns-26",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,r.jsx)(s.code,{children:"IBridgeAdapter"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"The appropriate bridge adapter for the given token pair."}),"\n",(0,r.jsx)(s.h4,{id:"source-23",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:378"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getcommittedl2blocknumber",children:"getCommittedL2BlockNumber()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getCommittedL2BlockNumber"}),"(): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"any"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"returns-27",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"any"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-24",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:995"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getdepositsbyaddress",children:"getDepositsByAddress()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getDepositsByAddress"}),"(",(0,r.jsx)(s.code,{children:"address"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,r.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Gets all deposits for a given address."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-22",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"address"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsx)(s.p,{children:"Options object."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,r.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,r.jsx)(s.p,{children:"Block to start searching for messages from. If not provided, will start\nfrom the first block (block #0)."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,r.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,r.jsx)(s.p,{children:'Block to stop searching for messages at. If not provided, will stop at the\nlatest known block ("latest").'}),"\n",(0,r.jsx)(s.h4,{id:"returns-28",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,r.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,r.jsx)(s.p,{children:"All deposit token bridge messages sent by the given address."}),"\n",(0,r.jsx)(s.h4,{id:"source-25",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:424"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getfinalizedl2blocknumber",children:"getFinalizedL2BlockNumber()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getFinalizedL2BlockNumber"}),"(): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"any"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"returns-29",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"any"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-26",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1017"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getmessagereceipt",children:"getMessageReceipt()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getMessageReceipt"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",children:(0,r.jsx)(s.code,{children:"MessageReceipt"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Finds the receipt of the transaction that executed a particular cross chain message."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-23",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to find the receipt of."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.direction?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-30",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",children:(0,r.jsx)(s.code,{children:"MessageReceipt"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"CrossChainMessage receipt including receipt of the transaction that relayed the\ngiven message."}),"\n",(0,r.jsx)(s.h4,{id:"source-27",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:757"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getmessagestatus",children:"getMessageStatus()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getMessageStatus"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageStatus",children:(0,r.jsx)(s.code,{children:"MessageStatus"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Retrieves the status of a particular message as an enum."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-24",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Cross chain message to check the status of."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.direction?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-31",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageStatus",children:(0,r.jsx)(s.code,{children:"MessageStatus"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Status of the message."}),"\n",(0,r.jsx)(s.h4,{id:"source-28",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:634"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getmessagesbytransaction",children:"getMessagesByTransaction()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getMessagesByTransaction"}),"(",(0,r.jsx)(s.code,{children:"transaction"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,r.jsx)(s.code,{children:"CrossChainMessage"})}),"[]>"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Retrieves all cross chain messages sent within a given transaction."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-25",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"transaction"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",children:(0,r.jsx)(s.code,{children:"TransactionLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Transaction hash or receipt to find messages from."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsx)(s.p,{children:"Options object."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.direction?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n",(0,r.jsx)(s.p,{children:"Direction to search for messages in. If not provided, will attempt to\nautomatically search both directions under the assumption that a transaction hash will only\nexist on one chain. If the hash exists on both chains, will throw an error."}),"\n",(0,r.jsx)(s.h4,{id:"returns-32",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,r.jsx)(s.code,{children:"CrossChainMessage"})}),"[]>"]}),"\n",(0,r.jsx)(s.p,{children:"All cross chain messages sent within the transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-29",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:244"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getprovenwithdrawal",children:"getProvenWithdrawal()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getProvenWithdrawal"}),"(",(0,r.jsx)(s.code,{children:"withdrawalHash"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal",children:(0,r.jsx)(s.code,{children:"ProvenWithdrawal"})}),">"]}),"\n"]}),"\n",(0,r.jsxs)(s.p,{children:["Queries the L1CrossDomainMessenger contract's ",(0,r.jsx)(s.code,{children:"provenWithdrawals"})," mapping\nfor a ProvenWithdrawal that matches the passed withdrawalHash"]}),"\n",(0,r.jsx)(s.h4,{id:"parameters-26",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"withdrawalHash"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-33",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal",children:(0,r.jsx)(s.code,{children:"ProvenWithdrawal"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"A ProvenWithdrawal object"}),"\n",(0,r.jsx)(s.h4,{id:"source-30",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:957"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getwithdrawmessageproof",children:"getWithdrawMessageProof()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getWithdrawMessageProof"}),"(",(0,r.jsx)(s.code,{children:"message"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof",children:(0,r.jsx)(s.code,{children:"WithdrawMessageProof"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Generates the proof required to finalize an L2 to L1 message."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-27",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to generate a proof for."}),"\n",(0,r.jsx)(s.h4,{id:"returns-34",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof",children:(0,r.jsx)(s.code,{children:"WithdrawMessageProof"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Proof that can be used to finalize the message."}),"\n",(0,r.jsx)(s.h4,{id:"source-31",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1042"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"getwithdrawalsbyaddress",children:"getWithdrawalsByAddress()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"getWithdrawalsByAddress"}),"(",(0,r.jsx)(s.code,{children:"address"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,r.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Gets all withdrawals for a given address."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-28",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"address"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsx)(s.p,{children:"Options object."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,r.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,r.jsx)(s.p,{children:"Block to start searching for messages from. If not provided, will start\nfrom the first block (block #0)."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,r.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,r.jsx)(s.p,{children:'Block to stop searching for messages at. If not provided, will stop at the\nlatest known block ("latest").'}),"\n",(0,r.jsx)(s.h4,{id:"returns-35",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,r.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,r.jsx)(s.p,{children:"All withdrawal token bridge messages sent by the given address."}),"\n",(0,r.jsx)(s.h4,{id:"source-32",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:458"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"proveandrelaymessage-2",children:"proveAndRelayMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"proveAndRelayMessage"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Prove and relay a cross chain message that was sent from L2 to L1. Only applicable for L2 to L1\nmessages."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-29",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to finalize."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-36",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the finalization transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-33",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1163"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"sendmessage-2",children:"sendMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"sendMessage"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Sends a given cross chain message. Where the message is sent depends on the direction attached\nto the message itself."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-30",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",children:(0,r.jsx)(s.code,{children:"CrossChainMessageRequest"})})]}),"\n",(0,r.jsx)(s.p,{children:"Cross chain message to send."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-37",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the message sending transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-34",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1143"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"tocrosschainmessage",children:"toCrossChainMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"toCrossChainMessage"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,r.jsx)(s.code,{children:"CrossChainMessage"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Resolves a MessageLike into a CrossChainMessage object.\nUnlike other coercion functions, this function is stateful and requires making additional\nrequests. For now I'm going to keep this function here, but we could consider putting a\nsimilar function inside of utils/coercion.ts if people want to use this without having to\ncreate an entire CrossChainProvider object."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-31",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"MessageLike to resolve into a CrossChainMessage."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.direction?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-38",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,r.jsx)(s.code,{children:"CrossChainMessage"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Message coerced into a CrossChainMessage."}),"\n",(0,r.jsx)(s.h4,{id:"source-35",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:491"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"tolowlevelmessage",children:"toLowLevelMessage()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"toLowLevelMessage"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",children:(0,r.jsx)(s.code,{children:"LowLevelMessage"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Transforms a CrossChainMessenger message into its low-level representation inside the\nL2ToL1MessagePasser contract on L2."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-32",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to transform."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.direction?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-39",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",children:(0,r.jsx)(s.code,{children:"LowLevelMessage"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transformed message."}),"\n",(0,r.jsx)(s.h4,{id:"source-36",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:326"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"waitbatchfinalize",children:"waitBatchFinalize()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"waitBatchFinalize"}),"(",(0,r.jsx)(s.code,{children:"transactionHash"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"parameters-33",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"transactionHash"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-40",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-37",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:600"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"waitformessagereceipt",children:"waitForMessageReceipt()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"waitForMessageReceipt"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",children:(0,r.jsx)(s.code,{children:"MessageReceipt"})}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Waits for a message to be executed and returns the receipt of the transaction that executed\nthe given message."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-34",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to wait for."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsx)(s.p,{children:"Options to pass to the waiting function."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.confirmations?"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Number of transaction confirmations to wait for before returning."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.pollIntervalMs?"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Number of milliseconds to wait between polling for the receipt."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.timeoutMs?"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Milliseconds to wait before timing out."}),"\n",(0,r.jsx)(s.h4,{id:"returns-41",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",children:(0,r.jsx)(s.code,{children:"MessageReceipt"})}),">"]}),"\n",(0,r.jsx)(s.p,{children:"CrossChainMessage receipt including receipt of the transaction that relayed the\ngiven message."}),"\n",(0,r.jsx)(s.h4,{id:"source-38",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:802"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"waitformessagestatus",children:"waitForMessageStatus()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"waitForMessageStatus"}),"(",(0,r.jsx)(s.code,{children:"message"}),", ",(0,r.jsx)(s.code,{children:"status"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Waits until the status of a given message changes to the expected status. Note that if the\nstatus of the given message changes to a status that implies the expected status, this will\nstill return. If the status of the message changes to a status that exclues the expected\nstatus, this will throw an error."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-35",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/MessageLike",children:(0,r.jsx)(s.code,{children:"MessageLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Message to wait for."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"status"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageStatus",children:(0,r.jsx)(s.code,{children:"MessageStatus"})})]}),"\n",(0,r.jsx)(s.p,{children:"Expected status of the message."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts"}),"= ",(0,r.jsx)(s.code,{children:"{}"})]}),"\n",(0,r.jsx)(s.p,{children:"Options to pass to the waiting function."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.direction?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/enumerations/MessageDirection",children:(0,r.jsx)(s.code,{children:"MessageDirection"})})]}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.pollIntervalMs?"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Number of milliseconds to wait when polling."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts.timeoutMs?"}),": ",(0,r.jsx)(s.code,{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Milliseconds to wait before timing out."}),"\n",(0,r.jsx)(s.h4,{id:"returns-42",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-39",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:840"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"waitrollupsuccess",children:"waitRollupSuccess()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"waitRollupSuccess"}),"(",(0,r.jsx)(s.code,{children:"transactionHash"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"parameters-36",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"transactionHash"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-43",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-40",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:552"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"waitsyncsuccess",children:"waitSyncSuccess()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"waitSyncSuccess"}),"(",(0,r.jsx)(s.code,{children:"transactionHash"}),"): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"parameters-37",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"transactionHash"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n",(0,r.jsx)(s.h4,{id:"returns-44",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"void"}),">"]}),"\n",(0,r.jsx)(s.h4,{id:"source-41",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:576"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"withdrawerc20-2",children:"withdrawERC20()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"withdrawERC20"}),"(",(0,r.jsx)(s.code,{children:"l1Token"}),", ",(0,r.jsx)(s.code,{children:"l2Token"}),", ",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Withdraws some ERC20 tokens back to the L1 chain."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-38",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l1Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L1 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"l2Token"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,r.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Address of the L2 token."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount to withdraw."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-45",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the withdraw transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-42",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1282"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"withdraweth-2",children:"withdrawETH()"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"withdrawETH"}),"(",(0,r.jsx)(s.code,{children:"amount"}),", ",(0,r.jsx)(s.code,{children:"opts"}),"?): ",(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:"Withdraws some ETH back to the L1 chain."}),"\n",(0,r.jsx)(s.h4,{id:"parameters-39",children:"Parameters"}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"amount"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,r.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,r.jsx)(s.p,{children:"Amount of ETH to withdraw."}),"\n",(0,r.jsxs)(s.p,{children:["\u2022 ",(0,r.jsx)(s.strong,{children:"opts?"}),": ",(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,r.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,r.jsx)(s.p,{children:"Additional options."}),"\n",(0,r.jsx)(s.h4,{id:"returns-46",children:"Returns"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"Promise"}),"<",(0,r.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,r.jsx)(s.p,{children:"Transaction response for the withdraw transaction."}),"\n",(0,r.jsx)(s.h4,{id:"source-43",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/cross-chain-messenger.ts:1198"})]})}function a(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(t,{...e})}):t(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>o});var r=n(758);const i={},d=r.createContext(i);function c(e){const s=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e8c42455.5bdb4e2d.js b/build/assets/js/e8c42455.5bdb4e2d.js deleted file mode 100644 index ce0951953..000000000 --- a/build/assets/js/e8c42455.5bdb4e2d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[361],{1289:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var t=n(6070),o=n(1582);const r={},i="Function: estimateL1GasCost()",c={id:"build-on-morph/sdk/functions/estimateL1GasCost",title:"estimateL1GasCost",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/estimateL1GasCost.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/estimateL1GasCost",permalink:"/docs/build-on-morph/sdk/functions/estimateL1GasCost",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/estimateL1GasCost.md",tags:[],version:"current",frontMatter:{}},d={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function a(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,t.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,t.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / estimateL1GasCost"]}),"\n",(0,t.jsx)(s.h1,{id:"function-estimatel1gascost",children:"Function: estimateL1GasCost()"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"estimateL1GasCost"}),"(",(0,t.jsx)(s.code,{children:"l2Provider"}),", ",(0,t.jsx)(s.code,{children:"tx"}),"): ",(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"Estimates the amount of L1 gas cost for a given L2 transaction in wei."}),"\n",(0,t.jsx)(s.h2,{id:"parameters",children:"Parameters"}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"l2Provider"}),": ",(0,t.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,t.jsx)(s.code,{children:"ProviderLike"})})]}),"\n",(0,t.jsx)(s.p,{children:"L2 provider to query the gas usage from."}),"\n",(0,t.jsxs)(s.p,{children:["\u2022 ",(0,t.jsx)(s.strong,{children:"tx"}),": ",(0,t.jsx)(s.code,{children:"TransactionRequest"})]}),"\n",(0,t.jsx)(s.p,{children:"Transaction to estimate L1 gas cost for."}),"\n",(0,t.jsx)(s.h2,{id:"returns",children:"Returns"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.code,{children:"Promise"}),"<",(0,t.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,t.jsx)(s.p,{children:"Estimated L1 gas cost."}),"\n",(0,t.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,t.jsx)(s.p,{children:"src/l2-provider.ts:95"})]})}function h(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>c});var t=n(758);const o={},r=t.createContext(o);function i(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e8fcecf9.4652c672.js b/build/assets/js/e8fcecf9.4652c672.js deleted file mode 100644 index b191ea876..000000000 --- a/build/assets/js/e8fcecf9.4652c672.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[3918],{415:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>t,contentTitle:()=>i,default:()=>u,frontMatter:()=>c,metadata:()=>l,toc:()=>d});var s=r(6070),o=r(1582);const c={},i="Enumeration: L2ChainID",l={id:"build-on-morph/sdk/enumerations/L2ChainID",title:"L2ChainID",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/enumerations/L2ChainID.md",sourceDirName:"build-on-morph/sdk/enumerations",slug:"/build-on-morph/sdk/enumerations/L2ChainID",permalink:"/docs/build-on-morph/sdk/enumerations/L2ChainID",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/enumerations/L2ChainID.md",tags:[],version:"current",frontMatter:{}},t={},d=[{value:"Enumeration Members",id:"enumeration-members",level:2},{value:"MORPH_HOLESKY",id:"morph_holesky",level:3},{value:"Source",id:"source",level:4},{value:"MORPH_LOCAL_DEVNET",id:"morph_local_devnet",level:3},{value:"Source",id:"source-1",level:4},{value:"MORPH_MAINNET",id:"morph_mainnet",level:3},{value:"Source",id:"source-2",level:4},{value:"MORPH_QANET",id:"morph_qanet",level:3},{value:"Source",id:"source-3",level:4},{value:"MORPH_TESTNET",id:"morph_testnet",level:3},{value:"Source",id:"source-4",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / L2ChainID"]}),"\n",(0,s.jsx)(n.h1,{id:"enumeration-l2chainid",children:"Enumeration: L2ChainID"}),"\n",(0,s.jsx)(n.p,{children:"L2 network chain IDs"}),"\n",(0,s.jsx)(n.h2,{id:"enumeration-members",children:"Enumeration Members"}),"\n",(0,s.jsx)(n.h3,{id:"morph_holesky",children:"MORPH_HOLESKY"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_HOLESKY"}),": ",(0,s.jsx)(n.code,{children:"2810"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:35"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"morph_local_devnet",children:"MORPH_LOCAL_DEVNET"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_LOCAL_DEVNET"}),": ",(0,s.jsx)(n.code,{children:"53077"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-1",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:32"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"morph_mainnet",children:"MORPH_MAINNET"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_MAINNET"}),": ",(0,s.jsx)(n.code,{children:"0"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-2",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:30"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"morph_qanet",children:"MORPH_QANET"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_QANET"}),": ",(0,s.jsx)(n.code,{children:"53077"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-3",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:33"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"morph_testnet",children:"MORPH_TESTNET"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"MORPH_TESTNET"}),": ",(0,s.jsx)(n.code,{children:"2710"})]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"source-4",children:"Source"}),"\n",(0,s.jsx)(n.p,{children:"src/interfaces/types.ts:34"})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>l});var s=r(758);const o={},c=s.createContext(o);function i(e){const n=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/e912b961.d4c84c07.js b/build/assets/js/e912b961.d4c84c07.js deleted file mode 100644 index 046e60a5f..000000000 --- a/build/assets/js/e912b961.d4c84c07.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4116],{1252:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>i,contentTitle:()=>s,default:()=>l,frontMatter:()=>t,metadata:()=>d,toc:()=>a});var o=r(6070),c=r(1582);const t={},s="Function: getOEContract()",d={id:"build-on-morph/sdk/functions/getOEContract",title:"getOEContract",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/getOEContract.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/getOEContract",permalink:"/docs/build-on-morph/sdk/functions/getOEContract",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/getOEContract.md",tags:[],version:"current",frontMatter:{}},i={},a=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(n.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(n.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / getOEContract"]}),"\n",(0,o.jsx)(n.h1,{id:"function-getoecontract",children:"Function: getOEContract()"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"getOEContract"}),"(",(0,o.jsx)(n.code,{children:"contractName"}),", ",(0,o.jsx)(n.code,{children:"l2ChainId"}),", ",(0,o.jsx)(n.code,{children:"opts"}),"): ",(0,o.jsx)(n.code,{children:"Contract"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Returns an ethers.Contract object for the given name, connected to the appropriate address for\nthe given L2 chain ID. Users can also provide a custom address to connect the contract to\ninstead. If the chain ID is not known then the user MUST provide a custom address or this\nfunction will throw an error."}),"\n",(0,o.jsx)(n.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"contractName"}),": ",(0,o.jsx)(n.code,{children:'"L1MessageQueueWithGasPriceOracle"'})," | ",(0,o.jsx)(n.code,{children:'"L1GatewayRouter"'})," | ",(0,o.jsx)(n.code,{children:'"L2GatewayRouter"'})," | ",(0,o.jsx)(n.code,{children:'"MorphStandardERC20"'})," | ",(0,o.jsx)(n.code,{children:'"L2WETH"'})," | ",(0,o.jsx)(n.code,{children:'"L1WETHGateway"'})," | ",(0,o.jsx)(n.code,{children:'"L2WETHGateway"'})," | ",(0,o.jsx)(n.code,{children:'"L2ToL1MessagePasser"'})," | ",(0,o.jsx)(n.code,{children:'"Sequencer"'})," | ",(0,o.jsx)(n.code,{children:'"Gov"'})," | ",(0,o.jsx)(n.code,{children:'"L2ETHGateway"'})," | ",(0,o.jsx)(n.code,{children:'"L2CrossDomainMessenger"'})," | ",(0,o.jsx)(n.code,{children:'"L2StandardERC20Gateway"'})," | ",(0,o.jsx)(n.code,{children:'"L2ERC721Gateway"'})," | ",(0,o.jsx)(n.code,{children:'"L2TxFeeVault"'})," | ",(0,o.jsx)(n.code,{children:'"L2ERC1155Gateway"'})," | ",(0,o.jsx)(n.code,{children:'"MorphStandardERC20Factory"'})," | ",(0,o.jsx)(n.code,{children:'"GasPriceOracle"'})," | ",(0,o.jsx)(n.code,{children:'"WrappedEther"'})," | ",(0,o.jsx)(n.code,{children:'"MorphToken"'})," | ",(0,o.jsx)(n.code,{children:'"L1CrossDomainMessenger"'})," | ",(0,o.jsx)(n.code,{children:'"Staking"'})," | ",(0,o.jsx)(n.code,{children:'"Rollup"'})," | ",(0,o.jsx)(n.code,{children:'"L1ETHGateway"'})," | ",(0,o.jsx)(n.code,{children:'"L1StandardERC20Gateway"'})," | ",(0,o.jsx)(n.code,{children:'"L1ERC721Gateway"'})," | ",(0,o.jsx)(n.code,{children:'"L1ERC1155Gateway"'})," | ",(0,o.jsx)(n.code,{children:'"EnforcedTxGateway"'})," | ",(0,o.jsx)(n.code,{children:'"WETH"'})]}),"\n",(0,o.jsx)(n.p,{children:"Name of the contract to connect to."}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"l2ChainId"}),": ",(0,o.jsx)(n.code,{children:"number"})]}),"\n",(0,o.jsx)(n.p,{children:"Chain ID for the L2 network."}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"opts"}),"= ",(0,o.jsx)(n.code,{children:"{}"})]}),"\n",(0,o.jsx)(n.p,{children:"Additional options for connecting to the contract."}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"opts.address?"}),": ",(0,o.jsx)(n.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,o.jsx)(n.code,{children:"AddressLike"})})]}),"\n",(0,o.jsx)(n.p,{children:"Custom address to connect to the contract."}),"\n",(0,o.jsxs)(n.p,{children:["\u2022 ",(0,o.jsx)(n.strong,{children:"opts.signerOrProvider?"}),": ",(0,o.jsx)(n.code,{children:"Provider"})," | ",(0,o.jsx)(n.code,{children:"Signer"})]}),"\n",(0,o.jsx)(n.p,{children:"Signer or provider to connect to the contract."}),"\n",(0,o.jsx)(n.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.code,{children:"Contract"})}),"\n",(0,o.jsx)(n.p,{children:"An ethers.Contract object connected to the appropriate address and interface."}),"\n",(0,o.jsx)(n.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(n.p,{children:"src/utils/contracts.ts:42"})]})}function l(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>d});var o=r(758);const c={},t=o.createContext(c);function s(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:s(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/eac819ad.f5609d88.js b/build/assets/js/eac819ad.f5609d88.js deleted file mode 100644 index 2710129a2..000000000 --- a/build/assets/js/eac819ad.f5609d88.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[569],{3951:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>t,toc:()=>c});var o=n(6070),r=n(1582);const d={},l="Type alias: LowLevelMessage",t={id:"build-on-morph/sdk/type-aliases/LowLevelMessage",title:"LowLevelMessage",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.md",sourceDirName:"build-on-morph/sdk/type-aliases",slug:"/build-on-morph/sdk/type-aliases/LowLevelMessage",permalink:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.md",tags:[],version:"current",frontMatter:{}},a={},c=[{value:"Type declaration",id:"type-declaration",level:2},{value:"encodedMessage",id:"encodedmessage",level:3},{value:"messageHash",id:"messagehash",level:3},{value:"messageSender",id:"messagesender",level:3},{value:"messageTarget",id:"messagetarget",level:3},{value:"Source",id:"source",level:2}];function i(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(s.hr,{}),"\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / LowLevelMessage"]}),"\n",(0,o.jsx)(s.h1,{id:"type-alias-lowlevelmessage",children:"Type alias: LowLevelMessage"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"LowLevelMessage"}),": ",(0,o.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",children:(0,o.jsx)(s.code,{children:"CoreCrossChainMessage"})})," & ",(0,o.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:"Describes messages sent inside the L2ToL1MessagePasser on L2. Happens to be the same structure\nas the CoreCrossChainMessage so we'll reuse the type for now."}),"\n",(0,o.jsx)(s.h2,{id:"type-declaration",children:"Type declaration"}),"\n",(0,o.jsx)(s.h3,{id:"encodedmessage",children:"encodedMessage"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"encodedMessage"}),": ",(0,o.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,o.jsx)(s.h3,{id:"messagehash",children:"messageHash"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"messageHash"}),": ",(0,o.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,o.jsx)(s.h3,{id:"messagesender",children:"messageSender"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"messageSender"}),": ",(0,o.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,o.jsx)(s.h3,{id:"messagetarget",children:"messageTarget"}),"\n",(0,o.jsxs)(s.blockquote,{children:["\n",(0,o.jsxs)(s.p,{children:[(0,o.jsx)(s.strong,{children:"messageTarget"}),": ",(0,o.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(s.p,{children:"src/interfaces/types.ts:263"})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>l,x:()=>t});var o=n(758);const r={},d=o.createContext(r);function l(e){const s=o.useContext(d);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),o.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/f3316ef7.030164ad.js b/build/assets/js/f3316ef7.030164ad.js deleted file mode 100644 index 1cfc25a27..000000000 --- a/build/assets/js/f3316ef7.030164ad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8224],{9544:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>i,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>d,toc:()=>l});var t=o(6070),r=o(1582);const a={title:"Run a validator from source",lang:"en-US"},s=void 0,d={id:"build-on-morph/developer-resources/node-operation/validator-node/run-on-host",title:"Run a validator from source",description:"Run a Morph Validator",source:"@site/docs/build-on-morph/developer-resources/node-operation/validator-node/2-run-on-host.md",sourceDirName:"build-on-morph/developer-resources/node-operation/validator-node",slug:"/build-on-morph/developer-resources/node-operation/validator-node/run-on-host",permalink:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/validator-node/2-run-on-host.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Run a validator from source",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Run a validator with docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker"},next:{title:"Upgrade node running from docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker"}},i={},l=[{value:"Run a Morph Validator",id:"run-a-morph-validator",level:2},{value:"Build executable binary",id:"build-executable-binary",level:2},{value:"Clone Morph",id:"clone-morph",level:3},{value:"Build Geth",id:"build-geth",level:3},{value:"Build Node",id:"build-node",level:3},{value:"Sync from the snapshot",id:"sync-from-the-snapshot",level:2},{value:"Config Preparation",id:"config-preparation",level:3},{value:"Download snapshot",id:"download-snapshot",level:3},{value:"Script to start the process",id:"script-to-start-the-process",level:2},{value:"Geth",id:"geth",level:3},{value:"Node",id:"node",level:3},{value:"Check Status",id:"check-status",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"run-a-morph-validator",children:"Run a Morph Validator"}),"\n",(0,t.jsxs)(n.p,{children:["This guide describes the approach to running a Morph validator node. If you are unfamiliar with the validator duties, please refer to our ",(0,t.jsx)(n.a,{href:"/docs/how-morph-works/optimistic-zkevm",children:"optimistic zkEVM"})," design."]}),"\n",(0,t.jsxs)(n.p,{children:["Create the folder ",(0,t.jsx)(n.code,{children:"~/.morph"})," as our home directory for this example."]}),"\n",(0,t.jsx)(n.h2,{id:"build-executable-binary",children:"Build executable binary"}),"\n",(0,t.jsx)(n.h3,{id:"clone-morph",children:"Clone Morph"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mkdir -p ~/.morph \ncd ~/.morph\ngit clone https://github.com/morph-l2/morph.git\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Next, you need to check out a release version. You can find the available release versions on the ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/morph/releases",children:"Morph Releases"})," page. It is recommended to use the latest release version."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd morph\ngit checkout ${RELEASE_VERSION}\n"})}),"\n",(0,t.jsx)(n.h3,{id:"build-geth",children:"Build Geth"}),"\n",(0,t.jsx)(n.p,{children:"Notice: You need C compiler to build geth"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"make geth\n"})}),"\n",(0,t.jsx)(n.h3,{id:"build-node",children:"Build Node"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd ~/.morph/morph/node \nmake build\n"})}),"\n",(0,t.jsx)(n.h2,{id:"sync-from-the-snapshot",children:"Sync from the snapshot"}),"\n",(0,t.jsx)(n.h3,{id:"config-preparation",children:"Config Preparation"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Download the config files and make data dir"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd ~/.morph\n\n## mainnet\nwget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/mainnet/data.zip\n\n## testnet\nwget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/holesky/data.zip\n\nunzip data.zip\n"})}),"\n",(0,t.jsxs)(n.ol,{start:"2",children:["\n",(0,t.jsx)(n.li,{children:"Create a shared secret with node"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd ~/.morph\nopenssl rand -hex 32 > jwt-secret.txt\n"})}),"\n",(0,t.jsx)(n.h3,{id:"download-snapshot",children:"Download snapshot"}),"\n",(0,t.jsx)(n.p,{children:"Download the latest snapshot corresponding to either the mainnet or testnet network."}),"\n",(0,t.jsxs)(n.p,{children:["A complete record of historical snapshots is available ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information",children:"here"}),". Below is an example of how to download a snapshot"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"## mainnet\nwget -q --show-progress https://snapshot.morphl2.io/mainnet/${SNAPSHOT_NAME}.tar.gz\ntar -xzvf ${SNAPSHOT_NAME}.tar.gz\n\n## holesky\nwget -q --show-progress https://snapshot.morphl2.io/holesky/${SNAPSHOT_NAME}.tar.gz\ntar -xzvf ${SNAPSHOT_NAME}.tar.gz\n"})}),"\n",(0,t.jsx)(n.p,{children:"Extracting snapshot data to the data directory your node points to"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"mv ${SNAPSHOT_NAME}/geth geth-data\nmv ${SNAPSHOT_NAME}/data node-data\n"})}),"\n",(0,t.jsx)(n.h2,{id:"script-to-start-the-process",children:"Script to start the process"}),"\n",(0,t.jsx)(n.h3,{id:"geth",children:"Geth"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:'title="Script for starting mainnet geth"',children:'./morph/go-ethereum/build/bin/geth --morph \\\n --datadir "./geth-data" \\\n --http --http.api=web3,debug,eth,txpool,net,engine \\\n --authrpc.addr localhost \\\n --authrpc.vhosts="localhost" \\\n --authrpc.port 8551 \\\n --authrpc.jwtsecret=./jwt-secret.txt \\\n --log.filename=./geth.log\n\n'})}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["For testnet, using ",(0,t.jsx)(n.code,{children:"--morph-holesky"})," instead"]})}),"\n",(0,t.jsxs)(n.p,{children:["tail -f ",(0,t.jsx)(n.code,{children:"geth.log"})," to check if the Geth is running properly, or you can also execute the below curl command to check if you are connected to the peer."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'curl --location --request POST \'localhost:8545/\' \\\n--header \'Content-Type: application/json\' \\\n--data-raw \'{\n "jsonrpc":"2.0",\n "method":"eth_blockNumber",\n "id":1\n}\'\n\n{"jsonrpc":"2.0","id":1,"result":"0x148e39"}\n'})}),"\n",(0,t.jsx)(n.h3,{id:"node",children:"Node"}),"\n",(0,t.jsxs)(n.p,{children:["You need to set the ",(0,t.jsx)(n.code,{children:"DERIVATION_START_HEIGHT"})," and ",(0,t.jsx)(n.code,{children:"L1_MSG_START_HEIGHT"})," variables correctly to match the snapshot version you downloaded. From the ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information",children:"snapshot information"}),", you can find the corresponding height values."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd ~/.morph\n\n## mainnet\nexport CHAIN_ID=1\nexport L1MESSAGEQUEUE_CONTRACT=0x3931ade842f5bb8763164bdd81e5361dce6cc1ef\nexport ROLLUP=0x759894ced0e6af42c26668076ffa84d02e3cef60\nexport DERIVATION_START_HEIGHT=${The height matches your snapshot}\nexport L1_MSG_START_HEIGHT=${The height matches your snapshot}\n\n## start node\n./morph/node/build/bin/morphnode --validator --home ./node-data \\\n --l2.jwt-secret ./jwt-secret.txt \\\n --l2.eth http://localhost:8545 \\\n --l2.engine http://localhost:8551 \\\n --l1.rpc $(Ethereum RPC) \\\n --l1.beaconrpc $(Ethereum beacon chain RPC) \\\n --l1.chain-id ${CHAIN_ID} \\\n --validator.privateKey 0x0000000000000000000000000000000000000000000000000000000000000001 \\\n --sync.depositContractAddr ${L1MESSAGEQUEUE_CONTRACT} \\\n --sync.startHeight ${L1_MSG_START_HEIGHT} \\\n --derivation.rollupAddress ${ROLLUP} \\\n --derivation.startHeight ${DERIVATION_START_HEIGHT} \\\n --derivation.fetchBlockRange 200 \\\n --log.filename ./node.log\n"})}),"\n",(0,t.jsx)(n.p,{children:"For holesky network, using"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"export CHAIN_ID=17000 \nexport L1MESSAGEQUEUECONTRACT=0x778d1d9a4d8b6b9ade36d967a9ac19455ec3fd0b\nexport ROLLUP=0xd8c5c541d56f59d65cf775de928ccf4a47d4985c\nexport DERIVATION_START_HEIGHT=${The height matches your snapshot}\nexport L1_MSG_START_HEIGHT=${The height matches your snapshot}\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["Note the ",(0,t.jsx)(n.strong,{children:"validator.privateKey"})," is of no use to you. It is used to send challenges when the state root is found to be incorrect. However, we do not currently accept challenges from third party addresses. But it is also a required parameter for the morphnode command, so we give a ",(0,t.jsx)(n.em,{children:(0,t.jsx)(n.strong,{children:"0x00... 1"})}),"."]})}),"\n",(0,t.jsx)(n.h2,{id:"check-status",children:"Check Status"}),"\n",(0,t.jsx)(n.p,{children:"If your node is successfully started, you will see the following response:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'I[2024-06-06|15:57:35.216] metrics server enabled module=derivation host=0.0.0.0 port=26660\nderivation node starting\nID> 24-06-06|15:57:35.216] initial sync start module=syncer msg="Running initial sync of L1 messages before starting sequencer, this might take a while..."\nI[2024-06-06|15:57:35.242] initial sync completed module=syncer latestSyncedBlock=1681622\nI[2024-06-06|15:57:35.242] derivation start pull rollupData form l1 module=derivation startBlock=1681599 end=1681622\nI[2024-06-06|15:57:35.244] fetched rollup tx module=derivation txNum=8 latestBatchIndex=59201\nI[2024-06-06|15:57:35.315] fetch rollup transaction success module=derivation txNonce=8764 txHash=0x5fb8a98472d1be73be2bc6be0807b9e0c68b7ba14a648c8a17bdaff7b26eb923 l1BlockNumber=1681599 firstL2BlockNumber=1347115 lastL2BlockNumber=1347129\nI[2024-06-06|15:57:35.669] new l2 block success module=derivation blockNumber=1347115\n'})}),"\n",(0,t.jsx)(n.p,{children:"You can use the following command to check the newest block height to make sure you are aligned."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'curl --location --request POST \'localhost:8545/\' \\\n--header \'Content-Type: application/json\' \\\n--data-raw \'{\n "jsonrpc":"2.0",\n "method":"eth_blockNumber",\n "id":1\n}\'\n{"jsonrpc":"2.0","id":1,"result":"0x148e39"}\n'})}),"\n",(0,t.jsx)(n.p,{children:"Make sure you check the validator status constantly, if you find response"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"[2024-06-14|16:43:50.904] root hash or withdrawal hash is not equal originStateRootHash=0x13f91d1c272e48e2d864ce7bfb421506d5b2a04def64d45c75391cdcdd69cd78 deriveStateRootHash=0x27e10420c0e34676a7d75c4189d7ccd1c3407cc8fd0b3eafb01c15e250a1215f batchWithdrawalRoot=0xa3e4a7cf45c7591a6bd9868f1fa7485ae345f10067acaade5f5b07d418b2e172 deriveWithdrawalRoot=0xa3e4a7cf45c7591a6bd9868f1fa7485ae345f10067acaade5f5b07d418b2e172\n"})}),"\n",(0,t.jsx)(n.p,{children:"This means your validators find inconsistent between sequencer submission and your own observation."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>d});var t=o(758);const r={},a=t.createContext(r);function s(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/f435c040.edf90f1e.js b/build/assets/js/f435c040.edf90f1e.js deleted file mode 100644 index 25c9ae3e8..000000000 --- a/build/assets/js/f435c040.edf90f1e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[2500],{4687:(r,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>s,metadata:()=>d,toc:()=>l});var o=n(6070),i=n(1582);const s={},t="Function: toSignerOrProvider()",d={id:"build-on-morph/sdk/functions/toSignerOrProvider",title:"toSignerOrProvider",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/toSignerOrProvider.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/toSignerOrProvider",permalink:"/docs/build-on-morph/sdk/functions/toSignerOrProvider",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/toSignerOrProvider.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(r){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,i.R)(),...r.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,o.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,o.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,o.jsx)(e.hr,{}),"\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / toSignerOrProvider"]}),"\n",(0,o.jsx)(e.h1,{id:"function-tosignerorprovider",children:"Function: toSignerOrProvider()"}),"\n",(0,o.jsxs)(e.blockquote,{children:["\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.strong,{children:"toSignerOrProvider"}),"(",(0,o.jsx)(e.code,{children:"signerOrProvider"}),"): ",(0,o.jsx)(e.code,{children:"Provider"})," | ",(0,o.jsx)(e.code,{children:"Signer"})]}),"\n"]}),"\n",(0,o.jsx)(e.p,{children:"Converts a SignerOrProviderLike into a Signer or a Provider. Assumes that if the input is a\nstring then it is a JSON-RPC url."}),"\n",(0,o.jsx)(e.h2,{id:"parameters",children:"Parameters"}),"\n",(0,o.jsxs)(e.p,{children:["\u2022 ",(0,o.jsx)(e.strong,{children:"signerOrProvider"}),": ",(0,o.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",children:(0,o.jsx)(e.code,{children:"SignerOrProviderLike"})})]}),"\n",(0,o.jsx)(e.p,{children:"SignerOrProviderLike to turn into a Signer or Provider."}),"\n",(0,o.jsx)(e.h2,{id:"returns",children:"Returns"}),"\n",(0,o.jsxs)(e.p,{children:[(0,o.jsx)(e.code,{children:"Provider"})," | ",(0,o.jsx)(e.code,{children:"Signer"})]}),"\n",(0,o.jsx)(e.p,{children:"Input as a Signer or Provider."}),"\n",(0,o.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,o.jsx)(e.p,{children:"src/utils/coercion.ts:25"})]})}function u(r={}){const{wrapper:e}={...(0,i.R)(),...r.components};return e?(0,o.jsx)(e,{...r,children:(0,o.jsx)(h,{...r})}):h(r)}},1582:(r,e,n)=>{n.d(e,{R:()=>t,x:()=>d});var o=n(758);const i={},s=o.createContext(i);function t(r){const e=o.useContext(s);return o.useMemo((function(){return"function"==typeof r?r(e):{...e,...r}}),[e,r])}function d(r){let e;return e=r.disableParentContext?"function"==typeof r.components?r.components(i):r.components||i:t(r.components),o.createElement(s.Provider,{value:e},r.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/f6623e93.fbb75f09.js b/build/assets/js/f6623e93.fbb75f09.js deleted file mode 100644 index e4fbea6fe..000000000 --- a/build/assets/js/f6623e93.fbb75f09.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[9200],{8389:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var o=i(6070),t=i(1582);const r={title:"Morph Modular Design",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},s=void 0,a={id:"how-morph-works/morph-modular-design",title:"Morph Modular Design",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/2-morph-modular-design.md",sourceDirName:"how-morph-works",slug:"/how-morph-works/morph-modular-design",permalink:"/docs/how-morph-works/morph-modular-design",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/2-morph-modular-design.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Morph Modular Design",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Build on Morph",permalink:"/docs/build-on-morph/developer-navigation-page"},next:{title:"Optimistic zkEVM",permalink:"/docs/how-morph-works/optimistic-zkevm"}},l={},c=[{value:"Overview",id:"overview",level:2},{value:"3 Major Morph Modules",id:"3-major-morph-modules",level:3},{value:"Sequencer Network - Consensus & Execution",id:"sequencer-network---consensus--execution",level:4},{value:"Optimistic zkEVM - Settlement",id:"optimistic-zkevm---settlement",level:4},{value:"Rollup - Data Availability",id:"rollup---data-availability",level:4},{value:"5 Morph Roles",id:"5-morph-roles",level:3},{value:"Sequencers",id:"sequencers",level:4},{value:"Prover",id:"prover",level:4},{value:"Validator",id:"validator",level:4},{value:"Nodes",id:"nodes",level:4},{value:"Layer 1",id:"layer-1",level:4},{value:"6 Morph Components",id:"6-morph-components",level:3},{value:"L2 Node\u200b",id:"l2-node",level:4},{value:"Batch Submitter\u200b",id:"batch-submitter",level:4},{value:"Consensus Client\u200b",id:"consensus-client",level:4},{value:"zkEVM\u200b",id:"zkevm",level:4},{value:"Aggregators\u200b",id:"aggregators",level:4},{value:"Layer 1 Contract\u200b",id:"layer-1-contract",level:4},{value:"Integration of Components, Roles, and Modules",id:"integration-of-components-roles-and-modules",level:3}];function d(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"The modular design of blockchain technology, known for its improved composability, has become a prevalent trend. Morph leverages this design principle to enhance its architecture and functionality."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"arichitecture",src:i(5422).A+"",width:"3840",height:"2160"})}),"\n",(0,o.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,o.jsx)(n.p,{children:"A modular design typically divides a Layer 1 blockchain into four core functions:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Consensus"}),"\n",(0,o.jsx)(n.li,{children:"Execution"}),"\n",(0,o.jsx)(n.li,{children:"Data Availability"}),"\n",(0,o.jsx)(n.li,{children:"Settlements"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Morph applies this modular approach to its Layer 2 solution by dividing it into three primary modules, each responsible for specific functionalities."}),"\n",(0,o.jsx)(n.h3,{id:"3-major-morph-modules",children:"3 Major Morph Modules"}),"\n",(0,o.jsx)(n.h4,{id:"sequencer-network---consensus--execution",children:"Sequencer Network - Consensus & Execution"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Sequencer Network",src:i(4673).A+"",width:"3840",height:"2160"})}),"\n",(0,o.jsxs)(n.p,{children:["Sequencer network responsible for the execution & consensus of the Layer 2 transactions, for more details please refer to Morph's ",(0,o.jsx)(n.a,{href:"../how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",children:"decentralized sequencers"}),"."]}),"\n",(0,o.jsx)(n.h4,{id:"optimistic-zkevm---settlement",children:"Optimistic zkEVM - Settlement"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Optimistic zkEVM",src:i(562).A+"",width:"1920",height:"1080"})}),"\n",(0,o.jsxs)(n.p,{children:["State verification ensures that state changes on Layer 2 are valid on Layer 1. Morph introduces Optimistic zkEVM, a hybrid solution combining zk-rollups and optimistic rollups for state verification. The process involves a Morph innovation known as Responsive Validity Proof (RVP). This innovative approach finalizes and settles Layer 2 transactions and states efficiently. For more details, refer to the documentation on ",(0,o.jsx)(n.a,{href:"../how-morph-works/optimistic-zkevm",children:"Responsive Validity Proof"}),"."]}),"\n",(0,o.jsx)(n.h4,{id:"rollup---data-availability",children:"Rollup - Data Availability"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Rollup",src:i(5633).A+"",width:"1920",height:"1080"})}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"/docs/how-morph-works/general-protocol-design/rollup",children:"Rollup"})," process involves submitting Layer 2 transactions and states to Layer 1, ensuring data availability. Morph's rollup strategy maximizes efficiency by compressing block content using zk-proofs, which helps manage the cost of Layer 1 data availability."]}),"\n",(0,o.jsx)(n.h3,{id:"5-morph-roles",children:"5 Morph Roles"}),"\n",(0,o.jsx)(n.h4,{id:"sequencers",children:"Sequencers"}),"\n",(0,o.jsx)(n.p,{children:"Sequencers play a crucial role in the network by:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Receiving Layer 2 user transactions and forming blocks."}),"\n",(0,o.jsx)(n.li,{children:"Reaching consensus with other sequencers."}),"\n",(0,o.jsx)(n.li,{children:"Executing blocks and applying state transitions."}),"\n",(0,o.jsx)(n.li,{children:"Batching blocks and submitting them to Layer 1."}),"\n",(0,o.jsx)(n.li,{children:"Synchronizing blocks with full nodes."}),"\n",(0,o.jsx)(n.li,{children:"Generating validity proofs when challenged."}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"prover",children:"Prover"}),"\n",(0,o.jsx)(n.p,{children:"Provers are essential for generating zk proofs when a sequencer is challenged. They synchronize Layer 2 transaction information and produce the necessary zk proofs to validate state changes."}),"\n",(0,o.jsx)(n.h4,{id:"validator",children:"Validator"}),"\n",(0,o.jsx)(n.p,{children:"Validators can be any user and play a key role in ensuring the correctness of states submitted by sequencers to Layer 1. They maintain an L2 node to synchronize transactions and state changes, triggering challenges when incorrect states are identified."}),"\n",(0,o.jsx)(n.h4,{id:"nodes",children:"Nodes"}),"\n",(0,o.jsx)(n.p,{children:"Nodes facilitate easier access to Layer 2 transactions and states without actively participating in network operations. Running an L2 node is open to anyone and does not require permission."}),"\n",(0,o.jsx)(n.h4,{id:"layer-1",children:"Layer 1"}),"\n",(0,o.jsx)(n.p,{children:"Every Layer 2 solution relies on a Layer 1 blockchain for final settlements and data availability. For Morph, this role is fulfilled by Ethereum. Key contracts on Layer 1 ensure the security and finality of Layer 2 transactions and states."}),"\n",(0,o.jsx)(n.h3,{id:"6-morph-components",children:"6 Morph Components"}),"\n",(0,o.jsx)(n.h4,{id:"l2-node",children:"L2 Node\u200b"}),"\n",(0,o.jsx)(n.p,{children:"The L2 node is central to Morph's architecture, interacting with various modules and roles. It includes sub-components such as:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Transactions Manager (Mempool): Manages all Layer 2 transactions, accepting and storing user-initiated transactions."}),"\n",(0,o.jsx)(n.li,{children:"Executor: Applies state transitions and maintains the real-time status of Layer 2."}),"\n",(0,o.jsx)(n.li,{children:"Synchronizer: Synchronizes data between L2 nodes to restore network status."}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"batch-submitter",children:"Batch Submitter\u200b"}),"\n",(0,o.jsx)(n.p,{children:"The Batch Submitter is part of the sequencer, responsible for continuously obtaining L2 blocks, packaging them into batches, and assembling the batches into Layer 1 transactions, which are then submitted to the Layer 1 contract."}),"\n",(0,o.jsx)(n.h4,{id:"consensus-client",children:"Consensus Client\u200b"}),"\n",(0,o.jsx)(n.p,{children:"Each sequencer runs a consensus client to reach consensus with other sequencers. The current design uses the Tendermint client to ensure seamless integration and developer friendliness."}),"\n",(0,o.jsx)(n.h4,{id:"zkevm",children:"zkEVM\u200b"}),"\n",(0,o.jsx)(n.p,{children:"zkEVM is part of the Prover and is a zk-friendly virtual machine used to generate zk proofs for Ethereum blocks and state changes. These zk proofs are ultimately used to prove the validity of L2 transactions and states."}),"\n",(0,o.jsx)(n.h4,{id:"aggregators",children:"Aggregators\u200b"}),"\n",(0,o.jsx)(n.p,{children:"Aggregators work with zkEVM to reduce the cost of verifying zk proofs by aggregating them for block production."}),"\n",(0,o.jsx)(n.h4,{id:"layer-1-contract",children:"Layer 1 Contract\u200b"}),"\n",(0,o.jsx)(n.p,{children:"These contracts on Ethereum store Layer 2 transactions, execute global state changes, and bridge assets and information between Layer 2 and Layer 1. They also manage the election and governance of the sequencer set, inheriting the security of Ethereum."}),"\n",(0,o.jsx)(n.h3,{id:"integration-of-components-roles-and-modules",children:"Integration of Components, Roles, and Modules"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"modular",src:i(9471).A+"",width:"1920",height:"1080"})}),"\n",(0,o.jsx)(n.p,{children:"The components form the foundation of the various roles in Morph. For instance, running an L2 node allows one to become a Node, while adding batch submitter and consensus client functionalities enables the role of Sequencer. These roles collaborate to perform the core functions of Morph, creating a complete and efficient rollup solution."})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},9471:(e,n,i)=>{i.d(n,{A:()=>o});const o=i.p+"assets/images/modu-01191e93311b938abebd1189bfb69b21.png"},5422:(e,n,i)=>{i.d(n,{A:()=>o});const o=i.p+"assets/images/archi-722265224ea729def09d6641d267c941.png"},4673:(e,n,i)=>{i.d(n,{A:()=>o});const o=i.p+"assets/images/seq1-e90d0e983252714740968a8aaaca0dd8.png"},5633:(e,n,i)=>{i.d(n,{A:()=>o});const o=i.p+"assets/images/rollup-768caf2d310d19ce9909d718badd44e5.png"},562:(e,n,i)=>{i.d(n,{A:()=>o});const o=i.p+"assets/images/opzk-f22d92ddda6b9d38f0f917f2025c7b28.png"},1582:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var o=i(758);const t={},r=o.createContext(t);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/f93d7a3b.8270a95b.js b/build/assets/js/f93d7a3b.8270a95b.js deleted file mode 100644 index 857cca738..000000000 --- a/build/assets/js/f93d7a3b.8270a95b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8898],{9903:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>i,metadata:()=>t,toc:()=>l});var s=n(6070),o=n(1582);const i={},d="Function: isL2Provider()",t={id:"build-on-morph/sdk/functions/isL2Provider",title:"isL2Provider",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/isL2Provider.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/isL2Provider",permalink:"/docs/build-on-morph/sdk/functions/isL2Provider",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/isL2Provider.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Type parameters",id:"type-parameters",level:2},{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Example",id:"example",level:2},{value:"Source",id:"source",level:2}];function h(e){const r={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",hr:"hr",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,s.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,s.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / isL2Provider"]}),"\n",(0,s.jsx)(r.h1,{id:"function-isl2provider",children:"Function: isL2Provider()"}),"\n",(0,s.jsxs)(r.blockquote,{children:["\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"isL2Provider"}),"<",(0,s.jsx)(r.code,{children:"TProvider"}),">(",(0,s.jsx)(r.code,{children:"provider"}),"): ",(0,s.jsx)(r.code,{children:"provider is L2Provider<TProvider>"})]}),"\n"]}),"\n",(0,s.jsx)(r.p,{children:"Determines if a given Provider is an L2Provider. Will coerce type\nif true"}),"\n",(0,s.jsx)(r.h2,{id:"type-parameters",children:"Type parameters"}),"\n",(0,s.jsxs)(r.p,{children:["\u2022 ",(0,s.jsx)(r.strong,{children:"TProvider"})," ",(0,s.jsx)(r.em,{children:"extends"})," ",(0,s.jsx)(r.code,{children:"Provider"}),"<",(0,s.jsx)(r.code,{children:"TProvider"}),">"]}),"\n",(0,s.jsx)(r.h2,{id:"parameters",children:"Parameters"}),"\n",(0,s.jsxs)(r.p,{children:["\u2022 ",(0,s.jsx)(r.strong,{children:"provider"}),": ",(0,s.jsx)(r.code,{children:"TProvider"})]}),"\n",(0,s.jsx)(r.p,{children:"The provider to check"}),"\n",(0,s.jsx)(r.h2,{id:"returns",children:"Returns"}),"\n",(0,s.jsx)(r.p,{children:(0,s.jsx)(r.code,{children:"provider is L2Provider<TProvider>"})}),"\n",(0,s.jsx)(r.p,{children:"Boolean"}),"\n",(0,s.jsx)(r.h2,{id:"example",children:"Example"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-ts",children:"if (isL2Provider(provider)) {\n // typescript now knows it is of type L2Provider\n const gasPrice = await provider.estimateL2GasPrice(tx)\n}\n"})}),"\n",(0,s.jsx)(r.h2,{id:"source",children:"Source"}),"\n",(0,s.jsx)(r.p,{children:"src/l2-provider.ts:157"})]})}function p(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1582:(e,r,n)=>{n.d(r,{R:()=>d,x:()=>t});var s=n(758);const o={},i=s.createContext(o);function d(e){const r=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),s.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/fac53bf8.c12dd61e.js b/build/assets/js/fac53bf8.c12dd61e.js deleted file mode 100644 index 56a8339bd..000000000 --- a/build/assets/js/fac53bf8.c12dd61e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4305],{8802:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var i=n(6070),o=n(1582);const s={title:"Understand Transaction Cost on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},r=void 0,a={id:"build-on-morph/build-on-morph/understand-transaction-cost-on-morph",title:"Understand Transaction Cost on Morph",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md",sourceDirName:"build-on-morph/build-on-morph",slug:"/build-on-morph/build-on-morph/understand-transaction-cost-on-morph",permalink:"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Understand Transaction Cost on Morph",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Difference between Morph and Ethereum",permalink:"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph"},next:{title:"Morph Integration One Page",permalink:"/docs/build-on-morph/build-on-morph/integration-one-page"}},c={},l=[{value:"The L2 execution fee",id:"the-l2-execution-fee",level:2},{value:"The L1 data fee",id:"the-l1-data-fee",level:2},{value:"Transaction fees' effect on software development",id:"transaction-fees-effect-on-software-development",level:2},{value:"Sending transactions",id:"sending-transactions",level:3},{value:"Displaying fees to users",id:"displaying-fees-to-users",level:3},{value:"Estimating the L2 execution fee",id:"estimating-the-l2-execution-fee",level:4},{value:"Estimating the L1 data fee",id:"estimating-the-l1-data-fee",level:4},{value:"Estimating the total fee",id:"estimating-the-total-fee",level:4},{value:"Sending max ETH",id:"sending-max-eth",level:3},{value:"Common RPC Errors",id:"common-rpc-errors",level:2},{value:"Insufficient funds",id:"insufficient-funds",level:3},{value:"Gas price too low",id:"gas-price-too-low",level:3},{value:"Gas price too high",id:"gas-price-too-high",level:3}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"Transaction fees on Morph work similarly to fees on Ethereum. However, Layer 2 introduces some unique aspects. Morph's optimistic zkEVM makes these differences easy to understand and even easier to handle."}),"\n",(0,i.jsx)(t.p,{children:"This page includes the formula for calculating the gas cost of transactions on Morph.\nThere are two kinds of costs for transactions on Morph: the L2 execution fee and the L1 data/security fee."}),"\n",(0,i.jsx)(t.h2,{id:"the-l2-execution-fee",children:"The L2 execution fee"}),"\n",(0,i.jsx)(t.p,{children:"Like Ethereum, transactions on Morph incur gas costs for computation and storage usage."}),"\n",(0,i.jsxs)(t.p,{children:["Every L2 transaction will pay some ",(0,i.jsx)(t.strong,{children:"execution"})," fee, equal to the amount of gas used multiplied by the gas price of the transaction."]}),"\n",(0,i.jsx)(t.p,{children:"Morph supports EIP-1559 transaction type. The EIP-1559 pricing model, which comprises a base fee and a priority fee, contributes to a more predictable and stable transaction fee."}),"\n",(0,i.jsx)(t.p,{children:"The formula is straightforward:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"l2_execution_fee = l2_gas_price * l2_gas_used\nl2_gas_price = l2_base_fee + l2_priority_fee\n"})}),"\n",(0,i.jsx)(t.p,{children:"The amount of L2 gas used depends on the specific transaction. Due to EVM compatibility, gas usage on Morph is typically similar to Ethereum."}),"\n",(0,i.jsx)(t.h2,{id:"the-l1-data-fee",children:"The L1 data fee"}),"\n",(0,i.jsx)(t.p,{children:"Morph transactions are also published to Ethereum, crucial to Morph\u2019s security as it ensures all data needed to verify Morph's state is always publicly available on Ethereum."}),"\n",(0,i.jsx)(t.p,{children:"Users must pay for the cost of submitting their transactions to Ethereum, known as the L1 data fee. This fee typically represents most of the total cost of a transaction on Morph."}),"\n",(0,i.jsx)(t.p,{children:"Formula:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"l1DataFee = (l1BaseFee * commitScalar + l1BlobBaseFee * len(tx_data) * blobScalar) / rcfg.Precision\n"})}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"len(tx_data) = count_zero_bytes(tx_data) * 4 + count_non_zero_bytes(tx_data) * 16\n"})}),"\n",(0,i.jsx)(t.p,{children:"And other parameters:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:"l1BaseFee\uff1aLayer1 base fee"}),"\n",(0,i.jsx)(t.li,{children:"commitScalar: a factor used to measure the gas cost for data commitment"}),"\n",(0,i.jsx)(t.li,{children:"l1BlobBaseFee: the blobBaseFee on L1"}),"\n",(0,i.jsx)(t.li,{children:"blobScalar: a factor used to measure the gas cost for one transaction to be stored in EIP-4844 blob"}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsxs)(t.p,{children:["You can read the parameter values from the GasPrice oracle contract. Morph has pre-deployed ",(0,i.jsx)(t.code,{children:"GasPriceOracle"}),", accessible on Morph mainnet at ",(0,i.jsx)(t.a,{href:"https://explorer.morphl2.io/address/0x530000000000000000000000000000000000000f",children:"GasPriceOracle"}),"."]})}),"\n",(0,i.jsx)(t.h2,{id:"transaction-fees-effect-on-software-development",children:"Transaction fees' effect on software development"}),"\n",(0,i.jsx)(t.h3,{id:"sending-transactions",children:"Sending transactions"}),"\n",(0,i.jsx)(t.p,{children:"The process of sending a transaction on Morph is identical to sending a transaction on Ethereum."}),"\n",(0,i.jsx)(t.p,{children:"When sending a transaction, you should provide a gas price that is greater than or equal to the current L2 gas price."}),"\n",(0,i.jsxs)(t.p,{children:["Like on Ethereum, you can query this gas price with the ",(0,i.jsx)(t.code,{children:"eth_gasPrice"})," RPC method."]}),"\n",(0,i.jsxs)(t.p,{children:["Similarly, you should set your transaction gas limit in the same way that you would set it on Ethereum (e.g. via ",(0,i.jsx)(t.code,{children:"eth_estimateGas"}),")."]}),"\n",(0,i.jsx)(t.h3,{id:"displaying-fees-to-users",children:"Displaying fees to users"}),"\n",(0,i.jsx)(t.p,{children:"Many Ethereum applications display estimated fees to users by multiplying the gas price by the gas limit."}),"\n",(0,i.jsx)(t.p,{children:"However, as discussed earlier, users on Morph are charged both an L2 execution fee and an L1 data fee."}),"\n",(0,i.jsx)(t.p,{children:"As a result, you should display the sum of both of these fees to give users the most accurate estimate of the total cost of a transaction."}),"\n",(0,i.jsx)(t.h4,{id:"estimating-the-l2-execution-fee",children:"Estimating the L2 execution fee"}),"\n",(0,i.jsx)(t.p,{children:"You can estimate the L2 execution fee by multiplying the gas price by the gas used, just like on Ethereum."}),"\n",(0,i.jsx)(t.p,{children:"The formula is straightforward:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"l2_execution_fee = l2_gas_price * l2_gas_used\nl2_gas_price = l2_base_fee + l2_priority_fee\n"})}),"\n",(0,i.jsx)(t.p,{children:"The amount of L2 gas used depends on the specific transaction. Due to EVM compatibility, gas usage on Morph is typically similar to Ethereum."}),"\n",(0,i.jsx)(t.h4,{id:"estimating-the-l1-data-fee",children:"Estimating the L1 data fee"}),"\n",(0,i.jsxs)(t.p,{children:["You can utilize the pre-deployed ",(0,i.jsx)(t.code,{children:"L1GasPriceOracle"})," at ",(0,i.jsx)(t.code,{children:"0x530000000000000000000000000000000000000f"}),". It offers a ",(0,i.jsx)(t.code,{children:"getL1Fee"})," method to estimate the L1 data fee for the raw data of a given transaction."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-javascript",children:"function getL1Fee(bytes memory _data) external view override returns (uint256);\n"})}),"\n",(0,i.jsxs)(t.admonition,{type:"tip",children:[(0,i.jsx)(t.p,{children:"Once the sequencer has processed a transaction, a user's L1 fee is secured, and any fluctuations will not impact what a user pays."}),(0,i.jsx)(t.p,{children:"Due to Morph's ~1s block time, any changes in L1 gas between a transaction's submission and its inclusion in a block should be minimal. The sequencer will account for any variations in L1 gas costs between a transaction's inclusion in a block and when the sequencer commits the data to L1."})]}),"\n",(0,i.jsx)(t.h4,{id:"estimating-the-total-fee",children:"Estimating the total fee"}),"\n",(0,i.jsx)(t.p,{children:"You can estimate the total fee by combining your estimates for the L2 execution fee and L1 data fee."}),"\n",(0,i.jsx)(t.h3,{id:"sending-max-eth",children:"Sending max ETH"}),"\n",(0,i.jsx)(t.p,{children:"Sending the maximum amount of ETH that a user has in their wallet is a relatively common use case."}),"\n",(0,i.jsx)(t.p,{children:"When doing this, you will need to subtract the estimated L2 execution fee and the estimated L1 data fee from the amount of ETH you want the user to send."}),"\n",(0,i.jsx)(t.p,{children:"Use the logic described above for estimating the total fee."}),"\n",(0,i.jsx)(t.h2,{id:"common-rpc-errors",children:"Common RPC Errors"}),"\n",(0,i.jsx)(t.h3,{id:"insufficient-funds",children:"Insufficient funds"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Error code: ",(0,i.jsx)(t.code,{children:"-32000"})]}),"\n",(0,i.jsxs)(t.li,{children:["Error message: ",(0,i.jsx)(t.code,{children:"invalid transaction: insufficient funds for l1Fee + l2Fee + value"})]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"You'll get this error when attempting to send a transaction and you don't have enough ETH to pay for the value of the transaction, the L2 execution fee, and the L1 data fee.\nYou might get this error when attempting to send max ETH if you aren't properly accounting for both the L2 execution fee and the L1 data fee."}),"\n",(0,i.jsx)(t.h3,{id:"gas-price-too-low",children:"Gas price too low"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Error code: ",(0,i.jsx)(t.code,{children:"-32000"})]}),"\n",(0,i.jsxs)(t.li,{children:["Error message: ",(0,i.jsx)(t.code,{children:"gas price too low: X wei, use at least tx.gasPrice = Y wei"})]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["This is a custom RPC error that Morph returns when a transaction is rejected because the gas price is too low.\nSee the section on ",(0,i.jsx)(t.a,{href:"#responding-to-gas-price-updates",children:"Responding to gas price updates"})," for more information."]}),"\n",(0,i.jsx)(t.h3,{id:"gas-price-too-high",children:"Gas price too high"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Error code: ",(0,i.jsx)(t.code,{children:"-32000"})]}),"\n",(0,i.jsxs)(t.li,{children:["Error message: ",(0,i.jsx)(t.code,{children:"gas price too high: X wei, use at most tx.gasPrice = Y wei"})]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"This is a custom RPC error that Morph returns when a transaction is rejected because the gas price is too high.\nWe include this as a safety measure to prevent users from accidentally sending a transaction with an extremely high L2 gas price."}),"\n",(0,i.jsxs)(t.p,{children:["See the section on ",(0,i.jsx)(t.a,{href:"#responding-to-gas-price-updates",children:"Responding to gas price updates"})," for more information."]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1582:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var i=n(758);const o={},s=i.createContext(o);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/fb24aa13.b798cdeb.js b/build/assets/js/fb24aa13.b798cdeb.js deleted file mode 100644 index 7fff086a2..000000000 --- a/build/assets/js/fb24aa13.b798cdeb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[5107],{3588:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var d=r(6070),n=r(1582);const i={},o="Class: StandardBridgeAdapter",l={id:"build-on-morph/sdk/classes/StandardBridgeAdapter",title:"StandardBridgeAdapter",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.md",sourceDirName:"build-on-morph/sdk/classes",slug:"/build-on-morph/sdk/classes/StandardBridgeAdapter",permalink:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.md",tags:[],version:"current",frontMatter:{}},c={},h=[{value:"Extended by",id:"extended-by",level:2},{value:"Implements",id:"implements",level:2},{value:"Constructors",id:"constructors",level:2},{value:"new StandardBridgeAdapter()",id:"new-standardbridgeadapter",level:3},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"Source",id:"source",level:4},{value:"Properties",id:"properties",level:2},{value:"estimateGas",id:"estimategas",level:3},{value:"approve()",id:"approve",level:4},{value:"Parameters",id:"parameters-1",level:5},{value:"Returns",id:"returns-1",level:5},{value:"deposit()",id:"deposit",level:4},{value:"Parameters",id:"parameters-2",level:5},{value:"Returns",id:"returns-2",level:5},{value:"withdraw()",id:"withdraw",level:4},{value:"Parameters",id:"parameters-3",level:5},{value:"Returns",id:"returns-3",level:5},{value:"Implementation of",id:"implementation-of",level:4},{value:"Source",id:"source-1",level:4},{value:"l1Bridge",id:"l1bridge",level:3},{value:"Implementation of",id:"implementation-of-1",level:4},{value:"Source",id:"source-2",level:4},{value:"l2Bridge",id:"l2bridge",level:3},{value:"Implementation of",id:"implementation-of-2",level:4},{value:"Source",id:"source-3",level:4},{value:"messenger",id:"messenger",level:3},{value:"Implementation of",id:"implementation-of-3",level:4},{value:"Source",id:"source-4",level:4},{value:"populateTransaction",id:"populatetransaction",level:3},{value:"approve()",id:"approve-1",level:4},{value:"Parameters",id:"parameters-4",level:5},{value:"Returns",id:"returns-4",level:5},{value:"deposit()",id:"deposit-1",level:4},{value:"Parameters",id:"parameters-5",level:5},{value:"Returns",id:"returns-5",level:5},{value:"withdraw()",id:"withdraw-1",level:4},{value:"Parameters",id:"parameters-6",level:5},{value:"Returns",id:"returns-6",level:5},{value:"Implementation of",id:"implementation-of-4",level:4},{value:"Source",id:"source-5",level:4},{value:"Methods",id:"methods",level:2},{value:"approval()",id:"approval",level:3},{value:"Parameters",id:"parameters-7",level:4},{value:"Returns",id:"returns-7",level:4},{value:"Implementation of",id:"implementation-of-5",level:4},{value:"Source",id:"source-6",level:4},{value:"approve()",id:"approve-2",level:3},{value:"Parameters",id:"parameters-8",level:4},{value:"Returns",id:"returns-8",level:4},{value:"Implementation of",id:"implementation-of-6",level:4},{value:"Source",id:"source-7",level:4},{value:"deposit()",id:"deposit-2",level:3},{value:"Parameters",id:"parameters-9",level:4},{value:"Returns",id:"returns-9",level:4},{value:"Implementation of",id:"implementation-of-7",level:4},{value:"Source",id:"source-8",level:4},{value:"getDepositsByAddress()",id:"getdepositsbyaddress",level:3},{value:"Parameters",id:"parameters-10",level:4},{value:"Returns",id:"returns-10",level:4},{value:"Implementation of",id:"implementation-of-8",level:4},{value:"Source",id:"source-9",level:4},{value:"getWithdrawalsByAddress()",id:"getwithdrawalsbyaddress",level:3},{value:"Parameters",id:"parameters-11",level:4},{value:"Returns",id:"returns-11",level:4},{value:"Implementation of",id:"implementation-of-9",level:4},{value:"Source",id:"source-10",level:4},{value:"supportsTokenPair()",id:"supportstokenpair",level:3},{value:"Parameters",id:"parameters-12",level:4},{value:"Returns",id:"returns-12",level:4},{value:"Implementation of",id:"implementation-of-10",level:4},{value:"Source",id:"source-11",level:4},{value:"withdraw()",id:"withdraw-2",level:3},{value:"Parameters",id:"parameters-13",level:4},{value:"Returns",id:"returns-13",level:4},{value:"Implementation of",id:"implementation-of-11",level:4},{value:"Source",id:"source-12",level:4}];function t(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,d.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,d.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / StandardBridgeAdapter"]}),"\n",(0,d.jsx)(s.h1,{id:"class-standardbridgeadapter",children:"Class: StandardBridgeAdapter"}),"\n",(0,d.jsx)(s.p,{children:"Bridge adapter for any token bridge that uses the standard token bridge interface."}),"\n",(0,d.jsx)(s.h2,{id:"extended-by",children:"Extended by"}),"\n",(0,d.jsxs)(s.ul,{children:["\n",(0,d.jsx)(s.li,{children:(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",children:(0,d.jsx)(s.code,{children:"ETHBridgeAdapter"})})}),"\n"]}),"\n",(0,d.jsx)(s.h2,{id:"implements",children:"Implements"}),"\n",(0,d.jsxs)(s.ul,{children:["\n",(0,d.jsx)(s.li,{children:(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})})}),"\n"]}),"\n",(0,d.jsx)(s.h2,{id:"constructors",children:"Constructors"}),"\n",(0,d.jsx)(s.h3,{id:"new-standardbridgeadapter",children:"new StandardBridgeAdapter()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"new StandardBridgeAdapter"}),"(",(0,d.jsx)(s.code,{children:"opts"}),"): ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Creates a StandardBridgeAdapter instance."}),"\n",(0,d.jsx)(s.h4,{id:"parameters",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts"})]}),"\n",(0,d.jsx)(s.p,{children:"Options for the adapter."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.l1Bridge"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"L1 bridge contract."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.l2Bridge"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"L2 bridge contract."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.messenger"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,d.jsx)(s.code,{children:"CrossChainMessenger"})})]}),"\n",(0,d.jsx)(s.p,{children:"Provider used to make queries related to cross-chain interactions."}),"\n",(0,d.jsx)(s.h4,{id:"returns",children:"Returns"}),"\n",(0,d.jsx)(s.p,{children:(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",children:(0,d.jsx)(s.code,{children:"StandardBridgeAdapter"})})}),"\n",(0,d.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:52"}),"\n",(0,d.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,d.jsx)(s.h3,{id:"estimategas",children:"estimateGas"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"estimateGas"}),": ",(0,d.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Object that holds the functions that estimates the gas required for a given transaction.\nFollows the pattern used by ethers.js."}),"\n",(0,d.jsx)(s.h4,{id:"approve",children:"approve()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approve"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-1",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-1",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"deposit",children:"deposit()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"deposit"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-2",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-2",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"withdraw",children:"withdraw()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"withdraw"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-3",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-3",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#estimategas",children:(0,d.jsx)(s.code,{children:"estimateGas"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:405"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"l1bridge",children:"l1Bridge"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"l1Bridge"}),": ",(0,d.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"L1 bridge contract."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-1",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#l1bridge",children:(0,d.jsx)(s.code,{children:"l1Bridge"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:41"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"l2bridge",children:"l2Bridge"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"l2Bridge"}),": ",(0,d.jsx)(s.code,{children:"Contract"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"L2 bridge contract."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-2",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#l2bridge",children:(0,d.jsx)(s.code,{children:"l2Bridge"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:42"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"messenger",children:"messenger"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"messenger"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",children:(0,d.jsx)(s.code,{children:"CrossChainMessenger"})})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Provider used to make queries related to cross-chain interactions."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-3",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#messenger",children:(0,d.jsx)(s.code,{children:"messenger"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:40"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"populatetransaction",children:"populateTransaction"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"populateTransaction"}),": ",(0,d.jsx)(s.code,{children:"object"})]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Object that holds the functions that generate transactions to be signed by the user.\nFollows the pattern used by ethers.js."}),"\n",(0,d.jsx)(s.h4,{id:"approve-1",children:"approve()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approve"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-4",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-4",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"deposit-1",children:"deposit()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"deposit"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-5",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-5",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"withdraw-1",children:"withdraw()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"withdraw"}),": (",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?) => ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.h5,{id:"parameters-6",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.h5,{id:"returns-6",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionRequest"}),">"]}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-4",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#populatetransaction",children:(0,d.jsx)(s.code,{children:"populateTransaction"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:286"}),"\n",(0,d.jsx)(s.h2,{id:"methods",children:"Methods"}),"\n",(0,d.jsx)(s.h3,{id:"approval",children:"approval()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approval"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Queries the account's approval amount for a given L1 token."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-7",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-7",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"BigNumber"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Amount of tokens approved for deposits from the account."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-5",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#approval",children:(0,d.jsx)(s.code,{children:"approval"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-6",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:209"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"approve-2",children:"approve()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"approve"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"signer"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Approves a deposit into the L2 chain."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-8",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Amount of the token to approve."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"signer"}),": ",(0,d.jsx)(s.code,{children:"Signer"})]}),"\n",(0,d.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-8",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Transaction response for the approval transaction."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-6",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#approve-2",children:(0,d.jsx)(s.code,{children:"approve"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-7",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:250"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"deposit-2",children:"deposit()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"deposit"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"signer"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Deposits some tokens into the L2 chain."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-9",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Amount of the token to deposit."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"signer"}),": ",(0,d.jsx)(s.code,{children:"Signer"})]}),"\n",(0,d.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-9",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Transaction response for the deposit transaction."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-7",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#deposit-2",children:(0,d.jsx)(s.code,{children:"deposit"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-8",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:262"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"getdepositsbyaddress",children:"getDepositsByAddress()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"getDepositsByAddress"}),"(",(0,d.jsx)(s.code,{children:"address"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Gets all deposits for a given address."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-10",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"address"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,d.jsx)(s.p,{children:"Options object."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsx)(s.h4,{id:"returns-10",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,d.jsx)(s.p,{children:"All deposit token bridge messages sent by the given address."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-8",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#getdepositsbyaddress",children:(0,d.jsx)(s.code,{children:"getDepositsByAddress"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-9",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:75"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"getwithdrawalsbyaddress",children:"getWithdrawalsByAddress()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"getWithdrawalsByAddress"}),"(",(0,d.jsx)(s.code,{children:"address"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Gets all withdrawals for a given address."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-11",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"address"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Address to search for messages from."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"})]}),"\n",(0,d.jsx)(s.p,{children:"Options object."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.fromBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts.toBlock?"}),": ",(0,d.jsx)(s.code,{children:"BlockTag"})]}),"\n",(0,d.jsx)(s.h4,{id:"returns-11",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",children:(0,d.jsx)(s.code,{children:"TokenBridgeMessage"})}),"[]>"]}),"\n",(0,d.jsx)(s.p,{children:"All withdrawal token bridge messages sent by the given address."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-9",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#getwithdrawalsbyaddress",children:(0,d.jsx)(s.code,{children:"getWithdrawalsByAddress"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-10",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:122"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"supportstokenpair",children:"supportsTokenPair()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"supportsTokenPair"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),"): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"boolean"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Checks whether the given token pair is supported by the bridge."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-12",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsx)(s.h4,{id:"returns-12",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"boolean"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Whether the given token pair is supported by the bridge."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-10",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#supportstokenpair",children:(0,d.jsx)(s.code,{children:"supportsTokenPair"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-11",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:165"}),"\n",(0,d.jsx)(s.hr,{}),"\n",(0,d.jsx)(s.h3,{id:"withdraw-2",children:"withdraw()"}),"\n",(0,d.jsxs)(s.blockquote,{children:["\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.strong,{children:"withdraw"}),"(",(0,d.jsx)(s.code,{children:"l1Token"}),", ",(0,d.jsx)(s.code,{children:"l2Token"}),", ",(0,d.jsx)(s.code,{children:"amount"}),", ",(0,d.jsx)(s.code,{children:"signer"}),", ",(0,d.jsx)(s.code,{children:"opts"}),"?): ",(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n"]}),"\n",(0,d.jsx)(s.p,{children:"Withdraws some tokens back to the L1 chain."}),"\n",(0,d.jsx)(s.h4,{id:"parameters-13",children:"Parameters"}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l1Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L1 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"l2Token"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/AddressLike",children:(0,d.jsx)(s.code,{children:"AddressLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"The L2 token address."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"amount"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/type-aliases/NumberLike",children:(0,d.jsx)(s.code,{children:"NumberLike"})})]}),"\n",(0,d.jsx)(s.p,{children:"Amount of the token to withdraw."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"signer"}),": ",(0,d.jsx)(s.code,{children:"Signer"})]}),"\n",(0,d.jsx)(s.p,{children:"Signer used to sign and send the transaction."}),"\n",(0,d.jsxs)(s.p,{children:["\u2022 ",(0,d.jsx)(s.strong,{children:"opts?"}),": ",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IActionOptions",children:(0,d.jsx)(s.code,{children:"IActionOptions"})})]}),"\n",(0,d.jsx)(s.p,{children:"Additional options."}),"\n",(0,d.jsx)(s.h4,{id:"returns-13",children:"Returns"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.code,{children:"Promise"}),"<",(0,d.jsx)(s.code,{children:"TransactionResponse"}),">"]}),"\n",(0,d.jsx)(s.p,{children:"Transaction response for the withdraw transaction."}),"\n",(0,d.jsx)(s.h4,{id:"implementation-of-11",children:"Implementation of"}),"\n",(0,d.jsxs)(s.p,{children:[(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",children:(0,d.jsx)(s.code,{children:"IBridgeAdapter"})}),".",(0,d.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter#withdraw-2",children:(0,d.jsx)(s.code,{children:"withdraw"})})]}),"\n",(0,d.jsx)(s.h4,{id:"source-12",children:"Source"}),"\n",(0,d.jsx)(s.p,{children:"src/adapters/standard-bridge.ts:274"})]})}function a(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,d.jsx)(s,{...e,children:(0,d.jsx)(t,{...e})}):t(e)}},1582:(e,s,r)=>{r.d(s,{R:()=>o,x:()=>l});var d=r(758);const n={},i=d.createContext(n);function o(e){const s=d.useContext(i);return d.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),d.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/fb26d209.f7a1412e.js b/build/assets/js/fb26d209.f7a1412e.js deleted file mode 100644 index 67af579e1..000000000 --- a/build/assets/js/fb26d209.f7a1412e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[7e3],{8989:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>a,frontMatter:()=>s,metadata:()=>h,toc:()=>d});var r=o(6070),t=o(1582);const s={title:"How to Run a Morph Node",lang:"en-US"},i=void 0,h={id:"build-on-morph/developer-resources/how-to-run-a-morph-node",title:"How to Run a Morph Node",description:"Run a Morph Full Node",source:"@site/docs/build-on-morph/developer-resources/2-how-to-run-a-morph-node.md",sourceDirName:"build-on-morph/developer-resources",slug:"/build-on-morph/developer-resources/how-to-run-a-morph-node",permalink:"/docs/build-on-morph/developer-resources/how-to-run-a-morph-node",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/2-how-to-run-a-morph-node.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"How to Run a Morph Node",lang:"en-US"}},c={},d=[{value:"Run a Morph Full Node",id:"run-a-morph-full-node",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:3},{value:"Build executable binary",id:"build-executable-binary",level:3},{value:"Clone morph",id:"clone-morph",level:4},{value:"Build Geth",id:"build-geth",level:4},{value:"Build Node",id:"build-node",level:4},{value:"Sync from genesis block",id:"sync-from-genesis-block",level:3},{value:"Config Preparation",id:"config-preparation",level:4},{value:"Script to start the process",id:"script-to-start-the-process",level:4},{value:"Check sync status",id:"check-sync-status",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"run-a-morph-full-node",children:"Run a Morph Full Node"}),"\n",(0,r.jsxs)(n.p,{children:["This guide outlines the steps to start a Morph node. The example assumes the home directory is ",(0,r.jsx)(n.code,{children:"~/.morph"})]}),"\n",(0,r.jsx)(n.h3,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,r.jsxs)(n.p,{children:["Running the morph node requires 2 processes:",(0,r.jsx)(n.code,{children:"geth"})," and ",(0,r.jsx)(n.code,{children:"node"}),"."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Geth"}),":the"," Morph execution layer which needs to meet the ",(0,r.jsx)(n.a,{href:"https://github.com/ethereum/go-ethereum#hardware-requirements",children:"go-ethereum hardware requirements"}),", but with less storage, 500GB is enough so far."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Node"}),":the"," Morph consensus layer embedded tendermint which needs to meet the ",(0,r.jsx)(n.a,{href:"https://docs.tendermint.com/v0.34/tendermint-core/running-in-production.html#processor-and-memory",children:"tendermint hardware requirements"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"Due to limitations in the current geth implementation, only archive mode is supported, meaning the storage size will continually increase with produced blocks."})}),"\n",(0,r.jsx)(n.h3,{id:"build-executable-binary",children:"Build executable binary"}),"\n",(0,r.jsx)(n.h4,{id:"clone-morph",children:"Clone morph"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"mkdir -p ~/.morph \ncd ~/.morph\ngit clone https://github.com/morph-l2/morph.git\n"})}),"\n",(0,r.jsx)(n.p,{children:"Currently, we use tag v0.2.0-beta as our beta version."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"cd morph\ngit checkout v0.2.0-beta\n"})}),"\n",(0,r.jsx)(n.h4,{id:"build-geth",children:"Build Geth"}),"\n",(0,r.jsx)(n.p,{children:"Notice: You need C compiler to build geth"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"make nccc_geth\n"})}),"\n",(0,r.jsx)(n.h4,{id:"build-node",children:"Build Node"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"cd ~/.morph/morph/node \nmake build\n"})}),"\n",(0,r.jsx)(n.h3,{id:"sync-from-genesis-block",children:"Sync from genesis block"}),"\n",(0,r.jsx)(n.h4,{id:"config-preparation",children:"Config Preparation"}),"\n",(0,r.jsx)(n.p,{children:"Download the config files and make data dir"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"cd ~/.morph\nwget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/holesky/data.zip\nunzip data.zip\n"})}),"\n",(0,r.jsx)(n.p,{children:"Create a shared secret with node"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"cd ~/.morph\nopenssl rand -hex 32 > jwt-secret.txt\n"})}),"\n",(0,r.jsx)(n.h4,{id:"script-to-start-the-process",children:"Script to start the process"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.em,{children:"Geth"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'./morph/go-ethereum/build/bin/geth --morph-holesky \\\n --datadir "./geth-data" \\\n --http --http.api=web3,debug,eth,txpool,net,engine \\\n --authrpc.addr localhost \\\n --authrpc.vhosts="localhost" \\\n --authrpc.port 8551 \\\n --authrpc.jwtsecret=./jwt-secret.txt \\\n --miner.gasprice="100000000" \\\n --log.filename=./geth.log\n'})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.em,{children:"tail -f geth.log"})," to check if the Geth is running properly, or you can also exeucte the below curl command to check if you are connected to the peer."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'curl -X POST -H \'Content-Type: application/json\' --data \n\'{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}\' \nlocalhost:8545\n\n{"jsonrpc":"2.0","id":74,"result":"0x3"}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.em,{children:"Node"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"./morph/node/build/bin/morphnode --home ./node-data \\\n --l2.jwt-secret ./jwt-secret.txt \\\n --l2.eth http://localhost:8545 \\\n --l2.engine http://localhost:8551 \\\n --log.filename ./node.log\n"})}),"\n",(0,r.jsx)(n.p,{children:"tail -f node.log to check if the node is running properly, and you can also execute the command curl to check your node connection status."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'curl http://localhost:26657/net_info\n\n{\n "jsonrpc": "2.0",\n "id": -1,\n "result": {\n "listening": true,\n "listeners": [\n "Listener(@)"\n ],\n "n_peers": "3",\n "peers": [\n {\n "node_info": {\n "protocol_version": {\n "p2p": "8",\n "block": "11",\n "app": "0"\n },\n "id": "0fb5ce425197a462a66de015ee5fbbf103835b8a",\n "listen_addr": "tcp://0.0.0.0:26656",\n "network": "chain-morph-holesky",\n "version": "0.37.0-alpha.1",\n "channels": "4020212223386061",\n "moniker": "morph-dataseed-node-1",\n "other": {\n "tx_index": "on",\n "rpc_address": "tcp://0.0.0.0:26657"\n }\n },\n "is_outbound": true,\n'})}),"\n",(0,r.jsx)(n.h3,{id:"check-sync-status",children:"Check sync status"}),"\n",(0,r.jsxs)(n.p,{children:["curl ",(0,r.jsx)(n.a,{href:"http://localhost:26657/status",children:"http://localhost:26657/status"})," to check the sync status of the node"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'{\n "jsonrpc": "2.0",\n "id": -1,\n "result": {\n "node_info": {\n "protocol_version": {\n "p2p": "8",\n "block": "11",\n "app": "0"\n },\n "id": "b3f34dc2ce9c4fee5449426992941aee1e09670f",\n "listen_addr": "tcp://0.0.0.0:26656",\n "network": "chain-morph-holesky",\n "version": "0.37.0-alpha.1",\n "channels": "4020212223386061",\n "moniker": "my-morph-node",\n "other": {\n "tx_index": "on",\n "rpc_address": "tcp://0.0.0.0:26657"\n }\n },\n "sync_info": {\n "latest_block_hash": "71024385DDBEB7B554DB11FD2AE097ECBD99B2AF826C11B2A74F7172F2DEE5D2",\n "latest_app_hash": "",\n "latest_block_height": "2992",\n "latest_block_time": "2024-04-25T13:48:27.647889852Z",\n "earliest_block_hash": "C7A73D3907C6CA34B9DFA043FC6D4529A8EAEC8F059E100055653E46E63F6F8E",\n "earliest_app_hash": "",\n "earliest_block_height": "1",\n "earliest_block_time": "2024-04-25T09:06:30Z",\n "catching_up": false\n },\n "validator_info": {\n "address": "5FB3D3734640792F14B70E7A53FBBD39DB9787A8",\n "pub_key": {\n "type": "tendermint/PubKeyEd25519",\n "value": "rzN67ZJWsaLSGGpNj7HOWs8nrL5kr1n+w0OckWUCetw="\n },\n "voting_power": "0"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:'The returned "catching_up" indicates whether the node is in sync or not. True means it is in sync. Meanwhile, the returned latest_block_height indicates the latest block height this node synced.'})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>h});var r=o(758);const t={},s=r.createContext(t);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/fda70fd8.0b05c46c.js b/build/assets/js/fda70fd8.0b05c46c.js deleted file mode 100644 index 1e225d9bc..000000000 --- a/build/assets/js/fda70fd8.0b05c46c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1311],{6312:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>i});var n=s(6070),c=s(1582);const l={},o="Interface: OEL2Contracts",t={id:"build-on-morph/sdk/interfaces/OEL2Contracts",title:"OEL2Contracts",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/OEL2Contracts.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/OEL2Contracts",permalink:"/docs/build-on-morph/sdk/interfaces/OEL2Contracts",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/OEL2Contracts.md",tags:[],version:"current",frontMatter:{}},d={},i=[{value:"Properties",id:"properties",level:2},{value:"GasPriceOracle",id:"gaspriceoracle",level:3},{value:"Source",id:"source",level:4},{value:"Gov",id:"gov",level:3},{value:"Source",id:"source-1",level:4},{value:"L2CrossDomainMessenger",id:"l2crossdomainmessenger",level:3},{value:"Source",id:"source-2",level:4},{value:"L2ERC1155Gateway",id:"l2erc1155gateway",level:3},{value:"Source",id:"source-3",level:4},{value:"L2ERC721Gateway",id:"l2erc721gateway",level:3},{value:"Source",id:"source-4",level:4},{value:"L2ETHGateway",id:"l2ethgateway",level:3},{value:"Source",id:"source-5",level:4},{value:"L2GatewayRouter",id:"l2gatewayrouter",level:3},{value:"Source",id:"source-6",level:4},{value:"L2StandardERC20Gateway",id:"l2standarderc20gateway",level:3},{value:"Source",id:"source-7",level:4},{value:"L2ToL1MessagePasser",id:"l2tol1messagepasser",level:3},{value:"Source",id:"source-8",level:4},{value:"L2TxFeeVault",id:"l2txfeevault",level:3},{value:"Source",id:"source-9",level:4},{value:"L2WETH",id:"l2weth",level:3},{value:"Source",id:"source-10",level:4},{value:"L2WETHGateway",id:"l2wethgateway",level:3},{value:"Source",id:"source-11",level:4},{value:"MorphStandardERC20",id:"morphstandarderc20",level:3},{value:"Source",id:"source-12",level:4},{value:"MorphStandardERC20Factory",id:"morphstandarderc20factory",level:3},{value:"Source",id:"source-13",level:4},{value:"MorphToken?",id:"morphtoken",level:3},{value:"Source",id:"source-14",level:4},{value:"Sequencer",id:"sequencer",level:3},{value:"Source",id:"source-15",level:4},{value:"WrappedEther",id:"wrappedether",level:3},{value:"Source",id:"source-16",level:4}];function a(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",p:"p",strong:"strong",...(0,c.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(r.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(r.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / OEL2Contracts"]}),"\n",(0,n.jsx)(r.h1,{id:"interface-oel2contracts",children:"Interface: OEL2Contracts"}),"\n",(0,n.jsx)(r.p,{children:"L2 contract references."}),"\n",(0,n.jsx)(r.h2,{id:"properties",children:"Properties"}),"\n",(0,n.jsx)(r.h3,{id:"gaspriceoracle",children:"GasPriceOracle"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"GasPriceOracle"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:97"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"gov",children:"Gov"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Gov"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-1",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:86"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2crossdomainmessenger",children:"L2CrossDomainMessenger"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2CrossDomainMessenger"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-2",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:89"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2erc1155gateway",children:"L2ERC1155Gateway"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2ERC1155Gateway"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-3",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:94"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2erc721gateway",children:"L2ERC721Gateway"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2ERC721Gateway"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-4",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:91"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2ethgateway",children:"L2ETHGateway"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2ETHGateway"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-5",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:88"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2gatewayrouter",children:"L2GatewayRouter"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2GatewayRouter"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-6",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:84"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2standarderc20gateway",children:"L2StandardERC20Gateway"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2StandardERC20Gateway"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-7",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:90"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2tol1messagepasser",children:"L2ToL1MessagePasser"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2ToL1MessagePasser"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-8",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:83"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2txfeevault",children:"L2TxFeeVault"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2TxFeeVault"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-9",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:92"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2weth",children:"L2WETH"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2WETH"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-10",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:98"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"l2wethgateway",children:"L2WETHGateway"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"L2WETHGateway"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-11",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:99"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"morphstandarderc20",children:"MorphStandardERC20"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"MorphStandardERC20"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-12",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:95"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"morphstandarderc20factory",children:"MorphStandardERC20Factory"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"MorphStandardERC20Factory"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-13",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:96"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"morphtoken",children:"MorphToken?"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.code,{children:"optional"})," ",(0,n.jsx)(r.strong,{children:"MorphToken"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-14",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:102"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"sequencer",children:"Sequencer"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Sequencer"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-15",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:85"}),"\n",(0,n.jsx)(r.hr,{}),"\n",(0,n.jsx)(r.h3,{id:"wrappedether",children:"WrappedEther"}),"\n",(0,n.jsxs)(r.blockquote,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"WrappedEther"}),": ",(0,n.jsx)(r.code,{children:"Contract"})]}),"\n"]}),"\n",(0,n.jsx)(r.h4,{id:"source-16",children:"Source"}),"\n",(0,n.jsx)(r.p,{children:"src/interfaces/types.ts:100"})]})}function h(e={}){const{wrapper:r}={...(0,c.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1582:(e,r,s)=>{s.d(r,{R:()=>o,x:()=>t});var n=s(758);const c={},l=n.createContext(c);function o(e){const r=n.useContext(l);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:o(e.components),n.createElement(l.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/fdc91eb1.d0f3ea4e.js b/build/assets/js/fdc91eb1.d0f3ea4e.js deleted file mode 100644 index b5794273f..000000000 --- a/build/assets/js/fdc91eb1.d0f3ea4e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[4908],{5118:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var i=r(6070),t=r(1582);const o={title:"Difference between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},c=void 0,s={id:"how-morph-works/general-protocol-design/difference-between-ethereum-and-morph",title:"Difference between Morph and Ethereum",description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!",source:"@site/docs/how-morph-works/general-protocol-design/5-difference-between-ethereum-and-morph.md",sourceDirName:"how-morph-works/general-protocol-design",slug:"/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph",permalink:"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/how-morph-works/general-protocol-design/5-difference-between-ethereum-and-morph.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Difference between Morph and Ethereum",lang:"en-US",keywords:["morph","ethereum","rollup","layer2","validity proof","optimistic zk-rollup"],description:"Upgrade your blockchain experience with Morph - the secure decentralized, cost0efficient, and high-performing optimistic zk-rollup solution. Try it now!"},sidebar:"DeveloperSidebar",previous:{title:"Transactions Life Cycle",permalink:"/docs/how-morph-works/general-protocol-design/transactions-life-cycle"},next:{title:"Understand Transaction Cost on Morph",permalink:"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph"}},d={},l=[{value:"EVM Precompiles Difference",id:"evm-precompiles-difference",level:2},{value:"EVM Opcodes Difference",id:"evm-opcodes-difference",level:2},{value:"State Account Structure Difference",id:"state-account-structure-difference",level:2},{value:"<strong>Additional Fields</strong>",id:"additional-fields",level:3},{value:"<strong>CodeHash</strong>",id:"codehash",level:3},{value:"Block Time Difference",id:"block-time-difference",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"There are several technical differences between Ethereum\u2019s EVM and Morph's optimistic zkEVM."}),"\n",(0,i.jsx)(n.p,{children:"We\u2019ve compiled a list to help you understand these distinctions better."}),"\n",(0,i.jsx)(n.p,{children:"For most Solidity developers, these technical details won't significantly impact your development experience."}),"\n",(0,i.jsx)(n.h2,{id:"evm-precompiles-difference",children:"EVM Precompiles Difference"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"RIPEMD-160"})," (address ",(0,i.jsx)(n.code,{children:"0x3"}),"), ",(0,i.jsx)(n.code,{children:"blake2f"})," (address ",(0,i.jsx)(n.code,{children:"0x9"}),"), and ",(0,i.jsx)(n.code,{children:"point evaluation"})," (address ",(0,i.jsx)(n.code,{children:"0x0a"}),") precompiles are currently unsupported. Calls to these unsupported precompiled contracts will result in a transaction revert."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"modexp"})," precompile is supported, but it only accepts inputs that are 32 bytes or smaller (i.e., ",(0,i.jsx)(n.code,{children:"u256"}),")."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"ecPairing"})," precompile is also supported; however, the maximum number of points (sets or pairs) is limited to 4, rather than 6."]}),"\n",(0,i.jsxs)(n.p,{children:["All other EVM precompiles are fully supported: ",(0,i.jsx)(n.code,{children:"ecRecover"}),", ",(0,i.jsx)(n.code,{children:"identity"}),", ",(0,i.jsx)(n.code,{children:"ecAdd"}),", and ",(0,i.jsx)(n.code,{children:"ecMul"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"evm-opcodes-difference",children:"EVM Opcodes Difference"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Opcode"}),(0,i.jsx)(n.th,{children:"Solidity equivalent"}),(0,i.jsx)(n.th,{children:"Morph Behavior"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"BLOCKHASH"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"block.blockhash"})}),(0,i.jsxs)(n.td,{children:["Returns ",(0,i.jsx)(n.code,{children:"keccak(chain_id || block_number)"})," for the last 256 blocks."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"COINBASE"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"block.coinbase"})}),(0,i.jsxs)(n.td,{children:["Returns the pre-deployed fee vault contract address. See ",(0,i.jsx)(n.a,{href:"/docs/build-on-morph/developer-resources/contracts",children:"Contracts"})]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"DIFFICULTY"})," / ",(0,i.jsx)(n.code,{children:"PREVRANDAO"})]}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"block.difficulty"})}),(0,i.jsx)(n.td,{children:"Returns 0."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"SELFDESTRUCT"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"selfdestruct"})}),(0,i.jsx)(n.td,{children:"Disabled. If the opcode is triggered, the transaction will be reverted."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"BLOBHASH"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"tx.blob_versioned_hashes[index]"})}),(0,i.jsx)(n.td,{children:"Not supported"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"BLOBBASEFEE"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"blob_base_fee = BLOBBASEFEE()"})}),(0,i.jsx)(n.td,{children:"Not supported"})]})]})]}),"\n",(0,i.jsxs)(n.admonition,{title:"Several opcode not available",type:"tip",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"BLOBHASH"})," and ",(0,i.jsx)(n.code,{children:"BLOBBASEFEE"})," are not supported on Morph yet."]}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-4788",children:"EIP-4788"})," for accessing the Beacon Chain block root is not supported too."]})]}),"\n",(0,i.jsx)(n.h2,{id:"state-account-structure-difference",children:"State Account Structure Difference"}),"\n",(0,i.jsx)(n.h3,{id:"additional-fields",children:(0,i.jsx)(n.strong,{children:"Additional Fields"})}),"\n",(0,i.jsxs)(n.p,{children:["There are two additional fields in the existing ",(0,i.jsx)(n.code,{children:"StateAccount"})," object: ",(0,i.jsx)(n.code,{children:"PoseidonCodehash"})," and ",(0,i.jsx)(n.code,{children:"CodeSize"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-go",children:"type StateAccount struct {\n\tNonce uint64\n\tBalance *big.Int\n\tRoot common.Hash // merkle root of the storage trie\n\tKeccakCodeHash []byte // still the Keccak codehash\n\t// added fields\n\tPoseidonCodeHash []byte // the Poseidon codehash\n\tCodeSize uint64\n}\n"})}),"\n",(0,i.jsx)(n.h3,{id:"codehash",children:(0,i.jsx)(n.strong,{children:"CodeHash"})}),"\n",(0,i.jsxs)(n.p,{children:["In this context, we keep two varieties of code hashes for each contract's bytecode: the ",(0,i.jsx)(n.code,{children:"Keccak hash"})," and the ",(0,i.jsx)(n.code,{children:"Poseidon hash"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"KeccakCodeHash"})," is preserved to ensure compatibility with ",(0,i.jsx)(n.code,{children:"EXTCODEHASH"}),", while the ",(0,i.jsx)(n.code,{children:"PoseidonCodeHash"})," is utilized for verifying the accuracy of bytecodes loaded in the zkEVM, as Poseidon hashing offers significantly greater efficiency."]}),"\n",(0,i.jsx)(n.h2,{id:"block-time-difference",children:"Block Time Difference"}),"\n",(0,i.jsx)(n.admonition,{title:"Block Time Subject to Change",type:"tip",children:(0,i.jsx)(n.p,{children:"Blocks are produced every second, with an empty block generated if there are no transactions for 5 seconds. However, this frequency may change in the future."})}),"\n",(0,i.jsx)(n.p,{children:"To compare, Ethereum has a block time of ~12 seconds."}),"\n",(0,i.jsx)(n.p,{children:"Reasons for Faster Block Time in Morph"}),"\n",(0,i.jsx)(n.p,{children:"User Experience:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"A faster, consistent block time provides quicker feedback, enhancing the user experience."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Optimization: As we refine the zkEVM circuits in our testnets, we can achieve higher throughput than Ethereum, even with a smaller gas limit per block or batch."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Notice:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"TIMESTAMP"})," will return the timestamp of the block. It will update every second."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"BLOCKNUMBER"})," will return an actual block number. It will update every second. The one-to-one mapping between blocks and transactions will no longer apply."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},1582:(e,n,r)=>{r.d(n,{R:()=>c,x:()=>s});var i=r(758);const t={},o=i.createContext(t);function c(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/fe9c53f2.35732f59.js b/build/assets/js/fe9c53f2.35732f59.js deleted file mode 100644 index 8daaf204f..000000000 --- a/build/assets/js/fe9c53f2.35732f59.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[1688],{5428:(r,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var n=o(6070),s=o(1582);const t={},i="Function: toProvider()",d={id:"build-on-morph/sdk/functions/toProvider",title:"toProvider",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/functions/toProvider.md",sourceDirName:"build-on-morph/sdk/functions",slug:"/build-on-morph/sdk/functions/toProvider",permalink:"/docs/build-on-morph/sdk/functions/toProvider",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/functions/toProvider.md",tags:[],version:"current",frontMatter:{}},c={},l=[{value:"Parameters",id:"parameters",level:2},{value:"Returns",id:"returns",level:2},{value:"Source",id:"source",level:2}];function h(r){const e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",hr:"hr",p:"p",strong:"strong",...(0,s.R)(),...r.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,n.jsx)(e.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,n.jsx)(e.strong,{children:"Docs"})]}),"\n",(0,n.jsx)(e.hr,{}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / toProvider"]}),"\n",(0,n.jsx)(e.h1,{id:"function-toprovider",children:"Function: toProvider()"}),"\n",(0,n.jsxs)(e.blockquote,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"toProvider"}),"(",(0,n.jsx)(e.code,{children:"provider"}),"): ",(0,n.jsx)(e.code,{children:"Provider"})]}),"\n"]}),"\n",(0,n.jsx)(e.p,{children:"Converts a ProviderLike into a Provider. Assumes that if the input is a string then it is a\nJSON-RPC url."}),"\n",(0,n.jsx)(e.h2,{id:"parameters",children:"Parameters"}),"\n",(0,n.jsxs)(e.p,{children:["\u2022 ",(0,n.jsx)(e.strong,{children:"provider"}),": ",(0,n.jsx)(e.a,{href:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",children:(0,n.jsx)(e.code,{children:"ProviderLike"})})]}),"\n",(0,n.jsx)(e.p,{children:"ProviderLike to turn into a Provider."}),"\n",(0,n.jsx)(e.h2,{id:"returns",children:"Returns"}),"\n",(0,n.jsx)(e.p,{children:(0,n.jsx)(e.code,{children:"Provider"})}),"\n",(0,n.jsx)(e.p,{children:"Input as a Provider."}),"\n",(0,n.jsx)(e.h2,{id:"source",children:"Source"}),"\n",(0,n.jsx)(e.p,{children:"src/utils/coercion.ts:46"})]})}function u(r={}){const{wrapper:e}={...(0,s.R)(),...r.components};return e?(0,n.jsx)(e,{...r,children:(0,n.jsx)(h,{...r})}):h(r)}},1582:(r,e,o)=>{o.d(e,{R:()=>i,x:()=>d});var n=o(758);const s={},t=n.createContext(s);function i(r){const e=n.useContext(t);return n.useMemo((function(){return"function"==typeof r?r(e):{...e,...r}}),[e,r])}function d(r){let e;return e=r.disableParentContext?"function"==typeof r.components?r.components(s):r.components||s:i(r.components),n.createElement(t.Provider,{value:e},r.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/ff3f68fa.5479690d.js b/build/assets/js/ff3f68fa.5479690d.js deleted file mode 100644 index 6e5f52a6f..000000000 --- a/build/assets/js/ff3f68fa.5479690d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8221],{3920:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>l,frontMatter:()=>s,metadata:()=>i,toc:()=>a});var t=o(6070),r=o(1582);const s={title:"Run a full node with docker",lang:"en-US"},d=void 0,i={id:"build-on-morph/developer-resources/node-operation/full-node/run-in-docker",title:"Run a full node with docker",description:"This guide will help you start a full node running in the docker container using run-morph-node",source:"@site/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md",sourceDirName:"build-on-morph/developer-resources/node-operation/full-node",slug:"/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",permalink:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Run a full node with docker",lang:"en-US"},sidebar:"DeveloperSidebar",previous:{title:"Decentralized Naming Services",permalink:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services"},next:{title:"Run a full node from source",permalink:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host"}},c={},a=[{value:"Quick Start",id:"quick-start",level:2},{value:"Advanced Usage",id:"advanced-usage",level:2},{value:"Customizing Data Directory",id:"customizing-data-directory",level:3},{value:"Customizing parameters",id:"customizing-parameters",level:3},{value:"Sync node from snapshot",id:"sync-node-from-snapshot",level:2},{value:"Clone the dockerfile repository",id:"clone-the-dockerfile-repository",level:3},{value:"Acquire the snapshot you need",id:"acquire-the-snapshot-you-need",level:3},{value:"Set up the snapshot data",id:"set-up-the-snapshot-data",level:3},{value:"4. Run the Node",id:"4-run-the-node",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["This guide will help you start a full node running in the docker container using ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node",children:"run-morph-node"})]}),"\n",(0,t.jsx)(n.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["The instructions outlined below detail the procedure for running a full node on the mainnet. To set up and operate a ",(0,t.jsx)(n.strong,{children:"Holesky node"}),", you need to follow the tutorial on ",(0,t.jsx)(n.a,{href:"#sync-node-from-snapshot",children:(0,t.jsx)(n.code,{children:"sync node from snapshot"})}),"."]})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Clone the dockerfile repository"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/morph-l2/run-morph-node.git\n"})}),"\n",(0,t.jsxs)(n.ol,{start:"2",children:["\n",(0,t.jsx)(n.li,{children:"Run the following command"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cd morph-node\nmake run-node\n"})}),"\n",(0,t.jsxs)(n.p,{children:["The command ",(0,t.jsx)(n.code,{children:"make run-node"})," takes the ",(0,t.jsx)(n.code,{children:"../mainnet"})," as your node's ",(0,t.jsx)(n.strong,{children:"Home"})," directory by default. There will be two folders in the ",(0,t.jsx)(n.strong,{children:"Home"})," directory named ",(0,t.jsx)(n.code,{children:"geth-data"})," and ",(0,t.jsx)(n.code,{children:"node-data"}),", serving as data directories for the execution client and consensus client of the morph ndoe, respectively."]}),"\n",(0,t.jsxs)(n.p,{children:["This command will also generate the ",(0,t.jsx)(n.code,{children:"secret-jwt.txt"})," file under ",(0,t.jsx)(n.strong,{children:"Home"})," directory for the authentication during RPC calls between the execution client and consensus client."]}),"\n",(0,t.jsx)(n.h2,{id:"advanced-usage",children:"Advanced Usage"}),"\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.a,{href:"#quick-start",children:"Quick Start"})," guide above, you can quickly start a node using the default configuration files. However, we also support customizing the node's data directory and parameter settings."]}),"\n",(0,t.jsx)(n.h3,{id:"customizing-data-directory",children:"Customizing Data Directory"}),"\n",(0,t.jsxs)(n.p,{children:["The host directory paths that are mounted by the Docker container are specified in the ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="morph-node/.env"',children:"// HOME folder for morph node\nMORPH_HOME=../mainnet\n// Flag indicates the network for execution client.\nMORPH_FLAG=morph\n// Location of the jwt file for the authentication between clients\nJWT_SECRET_FILE=${MORPH_HOME}/jwt-secret.txt\n// The entrypoint shell script for start execution client \nGETH_ENTRYPOINT_FILE=./entrypoint-geth.sh\n// The snapshot name for Morph node \nMAINNET_SNAPSHOT_NAME=snapshot-20241218-1\n\n......\n"})}),"\n",(0,t.jsx)(n.p,{children:"You have the flexibility to customize the directory paths as per your requirements."}),"\n",(0,t.jsxs)(n.p,{children:["Please note that if you have customized the ",(0,t.jsx)(n.strong,{children:"HOME"})," directory of your node, you need to copy the necessary configuration files to this directory. Specifically, you should copy the ",(0,t.jsx)(n.code,{children:"node-data"})," and ",(0,t.jsx)(n.code,{children:"geth-data"})," from ",(0,t.jsx)(n.code,{children:"./mainnet"})," to your ",(0,t.jsx)(n.strong,{children:"HOME"})," directory."]}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["For running a testnet node, the ",(0,t.jsx)(n.code,{children:"morph-node/.env_holesky"})," file should be used instead of the ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file."]})}),"\n",(0,t.jsx)(n.h3,{id:"customizing-parameters",children:"Customizing parameters"}),"\n",(0,t.jsxs)(n.p,{children:["The default configuration required for mainnet node startup is located in the ",(0,t.jsx)(n.code,{children:"./mainnet"})," directory, while the files under ",(0,t.jsx)(n.code,{children:"./holesky"})," directory is used for testnet node startup."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-javascript",children:"\u2514\u2500\u2500 mainnet\n \u251c\u2500\u2500 geth-data\n \u2502\xa0\xa0 \u2514\u2500\u2500 static-nodes.json\n \u2514\u2500\u2500 node-data\n \u251c\u2500\u2500 config\n \u2502\xa0\xa0 \u251c\u2500\u2500 config.toml\n \u2502\xa0\xa0 \u2514\u2500\u2500 genesis.json\n \u2514\u2500\u2500 data\n\n// for testnet nodes\n\u2514\u2500\u2500 holesky\n \u251c\u2500\u2500 geth-data\n \u2502\xa0\xa0 \u2514\u2500\u2500 static-nodes.json\n \u2514\u2500\u2500 node-data\n \u251c\u2500\u2500 config\n \u2502\xa0\xa0 \u251c\u2500\u2500 config.toml\n \u2502\xa0\xa0 \u2514\u2500\u2500 genesis.json\n \u2514\u2500\u2500 data\n"})}),"\n",(0,t.jsxs)(n.p,{children:["If you wish to modify the Geth startup command, you can do so by editing the ",(0,t.jsx)(n.code,{children:"./morph-node/entrypoint-geth.sh"})," file. For adjustments to the Tendermint-related configuration parameters, you should modify the ",(0,t.jsx)(n.code,{children:"node-data/config/config.toml"})," file."]}),"\n",(0,t.jsx)(n.h2,{id:"sync-node-from-snapshot",children:"Sync node from snapshot"}),"\n",(0,t.jsx)(n.p,{children:"We suggest starting your node sync from a snapshot to speed up the process of syncing your node to the latest state."}),"\n",(0,t.jsx)(n.h3,{id:"clone-the-dockerfile-repository",children:"Clone the dockerfile repository"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/morph-l2/run-morph-node.git\n"})}),"\n",(0,t.jsx)(n.h3,{id:"acquire-the-snapshot-you-need",children:"Acquire the snapshot you need"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," configuration file in the repository you just cloned is designed for setting up the Morph node on the mainnet. By default, it is pre-configured to use the latest snapshot."]}),"\n",(0,t.jsxs)(n.p,{children:["If you need a historical snapshot, you must manually update the ",(0,t.jsx)(n.strong,{children:"SNAPSHOT_NAME"})," in the ",(0,t.jsx)(n.code,{children:"morph-node/.env"})," file. (Note: For the ",(0,t.jsx)(n.strong,{children:"testnet"}),", the corresponding file is ",(0,t.jsx)(n.code,{children:"morph-node/.env_holesky"}),".)"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Fetch historical snapshot(Optional)"}),":"]}),"\n",(0,t.jsxs)(n.p,{children:["The historical snapshots are recorded in ",(0,t.jsx)(n.a,{href:"https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information",children:"snapshot-information"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"// ...\n\nMAINNET_SNAPSHOT_NAME={your expected snapshot name} \n\n// ...\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Execute download and decompress the snapshot for your network"}),":"]}),"\n",(0,t.jsx)(n.p,{children:"Run the following command to download and decompress the snapshot for your network:"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"For mainnet"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd ./morph-node\nmake download-and-decompress-mainnet-snapshot\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"For testnet"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"cd ./morph-node\nmake download-and-decompress-holesky-snapshot\n"})}),"\n",(0,t.jsx)(n.p,{children:"The command will assist you in downloading and decompressing the snapshot archive."}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"set-up-the-snapshot-data",children:"Set up the snapshot data"}),"\n",(0,t.jsxs)(n.p,{children:["After downloading, locate the snapshot by placing the decompressed data files in the correct directory specified by the ",(0,t.jsx)(n.strong,{children:"MORPH_HOME"})," path in your ",(0,t.jsx)(n.code,{children:".env"})," file. Ensure the data files align with the node's expected structure to allow seamless synchronization."]}),"\n",(0,t.jsxs)(n.p,{children:["For example, if the snapshot folder is named ",(0,t.jsx)(n.code,{children:"snapshot-20241218-1"}),","]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["move the directory ",(0,t.jsx)(n.code,{children:"snapshot-20241218-1/geth"})," to the ",(0,t.jsx)(n.code,{children:"${MORPH_HOME}/geth-data"})," directory"]}),"\n",(0,t.jsxs)(n.li,{children:["move the contents from ",(0,t.jsx)(n.code,{children:"snapshot-20241218-1/data"})," to the ",(0,t.jsx)(n.code,{children:"${NODE_DATA_DIR}/data"})," directory."]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"mv ./morph-node/snapshot-20241218-1/geth ${MORPH_HOME}/geth-data\nmv ./morph-node/snapshot-20241218-1/data/* ${MORPH_HOME}/node-data/data\n"})}),"\n",(0,t.jsx)(n.p,{children:"The folder structure will be like"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-javascript",children:"\u2514\u2500\u2500 ${MORPH_HOME}\n \u251c\u2500\u2500 geth-data // data directory for geth\n \u2502\xa0\xa0 \u2514\u2500\u2500 static-nodes.json\n \u2502\xa0\xa0 \u2514\u2500\u2500 geth // directory from snapshot/geth \n \u2514\u2500\u2500 node-data // data directory for node\n \u251c\u2500\u2500 config\n \u2502\xa0\xa0 \u251c\u2500\u2500 config.toml\n \u2502\xa0\xa0 \u2514\u2500\u2500 genesis.json\n \u2514\u2500\u2500 data // data directory from snapshot/node\n"})}),"\n",(0,t.jsx)(n.h3,{id:"4-run-the-node",children:"4. Run the Node"}),"\n",(0,t.jsxs)(n.p,{children:["With the snapshot and configuration files ready, navigate to the ",(0,t.jsx)(n.code,{children:"morph-node"})," folder under your cloned repository, and start the node using the provided command"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"make run-node\n"})}),"\n",(0,t.jsx)(n.p,{children:"For testnet, run"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"make run-holesky-node\n"})})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},1582:(e,n,o)=>{o.d(n,{R:()=>d,x:()=>i});var t=o(758);const r={},s=t.createContext(r);function d(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/ff883f18.ab8b891b.js b/build/assets/js/ff883f18.ab8b891b.js deleted file mode 100644 index 939dea593..000000000 --- a/build/assets/js/ff883f18.ab8b891b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[999],{1060:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>a,frontMatter:()=>c,metadata:()=>d,toc:()=>t});var r=n(6070),i=n(1582);const c={},o="Interface: CoreCrossChainMessage",d={id:"build-on-morph/sdk/interfaces/CoreCrossChainMessage",title:"CoreCrossChainMessage",description:"@morph-l2/sdk \u2022 Docs",source:"@site/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.md",sourceDirName:"build-on-morph/sdk/interfaces",slug:"/build-on-morph/sdk/interfaces/CoreCrossChainMessage",permalink:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",draft:!1,unlisted:!1,editUrl:"https://github.com/morph-l2/morph-doc/tree/main/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.md",tags:[],version:"current",frontMatter:{}},l={},t=[{value:"Extended by",id:"extended-by",level:2},{value:"Properties",id:"properties",level:2},{value:"message",id:"message",level:3},{value:"Source",id:"source",level:4},{value:"messageNonce",id:"messagenonce",level:3},{value:"Source",id:"source-1",level:4},{value:"minGasLimit",id:"mingaslimit",level:3},{value:"Source",id:"source-2",level:4},{value:"sender",id:"sender",level:3},{value:"Source",id:"source-3",level:4},{value:"target",id:"target",level:3},{value:"Source",id:"source-4",level:4},{value:"value",id:"value",level:3},{value:"Source",id:"source-5",level:4}];function h(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:(0,r.jsx)(s.strong,{children:"@morph-l2/sdk"})})," \u2022 ",(0,r.jsx)(s.strong,{children:"Docs"})]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/globals",children:"@morph-l2/sdk"})," / CoreCrossChainMessage"]}),"\n",(0,r.jsx)(s.h1,{id:"interface-corecrosschainmessage",children:"Interface: CoreCrossChainMessage"}),"\n",(0,r.jsx)(s.p,{children:"Core components of a cross chain message."}),"\n",(0,r.jsx)(s.h2,{id:"extended-by",children:"Extended by"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",children:(0,r.jsx)(s.code,{children:"CrossChainMessage"})})}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(s.h3,{id:"message",children:"message"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"message"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:242"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"messagenonce",children:"messageNonce"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"messageNonce"}),": ",(0,r.jsx)(s.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-1",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:243"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"mingaslimit",children:"minGasLimit"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"minGasLimit"}),": ",(0,r.jsx)(s.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-2",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:245"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"sender",children:"sender"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"sender"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-3",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:240"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"target",children:"target"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"target"}),": ",(0,r.jsx)(s.code,{children:"string"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-4",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:241"}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsx)(s.h3,{id:"value",children:"value"}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"value"}),": ",(0,r.jsx)(s.code,{children:"BigNumber"})]}),"\n"]}),"\n",(0,r.jsx)(s.h4,{id:"source-5",children:"Source"}),"\n",(0,r.jsx)(s.p,{children:"src/interfaces/types.ts:244"})]})}function a(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1582:(e,s,n)=>{n.d(s,{R:()=>o,x:()=>d});var r=n(758);const i={},c=r.createContext(i);function o(e){const s=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/build/assets/js/main.16291c43.js b/build/assets/js/main.16291c43.js deleted file mode 100644 index 44a6a6e68..000000000 --- a/build/assets/js/main.16291c43.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.16291c43.js.LICENSE.txt */ -(self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[]).push([[8792],{2525:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>j,E8:()=>Zn,a1:()=>Qn});var r=n(758);n(8143);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t,n,r,o,a,i){try{var s=e[a](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,o)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){a(i,r,o,s,l,"next",e)}function l(e){a(i,r,o,s,l,"throw",e)}s(void 0)}))}}function s(e,t,n){return t=f(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,h()?Reflect.construct(t,n||[],f(e).constructor):t.apply(e,n))}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,x(r.key),r)}}function u(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(null,arguments)}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&w(e,t)}function h(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(h=function(){return!!e})()}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function v(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function y(){y=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var a=t&&t.prototype instanceof b?t:b,i=Object.create(a.prototype),s=new L(r||[]);return o(i,"_invoke",{value:O(e,n,s)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",f="suspendedYield",m="executing",h="completed",g={};function b(){}function v(){}function w(){}var k={};c(k,i,(function(){return this}));var S=Object.getPrototypeOf,x=S&&S(S(P([])));x&&x!==n&&r.call(x,i)&&(k=x);var E=w.prototype=b.prototype=Object.create(k);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function n(o,a,i,s){var l=d(e[o],e,a);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==typeof u&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,s)}),(function(e){n("throw",e,i,s)})):t.resolve(u).then((function(e){c.value=e,i(c)}),(function(e){return n("throw",e,i,s)}))}s(l.arg)}var a;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return a=a?a.then(o,o):o()}})}function O(t,n,r){var o=p;return function(a,i){if(o===m)throw Error("Generator is already running");if(o===h){if("throw"===a)throw i;return{value:e,done:!0}}for(r.method=a,r.arg=i;;){var s=r.delegate;if(s){var l=A(s,r);if(l){if(l===g)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=h,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=m;var c=d(t,n,r);if("normal"===c.type){if(o=r.done?h:f,c.arg===g)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=h,r.method="throw",r.arg=c.arg)}}}function A(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,A(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var a=d(o,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,g;var i=a.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function P(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function n(){for(;++o<t.length;)if(r.call(t,o))return n.value=t[o],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}throw new TypeError(typeof t+" is not iterable")}return v.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:v,configurable:!0}),v.displayName=c(w,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===v||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,c(e,l,"GeneratorFunction")),e.prototype=Object.create(E),e},t.awrap=function(e){return{__await:e}},C(_.prototype),c(_.prototype,s,(function(){return this})),t.AsyncIterator=_,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var i=new _(u(e,n,r,o),a);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},C(E),c(E,l,"Generator"),c(E,i,(function(){return this})),c(E,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=P,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(r,o){return s.type="throw",s.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var l=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(l&&c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,g):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;j(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:P(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}function w(e,t){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},w(e,t)}function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw o}}return s}}(e,t)||E(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}function E(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function C(e){var t="function"==typeof Map?new Map:void 0;return C=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(h())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var o=new(e.bind.apply(e,r));return n&&w(o,n.prototype),o}(e,arguments,f(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),w(n,e)},C(e)}function _(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function O(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var A=["translations"],T="Ctrl",j=r.forwardRef((function(e,t){var n=e.translations,o=void 0===n?{}:n,a=v(e,A),i=o.buttonText,s=void 0===i?"Search":i,l=o.buttonAriaLabel,c=void 0===l?"Search":l,u=k((0,r.useState)(null),2),d=u[0],f=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(T))}),[]),r.createElement("button",p({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},a,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(O,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement(L,{reactsToKey:d===T?T:"Meta"},d===T?r.createElement(_,null):d),r.createElement(L,{reactsToKey:"k"},"K"))))}));function L(e){var t=e.reactsToKey,n=e.children,o=k((0,r.useState)(!1),2),a=o[0],i=o[1];return(0,r.useEffect)((function(){if(t)return window.addEventListener("keydown",e),window.addEventListener("keyup",n),function(){window.removeEventListener("keydown",e),window.removeEventListener("keyup",n)};function e(e){e.key===t&&i(!0)}function n(e){e.key!==t&&"Meta"!==e.key||i(!1)}}),[t]),r.createElement("kbd",{className:a?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},n)}function P(e,t){var n=void 0;return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,o)}),t)}}function D(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var R=0;function N(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}function I(e){return e!==Object(e)}function M(e,t){if(e===t)return!0;if(I(e)||I(t)||"function"==typeof e||"function"==typeof t)return e===t;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n=0,r=Object.keys(e);n<r.length;n++){var o=r[n];if(!(o in t))return!1;if(!M(e[o],t[o]))return!1}return!0}var F=function(){},B=[{segment:"autocomplete-core",version:"1.9.3"}];function z(e){var t=e.item,n=e.items;return{index:t.__autocomplete_indexName,items:[t],positions:[1+n.findIndex((function(e){return e.objectID===t.objectID}))],queryID:t.__autocomplete_queryID,algoliaSource:["autocomplete"]}}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var q=["items"],$=["items"];function H(e){return H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(e)}function G(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return V(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?V(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function W(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function K(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K(Object(n),!0).forEach((function(t){Z(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Z(e,t,n){return(t=function(e){var t=function(e){if("object"!==H(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==H(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===H(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e){return e.map((function(e){var t=e.items,n=W(e,q);return Q(Q({},n),{},{objectIDs:(null==t?void 0:t.map((function(e){return e.objectID})))||n.objectIDs})}))}function J(e){var t,n,r,o=(t=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?U(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}((e.version||"").split(".").map(Number),2),n=t[0],r=t[1],n>=3||2===n&&r>=4||1===n&&r>=10);function a(t,n,r){if(o&&void 0!==r){var a=r[0].__autocomplete_algoliaCredentials,i={"X-Algolia-Application-Id":a.appId,"X-Algolia-API-Key":a.apiKey};e.apply(void 0,[t].concat(G(n),[{headers:i}]))}else e.apply(void 0,[t].concat(G(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("clickedObjectIDsAfterSearch",Y(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("clickedObjectIDs",Y(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.length>0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("convertedObjectIDsAfterSearch",Y(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("convertedObjectIDs",Y(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.length>0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&t.reduce((function(e,t){var n=t.items,r=W(t,$);return[].concat(G(e),G(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r<e.objectIDs.length;r+=t)n.push(Q(Q({},e),{},{objectIDs:e.objectIDs.slice(r,r+t)}));return n}(Q(Q({},r),{},{objectIDs:(null==n?void 0:n.map((function(e){return e.objectID})))||r.objectIDs})).map((function(e){return{items:n,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return a("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.length>0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function X(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function ee(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}function ne(e){return function(e){if(Array.isArray(e))return re(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return re(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ae(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(n),!0).forEach((function(t){ie(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ie(e,t,n){return(t=function(e){var t=function(e){if("object"!==te(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===te(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var se="2.6.0",le="https://cdn.jsdelivr.net/npm/search-insights@".concat(se,"/dist/search-insights.min.js"),ce=P((function(e){var t=e.onItemsChange,n=e.items,r=e.insights,o=e.state;t({insights:r,insightsEvents:X({items:n}).map((function(e){return ae({eventName:"Items Viewed"},e)})),state:o})}),400);function ue(e){var t=function(e){return ae({onItemsChange:function(e){var t=e.insights,n=e.insightsEvents;t.viewedObjectIDs.apply(t,ne(n.map((function(e){return ae(ae({},e),{},{algoliaSource:[].concat(ne(e.algoliaSource||[]),["autocomplete-internal"])})}))))},onSelect:function(e){var t=e.insights,n=e.insightsEvents;t.clickedObjectIDsAfterSearch.apply(t,ne(n.map((function(e){return ae(ae({},e),{},{algoliaSource:[].concat(ne(e.algoliaSource||[]),["autocomplete-internal"])})}))))},onActive:F},e)}(e),n=t.insightsClient,r=t.onItemsChange,o=t.onSelect,a=t.onActive,i=n;n||"undefined"!=typeof window&&function(e){var t=e.window,n=t.AlgoliaAnalyticsObject||"aa";"string"==typeof n&&(i=t[n]),i||(t.AlgoliaAnalyticsObject=n,t[n]||(t[n]=function(){t[n].queue||(t[n].queue=[]);for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];t[n].queue.push(r)}),t[n].version=se,i=t[n],function(e){var t="[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete";try{var n=e.document.createElement("script");n.async=!0,n.src=le,n.onerror=function(){console.error(t)},document.body.appendChild(n)}catch(e){console.error(t)}}(t))}({window:window});var s=J(i),l={current:[]},c=P((function(e){var t=e.state;if(t.isOpen){var n=t.collections.reduce((function(e,t){return[].concat(ne(e),ne(t.items))}),[]).filter(ee);M(l.current.map((function(e){return e.objectID})),n.map((function(e){return e.objectID})))||(l.current=n,n.length>0&&ce({onItemsChange:r,items:n,insights:s,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;i("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:s}}),n((function(e){var t=e.item,n=e.state,r=e.event;ee(t)&&o({state:n,event:r,insights:s,item:t,insightsEvents:[ae({eventName:"Item Selected"},z({item:t,items:l.current}))]})})),r((function(e){var t=e.item,n=e.state,r=e.event;ee(t)&&a({state:n,event:r,insights:s,item:t,insightsEvents:[ae({eventName:"Item Active"},z({item:t,items:l.current}))]})}))},onStateChange:function(e){var t=e.state;c({state:t})},__autocomplete_pluginOptions:e}}function de(e,t){var n=t;return{then:function(t,r){return de(e.then(fe(t,n,e),fe(r,n,e)),n)},catch:function(t){return de(e.catch(fe(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),de(e.finally(fe(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function pe(e){return de(e,{isCanceled:!1,onCancelList:[]})}function fe(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function me(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ge(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){be(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function be(e,t,n){return(t=function(e){var t=function(e){if("object"!==ve(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==ve(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ve(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function ye(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,a=0;!1===r;){var i=t.collections[o];if(i===n){r=!0;break}a+=i.items.length,o++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}var we=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function ke(e){return ke="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ke(e)}function Se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xe(e,t,n){return(t=function(e){var t=function(e){if("object"!==ke(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==ke(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ke(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ee(e){return Ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ee(e)}function Ce(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ce(Object(n),!0).forEach((function(t){Oe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Oe(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ee(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ee(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ee(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ae(e){return Ae="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ae(e)}function Te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?je(Object(n),!0).forEach((function(t){Pe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):je(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Pe(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ae(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ae(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ae(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function De(e,t){var n,r="undefined"!=typeof window?window:{},o=e.plugins||[];return Le(Le({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,insights:!1,environment:r,shouldPanelOpen:function(e){return N(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(R++),plugins:o,initialState:Le({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(function(e){return function(e){if(Array.isArray(e))return Te(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:F,onResolve:F};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=ge(ge({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return D(e)})).then((function(e){return e.map((function(e){return Le(Le({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Le({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Re(e){return Re="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}function Ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ne(Object(n),!0).forEach((function(t){Me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Me(e,t,n){return(t=function(e){var t=function(e){if("object"!==Re(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Re(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Re(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fe(e){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(e)}function Be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Be(Object(n),!0).forEach((function(t){Ue(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ue(e,t,n){return(t=function(e){var t=function(e){if("object"!==Fe(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Fe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Fe(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(e){return function(e){if(Array.isArray(e))return $e(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return $e(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$e(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function He(e){return Boolean(e.execute)}function Ge(e){var t=e.reduce((function(e,t){if(!He(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,a=t.requests,i=e.find((function(e){return He(t)&&He(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o}));if(i){var s;(s=i.items).push.apply(s,qe(a))}else{var l={execute:r,requesterId:o,items:a,searchClient:n};e.push(l)}return e}),[]).map((function(e){if(!He(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return D(e)}))}function Ve(e){return Ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ve(e)}var We=["event","nextState","props","query","refresh","store"];function Ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Qe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ke(Object(n),!0).forEach((function(t){Ze(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ze(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ve(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ve(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ve(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ye,Je,Xe,et=null,tt=(Ye=-1,Je=-1,Xe=void 0,function(e){var t=++Ye;return Promise.resolve(e).then((function(e){return Xe&&t<Je?Xe:(Je=t,Xe=e,e)}))});function nt(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,o=e.props,a=e.query,i=e.refresh,s=e.store,l=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,We);et&&o.environment.clearTimeout(et);var c=l.setCollections,u=l.setIsOpen,d=l.setQuery,p=l.setActiveItemId,f=l.setStatus;if(d(a),p(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var m,h=s.getState().collections.map((function(e){return Qe(Qe({},e),{},{items:[]})}));f("idle"),c(h),u(null!==(m=r.isOpen)&&void 0!==m?m:o.shouldPanelOpen({state:s.getState()}));var g=pe(tt(h).then((function(){return Promise.resolve()})));return s.pendingRequests.add(g)}f("loading"),et=o.environment.setTimeout((function(){f("stalled")}),o.stallThreshold);var b=pe(tt(o.getSources(Qe({query:a,refresh:i,state:s.getState()},l)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(Qe({query:a,refresh:i,state:s.getState()},l))).then((function(t){return function(e,t,n){if(o=e,Boolean(null==o?void 0:o.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(qe(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return ze(ze({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?ze(ze({},n),{},{params:ze(ze({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var o;return{items:e,sourceId:t}}(t,e.sourceId,s.getState())}))}))).then(Ge).then((function(t){return function(e,t,n){return t.map((function(t){var r,o=e.filter((function(e){return e.sourceId===t.sourceId})),a=o.map((function(e){return e.items})),i=o[0].transformResponse,s=i?i({results:r=a,hits:r.map((function(e){return e.hits})).filter(Boolean),facetHits:r.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}):a;return t.onResolve({source:t,results:a,items:s,state:n.getState()}),s.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:s}}))}(t,e,s)})).then((function(e){return function(e){var t=e.props,n=e.state,r=e.collections.reduce((function(e,t){return Ie(Ie({},e),{},Me({},t.source.sourceId,Ie(Ie({},t.source),{},{getItems:function(){return D(t.items)}})))}),{}),o=t.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:r,state:n}).sourcesBySourceId;return D(t.reshape({sourcesBySourceId:o,sources:Object.values(o),state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:s.getState()})}))})))).then((function(e){var n;f("idle"),c(e);var d=o.shouldPanelOpen({state:s.getState()});u(null!==(n=r.isOpen)&&void 0!==n?n:o.openOnFocus&&!a&&d||d);var p=ye(s.getState());if(null!==s.getState().activeItemId&&p){var m=p.item,h=p.itemInputValue,g=p.itemUrl,b=p.source;b.onActive(Qe({event:t,item:m,itemInputValue:h,itemUrl:g,refresh:i,source:b,state:s.getState()},l))}})).finally((function(){f("idle"),et&&o.environment.clearTimeout(et)}));return s.pendingRequests.add(b)}function rt(e){return rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rt(e)}var ot=["event","props","refresh","store"];function at(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function it(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?at(Object(n),!0).forEach((function(t){st(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):at(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function st(e,t,n){return(t=function(e){var t=function(e){if("object"!==rt(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===rt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function lt(e){return lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lt(e)}var ct=["props","refresh","store"],ut=["inputElement","formElement","panelElement"],dt=["inputElement"],pt=["inputElement","maxLength"],ft=["sourceIndex"],mt=["sourceIndex"],ht=["item","source","sourceIndex"];function gt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gt(Object(n),!0).forEach((function(t){vt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vt(e,t,n){return(t=function(e){var t=function(e){if("object"!==lt(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==lt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===lt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yt(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function wt(e){var t=e.props,n=e.refresh,r=e.store,o=yt(e,ct),a=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,a=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,a].some((function(t){return(n=t)===(r=e.target)||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return bt({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},yt(e,ut))},getRootProps:function(e){return bt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,bt({action:"",noValidate:!0,role:"search",onSubmit:function(a){var i;a.preventDefault(),t.onSubmit(bt({event:a,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()},onReset:function(a){var i;a.preventDefault(),t.onReset(bt({event:a,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},yt(e,dt))},getLabelProps:function(e){var n=e||{},r=n.sourceIndex,o=yt(n,ft);return bt({htmlFor:"".concat(a(t.id,r),"-input"),id:"".concat(a(t.id,r),"-label")},o)},getInputProps:function(e){var a;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&nt(bt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var s=e||{},l=(s.inputElement,s.maxLength),c=void 0===l?512:l,u=yt(s,pt),d=ye(r.getState()),p=function(e){return Boolean(e&&e.match(we))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),f=null!=d&&d.itemUrl&&!p?"go":"search";return bt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){nt(bt({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,ot);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},s=function(){var e=ye(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,s=e.itemUrl,l=e.source;l.onActive(it({event:t,item:n,itemInputValue:i,itemUrl:s,refresh:r,source:l,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?nt(it({event:t,props:n,query:o.getState().query,refresh:r,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),s(),setTimeout(i,0)})):(o.dispatch(t.key,{}),s(),i())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=ye(o.getState()),c=l.item,u=l.itemInputValue,d=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(it({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a)),n.navigator.navigateNewTab({itemUrl:d,item:c,state:o.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(it({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a)),n.navigator.navigateNewWindow({itemUrl:d,item:c,state:o.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(it({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a)),void n.navigator.navigate({itemUrl:d,item:c,state:o.getState()});nt(it({event:t,nextState:{isOpen:!1},props:n,query:u,refresh:r,store:o},a)).then((function(){p.onSelect(it({event:t,item:c,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a))}))}}}(bt({event:e,props:t,refresh:n,store:r},o))},onFocus:i,onBlur:F,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},u)},getPanelProps:function(e){return bt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.sourceIndex,o=yt(n,mt);return bt({role:"listbox","aria-labelledby":"".concat(a(t.id,r),"-label"),id:"".concat(a(t.id,r),"-list")},o)},getItemProps:function(e){var i=e.item,s=e.source,l=e.sourceIndex,c=yt(e,ht);return bt({id:"".concat(a(t.id,l),"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=ye(r.getState());if(null!==r.getState().activeItemId&&t){var a=t.item,s=t.itemInputValue,l=t.itemUrl,c=t.source;c.onActive(bt({event:e,item:a,itemInputValue:s,itemUrl:l,refresh:n,source:c,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=s.getItemInputValue({item:i,state:r.getState()}),l=s.getItemUrl({item:i,state:r.getState()});(l?Promise.resolve():nt(bt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){s.onSelect(bt({event:e,item:i,itemInputValue:a,itemUrl:l,refresh:n,source:s,state:r.getState()},o))}))}},c)}}}function kt(e){return kt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kt(e)}function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?St(Object(n),!0).forEach((function(t){Et(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):St(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Et(e,t,n){return(t=function(e){var t=function(e){if("object"!==kt(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==kt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===kt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ct(e){var t,n,r,o,a=e.plugins,i=e.options,s=null===(t=((null===(n=i.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,l=s?Et({},s,Object.keys((null===(r=i.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:xt({"autocomplete-core":Object.keys(i)},l),ua:B.concat((null===(o=i.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function _t(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=ye(n))||void 0===t?void 0:t.itemInputValue)||null}function Ot(e){return Ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ot(e)}function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?At(Object(n),!0).forEach((function(t){jt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function jt(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ot(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ot(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ot(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Lt=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return Tt(Tt({},e),{},{activeItemId:t.payload});case"setQuery":return Tt(Tt({},e),{},{query:t.payload,completion:null});case"setCollections":return Tt(Tt({},e),{},{collections:t.payload});case"setIsOpen":return Tt(Tt({},e),{},{isOpen:t.payload});case"setStatus":return Tt(Tt({},e),{},{status:t.payload});case"setContext":return Tt(Tt({},e),{},{context:Tt(Tt({},e.context),t.payload)});case"ArrowDown":var n=Tt(Tt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:me(1,e.activeItemId,N(e),t.props.defaultActiveItemId)});return Tt(Tt({},n),{},{completion:_t({state:n})});case"ArrowUp":var r=Tt(Tt({},e),{},{activeItemId:me(-1,e.activeItemId,N(e),t.props.defaultActiveItemId)});return Tt(Tt({},r),{},{completion:_t({state:r})});case"Escape":return e.isOpen?Tt(Tt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):Tt(Tt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return Tt(Tt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return Tt(Tt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return Tt(Tt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:Tt(Tt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return Tt(Tt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Pt(e){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pt(e)}function Dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Rt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dt(Object(n),!0).forEach((function(t){Nt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Nt(e,t,n){return(t=function(e){var t=function(e){if("object"!==Pt(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Pt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(e){var t=[],n=De(e,t),r=function(e,t,n){var r,o=t.initialState;return{getState:function(){return o},dispatch:function(r,a){var i=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(n),!0).forEach((function(t){xe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Se(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},o);o=e(o,{type:r,props:t,payload:a}),n({state:o,prevState:i})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally((function(){r=r.filter((function(t){return t!==e}))}))},cancelAll:function(){r.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===r.length}})}}(Lt,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(Rt({prevState:t,state:r,refresh:i,navigator:n.navigator},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return _e(_e({},e),{},{items:D(e.items).map((function(e){return _e(_e({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=wt(Rt({props:n,refresh:i,store:r,navigator:n.navigator},o));function i(){return nt(Rt({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,navigator:n.navigator,query:r.getState().query,refresh:i,store:r},o))}if(e.insights&&!n.plugins.some((function(e){return"aa.algoliaInsightsPlugin"===e.name}))){var s="boolean"==typeof e.insights?{}:e.insights;n.plugins.push(ue(s))}return n.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Rt(Rt({},o),{},{navigator:n.navigator,refresh:i,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})},onResolve:function(e){t.push({onResolve:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var a=o.document.createElement("meta"),i=o.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(r),i.appendChild(a)}),0)}}({metadata:Ct({plugins:n.plugins,options:e}),environment:n.environment}),Rt(Rt({refresh:i,navigator:n.navigator},a),o)}function Mt(e){var t=e.translations,n=(void 0===t?{}:t).searchByText,o=void 0===n?"Search by":n;return r.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},r.createElement("span",{className:"DocSearch-Label"},o),r.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},r.createElement("defs",null,r.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),r.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),r.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),r.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),r.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),r.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),r.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),r.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),r.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),r.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function Ft(e){return r.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},r.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Bt(e){var t=e.translations,n=void 0===t?{}:t,o=n.selectText,a=void 0===o?"to select":o,i=n.selectKeyAriaLabel,s=void 0===i?"Enter key":i,l=n.navigateText,c=void 0===l?"to navigate":l,u=n.navigateUpKeyAriaLabel,d=void 0===u?"Arrow up":u,p=n.navigateDownKeyAriaLabel,f=void 0===p?"Arrow down":p,m=n.closeText,h=void 0===m?"to close":m,g=n.closeKeyAriaLabel,b=void 0===g?"Escape key":g,v=n.searchByText,y=void 0===v?"Search by":v;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Logo"},r.createElement(Mt,{translations:{searchByText:y}})),r.createElement("ul",{className:"DocSearch-Commands"},r.createElement("li",null,r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(Ft,{ariaLabel:s},r.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),r.createElement("span",{className:"DocSearch-Label"},a)),r.createElement("li",null,r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(Ft,{ariaLabel:f},r.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(Ft,{ariaLabel:d},r.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),r.createElement("span",{className:"DocSearch-Label"},c)),r.createElement("li",null,r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(Ft,{ariaLabel:b},r.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),r.createElement("span",{className:"DocSearch-Label"},h))))}function zt(e){var t=e.hit,n=e.children;return r.createElement("a",{href:t.url},n)}function Ut(){return r.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},r.createElement("g",{fill:"none",fillRule:"evenodd"},r.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),r.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},r.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function qt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),r.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function $t(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Ht(){return r.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),r.createElement("path",{d:"M8 17l-6-6 6-6"})))}var Gt=function(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Vt(e){switch(e.type){case"lvl1":return r.createElement(Gt,null);case"content":return r.createElement(Kt,null);default:return r.createElement(Wt,null)}}function Wt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Kt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Qt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Zt(){return r.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function Yt(){return r.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}function Jt(e){var t=e.translations,n=void 0===t?{}:t,o=n.titleText,a=void 0===o?"Unable to fetch results":o,i=n.helpText,s=void 0===i?"You might want to check your network connection.":i;return r.createElement("div",{className:"DocSearch-ErrorScreen"},r.createElement("div",{className:"DocSearch-Screen-Icon"},r.createElement(Zt,null)),r.createElement("p",{className:"DocSearch-Title"},a),r.createElement("p",{className:"DocSearch-Help"},s))}var Xt=["translations"];function en(e){var t=e.translations,n=void 0===t?{}:t,o=v(e,Xt),a=n.noResultsText,i=void 0===a?"No results for":a,s=n.suggestedQueryText,l=void 0===s?"Try searching for":s,c=n.reportMissingResultsText,u=void 0===c?"Believe this query should return results?":c,d=n.reportMissingResultsLinkText,p=void 0===d?"Let us know.":d,f=o.state.context.searchSuggestions;return r.createElement("div",{className:"DocSearch-NoResults"},r.createElement("div",{className:"DocSearch-Screen-Icon"},r.createElement(Yt,null)),r.createElement("p",{className:"DocSearch-Title"},i,' "',r.createElement("strong",null,o.state.query),'"'),f&&f.length>0&&r.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},r.createElement("p",{className:"DocSearch-Help"},l,":"),r.createElement("ul",null,f.slice(0,3).reduce((function(e,t){return[].concat(S(e),[r.createElement("li",{key:t},r.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){o.setQuery(t.toLowerCase()+" "),o.refresh(),o.inputRef.current.focus()}},t))])}),[]))),o.getMissingResultsUrl&&r.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),r.createElement("a",{href:o.getMissingResultsUrl({query:o.state.query}),target:"_blank",rel:"noopener noreferrer"},p)))}var tn=["hit","attribute","tagName"];function nn(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function rn(e){var t=e.hit,n=e.attribute,o=e.tagName,a=void 0===o?"span":o,i=v(e,tn);return(0,r.createElement)(a,b(b({},i),{},{dangerouslySetInnerHTML:{__html:nn(t,"_snippetResult.".concat(n,".value"))||nn(t,n)}}))}function on(e){return e.collection&&0!==e.collection.items.length?r.createElement("section",{className:"DocSearch-Hits"},r.createElement("div",{className:"DocSearch-Hit-source"},e.title),r.createElement("ul",e.getListProps(),e.collection.items.map((function(t,n){return r.createElement(an,p({key:[e.title,t.objectID].join(":"),item:t,index:n},e))})))):null}function an(e){var t=e.item,n=e.index,o=e.renderIcon,a=e.renderAction,i=e.getItemProps,s=e.onItemClick,l=e.collection,c=e.hitComponent,u=k(r.useState(!1),2),d=u[0],f=u[1],m=k(r.useState(!1),2),h=m[0],g=m[1],b=r.useRef(null),v=c;return r.createElement("li",p({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",d&&"DocSearch-Hit--deleting",h&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){b.current&&b.current()}},i({item:t,source:l.source,onClick:function(e){s(t,e)}})),r.createElement(v,{hit:t},r.createElement("div",{className:"DocSearch-Hit-Container"},o({item:t,index:n}),t.hierarchy[t.type]&&"lvl1"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(rn,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&r.createElement(rn,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(rn,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),r.createElement(rn,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(rn,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),r.createElement(rn,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),a({item:t,runDeleteTransition:function(e){f(!0),b.current=e},runFavoriteTransition:function(e){g(!0),b.current=e}}))))}function sn(e,t,n){return e.reduce((function(e,r){var o=t(r);return e.hasOwnProperty(o)||(e[o]=[]),e[o].length<(n||5)&&e[o].push(r),e}),{})}function ln(e){return e}function cn(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function un(){}var dn=/(<mark>|<\/mark>)/g,pn=RegExp(dn.source);function fn(e){var t,n,r=e;if(!r.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var o=r.__docsearch_parent?null===(t=r.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(n=e._highlightResult)||void 0===n||null===(n=n.hierarchy)||void 0===n?void 0:n.lvl0;return o?o.value&&pn.test(o.value)?o.value.replace(dn,""):o.value:e.hierarchy.lvl0}function mn(e){return r.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var n=fn(t.items[0]);return r.createElement(on,p({},e,{key:t.source.sourceId,title:n,collection:t,renderIcon:function(e){var n,o=e.item,a=e.index;return r.createElement(r.Fragment,null,o.__docsearch_parent&&r.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},o.__docsearch_parent!==(null===(n=t.items[a+1])||void 0===n?void 0:n.__docsearch_parent)?r.createElement("path",{d:"M8 6v21M20 27H8.3"}):r.createElement("path",{d:"M8 6v42M20 27H8.3"}))),r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Vt,{type:o.type})))},renderAction:function(){return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement(Ht,null))}}))})),e.resultsFooterComponent&&r.createElement("section",{className:"DocSearch-HitsFooter"},r.createElement(e.resultsFooterComponent,{state:e.state})))}var hn=["translations"];function gn(e){var t=e.translations,n=void 0===t?{}:t,o=v(e,hn),a=n.recentSearchesTitle,i=void 0===a?"Recent":a,s=n.noRecentSearchesText,l=void 0===s?"No recent searches":s,c=n.saveRecentSearchButtonTitle,u=void 0===c?"Save this search":c,d=n.removeRecentSearchButtonTitle,f=void 0===d?"Remove this search from history":d,m=n.favoriteSearchesTitle,h=void 0===m?"Favorite":m,g=n.removeFavoriteSearchButtonTitle,b=void 0===g?"Remove this search from favorites":g;return"idle"===o.state.status&&!1===o.hasCollections?o.disableUserPersonalization?null:r.createElement("div",{className:"DocSearch-StartScreen"},r.createElement("p",{className:"DocSearch-Help"},l)):!1===o.hasCollections?null:r.createElement("div",{className:"DocSearch-Dropdown-Container"},r.createElement(on,p({},o,{title:i,collection:o.state.collections[0],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(qt,null))},renderAction:function(e){var t=e.item,n=e.runFavoriteTransition,a=e.runDeleteTransition;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){o.favoriteSearches.add(t),o.recentSearches.remove(t),o.refresh()}))}},r.createElement(Qt,null))),r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),a((function(){o.recentSearches.remove(t),o.refresh()}))}},r.createElement($t,null))))}})),r.createElement(on,p({},o,{title:h,collection:o.state.collections[1],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Qt,null))},renderAction:function(e){var t=e.item,n=e.runDeleteTransition;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:b,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){o.favoriteSearches.remove(t),o.refresh()}))}},r.createElement($t,null)))}})))}var bn=["translations"],vn=r.memo((function(e){var t=e.translations,n=void 0===t?{}:t,o=v(e,bn);if("error"===o.state.status)return r.createElement(Jt,{translations:null==n?void 0:n.errorScreen});var a=o.state.collections.some((function(e){return e.items.length>0}));return o.state.query?!1===a?r.createElement(en,p({},o,{translations:null==n?void 0:n.noResultsScreen})):r.createElement(mn,o):r.createElement(gn,p({},o,{hasCollections:a,translations:null==n?void 0:n.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status})),yn=["translations"];function wn(e){var t=e.translations,n=void 0===t?{}:t,o=v(e,yn),a=n.resetButtonTitle,i=void 0===a?"Clear the query":a,s=n.resetButtonAriaLabel,l=void 0===s?"Clear the query":s,c=n.cancelButtonText,u=void 0===c?"Cancel":c,d=n.cancelButtonAriaLabel,f=void 0===d?"Cancel":d,m=n.searchInputLabel,h=void 0===m?"Search":m,g=o.getFormProps({inputElement:o.inputRef.current}).onReset;return r.useEffect((function(){o.autoFocus&&o.inputRef.current&&o.inputRef.current.focus()}),[o.autoFocus,o.inputRef]),r.useEffect((function(){o.isFromSelection&&o.inputRef.current&&o.inputRef.current.select()}),[o.isFromSelection,o.inputRef]),r.createElement(r.Fragment,null,r.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:g},r.createElement("label",p({className:"DocSearch-MagnifierLabel"},o.getLabelProps()),r.createElement(O,null),r.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},h)),r.createElement("div",{className:"DocSearch-LoadingIndicator"},r.createElement(Ut,null)),r.createElement("input",p({className:"DocSearch-Input",ref:o.inputRef},o.getInputProps({inputElement:o.inputRef.current,autoFocus:o.autoFocus,maxLength:64}))),r.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":l,hidden:!o.state.query},r.createElement($t,null))),r.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:o.onClose},u))}var kn=["_highlightResult","_snippetResult"];function Sn(e){var t=e.key,n=e.limit,r=void 0===n?5:n,o=function(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(e){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}(t),a=o.getItem().slice(0,r);return{add:function(e){var t=e,n=(t._highlightResult,t._snippetResult,v(t,kn)),i=a.findIndex((function(e){return e.objectID===n.objectID}));i>-1&&a.splice(i,1),a.unshift(n),a=a.slice(0,r),o.setItem(a)},remove:function(e){a=a.filter((function(t){return t.objectID!==e.objectID})),o.setItem(a)},getAll:function(){return a}}}function xn(e){var t,n="algolia-client-js-".concat(e.key);function r(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function o(){return JSON.parse(r().getItem(n)||"{}")}function a(e){r().setItem(n,JSON.stringify(e))}return{get:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var n,r,i;return n=e.timeToLive?1e3*e.timeToLive:null,r=o(),a(i=Object.fromEntries(Object.entries(r).filter((function(e){return void 0!==k(e,2)[1].timestamp})))),n&&a(Object.fromEntries(Object.entries(i).filter((function(e){var t=k(e,2)[1],r=(new Date).getTime();return!(t.timestamp+n<r)})))),o()[JSON.stringify(t)]})).then((function(e){return Promise.all([e?e.value:n(),void 0!==e])})).then((function(e){var t=k(e,2),n=t[0],o=t[1];return Promise.all([n,o||r.miss(n)])})).then((function(e){return k(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var a=o();return a[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},r().setItem(n,JSON.stringify(a)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=o();delete t[JSON.stringify(e)],r().setItem(n,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){r().removeItem(n)}))}}}function En(e){var t=S(e.caches),n=t.shift();return void 0===n?{get:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,n.miss(e)])})).then((function(e){return k(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(e,r,o).catch((function(){return En({caches:t}).get(e,r,o)}))},set:function(e,r){return n.set(e,r).catch((function(){return En({caches:t}).set(e,r)}))},delete:function(e){return n.delete(e).catch((function(){return En({caches:t}).delete(e)}))},clear:function(){return n.clear().catch((function(){return En({caches:t}).clear()}))}}}function Cn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(n,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(n);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var i=r();return i.then((function(e){return o.miss(e)})).then((function(){return i}))},set:function(n,r){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function _n(e){var t=e.algoliaAgents,n=e.client,r=e.version,o=function(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var n="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(n)&&(t.value="".concat(t.value).concat(n)),t}};return t}(r).add({segment:n,version:r});return t.forEach((function(e){return o.add(e)})),o}var On=12e4;function An(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"up",n=Date.now();return b(b({},e),{},{status:t,lastUpdate:n,isUp:function(){return"up"===t||Date.now()-n>On},isTimedOut:function(){return"timed out"===t&&Date.now()-n<=On}})}var Tn=function(){function e(t,n){var r;return l(this,e),d(r=s(this,e,[t]),"name","AlgoliaError"),n&&(r.name=n),r}return m(e,C(Error)),u(e)}(),jn=function(){function e(t,n,r){var o;return l(this,e),d(o=s(this,e,[t,r]),"stackTrace",void 0),o.stackTrace=n,o}return m(e,Tn),u(e)}(),Ln=function(){function e(t){return l(this,e),s(this,e,["Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support.",t,"RetryError"])}return m(e,jn),u(e)}(),Pn=function(){function e(t,n,r){var o,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ApiError";return l(this,e),d(o=s(this,e,[t,r,a]),"status",void 0),o.status=n,o}return m(e,jn),u(e)}(),Dn=function(){function e(t,n){var r;return l(this,e),d(r=s(this,e,[t,"DeserializationError"]),"response",void 0),r.response=n,r}return m(e,Tn),u(e)}(),Rn=function(){function e(t,n,r,o){var a;return l(this,e),d(a=s(this,e,[t,n,o,"DetailedApiError"]),"error",void 0),a.error=r,a}return m(e,Pn),u(e)}();function Nn(e,t,n){var r,o=(r=n,Object.keys(r).filter((function(e){return void 0!==r[e]})).sort().map((function(e){return"".concat(e,"=").concat(encodeURIComponent("[object Array]"===Object.prototype.toString.call(r[e])?r[e].join(","):r[e]).replace(/\+/g,"%20"))})).join("&")),a="".concat(e.protocol,"://").concat(e.url).concat(e.port?":".concat(e.port):"","/").concat("/"===t.charAt(0)?t.substring(1):t);return o.length&&(a+="?".concat(o)),a}function In(e,t){if("GET"!==e.method&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:b(b({},e.data),t.data);return JSON.stringify(n)}}function Mn(e,t,n){var r=b(b(b({Accept:"application/json"},e),t),n),o={};return Object.keys(r).forEach((function(e){var t=r[e];o[e.toLowerCase()]=t})),o}function Fn(e){try{return JSON.parse(e.content)}catch(t){throw new Dn(t.message,e)}}function Bn(e,t){var n=e.content,r=e.status;try{var o=JSON.parse(n);return"error"in o?new Rn(o.message,r,o.error,t):new Pn(o.message,r,t)}catch(e){}return new Pn(n,r,t)}function zn(e){return e.map((function(e){return Un(e)}))}function Un(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return b(b({},e),{},{request:b(b({},e.request),{},{headers:b(b({},e.request.headers),t)})})}var qn=["appId","apiKey","authMode","algoliaAgents"],$n=["params"],Hn="5.12.0";function Gn(e){return[{url:"".concat(e,"-dsn.algolia.net"),accept:"read",protocol:"https"},{url:"".concat(e,".algolia.net"),accept:"write",protocol:"https"}].concat(function(e){for(var t=e,n=e.length-1;n>0;n--){var r=Math.floor(Math.random()*(n+1)),o=e[n];t[n]=e[r],t[r]=o}return t}([{url:"".concat(e,"-1.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-2.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-3.algolianet.com"),accept:"readWrite",protocol:"https"}]))}var Vn="3.6.3";function Wn(e,t,n){return r.useMemo((function(){var r=function(e,t){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!t||"string"!=typeof t)throw new Error("`apiKey` is missing.");return function(e){var t=e.appId,n=e.apiKey,r=e.authMode,o=e.algoliaAgents,a=v(e,qn),s=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"WithinHeaders",r={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:function(){return"WithinHeaders"===n?r:{}},queryParameters:function(){return"WithinQueryParameters"===n?r:{}}}}(t,n,r),l=function(e){var t=e.hosts,n=e.hostsCache,r=e.baseHeaders,o=e.logger,a=e.baseQueryParameters,s=e.algoliaAgent,l=e.timeouts,c=e.requester,u=e.requestsCache,d=e.responsesCache;function p(e){return f.apply(this,arguments)}function f(){return(f=i(y().mark((function e(t){var r,o,a,i,s;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map((function(e){return n.get(e,(function(){return Promise.resolve(An(e))}))})));case 2:return r=e.sent,o=r.filter((function(e){return e.isUp()})),a=r.filter((function(e){return e.isTimedOut()})),i=[].concat(S(o),S(a)),s=i.length>0?i:t,e.abrupt("return",{hosts:s,getTimeout:function(e,t){return(0===a.length&&0===e?1:a.length+3+e)*t}});case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function m(e,t){return h.apply(this,arguments)}function h(){return h=i(y().mark((function e(u,d){var f,m,h,g,v,w,k,x,E,C,_,O,A,T=arguments;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(f=!(T.length>2&&void 0!==T[2])||T[2],m=[],h=In(u,d),g=Mn(r,u.headers,d.headers),v="GET"===u.method?b(b({},u.data),d.data):{},w=b(b(b({},a),u.queryParameters),v),s.value&&(w["x-algolia-agent"]=s.value),d&&d.queryParameters)for(k=0,x=Object.keys(d.queryParameters);k<x.length;k++)E=x[k],d.queryParameters[E]&&"[object Object]"!==Object.prototype.toString.call(d.queryParameters[E])?w[E]=d.queryParameters[E].toString():w[E]=d.queryParameters[E];return C=0,_=function(){var e=i(y().mark((function e(t,r){var a,i,s,p,v,k;return y().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==(a=t.pop())){e.next=3;break}throw new Ln(zn(m));case 3:return i=b(b({},l),d.timeouts),s={data:h,headers:g,method:u.method,url:Nn(a,u.path,w),connectTimeout:r(C,i.connect),responseTimeout:r(C,f?i.read:i.write)},p=function(e){var n={request:s,response:e,host:a,triesLeft:t.length};return m.push(n),n},e.next=8,c.send(s);case 8:if(S=(y=v=e.sent).isTimedOut,x=y.status,!(S||function(e){return!e.isTimedOut&&!~~e.status}({isTimedOut:S,status:x})||2!=~~(x/100)&&4!=~~(x/100))){e.next=16;break}return k=p(v),v.isTimedOut&&C++,o.info("Retryable failure",Un(k)),e.next=15,n.set(a,An(a,v.isTimedOut?"timed out":"down"));case 15:return e.abrupt("return",_(t,r));case 16:if(2!=~~(v.status/100)){e.next=18;break}return e.abrupt("return",Fn(v));case 18:throw p(v),Bn(v,m);case 20:case"end":return e.stop()}var y,S,x}),e)})));return function(t,n){return e.apply(this,arguments)}}(),O=t.filter((function(e){return"readWrite"===e.accept||(f?"read"===e.accept:"write"===e.accept)})),e.next=13,p(O);case 13:return A=e.sent,e.abrupt("return",_(S(A.hosts).reverse(),A.getTimeout));case 15:case"end":return e.stop()}}),e)}))),h.apply(this,arguments)}return{hostsCache:n,requester:c,timeouts:l,logger:o,algoliaAgent:s,baseHeaders:r,baseQueryParameters:a,hosts:t,request:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.useReadTransporter||"GET"===e.method;if(!n)return m(e,t,n);var o=function(){return m(e,t)};if(!0!==(t.cacheable||e.cacheable))return o();var i={request:e,requestOptions:t,transporter:{queryParameters:a,headers:r}};return d.get(i,(function(){return u.get(i,(function(){return u.set(i,o()).then((function(e){return Promise.all([u.delete(i),e])}),(function(e){return Promise.all([u.delete(i),Promise.reject(e)])})).then((function(e){var t=k(e,2);return t[0],t[1]}))}))}),{miss:function(e){return d.set(i,e)}})},requestsCache:u,responsesCache:d}}(b(b({hosts:Gn(t)},a),{},{algoliaAgent:_n({algoliaAgents:o,client:"Lite",version:Hn}),baseHeaders:b(b({"content-type":"text/plain"},s.headers()),a.baseHeaders),baseQueryParameters:b(b({},s.queryParameters()),a.baseQueryParameters)}));return{transporter:l,appId:t,clearCache:function(){return Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then((function(){}))},get _ua(){return l.algoliaAgent.value},addAlgoliaAgent:function(e,t){l.algoliaAgent.add({segment:e,version:t})},setClientApiKey:function(e){var t=e.apiKey;r&&"WithinHeaders"!==r?l.baseQueryParameters["x-algolia-api-key"]=t:l.baseHeaders["x-algolia-api-key"]=t},searchForHits:function(e,t){return this.search(e,t)},searchForFacets:function(e,t){return this.search(e,t)},customPost:function(e,t){var n=e.path,r=e.parameters,o=e.body;if(!n)throw new Error("Parameter `path` is required when calling `customPost`.");var a={method:"POST",path:"/{path}".replace("{path}",n),queryParameters:r||{},headers:{},data:o||{}};return l.request(a,t)},getRecommendations:function(e,t){if(e&&Array.isArray(e)&&(e={requests:e}),!e)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!e.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");var n={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return l.request(n,t)},search:function(e,t){if(e&&Array.isArray(e)){var n={requests:e.map((function(e){var t=e.params,n=v(e,$n);return"facet"===n.type?b(b(b({},n),t),{},{type:"facet"}):b(b(b({},n),t),{},{facet:void 0,maxFacetHits:void 0,facetQuery:void 0})}))};e=n}if(!e)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!e.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");var r={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return l.request(r,t)}}}(b({appId:e,apiKey:t,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:function(e,t){return Promise.resolve()},info:function(e,t){return Promise.resolve()},error:function(e,t){return Promise.resolve()}},requester:{send:function(e){return new Promise((function(t){var n=new XMLHttpRequest;n.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return n.setRequestHeader(t,e.headers[t])}));var r,o=function(e,r){return setTimeout((function(){n.abort(),t({status:0,content:r,isTimedOut:!0})}),e)},a=o(e.connectTimeout,"Connection timeout");n.onreadystatechange=function(){n.readyState>n.OPENED&&void 0===r&&(clearTimeout(a),r=o(e.responseTimeout,"Socket timeout"))},n.onerror=function(){0===n.status&&(clearTimeout(a),clearTimeout(r),t({content:n.responseText||"Network request failed",status:n.status,isTimedOut:!1}))},n.onload=function(){clearTimeout(a),clearTimeout(r),t({content:n.responseText,status:n.status,isTimedOut:!1})},n.send(e.data)}))}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:Cn(),requestsCache:Cn({serializable:!1}),hostsCache:En({caches:[xn({key:"".concat(Hn,"-").concat(e)}),Cn()]})},void 0))}(e,t);return r.addAlgoliaAgent("docsearch",Vn),!1===/docsearch.js \(.*\)/.test(r.transporter.algoliaAgent.value)&&r.addAlgoliaAgent("docsearch-react",Vn),n(r)}),[e,t,n])}var Kn=["footer","searchBox"];function Qn(e){var t=e.appId,n=e.apiKey,o=e.indexName,a=e.placeholder,i=void 0===a?"Search docs":a,s=e.searchParameters,l=e.maxResultsPerGroup,c=e.onClose,u=void 0===c?un:c,d=e.transformItems,f=void 0===d?ln:d,m=e.hitComponent,h=void 0===m?zt:m,g=e.resultsFooterComponent,y=void 0===g?function(){return null}:g,w=e.navigator,S=e.initialScrollY,x=void 0===S?0:S,E=e.transformSearchClient,C=void 0===E?ln:E,_=e.disableUserPersonalization,O=void 0!==_&&_,A=e.initialQuery,T=void 0===A?"":A,j=e.translations,L=void 0===j?{}:j,P=e.getMissingResultsUrl,D=e.insights,R=void 0!==D&&D,N=L.footer,I=L.searchBox,M=v(L,Kn),F=k(r.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),B=F[0],z=F[1],U=r.useRef(null),q=r.useRef(null),$=r.useRef(null),H=r.useRef(null),G=r.useRef(null),V=r.useRef(10),W=r.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,K=r.useRef(T||W).current,Q=Wn(t,n,C),Z=r.useRef(Sn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(o),limit:10})).current,Y=r.useRef(Sn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(o),limit:0===Z.getAll().length?7:4})).current,J=r.useCallback((function(e){if(!O){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===Z.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&Y.add(t)}}),[Z,Y,O]),X=r.useCallback((function(e){if(B.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,n={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};B.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(n)}}),[B.context.algoliaInsightsPlugin]),ee=r.useMemo((function(){return It({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:K,context:{searchSuggestions:[]}},insights:R,navigator:w,onStateChange:function(e){z(e.state)},getSources:function(e){var r=e.query,a=e.state,i=e.setContext,c=e.setStatus;if(!r)return O?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,n=e.event;J(t),cn(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Y.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,n=e.event;J(t),cn(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Z.getAll()}}];var d=Boolean(R);return Q.search({requests:[b({query:r,indexName:o,attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(V.current),"hierarchy.lvl2:".concat(V.current),"hierarchy.lvl3:".concat(V.current),"hierarchy.lvl4:".concat(V.current),"hierarchy.lvl5:".concat(V.current),"hierarchy.lvl6:".concat(V.current),"content:".concat(V.current)],snippetEllipsisText:"\u2026",highlightPreTag:"<mark>",highlightPostTag:"</mark>",hitsPerPage:20,clickAnalytics:d},s)]}).catch((function(e){throw"RetryError"===e.name&&c("error"),e})).then((function(e){var r=e.results[0],s=r.hits,c=r.nbHits,p=sn(s,(function(e){return fn(e)}),l);a.context.searchSuggestions.length<Object.keys(p).length&&i({searchSuggestions:Object.keys(p)}),i({nbHits:c});var m={};return d&&(m={__autocomplete_indexName:o,__autocomplete_queryID:r.queryID,__autocomplete_algoliaCredentials:{appId:t,apiKey:n}}),Object.values(p).map((function(e,t){return{sourceId:"hits".concat(t),onSelect:function(e){var t=e.item,n=e.event;J(t),cn(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Object.values(sn(e,(function(e){return e.hierarchy.lvl1}),l)).map(f).map((function(e){return e.map((function(t){var n=null,r=e.find((function(e){return"lvl1"===e.type&&e.hierarchy.lvl1===t.hierarchy.lvl1}));return"lvl1"!==t.type&&r&&(n=r),b(b({},t),{},{__docsearch_parent:n},m)}))})).flat()}}}))}))}})}),[o,s,l,Q,u,Y,Z,J,K,i,w,f,O,R,t,n]),te=ee.getEnvironmentProps,ne=ee.getRootProps,re=ee.refresh;return function(e){var t=e.getEnvironmentProps,n=e.panelElement,o=e.formElement,a=e.inputElement;r.useEffect((function(){if(n&&o&&a){var e=t({panelElement:n,formElement:o,inputElement:a}),r=e.onTouchStart,i=e.onTouchMove;return window.addEventListener("touchstart",r),window.addEventListener("touchmove",i),function(){window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",i)}}}),[t,n,o,a])}({getEnvironmentProps:te,panelElement:H.current,formElement:$.current,inputElement:G.current}),function(e){var t=e.container;r.useEffect((function(){if(t){var e=t.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),n=e[0],r=e[e.length-1];return t.addEventListener("keydown",o),function(){t.removeEventListener("keydown",o)}}function o(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===n&&(e.preventDefault(),r.focus()):document.activeElement===r&&(e.preventDefault(),n.focus()))}}),[t])}({container:U.current}),r.useEffect((function(){return document.body.classList.add("DocSearch--active"),function(){var e,t;document.body.classList.remove("DocSearch--active"),null===(e=(t=window).scrollTo)||void 0===e||e.call(t,0,x)}}),[]),r.useEffect((function(){window.matchMedia("(max-width: 768px)").matches&&(V.current=5)}),[]),r.useEffect((function(){H.current&&(H.current.scrollTop=0)}),[B.query]),r.useEffect((function(){K.length>0&&(re(),G.current&&G.current.focus())}),[K,re]),r.useEffect((function(){function e(){if(q.current){var e=.01*window.innerHeight;q.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),r.createElement("div",p({ref:U},ne({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===B.status&&"DocSearch-Container--Stalled","error"===B.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&u()}}),r.createElement("div",{className:"DocSearch-Modal",ref:q},r.createElement("header",{className:"DocSearch-SearchBar",ref:$},r.createElement(wn,p({},ee,{state:B,autoFocus:0===K.length,inputRef:G,isFromSelection:Boolean(K)&&K===W,translations:I,onClose:u}))),r.createElement("div",{className:"DocSearch-Dropdown",ref:H},r.createElement(vn,p({},ee,{indexName:o,state:B,hitComponent:h,resultsFooterComponent:y,disableUserPersonalization:O,recentSearches:Y,favoriteSearches:Z,inputRef:G,translations:M,getMissingResultsUrl:P,onItemClick:function(e,t){X(e),J(e),cn(t)||u()}}))),r.createElement("footer",{className:"DocSearch-Footer"},r.createElement(Bt,{translations:N}))))}function Zn(e){var t=e.isOpen,n=e.onOpen,o=e.onClose,a=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;if("Escape"===e.code&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)return e.preventDefault(),void(t?o():document.body.classList.contains("DocSearch--active")||n());i&&i.current===document.activeElement&&a&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&a(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,o,a,i])}},9225:(e,t,n)=>{var r={"./":6532};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=9225},9625:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(758);var r=n(5534),o=n.n(r),a=n(4054);const i={"028d32dc":[()=>n.e(3797).then(n.bind(n,2037)),"@site/docs/build-on-morph/sdk/functions/toAddress.md",2037],"02a35c22":[()=>n.e(9849).then(n.bind(n,1545)),"@site/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.md",1545],"066c1628":[()=>n.e(9075).then(n.bind(n,1833)),"@site/docs/build-on-morph/sdk/variables/l1BridgeName.md",1833],"08313b4f":[()=>n.e(3894).then(n.bind(n,2701)),"@site/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.md",2701],"08b9f613":[()=>n.e(2736).then(n.bind(n,5270)),"@site/docs/about-morph/1-overview-of-morph.md",5270],"1483841d":[()=>n.e(1544).then(n.bind(n,7306)),"@site/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.md",7306],17896441:[()=>Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,5948)),"@theme/DocItem",5948],"1a1587e1":[()=>n.e(5678).then(n.bind(n,5879)),"@site/docs/about-morph/6-roadmap.md",5879],"1a4e3797":[()=>Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,6210)),"@theme/SearchPage",6210],"1f2dc99a":[()=>n.e(8170).then(n.bind(n,3306)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/7-artificial-intelligence.md",3306],"22a82985":[()=>n.e(7990).then(n.bind(n,3927)),"@site/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md",3927],"24734b3e":[()=>n.e(933).then(n.bind(n,5660)),"@site/docs/build-on-morph/sdk/interfaces/StateRoot.md",5660],"25bec567":[()=>n.e(690).then(n.bind(n,3406)),"@site/docs/build-on-morph/sdk/interfaces/StateRootBatch.md",3406],"2a31694d":[()=>n.e(6039).then(n.bind(n,2583)),"@site/docs/build-on-morph/sdk/type-aliases/DeepPartial.md",2583],"2b4bd9da":[()=>n.e(7481).then(n.bind(n,1767)),"@site/docs/build-on-morph/sdk/interfaces/L2Transaction.md",1767],"2f19d5d4":[()=>n.e(9640).then(n.bind(n,4240)),"@site/docs/build-on-morph/code-examples/1-deploy-contract-on-morph.md",4240],"3250a443":[()=>n.e(6935).then(n.bind(n,2702)),"@site/docs/build-on-morph/developer-resources/node-operation/upgrade-node/2-upgrade-node-docker.md",2702],"325638e1":[()=>n.e(8318).then(n.bind(n,9926)),"@site/docs/quick-start/3-faucet.md",9926],"33e57971":[()=>n.e(8343).then(n.bind(n,6139)),"@site/docs/about-morph/2-the-technology-behind-morph.md",6139],"38a5c357":[()=>n.e(4286).then(n.t.bind(n,7757,19)),"/Users/danny.fu/morphl2/morph-frontend/apps/morph-doc/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7757],"38e6cd8b":[()=>n.e(8476).then(n.bind(n,760)),"@site/docs/build-on-morph/sdk/functions/estimateTotalGasCost.md",760],"39f485e7":[()=>n.e(5980).then(n.bind(n,6747)),"@site/docs/about-morph/7-faqs.md",6747],"3f6197d4":[()=>n.e(835).then(n.bind(n,4215)),"@site/docs/build-on-morph/1-intro.md",4215],"405a8a84":[()=>n.e(6632).then(n.bind(n,7578)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/6-block-explorer.md",7578],"40b4f046":[()=>n.e(4145).then(n.bind(n,4379)),"@site/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.md",4379],"44bbd017":[()=>n.e(5223).then(n.bind(n,8480)),"@site/docs/build-on-morph/sdk/variables/l2BridgeName.md",8480],"465c0bc5":[()=>n.e(655).then(n.bind(n,8963)),"@site/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.md",8963],46618904:[()=>n.e(8991).then(n.bind(n,6935)),"@site/docs/build-on-morph/sdk/functions/getL1GasPrice.md",6935],"4784893f":[()=>n.e(2286).then(n.bind(n,6158)),"@site/docs/build-on-morph/sdk/functions/toBigNumber.md",6158],"4a10ae38":[()=>n.e(866).then(n.bind(n,5887)),"@site/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.md",5887],"4a269d4a":[()=>n.e(7396).then(n.bind(n,5768)),"@site/docs/build-on-morph/sdk/interfaces/MessageReceipt.md",5768],"4cbe5783":[()=>n.e(6736).then(n.bind(n,3053)),"@site/docs/build-on-morph/sdk/functions/toTransactionHash.md",3053],"4f7a49ab":[()=>n.e(749).then(n.bind(n,2877)),"@site/docs/build-on-morph/developer-resources/node-operation/validator-node/1-run-in-docker.md",2877],52171187:[()=>n.e(5027).then(n.bind(n,1520)),"@site/docs/about-morph/3-where-should-i-start.md",1520],"578ca001":[()=>n.e(6142).then(n.bind(n,761)),"@site/docs/how-morph-works/3-optimistic-zkevm.md",761],"57c15217":[()=>n.e(4766).then(n.bind(n,3499)),"@site/docs/how-morph-works/general-protocol-design/1-rollup.md",3499],"59db22f4":[()=>n.e(3197).then(n.bind(n,9642)),"@site/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.md",9642],"59f4fb6c":[()=>n.e(3186).then(n.bind(n,1615)),"@site/docs/how-morph-works/general-protocol-design/4-transactions-life-cycle.md",1615],"5a91095f":[()=>n.e(6819).then(n.bind(n,4284)),"@site/docs/build-on-morph/sdk/type-aliases/NumberLike.md",4284],"5aa3c257":[()=>n.e(7362).then(n.bind(n,4885)),"@site/docs/how-morph-works/general-protocol-design/2-communicate-between-morph-and-ethereum.md",4885],"5acb1cf6":[()=>n.e(3210).then(n.bind(n,3593)),"@site/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.md",3593],"5bc5b9ce":[()=>n.e(3457).then(n.bind(n,9010)),"@site/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md",9010],"5c242b2e":[()=>n.e(1394).then(n.bind(n,7216)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/3-account-abstraction.md",7216],"5d313dc3":[()=>n.e(3147).then(n.bind(n,365)),"@site/docs/build-on-morph/developer-resources/node-operation/1-prune-state.md",365],"5e95c892":[()=>n.e(9647).then(n.bind(n,6130)),"@theme/DocsRoot",6130],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"60479fa4":[()=>n.e(44).then(n.bind(n,3264)),"@site/docs/how-morph-works/1-intro.md",3264],"618914bf":[()=>n.e(9266).then(n.bind(n,7333)),"@site/docs/quick-start/1-welcome-to-morph.md",7333],"61b1ff91":[()=>n.e(8525).then(n.bind(n,3830)),"@site/docs/build-on-morph/sdk/intro.md",3830],"68efb262":[()=>n.e(8744).then(n.t.bind(n,1966,19)),"/Users/danny.fu/morphl2/morph-frontend/apps/morph-doc/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",1966],"69301e8b":[()=>n.e(6913).then(n.bind(n,6121)),"@site/docs/build-on-morph/sdk/enumerations/L1RpcUrls.md",6121],"6a8ddb26":[()=>n.e(7762).then(n.bind(n,213)),"@site/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.md",213],"6ba36391":[()=>n.e(9720).then(n.bind(n,8256)),"@site/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.md",8256],"6f037fd7":[()=>n.e(8308).then(n.bind(n,3711)),"@site/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.md",3711],"6f5ac92b":[()=>n.e(7049).then(n.bind(n,96)),"@site/docs/quick-start/4-bridge.md",96],"70e8639a":[()=>n.e(5130).then(n.bind(n,2205)),"@site/docs/build-on-morph/sdk/interfaces/OEContractsLike.md",2205],"720f9cb5":[()=>n.e(1141).then(n.bind(n,5329)),"@site/docs/build-on-morph/sdk/enumerations/MessageDirection.md",5329],"72171cd8":[()=>n.e(8324).then(n.bind(n,9415)),"@site/docs/build-on-morph/sdk/functions/asL2Provider.md",9415],"73af12fb":[()=>n.e(5577).then(n.bind(n,3702)),"@site/docs/build-on-morph/build-on-morph/1-integration-one-page.md",3702],"76db7a6d":[()=>n.e(408).then(n.bind(n,6068)),"@site/docs/build-on-morph/sdk/type-aliases/MessageLike.md",6068],"7824cff9":[()=>n.e(8676).then(n.bind(n,2644)),"@site/docs/build-on-morph/sdk/enumerations/L1ChainID.md",2644],"79dc0904":[()=>n.e(4405).then(n.bind(n,9247)),"@site/docs/build-on-morph/sdk/type-aliases/SignerLike.md",9247],"7a5975a7":[()=>n.e(3961).then(n.bind(n,4059)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/4-blockchain-indexing-services.md",4059],"7c1e7b23":[()=>n.e(841).then(n.bind(n,5968)),"@site/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.md",5968],"7c45cc48":[()=>n.e(1282).then(n.bind(n,2122)),"@site/docs/build-on-morph/sdk/enumerations/L2RpcUrls.md",2122],"81f29526":[()=>n.e(1508).then(n.bind(n,5356)),"@site/docs/build-on-morph/sdk/type-aliases/ProviderLike.md",5356],"82419dfd":[()=>n.e(2061).then(n.bind(n,6825)),"@site/docs/about-morph/0-user-navigation-page.md",6825],"829b4b9b":[()=>n.e(3427).then(n.bind(n,7706)),"@site/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.md",7706],"829cd294":[()=>n.e(9248).then(n.bind(n,164)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/2-rpc-services.md",164],"833a0690":[()=>n.e(8237).then(n.bind(n,5629)),"@site/docs/build-on-morph/sdk/interfaces/CrossChainMessage.md",5629],"8347fa88":[()=>n.e(8752).then(n.bind(n,8547)),"@site/docs/build-on-morph/code-examples/2-bridge-between-morph-and-ethereum.md",8547],"8613d4b8":[()=>n.e(7975).then(n.bind(n,3933)),"@site/docs/build-on-morph/sdk/functions/omit.md",3933],"868b6fb8":[()=>n.e(2985).then(n.t.bind(n,4061,19)),"/Users/danny.fu/morphl2/morph-frontend/apps/morph-doc/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",4061],"8b6091b0":[()=>n.e(8451).then(n.bind(n,2896)),"@site/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.md",2896],"8d0b932e":[()=>n.e(2322).then(n.bind(n,30)),"@site/docs/build-on-morph/developer-resources/7-dapp-examples-on-morph.md",30],"9235c071":[()=>n.e(1971).then(n.bind(n,4605)),"@site/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.md",4605],"935f2afb":[()=>n.e(8581).then(n.t.bind(n,5610,19)),"~docs/default/version-current-metadata-prop-751.json",5610],"95a7ae32":[()=>n.e(5116).then(n.bind(n,5485)),"@site/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.md",5485],"979f48c0":[()=>n.e(3679).then(n.bind(n,588)),"@site/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.md",588],"98d1a41e":[()=>n.e(720).then(n.bind(n,3074)),"@site/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.md",3074],"99b8a708":[()=>n.e(8371).then(n.bind(n,339)),"@site/docs/about-morph/5-morphs-vision-and-mission.md",339],"9a9366b1":[()=>n.e(2106).then(n.bind(n,8490)),"@site/docs/build-on-morph/sdk/interfaces/L2Block.md",8490],"9b96db99":[()=>n.e(7855).then(n.bind(n,2708)),"@site/docs/build-on-morph/sdk/type-aliases/L1Provider.md",2708],"9d4e1be7":[()=>n.e(7220).then(n.bind(n,4775)),"@site/docs/build-on-morph/build-on-morph/2-development-setup.md",4775],"9e1db927":[()=>n.e(2960).then(n.bind(n,2600)),"@site/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.md",2600],"9e78961b":[()=>n.e(2428).then(n.bind(n,5575)),"@site/docs/build-on-morph/sdk/interfaces/OEL1Contracts.md",5575],"9fc9b620":[()=>n.e(8656).then(n.bind(n,1706)),"@site/docs/about-morph/8-key-concepts.md",1706],"9ff57eaa":[()=>n.e(6107).then(n.bind(n,2130)),"@site/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.md",2130],a00dd934:[()=>n.e(5784).then(n.bind(n,5656)),"@site/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.md",5656],a04af9a2:[()=>n.e(819).then(n.bind(n,8179)),"@site/docs/build-on-morph/build-on-morph/6-integration-one-page-cn.md",8179],a0d49790:[()=>n.e(1243).then(n.bind(n,1287)),"@site/docs/build-on-morph/sdk/type-aliases/AddressLike.md",1287],a0d75a43:[()=>n.e(3046).then(n.bind(n,7237)),"@site/docs/build-on-morph/developer-resources/node-operation/upgrade-node/1-upgrade-node-host.md",7237],a1f831b5:[()=>n.e(6371).then(n.bind(n,7750)),"@site/docs/build-on-morph/sdk/functions/estimateL2GasCost.md",7750],a2db6fd6:[()=>n.e(3654).then(n.bind(n,524)),"@site/docs/build-on-morph/sdk/enumerations/MessageStatus.md",524],a399e926:[()=>n.e(7131).then(n.bind(n,9440)),"@site/docs/build-on-morph/sdk/functions/toNumber.md",9440],a4da47e1:[()=>n.e(4788).then(n.bind(n,6821)),"@site/docs/build-on-morph/sdk/type-aliases/L2Provider.md",6821],a5f26d61:[()=>n.e(9344).then(n.bind(n,6787)),"@site/docs/build-on-morph/sdk/type-aliases/TransactionLike.md",6787],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,5679)),"@theme/DocVersionRoot",5679],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,8652)),"@theme/DocRoot",8652],ad8d1448:[()=>n.e(5991).then(n.bind(n,6540)),"@site/docs/about-morph/4-morphs-architecture.md",6540],af91f293:[()=>n.e(2708).then(n.bind(n,2986)),"@site/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md",2986],b0d24208:[()=>n.e(2397).then(n.bind(n,7028)),"@site/docs/build-on-morph/sdk/interfaces/BridgeAdapters.md",7028],b137769e:[()=>n.e(6951).then(n.bind(n,613)),"@site/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md",613],b202810b:[()=>n.e(4734).then(n.bind(n,684)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/0-cross-chain-interoperability.md",684],b4c00acc:[()=>n.e(1995).then(n.bind(n,9600)),"@site/docs/build-on-morph/sdk/functions/getAllOEContracts.md",9600],bce3eedd:[()=>n.e(6184).then(n.bind(n,9994)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/5-blockchain-oracles.md",9994],beb6ddce:[()=>n.e(3732).then(n.bind(n,6689)),"@site/docs/build-on-morph/sdk/functions/hashMessageHash.md",6689],c30bab43:[()=>n.e(6941).then(n.bind(n,4718)),"@site/docs/build-on-morph/sdk/interfaces/OEContracts.md",4718],c33d6554:[()=>n.e(8520).then(n.bind(n,866)),"@site/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.md",866],c4f5d8e4:[()=>n.e(2634).then(n.bind(n,9421)),"@site/src/pages/index.js",9421],c5f7ff1a:[()=>n.e(3764).then(n.bind(n,4429)),"@site/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.md",4429],c7ccd35b:[()=>n.e(1557).then(n.bind(n,1232)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/1-safe-multi-signature-wallet.md",1232],ca4c51aa:[()=>n.e(4300).then(n.bind(n,1904)),"@site/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.md",1904],cfe67a99:[()=>n.e(9567).then(n.bind(n,9103)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/9-user-onboarding.md",9103],d26d133a:[()=>n.e(2487).then(n.bind(n,3566)),"@site/docs/quick-start/2-wallet-setup.md",3566],d475c619:[()=>n.e(5042).then(n.bind(n,3084)),"@site/docs/build-on-morph/sdk/globals.md",3084],d4781eda:[()=>n.e(1201).then(n.bind(n,5859)),"@site/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.md",5859],d8273606:[()=>n.e(7275).then(n.bind(n,6663)),"@site/docs/build-on-morph/sdk/functions/getBridgeAdapters.md",6663],dcf2e50b:[()=>n.e(6232).then(n.bind(n,5130)),"@site/docs/how-morph-works/decentralized-sequencers/1-morph-decentralized-sequencer-network.md",5130],dfd8dfaf:[()=>n.e(7430).then(n.bind(n,6418)),"@site/docs/about-morph/key-concepts/1-optimistic-rollup.md",6418],e3875bab:[()=>n.e(6956).then(n.bind(n,360)),"@site/docs/build-on-morph/sdk/functions/estimateL1Gas.md",360],e3bda051:[()=>n.e(4352).then(n.bind(n,6320)),"@site/docs/build-on-morph/sdk/interfaces/IActionOptions.md",6320],e6305dab:[()=>n.e(9817).then(n.bind(n,2359)),"@site/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/8-decentralized-naming-services.md",2359],e6f27cd2:[()=>n.e(7450).then(n.bind(n,779)),"@site/docs/build-on-morph/0-developer-navigation-page.md",779],e7a84acc:[()=>n.e(3667).then(n.bind(n,7479)),"@site/docs/build-on-morph/developer-resources/1-contracts.md",7479],e7f02677:[()=>n.e(4991).then(n.bind(n,5747)),"@site/docs/build-on-morph/sdk/classes/CrossChainMessenger.md",5747],e8c42455:[()=>n.e(361).then(n.bind(n,1289)),"@site/docs/build-on-morph/sdk/functions/estimateL1GasCost.md",1289],e8fcecf9:[()=>n.e(3918).then(n.bind(n,415)),"@site/docs/build-on-morph/sdk/enumerations/L2ChainID.md",415],e912b961:[()=>n.e(4116).then(n.bind(n,1252)),"@site/docs/build-on-morph/sdk/functions/getOEContract.md",1252],eac819ad:[()=>n.e(569).then(n.bind(n,3951)),"@site/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.md",3951],f3316ef7:[()=>n.e(8224).then(n.bind(n,9544)),"@site/docs/build-on-morph/developer-resources/node-operation/validator-node/2-run-on-host.md",9544],f435c040:[()=>n.e(2500).then(n.bind(n,4687)),"@site/docs/build-on-morph/sdk/functions/toSignerOrProvider.md",4687],f6623e93:[()=>n.e(9200).then(n.bind(n,8389)),"@site/docs/how-morph-works/2-morph-modular-design.md",8389],f93d7a3b:[()=>n.e(8898).then(n.bind(n,9903)),"@site/docs/build-on-morph/sdk/functions/isL2Provider.md",9903],fac53bf8:[()=>n.e(4305).then(n.bind(n,8802)),"@site/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md",8802],fb24aa13:[()=>n.e(5107).then(n.bind(n,3588)),"@site/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.md",3588],fb26d209:[()=>n.e(7e3).then(n.bind(n,8989)),"@site/docs/build-on-morph/developer-resources/2-how-to-run-a-morph-node.md",8989],fda70fd8:[()=>n.e(1311).then(n.bind(n,6312)),"@site/docs/build-on-morph/sdk/interfaces/OEL2Contracts.md",6312],fdc91eb1:[()=>n.e(4908).then(n.bind(n,5118)),"@site/docs/how-morph-works/general-protocol-design/5-difference-between-ethereum-and-morph.md",5118],fe9c53f2:[()=>n.e(1688).then(n.bind(n,5428)),"@site/docs/build-on-morph/sdk/functions/toProvider.md",5428],ff3f68fa:[()=>n.e(8221).then(n.bind(n,3920)),"@site/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md",3920],ff883f18:[()=>n.e(999).then(n.bind(n,1060)),"@site/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.md",1060]};var s=n(6070);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(4290),u=n(5353);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(7242).then(n.bind(n,7242)),modules:["@theme/NotFound"],webpack:()=>[7242],render(e,t){const n=e.default;return(0,s.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,s.jsx)(u.W,{value:i,children:(0,s.jsx)(a,{...o,...n})})}})}const p=[{path:"/search",component:d("/search","6c5"),exact:!0},{path:"/docs",component:d("/docs","a1a"),routes:[{path:"/docs",component:d("/docs","9c7"),routes:[{path:"/docs",component:d("/docs","af1"),routes:[{path:"/docs/about-morph/faqs",component:d("/docs/about-morph/faqs","db6"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/key-concepts",component:d("/docs/about-morph/key-concepts","b1a"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/key-concepts/optimistic-rollup",component:d("/docs/about-morph/key-concepts/optimistic-rollup","ec2"),exact:!0},{path:"/docs/about-morph/morphs-architecture",component:d("/docs/about-morph/morphs-architecture","1e7"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/morphs-vision-and-mission",component:d("/docs/about-morph/morphs-vision-and-mission","cd4"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/overview-of-morph",component:d("/docs/about-morph/overview-of-morph","d84"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/roadmap",component:d("/docs/about-morph/roadmap","460"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/the-technology-behind-morph",component:d("/docs/about-morph/the-technology-behind-morph","b44"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/user-navigation-page",component:d("/docs/about-morph/user-navigation-page","19e"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/about-morph/where-should-i-start",component:d("/docs/about-morph/where-should-i-start","e58"),exact:!0},{path:"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum",component:d("/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","59b"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/build-on-morph/development-setup",component:d("/docs/build-on-morph/build-on-morph/development-setup","d4d"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/build-on-morph/integration-one-page",component:d("/docs/build-on-morph/build-on-morph/integration-one-page","48a"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/build-on-morph/integration-one-page-cn",component:d("/docs/build-on-morph/build-on-morph/integration-one-page-cn","e8d"),exact:!0},{path:"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph",component:d("/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph","fc4"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts",component:d("/docs/build-on-morph/build-on-morph/verify-your-smart-contracts","120"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum",component:d("/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum","ed4"),exact:!0},{path:"/docs/build-on-morph/code-examples/deploy-contract-on-morph",component:d("/docs/build-on-morph/code-examples/deploy-contract-on-morph","5af"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-navigation-page",component:d("/docs/build-on-morph/developer-navigation-page","6f3"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/contracts",component:d("/docs/build-on-morph/developer-resources/contracts","51b"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/dapp-examples-on-morph",component:d("/docs/build-on-morph/developer-resources/dapp-examples-on-morph","899"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/how-to-run-a-morph-node",component:d("/docs/build-on-morph/developer-resources/how-to-run-a-morph-node","a6b"),exact:!0},{path:"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods",component:d("/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods","c1b"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker",component:d("/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker","e0e"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host",component:d("/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host","c23"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/prune-state",component:d("/docs/build-on-morph/developer-resources/node-operation/prune-state","63a"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker",component:d("/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","fb2"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host",component:d("/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","d69"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker",component:d("/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","4df"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host",component:d("/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host","653"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","924"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","ad8"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","cce"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","b59"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","b1d"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","efa"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","2a2"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","072"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","d7e"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding",component:d("/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","fe8"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/intro",component:d("/docs/build-on-morph/intro","235"),exact:!0},{path:"/docs/build-on-morph/sdk/classes/CrossChainMessenger",component:d("/docs/build-on-morph/sdk/classes/CrossChainMessenger","71f"),exact:!0},{path:"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter",component:d("/docs/build-on-morph/sdk/classes/ETHBridgeAdapter","e0f"),exact:!0},{path:"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter",component:d("/docs/build-on-morph/sdk/classes/StandardBridgeAdapter","be7"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/L1ChainID",component:d("/docs/build-on-morph/sdk/enumerations/L1ChainID","bfe"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/L1RpcUrls",component:d("/docs/build-on-morph/sdk/enumerations/L1RpcUrls","212"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/L2ChainID",component:d("/docs/build-on-morph/sdk/enumerations/L2ChainID","e8e"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/L2RpcUrls",component:d("/docs/build-on-morph/sdk/enumerations/L2RpcUrls","7f9"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/MessageDirection",component:d("/docs/build-on-morph/sdk/enumerations/MessageDirection","681"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus",component:d("/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus","1f3"),exact:!0},{path:"/docs/build-on-morph/sdk/enumerations/MessageStatus",component:d("/docs/build-on-morph/sdk/enumerations/MessageStatus","a5a"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/asL2Provider",component:d("/docs/build-on-morph/sdk/functions/asL2Provider","4b1"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/estimateL1Gas",component:d("/docs/build-on-morph/sdk/functions/estimateL1Gas","a2f"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/estimateL1GasCost",component:d("/docs/build-on-morph/sdk/functions/estimateL1GasCost","06e"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/estimateL2GasCost",component:d("/docs/build-on-morph/sdk/functions/estimateL2GasCost","20f"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/estimateTotalGasCost",component:d("/docs/build-on-morph/sdk/functions/estimateTotalGasCost","bc5"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/getAllOEContracts",component:d("/docs/build-on-morph/sdk/functions/getAllOEContracts","91e"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/getBridgeAdapters",component:d("/docs/build-on-morph/sdk/functions/getBridgeAdapters","5d3"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/getL1GasPrice",component:d("/docs/build-on-morph/sdk/functions/getL1GasPrice","68c"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/getOEContract",component:d("/docs/build-on-morph/sdk/functions/getOEContract","ea0"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2",component:d("/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2","301"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/hashMessageHash",component:d("/docs/build-on-morph/sdk/functions/hashMessageHash","f9c"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/isL2Provider",component:d("/docs/build-on-morph/sdk/functions/isL2Provider","0a3"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit",component:d("/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit","a8f"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/omit",component:d("/docs/build-on-morph/sdk/functions/omit","31d"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/toAddress",component:d("/docs/build-on-morph/sdk/functions/toAddress","52d"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/toBigNumber",component:d("/docs/build-on-morph/sdk/functions/toBigNumber","1cd"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/toNumber",component:d("/docs/build-on-morph/sdk/functions/toNumber","47f"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/toProvider",component:d("/docs/build-on-morph/sdk/functions/toProvider","b81"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/toSignerOrProvider",component:d("/docs/build-on-morph/sdk/functions/toSignerOrProvider","474"),exact:!0},{path:"/docs/build-on-morph/sdk/functions/toTransactionHash",component:d("/docs/build-on-morph/sdk/functions/toTransactionHash","b90"),exact:!0},{path:"/docs/build-on-morph/sdk/globals",component:d("/docs/build-on-morph/sdk/globals","a28"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData",component:d("/docs/build-on-morph/sdk/interfaces/BridgeAdapterData","658"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/BridgeAdapters",component:d("/docs/build-on-morph/sdk/interfaces/BridgeAdapters","6e5"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage",component:d("/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage","e90"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/CrossChainMessage",component:d("/docs/build-on-morph/sdk/interfaces/CrossChainMessage","6a8"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest",component:d("/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest","c6e"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/IActionOptions",component:d("/docs/build-on-morph/sdk/interfaces/IActionOptions","32e"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter",component:d("/docs/build-on-morph/sdk/interfaces/IBridgeAdapter","d75"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/L2Block",component:d("/docs/build-on-morph/sdk/interfaces/L2Block","526"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions",component:d("/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions","fd3"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/L2Transaction",component:d("/docs/build-on-morph/sdk/interfaces/L2Transaction","107"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/MessageReceipt",component:d("/docs/build-on-morph/sdk/interfaces/MessageReceipt","c6d"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/OEContracts",component:d("/docs/build-on-morph/sdk/interfaces/OEContracts","174"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/OEContractsLike",component:d("/docs/build-on-morph/sdk/interfaces/OEContractsLike","86e"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/OEL1Contracts",component:d("/docs/build-on-morph/sdk/interfaces/OEL1Contracts","8b8"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/OEL2Contracts",component:d("/docs/build-on-morph/sdk/interfaces/OEL2Contracts","9ec"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal",component:d("/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal","8b3"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/StateRoot",component:d("/docs/build-on-morph/sdk/interfaces/StateRoot","5a3"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/StateRootBatch",component:d("/docs/build-on-morph/sdk/interfaces/StateRootBatch","65f"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader",component:d("/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader","8f3"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage",component:d("/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage","f09"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/WithdrawalEntry",component:d("/docs/build-on-morph/sdk/interfaces/WithdrawalEntry","faa"),exact:!0},{path:"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof",component:d("/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof","545"),exact:!0},{path:"/docs/build-on-morph/sdk/intro",component:d("/docs/build-on-morph/sdk/intro","542"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/AddressLike",component:d("/docs/build-on-morph/sdk/type-aliases/AddressLike","bac"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/DeepPartial",component:d("/docs/build-on-morph/sdk/type-aliases/DeepPartial","7e6"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/L1Provider",component:d("/docs/build-on-morph/sdk/type-aliases/L1Provider","8de"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/L2Provider",component:d("/docs/build-on-morph/sdk/type-aliases/L2Provider","181"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage",component:d("/docs/build-on-morph/sdk/type-aliases/LowLevelMessage","968"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/MessageLike",component:d("/docs/build-on-morph/sdk/type-aliases/MessageLike","5c1"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike",component:d("/docs/build-on-morph/sdk/type-aliases/MessageRequestLike","eb0"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/NumberLike",component:d("/docs/build-on-morph/sdk/type-aliases/NumberLike","214"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike",component:d("/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike","6f6"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike",component:d("/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike","84a"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/ProviderLike",component:d("/docs/build-on-morph/sdk/type-aliases/ProviderLike","2fe"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/SignerLike",component:d("/docs/build-on-morph/sdk/type-aliases/SignerLike","e63"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike",component:d("/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike","681"),exact:!0},{path:"/docs/build-on-morph/sdk/type-aliases/TransactionLike",component:d("/docs/build-on-morph/sdk/type-aliases/TransactionLike","5b2"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA",component:d("/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA","e80"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES",component:d("/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES","c46"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES",component:d("/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES","c94"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES",component:d("/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES","302"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES",component:d("/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES","f2f"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS",component:d("/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS","e9d"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/l1BridgeName",component:d("/docs/build-on-morph/sdk/variables/l1BridgeName","58e"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName",component:d("/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName","55b"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/l2BridgeName",component:d("/docs/build-on-morph/sdk/variables/l2BridgeName","8bb"),exact:!0},{path:"/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName",component:d("/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName","ce4"),exact:!0},{path:"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network",component:d("/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","76b"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum",component:d("/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","2f6"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph",component:d("/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","1d1"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/how-morph-works/general-protocol-design/rollup",component:d("/docs/how-morph-works/general-protocol-design/rollup","ec8"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/how-morph-works/general-protocol-design/transactions-life-cycle",component:d("/docs/how-morph-works/general-protocol-design/transactions-life-cycle","313"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/how-morph-works/intro",component:d("/docs/how-morph-works/intro","b70"),exact:!0},{path:"/docs/how-morph-works/morph-modular-design",component:d("/docs/how-morph-works/morph-modular-design","700"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/how-morph-works/optimistic-zkevm",component:d("/docs/how-morph-works/optimistic-zkevm","e3e"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/quick-start/bridge",component:d("/docs/quick-start/bridge","199"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/quick-start/faucet",component:d("/docs/quick-start/faucet","b32"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/quick-start/wallet-setup",component:d("/docs/quick-start/wallet-setup","8e9"),exact:!0,sidebar:"DeveloperSidebar"},{path:"/docs/quick-start/welcome-to-morph",component:d("/docs/quick-start/welcome-to-morph","570"),exact:!0}]}]}]},{path:"/",component:d("/","509"),exact:!0},{path:"*",component:d("*")}]},5286:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(758),o=n(6070);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},7170:(e,t,n)=>{"use strict";var r=n(758),o=n(9576),a=n(1742),i=n(932),s=n(3782);const l=[n(3396),n(4644),n(4523),n(3331),n(700)];var c=n(9625),u=n(5557),d=n(1977),p=n(6070);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(7471),h=n(6869),g=n(7838),b=n(5349),v=n(926),y=n(282),w=n(6906),k=n(3330),S=n(4932),x=n(7740);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,y.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,u.zy)();return e+(0,S.applyTrailingSlash)((0,g.A)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function _(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,b.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.w})]}),n&&(0,p.jsx)(v.be,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(x.A,{tag:k.Cy,locale:e}),(0,p.jsx)(m.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const O=new Map;function A(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,d.u)(c.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}var T=n(5286),j=n(4299),L=n(7132);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const o=l.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const D=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)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:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class N extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(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(0,p.jsx)(D,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.qh,{location:t,render:()=>e})})}}const I=N,M="__docusaurus-base-url-issue-banner-suggestion-container";function F(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${M}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${M}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function B(){const{siteConfig:{baseUrl:e}}=(0,h.A)();return(0,p.jsx)(p.Fragment,{children:!s.A.canUseDOM&&(0,p.jsx)(m.A,{children:(0,p.jsx)("script",{children:F(e)})})})}function z(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.A)(),{pathname:n}=(0,u.zy)();return t&&n===e?(0,p.jsx)(B,{}):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:o}}=(0,h.A)(),a=(0,g.A)(e),{htmlLang:i,direction:s}=o[r];return(0,p.jsxs)(m.A,{children:[(0,p.jsx)("html",{lang:i,dir:s}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:a})]})}var q=n(3308),$=n(600);function H(){const e=(0,$.A)();return(0,p.jsx)(m.A,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}function G(){const e=(0,d.v)(c.A),t=(0,u.zy)();return(0,p.jsx)(q.A,{children:(0,p.jsx)(j.l,{children:(0,p.jsxs)(T.x,{children:[(0,p.jsxs)(f,{children:[(0,p.jsx)(U,{}),(0,p.jsx)(_,{}),(0,p.jsx)(z,{}),(0,p.jsx)(I,{location:A(t),children:e})]}),(0,p.jsx)(H,{})]})})})}var V=n(4054);const W=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(4290);const Q=new Set,Z=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,J={prefetch(e){if(!(e=>!Y()&&!Z.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.u)(c.A,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.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?W(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!Z.has(e))(e)&&(Z.add(e),R(e))},X=Object.freeze(J),ee=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=X;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.vd,{children:(0,p.jsx)(a.Kd,{children:(0,p.jsx)(G,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ee)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};R(window.location.pathname).then(s)}},4299:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(758),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"about-morph/user-navigation-page","docs":[{"id":"about-morph/faqs","path":"/docs/about-morph/faqs","sidebar":"DeveloperSidebar"},{"id":"about-morph/key-concepts","path":"/docs/about-morph/key-concepts","sidebar":"DeveloperSidebar"},{"id":"about-morph/key-concepts/optimistic-rollup","path":"/docs/about-morph/key-concepts/optimistic-rollup"},{"id":"about-morph/morphs-architecture","path":"/docs/about-morph/morphs-architecture","sidebar":"DeveloperSidebar"},{"id":"about-morph/morphs-vision-and-mission","path":"/docs/about-morph/morphs-vision-and-mission","sidebar":"DeveloperSidebar"},{"id":"about-morph/overview-of-morph","path":"/docs/about-morph/overview-of-morph","sidebar":"DeveloperSidebar"},{"id":"about-morph/roadmap","path":"/docs/about-morph/roadmap","sidebar":"DeveloperSidebar"},{"id":"about-morph/the-technology-behind-morph","path":"/docs/about-morph/the-technology-behind-morph","sidebar":"DeveloperSidebar"},{"id":"about-morph/user-navigation-page","path":"/docs/about-morph/user-navigation-page","sidebar":"DeveloperSidebar"},{"id":"about-morph/where-should-i-start","path":"/docs/about-morph/where-should-i-start"},{"id":"build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","path":"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/build-on-morph/development-setup","path":"/docs/build-on-morph/build-on-morph/development-setup","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/build-on-morph/integration-one-page","path":"/docs/build-on-morph/build-on-morph/integration-one-page","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/build-on-morph/integration-one-page-cn","path":"/docs/build-on-morph/build-on-morph/integration-one-page-cn"},{"id":"build-on-morph/build-on-morph/understand-transaction-cost-on-morph","path":"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/build-on-morph/verify-your-smart-contracts","path":"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/code-examples/bridge-between-morph-and-ethereum","path":"/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum"},{"id":"build-on-morph/code-examples/deploy-contract-on-morph","path":"/docs/build-on-morph/code-examples/deploy-contract-on-morph","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-navigation-page","path":"/docs/build-on-morph/developer-navigation-page","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/contracts","path":"/docs/build-on-morph/developer-resources/contracts","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/dapp-examples-on-morph","path":"/docs/build-on-morph/developer-resources/dapp-examples-on-morph","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/how-to-run-a-morph-node","path":"/docs/build-on-morph/developer-resources/how-to-run-a-morph-node"},{"id":"build-on-morph/developer-resources/morph-json-rpc-api-methods","path":"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/full-node/run-in-docker","path":"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/full-node/run-on-host","path":"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/prune-state","path":"/docs/build-on-morph/developer-resources/node-operation/prune-state","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","path":"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","path":"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","path":"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/node-operation/validator-node/run-on-host","path":"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","path":"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/intro","path":"/docs/build-on-morph/intro"},{"id":"build-on-morph/sdk/classes/CrossChainMessenger","path":"/docs/build-on-morph/sdk/classes/CrossChainMessenger"},{"id":"build-on-morph/sdk/classes/ETHBridgeAdapter","path":"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter"},{"id":"build-on-morph/sdk/classes/StandardBridgeAdapter","path":"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter"},{"id":"build-on-morph/sdk/enumerations/L1ChainID","path":"/docs/build-on-morph/sdk/enumerations/L1ChainID"},{"id":"build-on-morph/sdk/enumerations/L1RpcUrls","path":"/docs/build-on-morph/sdk/enumerations/L1RpcUrls"},{"id":"build-on-morph/sdk/enumerations/L2ChainID","path":"/docs/build-on-morph/sdk/enumerations/L2ChainID"},{"id":"build-on-morph/sdk/enumerations/L2RpcUrls","path":"/docs/build-on-morph/sdk/enumerations/L2RpcUrls"},{"id":"build-on-morph/sdk/enumerations/MessageDirection","path":"/docs/build-on-morph/sdk/enumerations/MessageDirection"},{"id":"build-on-morph/sdk/enumerations/MessageReceiptStatus","path":"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus"},{"id":"build-on-morph/sdk/enumerations/MessageStatus","path":"/docs/build-on-morph/sdk/enumerations/MessageStatus"},{"id":"build-on-morph/sdk/functions/asL2Provider","path":"/docs/build-on-morph/sdk/functions/asL2Provider"},{"id":"build-on-morph/sdk/functions/estimateL1Gas","path":"/docs/build-on-morph/sdk/functions/estimateL1Gas"},{"id":"build-on-morph/sdk/functions/estimateL1GasCost","path":"/docs/build-on-morph/sdk/functions/estimateL1GasCost"},{"id":"build-on-morph/sdk/functions/estimateL2GasCost","path":"/docs/build-on-morph/sdk/functions/estimateL2GasCost"},{"id":"build-on-morph/sdk/functions/estimateTotalGasCost","path":"/docs/build-on-morph/sdk/functions/estimateTotalGasCost"},{"id":"build-on-morph/sdk/functions/getAllOEContracts","path":"/docs/build-on-morph/sdk/functions/getAllOEContracts"},{"id":"build-on-morph/sdk/functions/getBridgeAdapters","path":"/docs/build-on-morph/sdk/functions/getBridgeAdapters"},{"id":"build-on-morph/sdk/functions/getL1GasPrice","path":"/docs/build-on-morph/sdk/functions/getL1GasPrice"},{"id":"build-on-morph/sdk/functions/getOEContract","path":"/docs/build-on-morph/sdk/functions/getOEContract"},{"id":"build-on-morph/sdk/functions/hashLowLevelMessageV2","path":"/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2"},{"id":"build-on-morph/sdk/functions/hashMessageHash","path":"/docs/build-on-morph/sdk/functions/hashMessageHash"},{"id":"build-on-morph/sdk/functions/isL2Provider","path":"/docs/build-on-morph/sdk/functions/isL2Provider"},{"id":"build-on-morph/sdk/functions/migratedWithdrawalGasLimit","path":"/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit"},{"id":"build-on-morph/sdk/functions/omit","path":"/docs/build-on-morph/sdk/functions/omit"},{"id":"build-on-morph/sdk/functions/toAddress","path":"/docs/build-on-morph/sdk/functions/toAddress"},{"id":"build-on-morph/sdk/functions/toBigNumber","path":"/docs/build-on-morph/sdk/functions/toBigNumber"},{"id":"build-on-morph/sdk/functions/toNumber","path":"/docs/build-on-morph/sdk/functions/toNumber"},{"id":"build-on-morph/sdk/functions/toProvider","path":"/docs/build-on-morph/sdk/functions/toProvider"},{"id":"build-on-morph/sdk/functions/toSignerOrProvider","path":"/docs/build-on-morph/sdk/functions/toSignerOrProvider"},{"id":"build-on-morph/sdk/functions/toTransactionHash","path":"/docs/build-on-morph/sdk/functions/toTransactionHash"},{"id":"build-on-morph/sdk/globals","path":"/docs/build-on-morph/sdk/globals","sidebar":"DeveloperSidebar"},{"id":"build-on-morph/sdk/interfaces/BridgeAdapterData","path":"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData"},{"id":"build-on-morph/sdk/interfaces/BridgeAdapters","path":"/docs/build-on-morph/sdk/interfaces/BridgeAdapters"},{"id":"build-on-morph/sdk/interfaces/CoreCrossChainMessage","path":"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage"},{"id":"build-on-morph/sdk/interfaces/CrossChainMessage","path":"/docs/build-on-morph/sdk/interfaces/CrossChainMessage"},{"id":"build-on-morph/sdk/interfaces/CrossChainMessageRequest","path":"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest"},{"id":"build-on-morph/sdk/interfaces/IActionOptions","path":"/docs/build-on-morph/sdk/interfaces/IActionOptions"},{"id":"build-on-morph/sdk/interfaces/IBridgeAdapter","path":"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter"},{"id":"build-on-morph/sdk/interfaces/L2Block","path":"/docs/build-on-morph/sdk/interfaces/L2Block"},{"id":"build-on-morph/sdk/interfaces/L2BlockWithTransactions","path":"/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions"},{"id":"build-on-morph/sdk/interfaces/L2Transaction","path":"/docs/build-on-morph/sdk/interfaces/L2Transaction"},{"id":"build-on-morph/sdk/interfaces/MessageReceipt","path":"/docs/build-on-morph/sdk/interfaces/MessageReceipt"},{"id":"build-on-morph/sdk/interfaces/OEContracts","path":"/docs/build-on-morph/sdk/interfaces/OEContracts"},{"id":"build-on-morph/sdk/interfaces/OEContractsLike","path":"/docs/build-on-morph/sdk/interfaces/OEContractsLike"},{"id":"build-on-morph/sdk/interfaces/OEL1Contracts","path":"/docs/build-on-morph/sdk/interfaces/OEL1Contracts"},{"id":"build-on-morph/sdk/interfaces/OEL2Contracts","path":"/docs/build-on-morph/sdk/interfaces/OEL2Contracts"},{"id":"build-on-morph/sdk/interfaces/ProvenWithdrawal","path":"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal"},{"id":"build-on-morph/sdk/interfaces/StateRoot","path":"/docs/build-on-morph/sdk/interfaces/StateRoot"},{"id":"build-on-morph/sdk/interfaces/StateRootBatch","path":"/docs/build-on-morph/sdk/interfaces/StateRootBatch"},{"id":"build-on-morph/sdk/interfaces/StateRootBatchHeader","path":"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader"},{"id":"build-on-morph/sdk/interfaces/TokenBridgeMessage","path":"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage"},{"id":"build-on-morph/sdk/interfaces/WithdrawalEntry","path":"/docs/build-on-morph/sdk/interfaces/WithdrawalEntry"},{"id":"build-on-morph/sdk/interfaces/WithdrawMessageProof","path":"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof"},{"id":"build-on-morph/sdk/intro","path":"/docs/build-on-morph/sdk/intro"},{"id":"build-on-morph/sdk/type-aliases/AddressLike","path":"/docs/build-on-morph/sdk/type-aliases/AddressLike"},{"id":"build-on-morph/sdk/type-aliases/DeepPartial","path":"/docs/build-on-morph/sdk/type-aliases/DeepPartial"},{"id":"build-on-morph/sdk/type-aliases/L1Provider","path":"/docs/build-on-morph/sdk/type-aliases/L1Provider"},{"id":"build-on-morph/sdk/type-aliases/L2Provider","path":"/docs/build-on-morph/sdk/type-aliases/L2Provider"},{"id":"build-on-morph/sdk/type-aliases/LowLevelMessage","path":"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage"},{"id":"build-on-morph/sdk/type-aliases/MessageLike","path":"/docs/build-on-morph/sdk/type-aliases/MessageLike"},{"id":"build-on-morph/sdk/type-aliases/MessageRequestLike","path":"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike"},{"id":"build-on-morph/sdk/type-aliases/NumberLike","path":"/docs/build-on-morph/sdk/type-aliases/NumberLike"},{"id":"build-on-morph/sdk/type-aliases/OEL1ContractsLike","path":"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike"},{"id":"build-on-morph/sdk/type-aliases/OEL2ContractsLike","path":"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike"},{"id":"build-on-morph/sdk/type-aliases/ProviderLike","path":"/docs/build-on-morph/sdk/type-aliases/ProviderLike"},{"id":"build-on-morph/sdk/type-aliases/SignerLike","path":"/docs/build-on-morph/sdk/type-aliases/SignerLike"},{"id":"build-on-morph/sdk/type-aliases/SignerOrProviderLike","path":"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike"},{"id":"build-on-morph/sdk/type-aliases/TransactionLike","path":"/docs/build-on-morph/sdk/type-aliases/TransactionLike"},{"id":"build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA","path":"/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA"},{"id":"build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES","path":"/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES"},{"id":"build-on-morph/sdk/variables/CONTRACT_ADDRESSES","path":"/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES"},{"id":"build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES","path":"/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES"},{"id":"build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES","path":"/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES"},{"id":"build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS","path":"/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS"},{"id":"build-on-morph/sdk/variables/l1BridgeName","path":"/docs/build-on-morph/sdk/variables/l1BridgeName"},{"id":"build-on-morph/sdk/variables/l1CrossDomainMessengerName","path":"/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName"},{"id":"build-on-morph/sdk/variables/l2BridgeName","path":"/docs/build-on-morph/sdk/variables/l2BridgeName"},{"id":"build-on-morph/sdk/variables/l2CrossDomainMessengerName","path":"/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName"},{"id":"how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","path":"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network","sidebar":"DeveloperSidebar"},{"id":"how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","path":"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum","sidebar":"DeveloperSidebar"},{"id":"how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","path":"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph","sidebar":"DeveloperSidebar"},{"id":"how-morph-works/general-protocol-design/rollup","path":"/docs/how-morph-works/general-protocol-design/rollup","sidebar":"DeveloperSidebar"},{"id":"how-morph-works/general-protocol-design/transactions-life-cycle","path":"/docs/how-morph-works/general-protocol-design/transactions-life-cycle","sidebar":"DeveloperSidebar"},{"id":"how-morph-works/intro","path":"/docs/how-morph-works/intro"},{"id":"how-morph-works/morph-modular-design","path":"/docs/how-morph-works/morph-modular-design","sidebar":"DeveloperSidebar"},{"id":"how-morph-works/optimistic-zkevm","path":"/docs/how-morph-works/optimistic-zkevm","sidebar":"DeveloperSidebar"},{"id":"quick-start/bridge","path":"/docs/quick-start/bridge","sidebar":"DeveloperSidebar"},{"id":"quick-start/faucet","path":"/docs/quick-start/faucet","sidebar":"DeveloperSidebar"},{"id":"quick-start/wallet-setup","path":"/docs/quick-start/wallet-setup","sidebar":"DeveloperSidebar"},{"id":"quick-start/welcome-to-morph","path":"/docs/quick-start/welcome-to-morph"}],"draftIds":[],"sidebars":{"UserSidebar":{"link":{"path":"/docs/about-morph/user-navigation-page","label":"about-morph/user-navigation-page"}},"DeveloperSidebar":{"link":{"path":"/docs/about-morph/user-navigation-page","label":"about-morph/user-navigation-page"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(2654);const l=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"4.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.1.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"},"docusaurus-tailwindcss":{"type":"local"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.1.1"}}}');var c=n(6070);const u={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},3308:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(758),o=n(3782),a=n(7471),i=n(4932),s=n(8437),l=n(6070);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(a.A,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.A,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.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??p)(e)}return e??null}}},3782:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},7471:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(758);var r=n(932),o=n(6070);function a(e){return(0,o.jsx)(r.mg,{...e})}},6601:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(758),o=n(1742),a=n(4932),i=n(6869),s=n(5407),l=n(3782),c=n(2146),u=n(7838),d=n(6070);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,i.A)(),{withBaseUrl:k}=(0,u.h)(),S=(0,c.A)(),x=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>x.current));const E=p||f;const C=(0,s.A)(E),_=E?.replace("pathname://","");let O=void 0!==_?(A=_,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;O&&C&&(O=(0,a.applyTrailingSlash)(O,{trailingSlash:y,baseUrl:w}));const T=(0,r.useRef)(!1),j=n?o.k2:o.N_,L=l.A.canUseIntersectionObserver,P=(0,r.useRef)(),D=()=>{T.current||null==O||(window.docusaurus.preload(O),T.current=!0)};(0,r.useEffect)((()=>(!L&&C&&null!=O&&window.docusaurus.prefetch(O),()=>{L&&P.current&&P.current.disconnect()})),[P,O,L,C]);const R=O?.startsWith("#")??!1,N=!v.target||"_self"===v.target,I=!O||!C||!N||R;return g||!R&&I||S.collectLink(O),v.id&&S.collectAnchor(v.id),I?(0,d.jsx)("a",{ref:x,href:O,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...v}):(0,d.jsx)(j,{...v,onMouseEnter:D,onTouchStart:D,innerRef:e=>{x.current=e,L&&e&&C&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=O&&window.docusaurus.prefetch(O))}))})),P.current.observe(e))},to:O,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},7260:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>l});var r=n(758),o=n(6070);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function s(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 i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},8372:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},5407:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},7838:(e,t,n)=>{"use strict";n.d(t,{A:()=>s,h:()=>i});var r=n(758),o=n(6869),a=n(5407);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.A)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.z)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2146:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(758);n(6070);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},6869:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(758),o=n(4299);function a(){return(0,r.useContext)(o.o)}},600:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(758),o=n(5286);function a(){return(0,r.useContext)(o.o)}},7132:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(758);const o=n(3782).A.canUseDOM?r.useLayoutEffect:r.useEffect},4290:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=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[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},5353:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(758),o=n(6070);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},9612:(e,t,n)=>{"use strict";n.d(t,{zK:()=>b,vT:()=>f,gk:()=>m,Gy:()=>d,HW:()=>v,ht:()=>p,r7:()=>g,jh:()=>h});var r=n(5557),o=n(6869),a=n(8372);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),o=n?.docs.find((e=>!!(0,r.B6)(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((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>function(e,t,n){void 0===t&&(t=a.W),void 0===n&&(n={});const r=i(e),o=r?.[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=d(),{pathname:n}=(0,r.zy)();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,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&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 a}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.zy)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function h(e){return p(e).versions}function g(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.zy)();return c(t,n)}function v(e){const t=p(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},5534:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var s=n(758),l=n(2736),c=[],u=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return c.push(g),"function"==typeof m.webpack&&u.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=d=function(t){function n(n){var r;return a(o(o(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?s.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(s.Component),a(d,"contextTypes",{loadable:l.shape({report:l.func.isRequired})}),p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}a(g,"propTypes",{report:l.func.isRequired}),a(g,"childContextTypes",{loadable:l.shape({report:l.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},4523:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(8744),o=n.n(r);o().configure({showSpinner:!1});const a={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()}}},4644:(e,t,n)=>{"use strict";var r=n(5371),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(1274),n(9225)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},2406:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(758);var r=n(3526),o=n(7260),a=n(5349),i=n(6601),s=n(2146);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_AZ4C",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_FXx6"};var c=n(6070);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},7550:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(758);const r={iconExternalLink:"iconExternalLink_uMR8"};var o=n(6070);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},8437:(e,t,n)=>{"use strict";n.d(t,{A:()=>Mt});var r=n(758),o=n(3526),a=n(3308),i=n(926),s=n(5557),l=n(7260),c=n(9691),u=n(6070);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(7998),b=n(6906);const v={skipToContent:"skipToContent_E3EM"};function y(){return(0,u.jsx)(h,{className:v.skipToContent})}var w=n(5349),k=n(746);function S(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const x={closeButton:"closeButton_SYkQ"};function E(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",x.closeButton,e.className),children:(0,u.jsx)(S,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_ILws"};function _(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.A)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const O={announcementBar:"announcementBar_yOjN",announcementBarPlaceholder:"announcementBarPlaceholder_ZPOO",announcementBarClose:"announcementBarClose_laiP",announcementBarContent:"announcementBarContent_jjlM"};function A(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.Mj)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:O.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:O.announcementBarPlaceholder}),(0,u.jsx)(_,{className:O.announcementBarContent}),a&&(0,u.jsx)(E,{onClick:n,className:O.announcementBarClose})]})}var T=n(8058),j=n(1773);var L=n(3991),P=n(5955);const D=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,T.M)(),t=(0,P.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,L.ZC)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(D.Provider,{value:n,children:t})}function N(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(D);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,P.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:N(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(1478),B=n(600);function z(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const q={toggle:"toggle_Lphv",toggleButton:"toggleButton_C4u_",darkToggleIcon:"darkToggleIcon_a49f",lightToggleIcon:"lightToggleIcon_YVKM",toggleButtonDisabled:"toggleButtonDisabled_K1qw"};function $(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,B.A)(),s=(0,l.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.A)(q.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.A)("clean-btn",q.toggleButton,!i&&q.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(z,{className:(0,o.A)(q.toggleIcon,q.lightToggleIcon)}),(0,u.jsx)(U,{className:(0,o.A)(q.toggleIcon,q.darkToggleIcon)})]})})}const H=r.memo($),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_pSsd"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.G)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(7350);function K(){return(0,u.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Q(){const e=(0,T.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(S,{color:"var(--ifm-color-emphasis-600)"})})}function Z(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(K,{}),(0,u.jsx)(V,{className:"margin-right--md"}),(0,u.jsx)(Q,{})]})}var Y=n(6601),J=n(7838),X=n(5407),ee=n(7473),te=n(7550);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,J.A)(r),p=(0,J.A)(t),f=(0,J.A)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,X.A)(o),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,m&&(0,u.jsx)(te.A,{...s&&{width:12,height:12}})]})};return o?(0,u.jsx)(Y.A,{href:l?f:o,...c,...h}):(0,u.jsx)(Y.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.G)(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.A)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1069),se=n(8492),le=n(6869);const ce="dropdownNavbarItemMobile_I3x3";function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.ys)(e.to,t)||!!(0,ee.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!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]),(0,u.jsxs)("div",{ref:l,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.A)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Fe,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.A)(),{pathname:t}=(0,s.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.A)(ce,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Fe,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(282);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_ZSsF";var be=n(2525),ve=n(7038),ye=n(1886),we=n(3330);var ke=n(7471),Se=n(8143);const xe={button:{buttonText:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};function Ee(e){let{apiKey:t,alwaysOpen:n,noFastMode:o}=e;return(0,r.useLayoutEffect)((()=>{if(!window?.document)return;let e=document.getElementById("__cookbook");e||(e=document.createElement("div"),e.id="__cookbook",e.dataset.apiKey=t,n&&(e.dataset.alwaysOpen=""),o&&(e.dataset.noFast=""),document.body.appendChild(e));let r=document.getElementById("__cookbook-script");r||(r=document.createElement("script"),r.src="/js/cookbookdev.index.cjs.js",r.id="__cookbook-script",r.async=!0,document.body.appendChild(r))}),[]),null}const Ce="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NjY5ZDFiNmExMTk3NjM3NDIzOWFmODgiLCJpYXQiOjE3MTgyMTA5OTgsImV4cCI6MjAzMzc4Njk5OH0.m302WLKYHPOARN08cYT7gMb6TvRwhOijtsD39PRaj1A";let _e=null;function Oe(e){let{hit:t,children:n}=e;return(0,u.jsx)(Y.A,{to:t.url,children:n})}function Ae(e){let{state:t,onClose:n}=e;const r=(0,ve.w)();return(0,u.jsx)(Y.A,{to:r(t.query),onClick:n,children:(0,u.jsx)(l.A,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Te(e){let{contextualSearch:t,externalUrlRegex:o,...a}=e;const{siteMetadata:i}=(0,le.A)(),l=(0,ye.C)(),c=function(){const{locale:e,tags:t}=(0,we.af)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=a.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,f={...a.searchParameters,facetFilters:p},m=(0,s.W6)(),h=(0,r.useRef)(null),g=(0,r.useRef)(null),[b,v]=(0,r.useState)(!1),[y,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>_e?Promise.resolve():Promise.all([n.e(5081).then(n.bind(n,5081)),Promise.all([n.e(1869),n.e(7426)]).then(n.bind(n,7426)),Promise.all([n.e(1869),n.e(9505)]).then(n.bind(n,9505))]).then((e=>{let[{DocSearchModal:t}]=e;_e=t}))),[]),S=(0,r.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),v(!0)}))}),[k,v]),x=(0,r.useCallback)((()=>{v(!1),h.current?.remove()}),[v]),E=(0,r.useCallback)((e=>{k().then((()=>{v(!0),w(e.key)}))}),[k,v,w]),C=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.G)(o,t)?window.location.href=t:m.push(t)}}).current,_=(0,r.useRef)((e=>a.transformItems?a.transformItems(e):e.map((e=>({...e,url:l(e.url)}))))).current,O=(0,r.useMemo)((()=>e=>(0,u.jsx)(Ae,{...e,onClose:x})),[x]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return(0,be.E8)({isOpen:b,onOpen:S,onClose:x,onInput:E,searchButtonRef:g}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(ke.A,{children:[(0,u.jsx)("link",{rel:"preconnect",href:`https://${a.appId}-dsn.algolia.net`,crossOrigin:"anonymous"}),(0,u.jsx)("link",{rel:"icon",type:"image/png",href:"/share/logo.png"}),(0,u.jsx)("meta",{property:"og:image",content:"/share/share2.png"}),(0,u.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,u.jsx)("meta",{property:"twitter:image",content:"/share/share2.png"})]}),(0,u.jsx)(be.Bc,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:S,ref:g,translations:xe.button}),b&&_e&&h.current&&(0,Se.createPortal)((0,u.jsx)(_e,{onClose:x,initialScrollY:window.scrollY,initialQuery:y,navigator:C,transformItems:_,hitComponent:Oe,transformSearchClient:A,...a.searchPagePath&&{resultsFooterComponent:O},...a,searchParameters:f,placeholder:xe.placeholder,translations:xe.modal}),h.current),(0,u.jsx)(Ee,{apiKey:Ce})]})}function je(){const{siteConfig:e}=(0,le.A)();return(0,u.jsx)(Te,{theme:"light",...e.themeConfig.algolia})}const Le={navbarSearchContainer:"navbarSearchContainer_Aukl"};function Pe(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.A)(n,Le.navbarSearchContainer),children:t})}var De=n(9612),Re=n(3745);var Ne=n(3636);const Ie=e=>e.docs.find((t=>t.id===e.mainDocId));const Me={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,s.zy)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:ge}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(Pe,{className:n,children:(0,u.jsx)(je,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.A)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,De.zK)(r),i=(0,Re.QB)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,De.zK)(r),i=(0,Re.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,Re.Vd)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,s.zy)(),p=(0,De.zK)(n),f=(0,De.jh)(n),{savePreferredVersionName:m}=(0,Ne.g1)(n),h=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ie(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],g=(0,Re.Vd)(n)[0],b=t&&h.length>1?(0,l.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,v=t&&h.length>1?void 0:Ie(g).path;return h.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:b,to:v,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:v,items:h,isActive:r?()=>!1:void 0})}};function Fe(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Me[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Be(){const e=(0,T.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Fe,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function ze(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ue(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(ze,{onClick:()=>t.hide()}),t.content]})}function qe(){const e=(0,T.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Z,{}),primaryMenu:(0,u.jsx)(Be,{}),secondaryMenu:(0,u.jsx)(Ue,{})}):null}const $e={navbarHideable:"navbarHideable_gQho",navbarHidden:"navbarHidden_zxOU"};function He(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function Ge(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,T.M)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,j.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(o.current)return void(o.current=!1);const s=r?.scrollY,l=document.documentElement.scrollHeight-a.current,c=window.innerHeight;s&&i>=s?n(!1):i+c<l&&n(!0)})),(0,c.$)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[$e.navbarHideable,!d&&$e.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(He,{onClick:i.toggle}),(0,u.jsx)(qe,{})]})}var Ve=n(4932);const We={errorBoundaryError:"errorBoundaryError_QHYE",errorBoundaryFallback:"errorBoundaryFallback_uBmD"};function Ke(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Qe(e){let{error:t}=e;const n=(0,Ve.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:We.errorBoundaryError,children:n})}class Ze extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Ye="right";function Je(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Xe(){const{toggle:e,shown:t}=(0,T.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.T)({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",children:(0,u.jsx)(Je,{})})}const et={colorModeToggle:"colorModeToggle_rXT6"};function tt(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Ze,{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}),children:(0,u.jsx)(Fe,{...e})},t)))})}function nt(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function rt(){const e=(0,T.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Ye)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(nt,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Xe,{}),(0,u.jsx)(K,{}),(0,u.jsx)(tt,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(tt,{items:r}),(0,u.jsx)(V,{className:et.colorModeToggle}),!o&&(0,u.jsx)(Pe,{children:(0,u.jsx)(je,{})})]})})}function ot(){return(0,u.jsx)(Ge,{children:(0,u.jsx)(rt,{})})}function at(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,J.A)(n),l=(0,J.A)(r,{forcePrependBaseUrl:!0});return(0,u.jsx)(Y.A,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:o})}function it(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(at,{item:t})},t.href??t.to)}function st(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"flex-1",children:[(0,u.jsx)("div",{className:"footer__title text-[#FFFFFF66]",children:t.title}),(0,u.jsx)("ul",{className:"flex flex-col footer__items clean-list text-[#fff]",children:t.items.map(((e,t)=>(0,u.jsx)(it,{item:e},t)))})]})}function lt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 xl:flex xl:flex-row",children:t.map(((e,t)=>(0,u.jsx)(st,{column:e},t)))})}function ct(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function ut(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(at,{item:t})}function dt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(ut,{item:e}),t.length!==n+1&&(0,u.jsx)(ct,{})]},n)))})})}function pt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(lt,{columns:t}):(0,u.jsx)(dt,{links:t})}var ft=n(7500),mt=n.n(ft),ht=n(3958);const gt="footerLogoLink_DDai";function bt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,J.h)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(ht.A,{className:mt()("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function vt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Y.A,{href:t.href,className:gt,target:t.target,children:(0,u.jsx)(bt,{logo:t})}):(0,u.jsx)(bt,{logo:t})}function yt(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}const wt=e=>{let{fill:t,size:n}=e;return(0,u.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:n||"24",height:n||"24",viewBox:"0 0 10 9",fill:"none",children:(0,u.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1 2C1.55228 2 2 1.55228 2 1C2 0.447715 1.55228 0 1 0C0.447715 0 0 0.447715 0 1C0 1.55228 0.447715 2 1 2ZM2 9V3H0V9H2ZM3.5 2H5.5V3.49639C5.61312 2.97694 6.21481 2 7.49922 2C8.78661 2 10 2.22698 10 5V9H8.4V5.03955C8.4 4.65066 8.09658 3.53955 6.99922 3.53955C5.83419 3.53955 5.51747 4.70903 5.5 5.01444V9H3.5V2Z",fill:t||"#CCCCCC"})})},kt=e=>{let{fill:t,size:n,className:r}=e;return(0,u.jsx)("svg",{className:r,fill:"none",height:n||"25",viewBox:"0 0 24 25",width:n||"24",xmlns:"http://www.w3.org/2000/svg",children:(0,u.jsx)("path",{d:"M14.4027 10.4686L21.8482 2H20.0838L13.619 9.3532L8.45547 2H2.5L10.3082 13.1193L2.5 22H4.26443L11.0915 14.2348L16.5445 22H22.5L14.4023 10.4686H14.4027ZM11.9861 13.2173L11.195 12.1101L4.90018 3.29968H7.61025L12.6902 10.4099L13.4813 11.5172L20.0847 20.7594H17.3746L11.9861 13.2177V13.2173Z",fill:t||"#CCCCCC"})})},St=e=>{let{fill:t,size:n,className:r}=e;return(0,u.jsx)("svg",{className:r,fill:"none",height:n||"24",viewBox:"0 0 24 24",width:n||"24",xmlns:"http://www.w3.org/2000/svg",children:(0,u.jsx)("path",{d:"M19.6695 5.02043C19.6634 5.00856 19.6532 4.99925 19.6409 4.99418C18.2112 4.33826 16.7026 3.87053 15.1526 3.60271C15.1386 3.60009 15.124 3.60198 15.1111 3.60811C15.0981 3.61423 15.0874 3.62429 15.0805 3.63683C14.8751 4.00969 14.6886 4.39268 14.5218 4.78433C12.851 4.53072 11.1516 4.53072 9.4808 4.78433C9.31287 4.39169 9.12339 4.0086 8.91324 3.63683C8.90603 3.62456 8.8953 3.61474 8.88243 3.60865C8.86956 3.60256 8.85515 3.60049 8.84109 3.60271C7.29098 3.86997 5.78223 4.33773 4.35279 4.99422C4.34056 4.99941 4.33023 5.00827 4.32324 5.01957C1.46465 9.2885 0.681579 13.4525 1.06573 17.5649C1.06681 17.5749 1.06991 17.5847 1.07483 17.5936C1.07976 17.6024 1.08642 17.6102 1.09442 17.6164C2.75895 18.8489 4.62074 19.7896 6.60035 20.3985C6.6143 20.4027 6.62918 20.4025 6.64301 20.398C6.65684 20.3934 6.66895 20.3848 6.67772 20.3732C7.10289 19.7946 7.47963 19.182 7.8041 18.5416C7.80856 18.5328 7.81111 18.5232 7.81157 18.5133C7.81204 18.5035 7.81041 18.4936 7.8068 18.4845C7.80319 18.4753 7.79768 18.467 7.79063 18.4601C7.78358 18.4532 7.77515 18.4479 7.76589 18.4445C7.1718 18.2172 6.59665 17.9432 6.04584 17.625C6.03584 17.6192 6.02743 17.6109 6.02137 17.601C6.01532 17.5911 6.01179 17.5799 6.0111 17.5683C6.01042 17.5567 6.01259 17.5451 6.01744 17.5346C6.02229 17.524 6.02966 17.5148 6.0389 17.5078C6.15481 17.4212 6.2687 17.332 6.38049 17.2402C6.3903 17.2321 6.40216 17.2269 6.41475 17.2252C6.42734 17.2235 6.44015 17.2254 6.45174 17.2306C10.0603 18.8775 13.9671 18.8775 17.533 17.2306C17.5446 17.2251 17.5576 17.2229 17.5703 17.2245C17.5831 17.226 17.5952 17.2312 17.6051 17.2393C17.7171 17.3316 17.8312 17.4212 17.9476 17.5078C17.9569 17.5148 17.9643 17.5239 17.9692 17.5344C17.9742 17.5449 17.9764 17.5565 17.9758 17.5681C17.9752 17.5796 17.9718 17.5909 17.9658 17.6008C17.9598 17.6108 17.9515 17.6191 17.9415 17.625C17.392 17.9459 16.8163 18.2197 16.2206 18.4437C16.2114 18.4472 16.203 18.4526 16.196 18.4596C16.189 18.4666 16.1835 18.475 16.18 18.4842C16.1764 18.4935 16.1749 18.5034 16.1754 18.5132C16.176 18.5231 16.1786 18.5328 16.1831 18.5416C16.513 19.1785 16.8892 19.7903 17.3087 20.3721C17.3172 20.3841 17.3292 20.393 17.3431 20.3977C17.357 20.4025 17.372 20.4027 17.386 20.3984C19.3692 19.7916 21.2342 18.8507 22.9009 17.6164C22.909 17.6105 22.9157 17.6029 22.9207 17.5942C22.9256 17.5854 22.9286 17.5757 22.9295 17.5657C23.3894 12.8114 22.1596 8.68152 19.6695 5.02043ZM8.34302 15.0608C7.25657 15.0608 6.36137 14.0638 6.36137 12.8394C6.36137 11.6149 7.2392 10.6178 8.34302 10.6178C9.45545 10.6178 10.342 11.6236 10.3246 12.8393C10.3246 14.0638 9.44675 15.0608 8.34302 15.0608ZM15.6698 15.0608C14.5834 15.0608 13.6882 14.0638 13.6882 12.8394C13.6882 11.6149 14.566 10.6178 15.6698 10.6178C16.7823 10.6178 17.6688 11.6236 17.6514 12.8393C17.6514 14.0638 16.7823 15.0608 15.6698 15.0608Z",fill:t||"#CCCCCC"})})},xt=e=>{let{fill:t,size:n,className:r}=e;return(0,u.jsx)("svg",{className:r,fill:"none",height:n||"24",viewBox:"0 0 24 24",width:n||"24",xmlns:"http://www.w3.org/2000/svg",children:(0,u.jsx)("path",{d:"M11.9996 1.96875C6.3193 1.96875 1.71387 6.57354 1.71387 12.2545C1.71387 16.7988 4.66137 20.6547 8.74801 22.0143C9.2623 22.1095 9.4513 21.7913 9.4513 21.5193C9.4513 21.2744 9.44165 20.4637 9.43715 19.6042C6.57515 20.2265 5.97151 18.3905 5.97151 18.3905C5.50351 17.2019 4.8298 16.8856 4.8298 16.8856C3.89637 16.2473 4.90051 16.2601 4.90051 16.2601C5.93294 16.3327 6.4768 17.3202 6.4768 17.3202C7.39415 18.8926 8.88301 18.4381 9.46994 18.1752C9.56187 17.5105 9.82865 17.0566 10.1231 16.7995C7.83837 16.5397 5.43665 15.6571 5.43665 11.7164C5.43665 10.5933 5.83844 9.67596 6.49672 8.95532C6.39001 8.69625 6.03772 7.65032 6.59637 6.23346C6.59637 6.23346 7.46037 5.95704 9.42558 7.28775C10.2459 7.05954 11.1259 6.94575 12.0002 6.94125C12.8739 6.94511 13.7546 7.05954 14.5768 7.28775C16.5401 5.95704 17.4022 6.23346 17.4022 6.23346C17.9621 7.65032 17.6098 8.69625 17.5031 8.95532C18.1627 9.67532 18.5619 10.5933 18.5619 11.7164C18.5619 15.6667 16.1557 16.5365 13.8652 16.7917C14.2342 17.1112 14.5627 17.7368 14.5627 18.6965C14.5627 20.0729 14.5504 21.1805 14.5504 21.5193C14.5504 21.7932 14.7356 22.114 15.2569 22.013C19.3417 20.6515 22.2853 16.7975 22.2853 12.2545C22.2853 6.57354 17.6799 1.96875 11.9996 1.96875Z",fill:t||"#CCCCCC"})})},Et=e=>{let{fill:t,size:n,className:r}=e;return(0,u.jsxs)("svg",{className:r,fill:"none",height:n||"24",viewBox:"0 0 24 24",width:n||"24",xmlns:"http://www.w3.org/2000/svg",children:[(0,u.jsx)("path",{d:"M13.4188 11.8306C13.4188 15.3057 10.6209 18.1227 7.17131 18.1227C3.72172 18.1227 0.923828 15.3036 0.923828 11.8306C0.923828 8.35769 3.72172 5.53857 7.17131 5.53857C10.6209 5.53857 13.4188 8.35557 13.4188 11.8306Z",fill:t||"#CCCCCC"}),(0,u.jsx)("path",{d:"M20.273 11.8307C20.273 15.1019 18.8741 17.7533 17.1482 17.7533C15.4224 17.7533 14.0234 15.1019 14.0234 11.8307C14.0234 8.55937 15.4224 5.90796 17.1482 5.90796C18.8741 5.90796 20.273 8.55937 20.273 11.8307Z",fill:t||"#CCCCCC"}),(0,u.jsx)("path",{d:"M23.0782 11.8306C23.0782 14.7601 22.5857 17.1355 21.9785 17.1355C21.3714 17.1355 20.8789 14.7601 20.8789 11.8306C20.8789 8.90108 21.3714 6.52563 21.9785 6.52563C22.5857 6.52563 23.0782 8.89896 23.0782 11.8306Z",fill:t||"#CCCCCC"})]})},Ct=e=>{let{fill:t,size:n,className:r}=e;return(0,u.jsx)("svg",{className:r,height:n||"24",version:"1.1",viewBox:"0 0 25 24",width:n||"25",xmlns:"http://www.w3.org/2000/svg",children:(0,u.jsx)("path",{d:"M21.1304 18.7457C21.5068 17.5907 23.2704 6.07998 23.4884 3.81182C23.5542 3.12488 23.3371 2.6684 22.9118 2.46463C22.3975 2.21726 21.6358 2.34095 20.7522 2.6595C19.5402 3.09641 4.04667 9.67486 3.15151 10.0557C2.30262 10.4161 1.5 10.8094 1.5 11.3789C1.5 11.7793 1.73758 12.0044 2.39249 12.2384C3.0741 12.4814 4.79056 13.0019 5.80407 13.2813C6.7802 13.5509 7.89159 13.3169 8.51447 12.9298C9.17471 12.5196 16.7943 7.42094 17.3415 6.97425C17.8878 6.52756 18.3239 7.09972 17.8772 7.5473C17.4305 7.99399 12.2001 13.0704 11.5105 13.7734C10.6732 14.6267 11.2676 15.5112 11.8291 15.8653C12.4706 16.2693 17.0843 19.3641 17.7793 19.8606C18.4742 20.3572 19.179 20.5823 19.8241 20.5823C20.4692 20.5823 20.8091 19.7325 21.1304 18.7457Z",fill:t||"#CCCCCC"})})};function _t(e){let{children:t,href:n,...r}=e;return(0,u.jsx)("a",{href:n||"",target:n?.startsWith("http")?"_blank":"_self",...r,children:t})}"undefined"==typeof window||window.location.origin;const Ot=[{label:"Twitter",link:"https://x.com/MorphLayer",img:(e,t)=>(0,u.jsx)(kt,{fill:e,size:t}),log_name:"twitter:_click"},{label:"Discord",link:"https://discord.com/invite/MorphLayer",img:(e,t)=>(0,u.jsx)(St,{fill:e,size:t})},{label:"Medium",link:"https://blog.morphl2.io/",img:(e,t)=>(0,u.jsx)(Et,{fill:e,size:t}),log_name:"medium:_click"},{label:"Telegram",link:"https://t.me/MorphL2official",img:(e,t)=>(0,u.jsx)(Ct,{fill:e,size:t})},{label:"Github",link:"",img:(e,t)=>(0,u.jsx)(xt,{fill:e,size:t})},{label:"LinkedIn",link:"http://www.linkedin.com/company/morphl2",img:(e,t)=>(0,u.jsx)(wt,{fill:e,size:t})}];function At(e){const t=Ot.filter((e=>e.link)).slice(0,e.slice||Ot.length);return(0,u.jsx)("div",{className:mt()("hidden text-b-white",e.className,{[`grid-cols-${t.length}`]:!0}),children:t?.map(((t,n)=>(0,u.jsxs)(_t,{href:t.link||"",className:e.bgClass+" social-link flex justify-center items-center",target:t.link.startsWith("http")?"_blank":"_self",children:[(0,u.jsx)("span",{className:"inline-block w-6 h-6 flex items-center justify-center",children:t.img(e.fill||"",e.size||"24")}),(0,u.jsx)("span",{className:"sr-only ml-3 -mt-1 social-label",children:t.label})]},n)))})}function Tt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,u.jsxs)("footer",{className:mt()("footer-bg relative min-h-screen !bg-[#21231C]",{"footer--dark":"dark"===t}),children:[(0,u.jsx)("img",{src:"/lottie/logo-cover.svg",className:"-z-0 absolute bottom-8 xl:bottom-14 right-[5%] w-[97px] h-[97px] text-[#FFFFFF0a]"}),(0,u.jsxs)("div",{className:"flex z-30 flex-col md:flex-row max-w-7xl mx-auto px-4 md:px-0 py-6 md:py-10 md:pt-[100px]",children:[(0,u.jsxs)("div",{className:"order-3 md:order-1 mt-0 md:w-[284px]",children:[(0,u.jsx)("div",{className:"hidden morph-logo w-[160px] h-[25px]"}),(0,u.jsx)(At,{bgClass:"hidden bg-[#ffffff1a] rounded-full",size:"12",className:"mt-6 flex flex-row gap-4"}),(0,u.jsxs)("div",{className:"copy-right mt-3 text-xs text-desc-1",children:["\xa9 ",(new Date).getFullYear()," ",(0,u.jsx)(_t,{href:n.brand,className:"text-desc-1",children:"Morph"}),". All rights reserved"]})]}),(0,u.jsx)("div",{className:"order-1 w-[284px]"}),(0,u.jsx)("div",{className:"order-2 flex-1 justify-end",children:n}),(0,u.jsxs)("p",{className:"order-3 mt-[133px] xl:mt-0 text-left pb-8 xl:pb-0 xl:absolute screen-huge xl:bottom-8 text-[#AEDFE0] leading-[59px] text-[59px] md:leading-[84px] md:text-[84px] xl:leading-[100px] xl:text-[140px] font-bold uppercase font-denim",children:[(0,u.jsx)("p",{className:"animate-up",children:"It\u2019s"}),(0,u.jsx)("p",{className:"animate-up",children:"morphing"}),(0,u.jsx)("p",{className:"animate-up",children:"time!"})]})]})]})}function jt(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(Tt,{style:o,links:n&&n.length>0&&(0,u.jsx)(pt,{links:n}),logo:r&&(0,u.jsx)(vt,{logo:r}),copyright:t&&(0,u.jsx)(yt,{copyright:t})})}const Lt=r.memo(jt),Pt=(0,L.fM)([F.a,k.oq,j.Tv,Ne.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(P.y_,{children:(0,u.jsx)(T.e,{children:(0,u.jsx)(R,{children:t})})})}]);function Dt(e){let{children:t}=e;return(0,u.jsx)(Pt,{children:t})}var Rt=n(2406);function Nt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Rt.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Ke,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Qe,{error:t})})]})})})}const It={mainWrapper:"mainWrapper_avmg"};function Mt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.J)(),(0,u.jsxs)(Dt,{children:[(0,u.jsx)(i.be,{title:s,description:l}),(0,u.jsx)(y,{}),(0,u.jsx)(A,{}),(0,u.jsx)(ot,{}),(0,u.jsx)("div",{id:d,className:(0,o.A)(g.G.wrapper.main,It.mainWrapper,r),children:(0,u.jsx)(a.A,{fallback:e=>(0,u.jsx)(Nt,{...e}),children:t})}),!n&&(0,u.jsx)(Lt,{})]})}},7350:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(758);var r=n(6601),o=n(7838),a=n(6869),i=n(5349),s=n(3958),l=n(6070);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.A)(t.src),dark:(0,o.A)(t.srcDark||t.src)},i=(0,l.jsx)(s.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:s}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.A)(s?.href||"/"),m=n?"":t,h=s?.alt??m;return(0,l.jsxs)(r.A,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},7740:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(758);var r=n(7471),o=n(6070);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},3958:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(758),o=n(3526),a=n(600),i=n(1478);const s={themedComponent:"themedComponent_WQJe","themedComponent--light":"themedComponent--light_vC8m","themedComponent--dark":"themedComponent--dark_tNlc"};var l=n(6070);function c(e){let{className:t,children:n}=e;const c=(0,a.A)(),{colorMode:u}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1069:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>c});var r=n(758),o=n(3782),a=n(7132),i=n(3542),s=n(6070);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.A.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&c(t)}),[o,t]),o?(0,s.jsx)(h,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,s.jsx)(r,{...n})}},746:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>h,oq:()=>m});var r=n(758),o=n(600),a=n(9837),i=n(3991),s=n(5349),l=n(6070);const c=(0,a.Wf)("docusaurus.announcement.dismiss"),u=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},1478:(e,t,n)=>{"use strict";n.d(t,{G:()=>b,a:()=>g});var r=n(758),o=n(3782),a=n(3991),i=n(9837),s=n(5349),l=n(6070);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.p)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&h(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},3636:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>b,XK:()=>w,g1:()=>y});var r=n(758),o=n(9612),a=n(8372),i=n(5349),s=n(3745),l=n(3991),c=n(9837),u=n(6070);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,u.jsx)(m.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.C5?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function v(){const e=(0,r.useContext)(m);if(!e)throw new l.dV("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=v(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,o.Gy)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:o}=t[n];return r.versions.find((e=>e.name===o))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},9387:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,t:()=>c});var r=n(758),o=n(3991),a=n(6070);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},4451:(e,t,n)=>{"use strict";n.d(t,{n:()=>s,r:()=>l});var r=n(758),o=n(3991),a=n(6070);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},8058:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(758),o=n(5955),a=n(8080),i=n(9878),s=n(5349),l=n(3991),c=n(6070);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5955:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>l,y_:()=>s});var r=n(758),o=n(3991),a=n(6070);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Be)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},6906:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(758);const o="navigation-with-keyboard";function a(){(0,r.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)}}),[])}},7038:(e,t,n)=>{"use strict";n.d(t,{b:()=>s,w:()=>l});var r=n(758),o=n(6869),a=n(9878);const i="q";function s(){return(0,a.l)(i)}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,o.A)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},8080:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(758),o=n(3782);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7998:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",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:{}}},3542:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},3745:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>g,C5:()=>p,B5:()=>E,Vd:()=>k,QB:()=>x,fW:()=>S,OF:()=>w,Y:()=>v});var r=n(758),o=n(5557),a=n(1977),i=n(9612),s=n(3636),l=n(4451),c=n(9387);function u(e){return Array.from(new Set(e))}var d=n(8492);const p=!!i.Gy;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.ys)(e,t),h=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function b(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>b(e,t)));case"link":return!e.unlisted||g(e,t);default:return!0}}function v(e,t){return(0,r.useMemo)((()=>e.filter((e=>b(e,t)))),[e,t])}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,s.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,l.r)(),i=t.routes,s=i.find((e=>(0,o.B6)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.v)(i),sidebarName:c,sidebarItems:u}}},8318:(e,t,n)=>{"use strict";n.d(t,{s:()=>o});var r=n(6869);function o(e){const{siteConfig:t}=(0,r.A)(),{title:n,titleDelimiter:o}=t;return e?.trim().length?`${e.trim()} ${o} ${n}`:n}},9878:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,l:()=>l});var r=n(758),o=n(5557),a=n(3991);function i(e){!function(e){const t=(0,o.W6)(),n=(0,a._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,o.W6)();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.W6)();return(0,r.useCallback)(((t,n,r)=>{const o=new URLSearchParams(e.location.search);n?o.set(t,n):o.delete(t),(r?.push?e.push:e.replace)({search:o.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},926:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(758),o=n(3526),a=n(7471),i=n(5353);function s(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(7838),c=n(8318),u=n(6070);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const s=(0,c.s)(t),{withBaseUrl:d}=(0,l.h)(),p=o?d(o,{absolute:!0}):void 0;return(0,u.jsxs)(a.A,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,o.A)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(a.A,{children:(0,u.jsx)("html",{className:s})}),n]})}function m(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,o.A)(r,a),children:t})}},3991:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>s,_q:()=>i,dV:()=>l,fM:()=>u});var r=n(758),o=n(7132),a=n(6070);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.A)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},7473:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},8492:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(758),o=n(9625),a=n(6869);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(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(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.A,baseUrl:e})),[e])}},1773:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>c,gk:()=>f});var r=n(758),o=n(3782),a=n(600),i=(n(7132),n(3991)),s=n(6070);const l=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3330:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>i,af:()=>l,tU:()=>s});var r=n(9612),o=n(6869),a=n(3636);const i="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,o.A)(),t=(0,r.Gy)(),n=(0,r.gk)(),l=(0,a.XK)();const c=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,o=l[e],a=t[e].versions.find((e=>e.isLast));return s(e,(r??o??a).name)}))];return{locale:e.currentLocale,tags:c}}},9837:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>l});n(758);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"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 s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(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=a(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),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 r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},282:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(6869),o=n(5557),a=n(4932);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.A)(),{pathname:l}=(0,o.zy)(),c=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},9691:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(758),o=n(5557),a=n(3991);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},5349:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(6869);function o(){return(0,r.A)().siteConfig.themeConfig}},2022:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(6869);function o(){const{siteConfig:{themeConfig:e}}=(0,r.A)();return e}},1886:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(758),o=n(7473),a=n(7838),i=n(2022);function s(){const{withBaseUrl:e}=(0,a.h)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.c)();return(0,r.useCallback)((r=>{const a=new URL(r);if((0,o.G)(t,a.href))return r;const i=`${a.pathname+a.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},7379:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?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,a)}},5873:(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]}},4932:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(7379);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(5873);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},8602:(e,t,n)=>{"use strict";n.d(t,{zR:()=>x,TM:()=>T,yJ:()=>h,sC:()=>L,AO:()=>m,Fu:()=>g});var r=n(5890);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],s=e&&o(e),l=t&&o(t),c=s||l;if(e&&o(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=s(t),o=s(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var c=n(5385);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(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,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function h(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var v=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",k="hashchange";function S(){try{return window.history.state||{}}catch(e){return{}}}function x(e){void 0===e&&(e={}),v||(0,c.A)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,s=i.forceRefresh,l=void 0!==s&&s,d=i.getUserConfirmation,g=void 0===d?y:d,x=i.keyLength,E=void 0===x?6:x,C=e.basename?f(u(e.basename)):"";function _(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return C&&(a=p(a,C)),h(a,r,n)}function O(){return Math.random().toString(36).substr(2,E)}var A=b();function T(e){(0,r.A)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function j(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||D(_(e.state))}function L(){D(_(S()))}var P=!1;function D(e){if(P)P=!1,T();else{A.confirmTransitionTo(e,"POP",g,(function(t){t?T({action:"POP",location:e}):function(e){var t=U.location,n=N.indexOf(t.key);-1===n&&(n=0);var r=N.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(P=!0,M(o))}(e)}))}}var R=_(S()),N=[R.key];function I(e){return C+m(e)}function M(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(w,j),a&&window.addEventListener(k,L)):0===F&&(window.removeEventListener(w,j),a&&window.removeEventListener(k,L))}var z=!1;var U={length:n.length,action:"POP",location:R,createHref:I,push:function(e,t){var r="PUSH",a=h(e,t,O(),U.location);A.confirmTransitionTo(a,r,g,(function(e){if(e){var t=I(a),i=a.key,s=a.state;if(o)if(n.pushState({key:i,state:s},null,t),l)window.location.href=t;else{var c=N.indexOf(U.location.key),u=N.slice(0,c+1);u.push(a.key),N=u,T({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=h(e,t,O(),U.location);A.confirmTransitionTo(a,r,g,(function(e){if(e){var t=I(a),i=a.key,s=a.state;if(o)if(n.replaceState({key:i,state:s},null,t),l)window.location.replace(t);else{var c=N.indexOf(U.location.key);-1!==c&&(N[c]=a.key),T({action:r,location:a})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=A.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var E="hashchange",C={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:u},slash:{encodePath:u,decodePath:u}};function _(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function O(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function A(e){window.location.replace(_(window.location.href)+"#"+e)}function T(e){void 0===e&&(e={}),v||(0,c.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?y:o,i=n.hashType,s=void 0===i?"slash":i,l=e.basename?f(u(e.basename)):"",d=C[s],g=d.encodePath,w=d.decodePath;function k(){var e=w(O());return l&&(e=p(e,l)),h(e)}var S=b();function x(e){(0,r.A)(z,e),z.length=t.length,S.notifyListeners(z.location,z.action)}var T=!1,j=null;function L(){var e,t,n=O(),r=g(n);if(n!==r)A(r);else{var o=k(),i=z.location;if(!T&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(j===m(o))return;j=null,function(e){if(T)T=!1,x();else{var t="POP";S.confirmTransitionTo(e,t,a,(function(n){n?x({action:t,location:e}):function(e){var t=z.location,n=N.lastIndexOf(m(t));-1===n&&(n=0);var r=N.lastIndexOf(m(e));-1===r&&(r=0);var o=n-r;o&&(T=!0,I(o))}(e)}))}}(o)}}var P=O(),D=g(P);P!==D&&A(D);var R=k(),N=[m(R)];function I(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(E,L):0===M&&window.removeEventListener(E,L)}var B=!1;var z={length:t.length,action:"POP",location:R,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=_(window.location.href)),n+"#"+g(l+m(e))},push:function(e,t){var n="PUSH",r=h(e,void 0,void 0,z.location);S.confirmTransitionTo(r,n,a,(function(e){if(e){var t=m(r),o=g(l+t);if(O()!==o){j=t,function(e){window.location.hash=e}(o);var a=N.lastIndexOf(m(z.location)),i=N.slice(0,a+1);i.push(t),N=i,x({action:n,location:r})}else x()}}))},replace:function(e,t){var n="REPLACE",r=h(e,void 0,void 0,z.location);S.confirmTransitionTo(r,n,a,(function(e){if(e){var t=m(r),o=g(l+t);O()!==o&&(j=t,A(o));var a=N.indexOf(m(z.location));-1!==a&&(N[a]=t),x({action:n,location:r})}}))},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=S.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=S.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function j(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,i=t.initialIndex,s=void 0===i?0:i,l=t.keyLength,c=void 0===l?6:l,u=b();function d(e){(0,r.A)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,c)}var f=j(s,0,a.length-1),g=a.map((function(e){return h(e,void 0,"string"==typeof e?p():e.key||p())})),v=m;function y(e){var t=j(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[f],index:f,entries:g,createHref:v,push:function(e,t){var r="PUSH",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},1035:(e,t,n)=>{"use strict";var r=n(5959),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),g=0;g<i.length;++g){var b=i[g];if(!(a[b]||r&&r[b]||h&&h[b]||s&&s[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},9597:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5526:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},700:(e,t,n)=>{"use strict";n.r(t)},3331:(e,t,n)=>{"use strict";n.r(t)},3396:(e,t,n)=>{"use strict";n.r(t)},8744:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(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)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*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()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},4785:(e,t,n)=>{var r=n(5526);e.exports=m,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,s=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(s,f),s=f+d.length,p)l+=p[1];else{var m=e[s],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,S="+"===y||"*"===y,x="?"===y||"*"===y,E=h||c,C=b||v,_=h||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:g||a++,prefix:h||"",delimiter:E,optional:x,repeat:S,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":i(E,_)})}}return s<e.length&&(l+=e.substr(s)),l&&r.push(l),r}function i(e,t){return!t||t.indexOf(e)>-1?"[^"+c(e)+"]+?":c(t)+"|(?:(?!"+c(t)+")[^"+c(e)+"])+?"}function s(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",p(t)));return function(t,o){for(var a="",i=t||{},l=(o||{}).pretty?s:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=i[u.name];if(null==p){if(u.optional){u.partial&&(a+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');a+=u.prefix+d}}else a+=u}return a}}function c(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function d(e,t){return e.keys=t,e}function p(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,i="",s=0;s<e.length;s++){var l=e[s];if("string"==typeof l)i+=c(l);else{var u=c(l.prefix),f="(?:"+l.pattern+")";t.push(l),l.repeat&&(f+="(?:"+u+f+")*"),i+=f=l.optional?l.partial?u+"("+f+")?":"(?:"+u+"("+f+"))?":u+"("+f+")"}}var m=c(n.delimiter||"/"),h=i.slice(-m.length)===m;return o||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=a?"$":o&&h?"":"(?="+m+"|$)",d(new RegExp("^"+i,p(n)),t)}function m(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return d(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(m(e[o],t,n).source);return d(new RegExp("(?:"+r.join("|")+")",p(n)),t)}(e,t,n):function(e,t,n){return f(a(e,n),t,n)}(e,t,n)}},9227:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},6532:(e,t,n)=>{const r=n(9227),o=n(9670),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(7507).resolve(t)],delete Prism.languages[e],n(7507)(t),a.add(e)}))}i.silent=!1,e.exports=i},1274:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l<s.length&&!(o>=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},7507:(e,t,n)=>{var r={"./":6532};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=7507},9670:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in o(t,a),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.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[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;o(m);){for(var h in p={},m){var g=l[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},6186:(e,t,n)=>{"use strict";var r=n(2985);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},2736:(e,t,n)=>{e.exports=n(6186)()},2985:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9481:(e,t,n)=>{"use strict";var r=n(758),o=n(1896);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,s={};function l(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},m={};function h(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function v(e){return e[1].toUpperCase()}function y(e,t,n,r){var o=g.hasOwnProperty(t)?g[t]:null;(null!==o?0!==o.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!d.call(m,e)||!d.call(f,e)&&(p.test(e)?m[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,v);g[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,v);g[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,v);g[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),S=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),_=Symbol.for("react.provider"),O=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),j=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),P=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var D=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var R=Symbol.iterator;function N(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=R&&e[R]||e["@@iterator"])?e:null}var I,M=Object.assign;function F(e){if(void 0===I)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var B=!1;function z(e,t){if(!e||B)return"";B=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"==typeof c.stack){for(var o=c.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,s=a.length-1;1<=i&&0<=s&&o[i]!==a[s];)s--;for(;1<=i&&0<=s;i--,s--)if(o[i]!==a[s]){if(1!==i||1!==s)do{if(i--,0>--s||o[i]!==a[s]){var l="\n"+o[i].replace(" at new "," at ");return e.displayName&&l.includes("<anonymous>")&&(l=l.replace("<anonymous>",e.displayName)),l}}while(1<=i&&0<=s);break}}}finally{B=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function U(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=z(e.type,!1);case 11:return e=z(e.type.render,!1);case 1:return e=z(e.type,!0);default:return""}}function q(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case C:return"Profiler";case E:return"StrictMode";case T:return"Suspense";case j:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case A:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:q(e.type)||"Memo";case P:t=e._payload,e=e._init;try{return q(e(t))}catch(n){}}return null}function $(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return q(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function G(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=G(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function W(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=G(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Q(e,t){var n=t.checked;return M({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Z(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Y(e,t){null!=(t=t.checked)&&y(e,"checked",t,!1)}function J(e,t){Y(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function X(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return M({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1<n.length)throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function ae(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function se(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function le(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?se(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,de=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function he(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=he(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(fe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var be=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ve(e,t){if(t){if(be[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function ye(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Se=null,xe=null,Ee=null;function Ce(e){if(e=wo(e)){if("function"!=typeof Se)throw Error(a(280));var t=e.stateNode;t&&(t=So(t),Se(e.stateNode,e.type,t))}}function _e(e){xe?Ee?Ee.push(e):Ee=[e]:xe=e}function Oe(){if(xe){var e=xe,t=Ee;if(Ee=xe=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Ae(e,t){return e(t)}function Te(){}var je=!1;function Le(e,t,n){if(je)return e(t,n);je=!0;try{return Ae(e,t,n)}finally{je=!1,(null!==xe||null!==Ee)&&(Te(),Oe())}}function Pe(e,t){var n=e.stateNode;if(null===n)return null;var r=So(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var De=!1;if(u)try{var Re={};Object.defineProperty(Re,"passive",{get:function(){De=!0}}),window.addEventListener("test",Re,Re),window.removeEventListener("test",Re,Re)}catch(ue){De=!1}function Ne(e,t,n,r,o,a,i,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var Ie=!1,Me=null,Fe=!1,Be=null,ze={onError:function(e){Ie=!0,Me=e}};function Ue(e,t,n,r,o,a,i,s,l){Ie=!1,Me=null,Ne.apply(ze,arguments)}function qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function $e(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(qe(e)!==e)throw Error(a(188))}function Ge(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=qe(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return He(o),e;if(i===r)return He(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var We=o.unstable_scheduleCallback,Ke=o.unstable_cancelCallback,Qe=o.unstable_shouldYield,Ze=o.unstable_requestPaint,Ye=o.unstable_now,Je=o.unstable_getCurrentPriorityLevel,Xe=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,at=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(st(e)/lt|0)|0},st=Math.log,lt=Math.LN2;var ct=64,ut=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&n;if(0!==i){var s=i&~o;0!==s?r=dt(s):0!==(a&=i)&&(r=dt(a))}else 0!==(i=n&~o)?r=dt(i):0!==a&&(r=dt(a));if(0===r)return 0;if(0!==t&&t!==r&&!(t&o)&&((o=r&-r)>=(a=t&-t)||16===o&&4194240&a))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-it(t)),r|=e[n],t&=~o;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function ht(){var e=ct;return!(4194240&(ct<<=1))&&(ct=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function bt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function vt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var yt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var kt,St,xt,Et,Ct,_t=!1,Ot=[],At=null,Tt=null,jt=null,Lt=new Map,Pt=new Map,Dt=[],Rt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Nt(e,t){switch(e){case"focusin":case"focusout":At=null;break;case"dragenter":case"dragleave":Tt=null;break;case"mouseover":case"mouseout":jt=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Pt.delete(t.pointerId)}}function It(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&&(null!==(t=wo(t))&&St(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function Mt(e){var t=yo(e.target);if(null!==t){var n=qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=$e(n)))return e.blockedOn=t,void Ct(e.priority,(function(){xt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Qt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=wo(n))&&St(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function Bt(e,t,n){Ft(e)&&n.delete(t)}function zt(){_t=!1,null!==At&&Ft(At)&&(At=null),null!==Tt&&Ft(Tt)&&(Tt=null),null!==jt&&Ft(jt)&&(jt=null),Lt.forEach(Bt),Pt.forEach(Bt)}function Ut(e,t){e.blockedOn===t&&(e.blockedOn=null,_t||(_t=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,zt)))}function qt(e){function t(t){return Ut(t,e)}if(0<Ot.length){Ut(Ot[0],e);for(var n=1;n<Ot.length;n++){var r=Ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==At&&Ut(At,e),null!==Tt&&Ut(Tt,e),null!==jt&&Ut(jt,e),Lt.forEach(t),Pt.forEach(t),n=0;n<Dt.length;n++)(r=Dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Dt.length&&null===(n=Dt[0]).blockedOn;)Mt(n),null===n.blockedOn&&Dt.shift()}var $t=w.ReactCurrentBatchConfig,Ht=!0;function Gt(e,t,n,r){var o=yt,a=$t.transition;$t.transition=null;try{yt=1,Wt(e,t,n,r)}finally{yt=o,$t.transition=a}}function Vt(e,t,n,r){var o=yt,a=$t.transition;$t.transition=null;try{yt=4,Wt(e,t,n,r)}finally{yt=o,$t.transition=a}}function Wt(e,t,n,r){if(Ht){var o=Qt(e,t,n,r);if(null===o)Hr(e,t,r,Kt,n),Nt(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return At=It(At,e,t,n,r,o),!0;case"dragenter":return Tt=It(Tt,e,t,n,r,o),!0;case"mouseover":return jt=It(jt,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return Lt.set(a,It(Lt.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,Pt.set(a,It(Pt.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(Nt(e,r),4&t&&-1<Rt.indexOf(e)){for(;null!==o;){var a=wo(o);if(null!==a&&kt(a),null===(a=Qt(e,t,n,r))&&Hr(e,t,r,Kt,n),a===o)break;o=a}null!==o&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Kt=null;function Qt(e,t,n,r){if(Kt=null,null!==(e=yo(e=ke(r))))if(null===(t=qe(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=$e(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Kt=e,null}function Zt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Je()){case Xe:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Yt=null,Jt=null,Xt=null;function en(){if(Xt)return Xt;var e,t,n=Jt,r=n.length,o="value"in Yt?Yt.value:Yt.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return Xt=o.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return M(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,sn,ln,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=on(cn),dn=M({},cn,{view:0,detail:0}),pn=on(dn),fn=M({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ln&&(ln&&"mousemove"===e.type?(an=e.screenX-ln.screenX,sn=e.screenY-ln.screenY):sn=an=0,ln=e),an)},movementY:function(e){return"movementY"in e?e.movementY:sn}}),mn=on(fn),hn=on(M({},fn,{dataTransfer:0})),gn=on(M({},dn,{relatedTarget:0})),bn=on(M({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),vn=M({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),yn=on(vn),wn=on(M({},cn,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Sn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},xn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=xn[e])&&!!t[e]}function Cn(){return En}var _n=M({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Sn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),On=on(_n),An=on(M({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Tn=on(M({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),jn=on(M({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=M({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Pn=on(Ln),Dn=[9,13,27,32],Rn=u&&"CompositionEvent"in window,Nn=null;u&&"documentMode"in document&&(Nn=document.documentMode);var In=u&&"TextEvent"in window&&!Nn,Mn=u&&(!Rn||Nn&&8<Nn&&11>=Nn),Fn=String.fromCharCode(32),Bn=!1;function zn(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Un(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var qn=!1;var $n={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!$n[e.type]:"textarea"===t}function Gn(e,t,n,r){_e(r),0<(t=Vr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Wn=null;function Kn(e){Fr(e,0)}function Qn(e){if(W(ko(e)))return e}function Zn(e,t){if("change"===e)return t}var Yn=!1;if(u){var Jn;if(u){var Xn="oninput"in document;if(!Xn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Xn="function"==typeof er.oninput}Jn=Xn}else Jn=!1;Yn=Jn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),Wn=Vn=null)}function nr(e){if("value"===e.propertyName&&Qn(Wn)){var t=[];Gn(t,Wn,e,ke(e)),Le(Kn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Wn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Wn)}function ar(e,t){if("click"===e)return Qn(t)}function ir(e,t){if("input"===e||"change"===e)return Qn(t)}var sr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function lr(e,t){if(sr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!d.call(t,o)||!sr(e[o],t[o]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&&a>r&&(o=r,r=a,a=o),o=ur(n,a);var i=ur(n,r);o&&i&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hr=u&&"documentMode"in document&&11>=document.documentMode,gr=null,br=null,vr=null,yr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;yr||null==gr||gr!==K(r)||("selectionStart"in(r=gr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},vr&&lr(vr,r)||(vr=r,0<(r=Vr(br,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Sr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},xr={},Er={};function Cr(e){if(xr[e])return xr[e];if(!Sr[e])return e;var t,n=Sr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return xr[e]=n[t];return e}u&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete Sr.animationend.animation,delete Sr.animationiteration.animation,delete Sr.animationstart.animation),"TransitionEvent"in window||delete Sr.transitionend.transition);var _r=Cr("animationend"),Or=Cr("animationiteration"),Ar=Cr("animationstart"),Tr=Cr("transitionend"),jr=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Pr(e,t){jr.set(e,t),l(t,[e])}for(var Dr=0;Dr<Lr.length;Dr++){var Rr=Lr[Dr];Pr(Rr.toLowerCase(),"on"+(Rr[0].toUpperCase()+Rr.slice(1)))}Pr(_r,"onAnimationEnd"),Pr(Or,"onAnimationIteration"),Pr(Ar,"onAnimationStart"),Pr("dblclick","onDoubleClick"),Pr("focusin","onFocus"),Pr("focusout","onBlur"),Pr(Tr,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),l("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),l("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),l("onBeforeInput",["compositionend","keypress","textInput","paste"]),l("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Nr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ir=new Set("cancel close invalid load scroll toggle".split(" ").concat(Nr));function Mr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,i,s,l,c){if(Ue.apply(this,arguments),Ie){if(!Ie)throw Error(a(198));var u=Me;Ie=!1,Me=null,Fe||(Fe=!0,Be=u)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var s=r[i],l=s.instance,c=s.currentTarget;if(s=s.listener,l!==a&&o.isPropagationStopped())break e;Mr(o,s,c),a=l}else for(i=0;i<r.length;i++){if(l=(s=r[i]).instance,c=s.currentTarget,s=s.listener,l!==a&&o.isPropagationStopped())break e;Mr(o,s,c),a=l}}}if(Fe)throw e=Be,Fe=!1,Be=null,e}function Br(e,t){var n=t[go];void 0===n&&(n=t[go]=new Set);var r=e+"__bubble";n.has(r)||($r(t,e,2,!1),n.add(r))}function zr(e,t,n){var r=0;t&&(r|=4),$r(n,e,r,t)}var Ur="_reactListening"+Math.random().toString(36).slice(2);function qr(e){if(!e[Ur]){e[Ur]=!0,i.forEach((function(t){"selectionchange"!==t&&(Ir.has(t)||zr(t,!1,e),zr(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Ur]||(t[Ur]=!0,zr("selectionchange",!1,t))}}function $r(e,t,n,r){switch(Zt(t)){case 1:var o=Gt;break;case 4:o=Vt;break;default:o=Wt}n=o.bind(null,t,n,e),o=void 0,!De||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,o){var a=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var s=r.stateNode.containerInfo;if(s===o||8===s.nodeType&&s.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var l=i.tag;if((3===l||4===l)&&((l=i.stateNode.containerInfo)===o||8===l.nodeType&&l.parentNode===o))return;i=i.return}for(;null!==s;){if(null===(i=yo(s)))return;if(5===(l=i.tag)||6===l){r=a=i;continue e}s=s.parentNode}}r=r.return}Le((function(){var r=a,o=ke(n),i=[];e:{var s=jr.get(e);if(void 0!==s){var l=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":l=On;break;case"focusin":c="focus",l=gn;break;case"focusout":c="blur",l=gn;break;case"beforeblur":case"afterblur":l=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=Tn;break;case _r:case Or:case Ar:l=bn;break;case Tr:l=jn;break;case"scroll":l=pn;break;case"wheel":l=Pn;break;case"copy":case"cut":case"paste":l=yn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=An}var u=!!(4&t),d=!u&&"scroll"===e,p=u?null!==s?s+"Capture":null:s;u=[];for(var f,m=r;null!==m;){var h=(f=m).stateNode;if(5===f.tag&&null!==h&&(f=h,null!==p&&(null!=(h=Pe(m,p))&&u.push(Gr(m,h,f)))),d)break;m=m.return}0<u.length&&(s=new l(s,c,null,n,o),i.push({event:s,listeners:u}))}}if(!(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||n===we||!(c=n.relatedTarget||n.fromElement)||!yo(c)&&!c[ho])&&(l||s)&&(s=o.window===o?o:(s=o.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(c=(c=n.relatedTarget||n.toElement)?yo(c):null)&&(c!==(d=qe(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(l=null,c=r),l!==c)){if(u=mn,h="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=An,h="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==l?s:ko(l),f=null==c?s:ko(c),(s=new u(h,m+"leave",l,n,o)).target=d,s.relatedTarget=f,h=null,yo(o)===r&&((u=new u(p,m+"enter",c,n,o)).target=f,u.relatedTarget=d,h=u),d=h,l&&c)e:{for(p=c,m=0,f=u=l;f;f=Wr(f))m++;for(f=0,h=p;h;h=Wr(h))f++;for(;0<m-f;)u=Wr(u),m--;for(;0<f-m;)p=Wr(p),f--;for(;m--;){if(u===p||null!==p&&u===p.alternate)break e;u=Wr(u),p=Wr(p)}u=null}else u=null;null!==l&&Kr(i,s,l,u,!1),null!==c&&null!==d&&Kr(i,d,c,u,!0)}if("select"===(l=(s=r?ko(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var g=Zn;else if(Hn(s))if(Yn)g=ir;else{g=or;var b=rr}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(g=ar);switch(g&&(g=g(e,r))?Gn(i,g,n,o):(b&&b(e,s,r),"focusout"===e&&(b=s._wrapperState)&&b.controlled&&"number"===s.type&&ee(s,"number",s.value)),b=r?ko(r):window,e){case"focusin":(Hn(b)||"true"===b.contentEditable)&&(gr=b,br=r,vr=null);break;case"focusout":vr=br=gr=null;break;case"mousedown":yr=!0;break;case"contextmenu":case"mouseup":case"dragend":yr=!1,wr(i,n,o);break;case"selectionchange":if(hr)break;case"keydown":case"keyup":wr(i,n,o)}var v;if(Rn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else qn?zn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Mn&&"ko"!==n.locale&&(qn||"onCompositionStart"!==y?"onCompositionEnd"===y&&qn&&(v=en()):(Jt="value"in(Yt=o)?Yt.value:Yt.textContent,qn=!0)),0<(b=Vr(r,y)).length&&(y=new wn(y,e,null,n,o),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=Un(n))&&(y.data=v))),(v=In?function(e,t){switch(e){case"compositionend":return Un(t);case"keypress":return 32!==t.which?null:(Bn=!0,Fn);case"textInput":return(e=t.data)===Fn&&Bn?null:e;default:return null}}(e,n):function(e,t){if(qn)return"compositionend"===e||!Rn&&zn(e,t)?(e=en(),Xt=Jt=Yt=null,qn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Mn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Vr(r,"onBeforeInput")).length&&(o=new wn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=v))}Fr(i,t)}))}function Gr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=Pe(e,n))&&r.unshift(Gr(e,a,o)),null!=(a=Pe(e,t))&&r.push(Gr(e,a,o))),e=e.return}return r}function Wr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Kr(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var s=n,l=s.alternate,c=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==c&&(s=c,o?null!=(l=Pe(n,a))&&i.unshift(Gr(n,l,s)):o||null!=(l=Pe(n,a))&&i.push(Gr(n,l,s))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Qr=/\r\n?/g,Zr=/\u0000|\uFFFD/g;function Yr(e){return("string"==typeof e?e:""+e).replace(Qr,"\n").replace(Zr,"")}function Jr(e,t,n){if(t=Yr(t),Yr(e)!==t&&n)throw Error(a(425))}function Xr(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,ao="function"==typeof Promise?Promise:void 0,io="function"==typeof queueMicrotask?queueMicrotask:void 0!==ao?function(e){return ao.resolve(null).then(e).catch(so)}:ro;function so(e){setTimeout((function(){throw e}))}function lo(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void qt(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=o}while(n);qt(t)}function co(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function uo(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var po=Math.random().toString(36).slice(2),fo="__reactFiber$"+po,mo="__reactProps$"+po,ho="__reactContainer$"+po,go="__reactEvents$"+po,bo="__reactListeners$"+po,vo="__reactHandles$"+po;function yo(e){var t=e[fo];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ho]||n[fo]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=uo(e);null!==e;){if(n=e[fo])return n;e=uo(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[fo]||e[ho])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ko(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function So(e){return e[mo]||null}var xo=[],Eo=-1;function Co(e){return{current:e}}function _o(e){0>Eo||(e.current=xo[Eo],xo[Eo]=null,Eo--)}function Oo(e,t){Eo++,xo[Eo]=e.current,e.current=t}var Ao={},To=Co(Ao),jo=Co(!1),Lo=Ao;function Po(e,t){var n=e.type.contextTypes;if(!n)return Ao;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Do(e){return null!=(e=e.childContextTypes)}function Ro(){_o(jo),_o(To)}function No(e,t,n){if(To.current!==Ao)throw Error(a(168));Oo(To,t),Oo(jo,n)}function Io(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,$(e)||"Unknown",o));return M({},n,r)}function Mo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ao,Lo=To.current,Oo(To,e),Oo(jo,jo.current),!0}function Fo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Io(e,t,Lo),r.__reactInternalMemoizedMergedChildContext=e,_o(jo),_o(To),Oo(To,e)):_o(jo),Oo(jo,n)}var Bo=null,zo=!1,Uo=!1;function qo(e){null===Bo?Bo=[e]:Bo.push(e)}function $o(){if(!Uo&&null!==Bo){Uo=!0;var e=0,t=yt;try{var n=Bo;for(yt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Bo=null,zo=!1}catch(o){throw null!==Bo&&(Bo=Bo.slice(e+1)),We(Xe,$o),o}finally{yt=t,Uo=!1}}return null}var Ho=[],Go=0,Vo=null,Wo=0,Ko=[],Qo=0,Zo=null,Yo=1,Jo="";function Xo(e,t){Ho[Go++]=Wo,Ho[Go++]=Vo,Vo=e,Wo=t}function ea(e,t,n){Ko[Qo++]=Yo,Ko[Qo++]=Jo,Ko[Qo++]=Zo,Zo=e;var r=Yo;e=Jo;var o=32-it(r)-1;r&=~(1<<o),n+=1;var a=32-it(t)+o;if(30<a){var i=o-o%5;a=(r&(1<<i)-1).toString(32),r>>=i,o-=i,Yo=1<<32-it(t)+o|n<<o|r,Jo=a+e}else Yo=1<<a|n<<o|r,Jo=e}function ta(e){null!==e.return&&(Xo(e,1),ea(e,1,0))}function na(e){for(;e===Vo;)Vo=Ho[--Go],Ho[Go]=null,Wo=Ho[--Go],Ho[Go]=null;for(;e===Zo;)Zo=Ko[--Qo],Ko[Qo]=null,Jo=Ko[--Qo],Ko[Qo]=null,Yo=Ko[--Qo],Ko[Qo]=null}var ra=null,oa=null,aa=!1,ia=null;function sa(e,t){var n=Lc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function la(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ra=e,oa=co(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ra=e,oa=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Zo?{id:Yo,overflow:Jo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Lc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ra=e,oa=null,!0);default:return!1}}function ca(e){return!(!(1&e.mode)||128&e.flags)}function ua(e){if(aa){var t=oa;if(t){var n=t;if(!la(e,t)){if(ca(e))throw Error(a(418));t=co(n.nextSibling);var r=ra;t&&la(e,t)?sa(r,n):(e.flags=-4097&e.flags|2,aa=!1,ra=e)}}else{if(ca(e))throw Error(a(418));e.flags=-4097&e.flags|2,aa=!1,ra=e}}}function da(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ra=e}function pa(e){if(e!==ra)return!1;if(!aa)return da(e),aa=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oa)){if(ca(e))throw fa(),Error(a(418));for(;t;)sa(e,t),t=co(t.nextSibling)}if(da(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oa=co(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}oa=null}}else oa=ra?co(e.stateNode.nextSibling):null;return!0}function fa(){for(var e=oa;e;)e=co(e.nextSibling)}function ma(){oa=ra=null,aa=!1}function ha(e){null===ia?ia=[e]:ia.push(e)}var ga=w.ReactCurrentBatchConfig;function ba(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=o.refs;null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function va(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function ya(e){return(0,e._init)(e._payload)}function wa(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Dc(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function s(t){return e&&null===t.alternate&&(t.flags|=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Mc(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function c(e,t,n,r){var a=n.type;return a===x?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===P&&ya(a)===t.type)?((r=o(t,n.props)).ref=ba(e,t,n),r.return=e,r):((r=Rc(n.type,n.key,n.props,null,e.mode,r)).ref=ba(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fc(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Nc(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Mc(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Rc(t.type,t.key,t.props,null,e.mode,n)).ref=ba(e,null,t),n.return=e,n;case S:return(t=Fc(t,e.mode,n)).return=e,t;case P:return p(e,(0,t._init)(t._payload),n)}if(te(t)||N(t))return(t=Nc(t,e.mode,n,null)).return=e,t;va(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===o?c(e,t,n,r):null;case S:return n.key===o?u(e,t,n,r):null;case P:return f(e,t,(o=n._init)(n._payload),r)}if(te(n)||N(n))return null!==o?null:d(e,t,n,r,null);va(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case S:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case P:return m(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||N(r))return d(t,e=e.get(n)||null,r,o,null);va(t,r)}return null}function h(o,a,s,l){for(var c=null,u=null,d=a,h=a=0,g=null;null!==d&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=f(o,d,s[h],l);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(o,d),a=i(b,a,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===s.length)return n(o,d),aa&&Xo(o,h),c;if(null===d){for(;h<s.length;h++)null!==(d=p(o,s[h],l))&&(a=i(d,a,h),null===u?c=d:u.sibling=d,u=d);return aa&&Xo(o,h),c}for(d=r(o,d);h<s.length;h++)null!==(g=m(d,o,h,s[h],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),a=i(g,a,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(o,e)})),aa&&Xo(o,h),c}function g(o,s,l,c){var u=N(l);if("function"!=typeof u)throw Error(a(150));if(null==(l=u.call(l)))throw Error(a(151));for(var d=u=null,h=s,g=s=0,b=null,v=l.next();null!==h&&!v.done;g++,v=l.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=f(o,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(o,h),s=i(y,s,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(o,h),aa&&Xo(o,g),u;if(null===h){for(;!v.done;g++,v=l.next())null!==(v=p(o,v.value,c))&&(s=i(v,s,g),null===d?u=v:d.sibling=v,d=v);return aa&&Xo(o,g),u}for(h=r(o,h);!v.done;g++,v=l.next())null!==(v=m(h,o,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),s=i(v,s,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(o,e)})),aa&&Xo(o,g),u}return function e(r,a,i,l){if("object"==typeof i&&null!==i&&i.type===x&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var c=i.key,u=a;null!==u;){if(u.key===c){if((c=i.type)===x){if(7===u.tag){n(r,u.sibling),(a=o(u,i.props.children)).return=r,r=a;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===P&&ya(c)===u.type){n(r,u.sibling),(a=o(u,i.props)).ref=ba(r,u,i),a.return=r,r=a;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===x?((a=Nc(i.props.children,r.mode,l,i.key)).return=r,r=a):((l=Rc(i.type,i.key,i.props,null,r.mode,l)).ref=ba(r,a,i),l.return=r,r=l)}return s(r);case S:e:{for(u=i.key;null!==a;){if(a.key===u){if(4===a.tag&&a.stateNode.containerInfo===i.containerInfo&&a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=Fc(i,r.mode,l)).return=r,r=a}return s(r);case P:return e(r,a,(u=i._init)(i._payload),l)}if(te(i))return h(r,a,i,l);if(N(i))return g(r,a,i,l);va(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==a&&6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Mc(i,r.mode,l)).return=r,r=a),s(r)):n(r,a)}}var ka=wa(!0),Sa=wa(!1),xa=Co(null),Ea=null,Ca=null,_a=null;function Oa(){_a=Ca=Ea=null}function Aa(e){var t=xa.current;_o(xa),e._currentValue=t}function Ta(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function ja(e,t){Ea=e,_a=Ca=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(ys=!0),e.firstContext=null)}function La(e){var t=e._currentValue;if(_a!==e)if(e={context:e,memoizedValue:t,next:null},null===Ca){if(null===Ea)throw Error(a(308));Ca=e,Ea.dependencies={lanes:0,firstContext:e}}else Ca=Ca.next=e;return t}var Pa=null;function Da(e){null===Pa?Pa=[e]:Pa.push(e)}function Ra(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Da(t)):(n.next=o.next,o.next=n),t.interleaved=n,Na(e,r)}function Na(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Ia=!1;function Ma(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ba(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function za(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Al){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Na(e,n)}return null===(o=r.interleaved)?(t.next=t,Da(r)):(t.next=o.next,o.next=t),r.interleaved=t,Na(e,n)}function Ua(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,vt(e,n)}}function qa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function $a(e,t,n,r){var o=e.updateQueue;Ia=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var l=s,c=l.next;l.next=null,null===i?a=c:i.next=c,i=l;var u=e.alternate;null!==u&&((s=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===s?u.firstBaseUpdate=c:s.next=c,u.lastBaseUpdate=l))}if(null!==a){var d=o.baseState;for(i=0,u=c=l=null,s=a;;){var p=s.lane,f=s.eventTime;if((r&p)===p){null!==u&&(u=u.next={eventTime:f,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var m=e,h=s;switch(p=t,f=n,h.tag){case 1:if("function"==typeof(m=h.payload)){d=m.call(f,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p="function"==typeof(m=h.payload)?m.call(f,d,p):m))break e;d=M({},d,p);break e;case 2:Ia=!0}}null!==s.callback&&0!==s.lane&&(e.flags|=64,null===(p=o.effects)?o.effects=[s]:p.push(s))}else f={eventTime:f,lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===u?(c=u=f,l=d):u=u.next=f,i|=p;if(null===(s=s.next)){if(null===(s=o.shared.pending))break;s=(p=s).next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}if(null===u&&(l=d),o.baseState=l,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&&(o.shared.lanes=0);Il|=i,e.lanes=i,e.memoizedState=d}}function Ha(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(a(191,o));o.call(r)}}}var Ga={},Va=Co(Ga),Wa=Co(Ga),Ka=Co(Ga);function Qa(e){if(e===Ga)throw Error(a(174));return e}function Za(e,t){switch(Oo(Ka,t),Oo(Wa,e),Oo(Va,Ga),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,"");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}_o(Va),Oo(Va,t)}function Ya(){_o(Va),_o(Wa),_o(Ka)}function Ja(e){Qa(Ka.current);var t=Qa(Va.current),n=le(t,e.type);t!==n&&(Oo(Wa,e),Oo(Va,n))}function Xa(e){Wa.current===e&&(_o(Va),_o(Wa))}var ei=Co(0);function ti(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ni=[];function ri(){for(var e=0;e<ni.length;e++)ni[e]._workInProgressVersionPrimary=null;ni.length=0}var oi=w.ReactCurrentDispatcher,ai=w.ReactCurrentBatchConfig,ii=0,si=null,li=null,ci=null,ui=!1,di=!1,pi=0,fi=0;function mi(){throw Error(a(321))}function hi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!sr(e[n],t[n]))return!1;return!0}function gi(e,t,n,r,o,i){if(ii=i,si=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,oi.current=null===e||null===e.memoizedState?Xi:es,e=n(r,o),di){i=0;do{if(di=!1,pi=0,25<=i)throw Error(a(301));i+=1,ci=li=null,t.updateQueue=null,oi.current=ts,e=n(r,o)}while(di)}if(oi.current=Ji,t=null!==li&&null!==li.next,ii=0,ci=li=si=null,ui=!1,t)throw Error(a(300));return e}function bi(){var e=0!==pi;return pi=0,e}function vi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ci?si.memoizedState=ci=e:ci=ci.next=e,ci}function yi(){if(null===li){var e=si.alternate;e=null!==e?e.memoizedState:null}else e=li.next;var t=null===ci?si.memoizedState:ci.next;if(null!==t)ci=t,li=e;else{if(null===e)throw Error(a(310));e={memoizedState:(li=e).memoizedState,baseState:li.baseState,baseQueue:li.baseQueue,queue:li.queue,next:null},null===ci?si.memoizedState=ci=e:ci=ci.next=e}return ci}function wi(e,t){return"function"==typeof t?t(e):t}function ki(e){var t=yi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=li,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){i=o.next,r=r.baseState;var l=s=null,c=null,u=i;do{var d=u.lane;if((ii&d)===d)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var p={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(l=c=p,s=r):c=c.next=p,si.lanes|=d,Il|=d}u=u.next}while(null!==u&&u!==i);null===c?s=r:c.next=l,sr(r,t.memoizedState)||(ys=!0),t.memoizedState=r,t.baseState=s,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{i=o.lane,si.lanes|=i,Il|=i,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Si(e){var t=yi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);sr(i,t.memoizedState)||(ys=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function xi(){}function Ei(e,t){var n=si,r=yi(),o=t(),i=!sr(r.memoizedState,o);if(i&&(r.memoizedState=o,ys=!0),r=r.queue,Ii(Oi.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==ci&&1&ci.memoizedState.tag){if(n.flags|=2048,Li(9,_i.bind(null,n,r,o,t),void 0,null),null===Tl)throw Error(a(349));30&ii||Ci(n,t,o)}return o}function Ci(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=si.updateQueue)?(t={lastEffect:null,stores:null},si.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function _i(e,t,n,r){t.value=n,t.getSnapshot=r,Ai(t)&&Ti(e)}function Oi(e,t,n){return n((function(){Ai(t)&&Ti(e)}))}function Ai(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!sr(e,n)}catch(r){return!0}}function Ti(e){var t=Na(e,1);null!==t&&nc(t,e,1,-1)}function ji(e){var t=vi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wi,lastRenderedState:e},t.queue=e,e=e.dispatch=Ki.bind(null,si,e),[t.memoizedState,e]}function Li(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=si.updateQueue)?(t={lastEffect:null,stores:null},si.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Pi(){return yi().memoizedState}function Di(e,t,n,r){var o=vi();si.flags|=e,o.memoizedState=Li(1|t,n,void 0,void 0===r?null:r)}function Ri(e,t,n,r){var o=yi();r=void 0===r?null:r;var a=void 0;if(null!==li){var i=li.memoizedState;if(a=i.destroy,null!==r&&hi(r,i.deps))return void(o.memoizedState=Li(t,n,a,r))}si.flags|=e,o.memoizedState=Li(1|t,n,a,r)}function Ni(e,t){return Di(8390656,8,e,t)}function Ii(e,t){return Ri(2048,8,e,t)}function Mi(e,t){return Ri(4,2,e,t)}function Fi(e,t){return Ri(4,4,e,t)}function Bi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function zi(e,t,n){return n=null!=n?n.concat([e]):null,Ri(4,4,Bi.bind(null,t,e),n)}function Ui(){}function qi(e,t){var n=yi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&hi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function $i(e,t){var n=yi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&hi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Hi(e,t,n){return 21&ii?(sr(n,t)||(n=ht(),si.lanes|=n,Il|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,ys=!0),e.memoizedState=n)}function Gi(e,t){var n=yt;yt=0!==n&&4>n?n:4,e(!0);var r=ai.transition;ai.transition={};try{e(!1),t()}finally{yt=n,ai.transition=r}}function Vi(){return yi().memoizedState}function Wi(e,t,n){var r=tc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Qi(e))Zi(t,n);else if(null!==(n=Ra(e,t,n,r))){nc(n,e,r,ec()),Yi(n,t,r)}}function Ki(e,t,n){var r=tc(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Qi(e))Zi(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,s=a(i,n);if(o.hasEagerState=!0,o.eagerState=s,sr(s,i)){var l=t.interleaved;return null===l?(o.next=o,Da(t)):(o.next=l.next,l.next=o),void(t.interleaved=o)}}catch(c){}null!==(n=Ra(e,t,o,r))&&(nc(n,e,r,o=ec()),Yi(n,t,r))}}function Qi(e){var t=e.alternate;return e===si||null!==t&&t===si}function Zi(e,t){di=ui=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Yi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,vt(e,n)}}var Ji={readContext:La,useCallback:mi,useContext:mi,useEffect:mi,useImperativeHandle:mi,useInsertionEffect:mi,useLayoutEffect:mi,useMemo:mi,useReducer:mi,useRef:mi,useState:mi,useDebugValue:mi,useDeferredValue:mi,useTransition:mi,useMutableSource:mi,useSyncExternalStore:mi,useId:mi,unstable_isNewReconciler:!1},Xi={readContext:La,useCallback:function(e,t){return vi().memoizedState=[e,void 0===t?null:t],e},useContext:La,useEffect:Ni,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Di(4194308,4,Bi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Di(4194308,4,e,t)},useInsertionEffect:function(e,t){return Di(4,2,e,t)},useMemo:function(e,t){var n=vi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=vi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wi.bind(null,si,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},vi().memoizedState=e},useState:ji,useDebugValue:Ui,useDeferredValue:function(e){return vi().memoizedState=e},useTransition:function(){var e=ji(!1),t=e[0];return e=Gi.bind(null,e[1]),vi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=si,o=vi();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===Tl)throw Error(a(349));30&ii||Ci(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Ni(Oi.bind(null,r,i,e),[e]),r.flags|=2048,Li(9,_i.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=vi(),t=Tl.identifierPrefix;if(aa){var n=Jo;t=":"+t+"R"+(n=(Yo&~(1<<32-it(Yo)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},es={readContext:La,useCallback:qi,useContext:La,useEffect:Ii,useImperativeHandle:zi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:$i,useReducer:ki,useRef:Pi,useState:function(){return ki(wi)},useDebugValue:Ui,useDeferredValue:function(e){return Hi(yi(),li.memoizedState,e)},useTransition:function(){return[ki(wi)[0],yi().memoizedState]},useMutableSource:xi,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1},ts={readContext:La,useCallback:qi,useContext:La,useEffect:Ii,useImperativeHandle:zi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:$i,useReducer:Si,useRef:Pi,useState:function(){return Si(wi)},useDebugValue:Ui,useDeferredValue:function(e){var t=yi();return null===li?t.memoizedState=e:Hi(t,li.memoizedState,e)},useTransition:function(){return[Si(wi)[0],yi().memoizedState]},useMutableSource:xi,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1};function ns(e,t){if(e&&e.defaultProps){for(var n in t=M({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rs(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:M({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var os={isMounted:function(e){return!!(e=e._reactInternals)&&qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=Ba(r,o);a.payload=t,null!=n&&(a.callback=n),null!==(t=za(e,a,o))&&(nc(t,e,o,r),Ua(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=Ba(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=za(e,a,o))&&(nc(t,e,o,r),Ua(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ec(),r=tc(e),o=Ba(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=za(e,o,r))&&(nc(t,e,r,n),Ua(t,e,r))}};function as(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!lr(n,r)||!lr(o,a))}function is(e,t,n){var r=!1,o=Ao,a=t.contextType;return"object"==typeof a&&null!==a?a=La(a):(o=Do(t)?Lo:To.current,a=(r=null!=(r=t.contextTypes))?Po(e,o):Ao),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=os,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ss(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&os.enqueueReplaceState(t,t.state,null)}function ls(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs={},Ma(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=La(a):(a=Do(t)?Lo:To.current,o.context=Po(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(rs(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&os.enqueueReplaceState(o,o.state,null),$a(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function cs(e,t){try{var n="",r=t;do{n+=U(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o,digest:null}}function us(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function ds(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var ps="function"==typeof WeakMap?WeakMap:Map;function fs(e,t,n){(n=Ba(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hl||(Hl=!0,Gl=r),ds(0,t)},n}function ms(e,t,n){(n=Ba(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){ds(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){ds(0,t),"function"!=typeof r&&(null===Vl?Vl=new Set([this]):Vl.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function hs(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new ps;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Cc.bind(null,e,t,n),t.then(e,e))}function gs(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function bs(e,t,n,r,o){return 1&e.mode?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Ba(-1,1)).tag=2,za(n,t,1))),n.lanes|=1),e)}var vs=w.ReactCurrentOwner,ys=!1;function ws(e,t,n,r){t.child=null===e?Sa(t,null,n,r):ka(t,e.child,n,r)}function ks(e,t,n,r,o){n=n.render;var a=t.ref;return ja(t,o),r=gi(e,t,n,r,a,o),n=bi(),null===e||ys?(aa&&n&&ta(t),t.flags|=1,ws(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hs(e,t,o))}function Ss(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||Pc(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Rc(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,xs(e,t,a,r,o))}if(a=e.child,!(e.lanes&o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(i,r)&&e.ref===t.ref)return Hs(e,t,o)}return t.flags|=1,(e=Dc(a,r)).ref=t.ref,e.return=t,t.child=e}function xs(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(lr(a,r)&&e.ref===t.ref){if(ys=!1,t.pendingProps=r=a,!(e.lanes&o))return t.lanes=e.lanes,Hs(e,t,o);131072&e.flags&&(ys=!0)}}return _s(e,t,n,r,o)}function Es(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Oo(Dl,Pl),Pl|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,Oo(Dl,Pl),Pl|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Oo(Dl,Pl),Pl|=n;else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Oo(Dl,Pl),Pl|=r;return ws(e,t,o,n),t.child}function Cs(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function _s(e,t,n,r,o){var a=Do(n)?Lo:To.current;return a=Po(t,a),ja(t,o),n=gi(e,t,n,r,a,o),r=bi(),null===e||ys?(aa&&r&&ta(t),t.flags|=1,ws(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hs(e,t,o))}function Os(e,t,n,r,o){if(Do(n)){var a=!0;Mo(t)}else a=!1;if(ja(t,o),null===t.stateNode)$s(e,t),is(t,n,r),ls(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,s=t.memoizedProps;i.props=s;var l=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=La(c):c=Po(t,c=Do(n)?Lo:To.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==r||l!==c)&&ss(t,i,r,c),Ia=!1;var p=t.memoizedState;i.state=p,$a(t,r,i,o),l=t.memoizedState,s!==r||p!==l||jo.current||Ia?("function"==typeof u&&(rs(t,n,u,r),l=t.memoizedState),(s=Ia||as(t,n,s,r,p,l,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),i.props=r,i.state=l,i.context=c,r=s):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Fa(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:ns(t.type,s),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(l=n.contextType)&&null!==l?l=La(l):l=Po(t,l=Do(n)?Lo:To.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==d||p!==l)&&ss(t,i,r,l),Ia=!1,p=t.memoizedState,i.state=p,$a(t,r,i,o);var m=t.memoizedState;s!==d||p!==m||jo.current||Ia?("function"==typeof f&&(rs(t,n,f,r),m=t.memoizedState),(c=Ia||as(t,n,c,r,p,m,l)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,l),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,l)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=l,r=c):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return As(e,t,n,r,a,o)}function As(e,t,n,r,o,a){Cs(e,t);var i=!!(128&t.flags);if(!r&&!i)return o&&Fo(t,n,!1),Hs(e,t,a);r=t.stateNode,vs.current=t;var s=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=ka(t,e.child,null,a),t.child=ka(t,null,s,a)):ws(e,t,s,a),t.memoizedState=r.state,o&&Fo(t,n,!0),t.child}function Ts(e){var t=e.stateNode;t.pendingContext?No(0,t.pendingContext,t.pendingContext!==t.context):t.context&&No(0,t.context,!1),Za(e,t.containerInfo)}function js(e,t,n,r,o){return ma(),ha(o),t.flags|=256,ws(e,t,n,r),t.child}var Ls,Ps,Ds,Rs,Ns={dehydrated:null,treeContext:null,retryLane:0};function Is(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ms(e,t,n){var r,o=t.pendingProps,i=ei.current,s=!1,l=!!(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(s=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Oo(ei,1&i),null===e)return ua(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(l=o.children,e=o.fallback,s?(o=t.mode,s=t.child,l={mode:"hidden",children:l},1&o||null===s?s=Ic(l,o,0,null):(s.childLanes=0,s.pendingProps=l),e=Nc(e,o,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Is(n),t.memoizedState=Ns,e):Fs(t,l));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,o,i,s){if(n)return 256&t.flags?(t.flags&=-257,Bs(e,t,s,r=us(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Ic({mode:"visible",children:r.children},o,0,null),(i=Nc(i,o,s,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&ka(t,e.child,null,s),t.child.memoizedState=Is(s),t.memoizedState=Ns,i);if(!(1&t.mode))return Bs(e,t,s,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var l=r.dgst;return r=l,Bs(e,t,s,r=us(i=Error(a(419)),r,void 0))}if(l=!!(s&e.childLanes),ys||l){if(null!==(r=Tl)){switch(s&-s){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=o&(r.suspendedLanes|s)?0:o)&&o!==i.retryLane&&(i.retryLane=o,Na(e,o),nc(r,e,o,-1))}return hc(),Bs(e,t,s,r=us(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Oc.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=co(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&&(Ko[Qo++]=Yo,Ko[Qo++]=Jo,Ko[Qo++]=Zo,Yo=e.id,Jo=e.overflow,Zo=t),t=Fs(t,r.children),t.flags|=4096,t)}(e,t,l,o,r,i,n);if(s){s=o.fallback,l=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:o.children};return 1&l||t.child===i?(o=Dc(i,c)).subtreeFlags=14680064&i.subtreeFlags:((o=t.child).childLanes=0,o.pendingProps=c,t.deletions=null),null!==r?s=Dc(r,s):(s=Nc(s,l,n,null)).flags|=2,s.return=t,o.return=t,o.sibling=s,t.child=o,o=s,s=t.child,l=null===(l=e.child.memoizedState)?Is(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},s.memoizedState=l,s.childLanes=e.childLanes&~n,t.memoizedState=Ns,o}return e=(s=e.child).sibling,o=Dc(s,{mode:"visible",children:o.children}),!(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Fs(e,t){return(t=Ic({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bs(e,t,n,r){return null!==r&&ha(r),ka(t,e.child,null,n),(e=Fs(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function zs(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ta(e.return,t,n)}function Us(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function qs(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(ws(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&zs(e,n,t);else if(19===e.tag)zs(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Oo(ei,r),1&t.mode)switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Us(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ti(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Us(t,!0,n,null,a);break;case"together":Us(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function $s(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hs(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Il|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Dc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Dc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Gs(e,t){if(!aa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Vs(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ws(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vs(t),null;case 1:case 17:return Do(t.type)&&Ro(),Vs(t),null;case 3:return r=t.stateNode,Ya(),_o(jo),_o(To),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(pa(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==ia&&(ic(ia),ia=null))),Ps(e,t),Vs(t),null;case 5:Xa(t);var o=Qa(Ka.current);if(n=t.type,null!==e&&null!=t.stateNode)Ds(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Vs(t),null}if(e=Qa(Va.current),pa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[fo]=t,r[mo]=i,e=!!(1&t.mode),n){case"dialog":Br("cancel",r),Br("close",r);break;case"iframe":case"object":case"embed":Br("load",r);break;case"video":case"audio":for(o=0;o<Nr.length;o++)Br(Nr[o],r);break;case"source":Br("error",r);break;case"img":case"image":case"link":Br("error",r),Br("load",r);break;case"details":Br("toggle",r);break;case"input":Z(r,i),Br("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Br("invalid",r);break;case"textarea":oe(r,i),Br("invalid",r)}for(var l in ve(n,i),o=null,i)if(i.hasOwnProperty(l)){var c=i[l];"children"===l?"string"==typeof c?r.textContent!==c&&(!0!==i.suppressHydrationWarning&&Jr(r.textContent,c,e),o=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(!0!==i.suppressHydrationWarning&&Jr(r.textContent,c,e),o=["children",""+c]):s.hasOwnProperty(l)&&null!=c&&"onScroll"===l&&Br("scroll",r)}switch(n){case"input":V(r),X(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Xr)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{l=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=se(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),"select"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[fo]=t,e[mo]=r,Ls(e,t,!1,!1),t.stateNode=e;e:{switch(l=ye(n,r),n){case"dialog":Br("cancel",e),Br("close",e),o=r;break;case"iframe":case"object":case"embed":Br("load",e),o=r;break;case"video":case"audio":for(o=0;o<Nr.length;o++)Br(Nr[o],e);o=r;break;case"source":Br("error",e),o=r;break;case"img":case"image":case"link":Br("error",e),Br("load",e),o=r;break;case"details":Br("toggle",e),o=r;break;case"input":Z(e,r),o=Q(e,r),Br("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=M({},r,{value:void 0}),Br("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),Br("invalid",e)}for(i in ve(n,o),c=o)if(c.hasOwnProperty(i)){var u=c[i];"style"===i?ge(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&de(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&pe(e,u):"number"==typeof u&&pe(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(s.hasOwnProperty(i)?null!=u&&"onScroll"===i&&Br("scroll",e):null!=u&&y(e,i,u,l))}switch(n){case"input":V(e),X(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Xr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Vs(t),null;case 6:if(e&&null!=t.stateNode)Rs(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));if(n=Qa(Ka.current),Qa(Va.current),pa(t)){if(r=t.stateNode,n=t.memoizedProps,r[fo]=t,(i=r.nodeValue!==n)&&null!==(e=ra))switch(e.tag){case 3:Jr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Jr(r.nodeValue,n,!!(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[fo]=t,t.stateNode=r}return Vs(t),null;case 13:if(_o(ei),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(aa&&null!==oa&&1&t.mode&&!(128&t.flags))fa(),ma(),t.flags|=98560,i=!1;else if(i=pa(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(a(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(a(317));i[fo]=t}else ma(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Vs(t),i=!1}else null!==ia&&(ic(ia),ia=null),i=!0;if(!i)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&ei.current?0===Rl&&(Rl=3):hc())),null!==t.updateQueue&&(t.flags|=4),Vs(t),null);case 4:return Ya(),Ps(e,t),null===e&&qr(t.stateNode.containerInfo),Vs(t),null;case 10:return Aa(t.type._context),Vs(t),null;case 19:if(_o(ei),null===(i=t.memoizedState))return Vs(t),null;if(r=!!(128&t.flags),null===(l=i.rendering))if(r)Gs(i,!1);else{if(0!==Rl||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(l=ti(e))){for(t.flags|=128,Gs(i,!1),null!==(r=l.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(l=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=l.childLanes,i.lanes=l.lanes,i.child=l.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=l.memoizedProps,i.memoizedState=l.memoizedState,i.updateQueue=l.updateQueue,i.type=l.type,e=l.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Oo(ei,1&ei.current|2),t.child}e=e.sibling}null!==i.tail&&Ye()>ql&&(t.flags|=128,r=!0,Gs(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Gs(i,!0),null===i.tail&&"hidden"===i.tailMode&&!l.alternate&&!aa)return Vs(t),null}else 2*Ye()-i.renderingStartTime>ql&&1073741824!==n&&(t.flags|=128,r=!0,Gs(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=i.last)?n.sibling=l:t.child=l,i.last=l)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ye(),t.sibling=null,n=ei.current,Oo(ei,r?1&n|2:1&n),t):(Vs(t),null);case 22:case 23:return dc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Pl)&&(Vs(t),6&t.subtreeFlags&&(t.flags|=8192)):Vs(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Ks(e,t){switch(na(t),t.tag){case 1:return Do(t.type)&&Ro(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Ya(),_o(jo),_o(To),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Xa(t),null;case 13:if(_o(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ma()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return _o(ei),null;case 4:return Ya(),null;case 10:return Aa(t.type._context),null;case 22:case 23:return dc(),null;default:return null}}Ls=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ps=function(){},Ds=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Qa(Va.current);var a,i=null;switch(n){case"input":o=Q(e,o),r=Q(e,r),i=[];break;case"select":o=M({},o,{value:void 0}),r=M({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Xr)}for(u in ve(n,r),n=null,o)if(!r.hasOwnProperty(u)&&o.hasOwnProperty(u)&&null!=o[u])if("style"===u){var l=o[u];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(s.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(l=null!=o?o[u]:void 0,r.hasOwnProperty(u)&&c!==l&&(null!=c||null!=l))if("style"===u)if(l){for(a in l)!l.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in c)c.hasOwnProperty(a)&&l[a]!==c[a]&&(n||(n={}),n[a]=c[a])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,l=l?l.__html:void 0,null!=c&&l!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(s.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&Br("scroll",e),i||l===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Rs=function(e,t,n,r){n!==r&&(t.flags|=4)};var Qs=!1,Zs=!1,Ys="function"==typeof WeakSet?WeakSet:Set,Js=null;function Xs(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Ec(e,t,r)}else n.current=null}function el(e,t,n){try{n()}catch(r){Ec(e,t,r)}}var tl=!1;function nl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&&el(t,n,a)}o=o.next}while(o!==r)}}function rl(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ol(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function al(e){var t=e.alternate;null!==t&&(e.alternate=null,al(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[fo],delete t[mo],delete t[go],delete t[bo],delete t[vo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function il(e){return 5===e.tag||3===e.tag||4===e.tag}function sl(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||il(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ll(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Xr));else if(4!==r&&null!==(e=e.child))for(ll(e,t,n),e=e.sibling;null!==e;)ll(e,t,n),e=e.sibling}function cl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cl(e,t,n),e=e.sibling;null!==e;)cl(e,t,n),e=e.sibling}var ul=null,dl=!1;function pl(e,t,n){for(n=n.child;null!==n;)fl(e,t,n),n=n.sibling}function fl(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(s){}switch(n.tag){case 5:Zs||Xs(n,t);case 6:var r=ul,o=dl;ul=null,pl(e,t,n),dl=o,null!==(ul=r)&&(dl?(e=ul,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):ul.removeChild(n.stateNode));break;case 18:null!==ul&&(dl?(e=ul,n=n.stateNode,8===e.nodeType?lo(e.parentNode,n):1===e.nodeType&&lo(e,n),qt(e)):lo(ul,n.stateNode));break;case 4:r=ul,o=dl,ul=n.stateNode.containerInfo,dl=!0,pl(e,t,n),ul=r,dl=o;break;case 0:case 11:case 14:case 15:if(!Zs&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&&(2&a||4&a)&&el(n,t,i),o=o.next}while(o!==r)}pl(e,t,n);break;case 1:if(!Zs&&(Xs(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Ec(n,t,s)}pl(e,t,n);break;case 21:pl(e,t,n);break;case 22:1&n.mode?(Zs=(r=Zs)||null!==n.memoizedState,pl(e,t,n),Zs=r):pl(e,t,n);break;default:pl(e,t,n)}}function ml(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Ys),t.forEach((function(t){var r=Ac.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function hl(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var i=e,s=t,l=s;e:for(;null!==l;){switch(l.tag){case 5:ul=l.stateNode,dl=!1;break e;case 3:case 4:ul=l.stateNode.containerInfo,dl=!0;break e}l=l.return}if(null===ul)throw Error(a(160));fl(i,s,o),ul=null,dl=!1;var c=o.alternate;null!==c&&(c.return=null),o.return=null}catch(u){Ec(o,t,u)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gl(t,e),t=t.sibling}function gl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(hl(t,e),bl(e),4&r){try{nl(3,e,e.return),rl(3,e)}catch(g){Ec(e,e.return,g)}try{nl(5,e,e.return)}catch(g){Ec(e,e.return,g)}}break;case 1:hl(t,e),bl(e),512&r&&null!==n&&Xs(n,n.return);break;case 5:if(hl(t,e),bl(e),512&r&&null!==n&&Xs(n,n.return),32&e.flags){var o=e.stateNode;try{pe(o,"")}catch(g){Ec(e,e.return,g)}}if(4&r&&null!=(o=e.stateNode)){var i=e.memoizedProps,s=null!==n?n.memoizedProps:i,l=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===l&&"radio"===i.type&&null!=i.name&&Y(o,i),ye(l,s);var u=ye(l,i);for(s=0;s<c.length;s+=2){var d=c[s],p=c[s+1];"style"===d?ge(o,p):"dangerouslySetInnerHTML"===d?de(o,p):"children"===d?pe(o,p):y(o,d,p,u)}switch(l){case"input":J(o,i);break;case"textarea":ae(o,i);break;case"select":var f=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(o,!!i.multiple,m,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(o,!!i.multiple,i.defaultValue,!0):ne(o,!!i.multiple,i.multiple?[]:"",!1))}o[mo]=i}catch(g){Ec(e,e.return,g)}}break;case 6:if(hl(t,e),bl(e),4&r){if(null===e.stateNode)throw Error(a(162));o=e.stateNode,i=e.memoizedProps;try{o.nodeValue=i}catch(g){Ec(e,e.return,g)}}break;case 3:if(hl(t,e),bl(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{qt(t.containerInfo)}catch(g){Ec(e,e.return,g)}break;case 4:default:hl(t,e),bl(e);break;case 13:hl(t,e),bl(e),8192&(o=e.child).flags&&(i=null!==o.memoizedState,o.stateNode.isHidden=i,!i||null!==o.alternate&&null!==o.alternate.memoizedState||(Ul=Ye())),4&r&&ml(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Zs=(u=Zs)||d,hl(t,e),Zs=u):hl(t,e),bl(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!d&&1&e.mode)for(Js=e,d=e.child;null!==d;){for(p=Js=d;null!==Js;){switch(m=(f=Js).child,f.tag){case 0:case 11:case 14:case 15:nl(4,f,f.return);break;case 1:Xs(f,f.return);var h=f.stateNode;if("function"==typeof h.componentWillUnmount){r=f,n=f.return;try{t=r,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(g){Ec(r,n,g)}}break;case 5:Xs(f,f.return);break;case 22:if(null!==f.memoizedState){kl(p);continue}}null!==m?(m.return=f,Js=m):kl(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{o=p.stateNode,u?"function"==typeof(i=o.style).setProperty?i.setProperty("display","none","important"):i.display="none":(l=p.stateNode,s=null!=(c=p.memoizedProps.style)&&c.hasOwnProperty("display")?c.display:null,l.style.display=he("display",s))}catch(g){Ec(e,e.return,g)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=u?"":p.memoizedProps}catch(g){Ec(e,e.return,g)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:hl(t,e),bl(e),4&r&&ml(e);case 21:}}function bl(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(il(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(pe(o,""),r.flags&=-33),cl(e,sl(e),o);break;case 3:case 4:var i=r.stateNode.containerInfo;ll(e,sl(e),i);break;default:throw Error(a(161))}}catch(s){Ec(e,e.return,s)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function vl(e,t,n){Js=e,yl(e,t,n)}function yl(e,t,n){for(var r=!!(1&e.mode);null!==Js;){var o=Js,a=o.child;if(22===o.tag&&r){var i=null!==o.memoizedState||Qs;if(!i){var s=o.alternate,l=null!==s&&null!==s.memoizedState||Zs;s=Qs;var c=Zs;if(Qs=i,(Zs=l)&&!c)for(Js=o;null!==Js;)l=(i=Js).child,22===i.tag&&null!==i.memoizedState?Sl(o):null!==l?(l.return=i,Js=l):Sl(o);for(;null!==a;)Js=a,yl(a,t,n),a=a.sibling;Js=o,Qs=s,Zs=c}wl(e)}else 8772&o.subtreeFlags&&null!==a?(a.return=o,Js=a):wl(e)}}function wl(e){for(;null!==Js;){var t=Js;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Zs||rl(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Zs)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:ns(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Ha(t,i,r);break;case 3:var s=t.updateQueue;if(null!==s){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ha(t,s,n)}break;case 5:var l=t.stateNode;if(null===n&&4&t.flags){n=l;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var d=u.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&qt(p)}}}break;default:throw Error(a(163))}Zs||512&t.flags&&ol(t)}catch(f){Ec(t,t.return,f)}}if(t===e){Js=null;break}if(null!==(n=t.sibling)){n.return=t.return,Js=n;break}Js=t.return}}function kl(e){for(;null!==Js;){var t=Js;if(t===e){Js=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Js=n;break}Js=t.return}}function Sl(e){for(;null!==Js;){var t=Js;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rl(4,t)}catch(l){Ec(t,n,l)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(l){Ec(t,o,l)}}var a=t.return;try{ol(t)}catch(l){Ec(t,a,l)}break;case 5:var i=t.return;try{ol(t)}catch(l){Ec(t,i,l)}}}catch(l){Ec(t,t.return,l)}if(t===e){Js=null;break}var s=t.sibling;if(null!==s){s.return=t.return,Js=s;break}Js=t.return}}var xl,El=Math.ceil,Cl=w.ReactCurrentDispatcher,_l=w.ReactCurrentOwner,Ol=w.ReactCurrentBatchConfig,Al=0,Tl=null,jl=null,Ll=0,Pl=0,Dl=Co(0),Rl=0,Nl=null,Il=0,Ml=0,Fl=0,Bl=null,zl=null,Ul=0,ql=1/0,$l=null,Hl=!1,Gl=null,Vl=null,Wl=!1,Kl=null,Ql=0,Zl=0,Yl=null,Jl=-1,Xl=0;function ec(){return 6&Al?Ye():-1!==Jl?Jl:Jl=Ye()}function tc(e){return 1&e.mode?2&Al&&0!==Ll?Ll&-Ll:null!==ga.transition?(0===Xl&&(Xl=ht()),Xl):0!==(e=yt)?e:e=void 0===(e=window.event)?16:Zt(e.type):1}function nc(e,t,n,r){if(50<Zl)throw Zl=0,Yl=null,Error(a(185));bt(e,n,r),2&Al&&e===Tl||(e===Tl&&(!(2&Al)&&(Ml|=n),4===Rl&&sc(e,Ll)),rc(e,r),1===n&&0===Al&&!(1&t.mode)&&(ql=Ye()+500,zo&&$o()))}function rc(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes;0<a;){var i=31-it(a),s=1<<i,l=o[i];-1===l?s&n&&!(s&r)||(o[i]=ft(s,t)):l<=t&&(e.expiredLanes|=s),a&=~s}}(e,t);var r=pt(e,e===Tl?Ll:0);if(0===r)null!==n&&Ke(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ke(n),1===t)0===e.tag?function(e){zo=!0,qo(e)}(lc.bind(null,e)):qo(lc.bind(null,e)),io((function(){!(6&Al)&&$o()})),n=null;else{switch(wt(r)){case 1:n=Xe;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Tc(n,oc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function oc(e,t){if(Jl=-1,Xl=0,6&Al)throw Error(a(327));var n=e.callbackNode;if(Sc()&&e.callbackNode!==n)return null;var r=pt(e,e===Tl?Ll:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=gc(e,r);else{t=r;var o=Al;Al|=2;var i=mc();for(Tl===e&&Ll===t||($l=null,ql=Ye()+500,pc(e,t));;)try{vc();break}catch(l){fc(e,l)}Oa(),Cl.current=i,Al=o,null!==jl?t=0:(Tl=null,Ll=0,t=Rl)}if(0!==t){if(2===t&&(0!==(o=mt(e))&&(r=o,t=ac(e,o))),1===t)throw n=Nl,pc(e,0),sc(e,r),rc(e,Ye()),n;if(6===t)sc(e,r);else{if(o=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!sr(a(),o))return!1}catch(s){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)||(t=gc(e,r),2===t&&(i=mt(e),0!==i&&(r=i,t=ac(e,i))),1!==t)))throw n=Nl,pc(e,0),sc(e,r),rc(e,Ye()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:kc(e,zl,$l);break;case 3:if(sc(e,r),(130023424&r)===r&&10<(t=Ul+500-Ye())){if(0!==pt(e,0))break;if(((o=e.suspendedLanes)&r)!==r){ec(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(kc.bind(null,e,zl,$l),t);break}kc(e,zl,$l);break;case 4:if(sc(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var s=31-it(r);i=1<<s,(s=t[s])>o&&(o=s),r&=~i}if(r=o,10<(r=(120>(r=Ye()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*El(r/1960))-r)){e.timeoutHandle=ro(kc.bind(null,e,zl,$l),r);break}kc(e,zl,$l);break;default:throw Error(a(329))}}}return rc(e,Ye()),e.callbackNode===n?oc.bind(null,e):null}function ac(e,t){var n=Bl;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=gc(e,t))&&(t=zl,zl=n,null!==t&&ic(t)),e}function ic(e){null===zl?zl=e:zl.push.apply(zl,e)}function sc(e,t){for(t&=~Fl,t&=~Ml,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function lc(e){if(6&Al)throw Error(a(327));Sc();var t=pt(e,0);if(!(1&t))return rc(e,Ye()),null;var n=gc(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=ac(e,r))}if(1===n)throw n=Nl,pc(e,0),sc(e,t),rc(e,Ye()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,kc(e,zl,$l),rc(e,Ye()),null}function cc(e,t){var n=Al;Al|=1;try{return e(t)}finally{0===(Al=n)&&(ql=Ye()+500,zo&&$o())}}function uc(e){null!==Kl&&0===Kl.tag&&!(6&Al)&&Sc();var t=Al;Al|=1;var n=Ol.transition,r=yt;try{if(Ol.transition=null,yt=1,e)return e()}finally{yt=r,Ol.transition=n,!(6&(Al=t))&&$o()}}function dc(){Pl=Dl.current,_o(Dl)}function pc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==jl)for(n=jl.return;null!==n;){var r=n;switch(na(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ro();break;case 3:Ya(),_o(jo),_o(To),ri();break;case 5:Xa(r);break;case 4:Ya();break;case 13:case 19:_o(ei);break;case 10:Aa(r.type._context);break;case 22:case 23:dc()}n=n.return}if(Tl=e,jl=e=Dc(e.current,null),Ll=Pl=t,Rl=0,Nl=null,Fl=Ml=Il=0,zl=Bl=null,null!==Pa){for(t=0;t<Pa.length;t++)if(null!==(r=(n=Pa[t]).interleaved)){n.interleaved=null;var o=r.next,a=n.pending;if(null!==a){var i=a.next;a.next=o,r.next=i}n.pending=r}Pa=null}return e}function fc(e,t){for(;;){var n=jl;try{if(Oa(),oi.current=Ji,ui){for(var r=si.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ui=!1}if(ii=0,ci=li=si=null,di=!1,pi=0,_l.current=null,null===n||null===n.return){Rl=1,Nl=t,jl=null;break}e:{var i=e,s=n.return,l=n,c=t;if(t=Ll,l.flags|=32768,null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=c,d=l,p=d.tag;if(!(1&d.mode||0!==p&&11!==p&&15!==p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var m=gs(s);if(null!==m){m.flags&=-257,bs(m,s,l,0,t),1&m.mode&&hs(i,u,t),c=u;var h=(t=m).updateQueue;if(null===h){var g=new Set;g.add(c),t.updateQueue=g}else h.add(c);break e}if(!(1&t)){hs(i,u,t),hc();break e}c=Error(a(426))}else if(aa&&1&l.mode){var b=gs(s);if(null!==b){!(65536&b.flags)&&(b.flags|=256),bs(b,s,l,0,t),ha(cs(c,l));break e}}i=c=cs(c,l),4!==Rl&&(Rl=2),null===Bl?Bl=[i]:Bl.push(i),i=s;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,qa(i,fs(0,c,t));break e;case 1:l=c;var v=i.type,y=i.stateNode;if(!(128&i.flags||"function"!=typeof v.getDerivedStateFromError&&(null===y||"function"!=typeof y.componentDidCatch||null!==Vl&&Vl.has(y)))){i.flags|=65536,t&=-t,i.lanes|=t,qa(i,ms(i,l,t));break e}}i=i.return}while(null!==i)}wc(n)}catch(w){t=w,jl===n&&null!==n&&(jl=n=n.return);continue}break}}function mc(){var e=Cl.current;return Cl.current=Ji,null===e?Ji:e}function hc(){0!==Rl&&3!==Rl&&2!==Rl||(Rl=4),null===Tl||!(268435455&Il)&&!(268435455&Ml)||sc(Tl,Ll)}function gc(e,t){var n=Al;Al|=2;var r=mc();for(Tl===e&&Ll===t||($l=null,pc(e,t));;)try{bc();break}catch(o){fc(e,o)}if(Oa(),Al=n,Cl.current=r,null!==jl)throw Error(a(261));return Tl=null,Ll=0,Rl}function bc(){for(;null!==jl;)yc(jl)}function vc(){for(;null!==jl&&!Qe();)yc(jl)}function yc(e){var t=xl(e.alternate,e,Pl);e.memoizedProps=e.pendingProps,null===t?wc(e):jl=t,_l.current=null}function wc(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=Ks(n,t)))return n.flags&=32767,void(jl=n);if(null===e)return Rl=6,void(jl=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Ws(n,t,Pl)))return void(jl=n);if(null!==(t=t.sibling))return void(jl=t);jl=t=e}while(null!==t);0===Rl&&(Rl=5)}function kc(e,t,n){var r=yt,o=Ol.transition;try{Ol.transition=null,yt=1,function(e,t,n,r){do{Sc()}while(null!==Kl);if(6&Al)throw Error(a(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-it(n),a=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~a}}(e,i),e===Tl&&(jl=Tl=null,Ll=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Wl||(Wl=!0,Tc(tt,(function(){return Sc(),null}))),i=!!(15990&n.flags),!!(15990&n.subtreeFlags)||i){i=Ol.transition,Ol.transition=null;var s=yt;yt=1;var l=Al;Al|=4,_l.current=null,function(e,t){if(eo=Ht,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var s=0,l=-1,c=-1,u=0,d=0,p=e,f=null;t:for(;;){for(var m;p!==n||0!==o&&3!==p.nodeType||(l=s+o),p!==i||0!==r&&3!==p.nodeType||(c=s+r),3===p.nodeType&&(s+=p.nodeValue.length),null!==(m=p.firstChild);)f=p,p=m;for(;;){if(p===e)break t;if(f===n&&++u===o&&(l=s),f===i&&++d===r&&(c=s),null!==(m=p.nextSibling))break;f=(p=f).parentNode}p=m}n=-1===l||-1===c?null:{start:l,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Ht=!1,Js=t;null!==Js;)if(e=(t=Js).child,1028&t.subtreeFlags&&null!==e)e.return=t,Js=e;else for(;null!==Js;){t=Js;try{var h=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==h){var g=h.memoizedProps,b=h.memoizedState,v=t.stateNode,y=v.getSnapshotBeforeUpdate(t.elementType===t.type?g:ns(t.type,g),b);v.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(k){Ec(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Js=e;break}Js=t.return}h=tl,tl=!1}(e,n),gl(n,e),mr(to),Ht=!!eo,to=eo=null,e.current=n,vl(n,e,o),Ze(),Al=l,yt=s,Ol.transition=i}else e.current=n;if(Wl&&(Wl=!1,Kl=e,Ql=o),i=e.pendingLanes,0===i&&(Vl=null),function(e){if(at&&"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(ot,e,void 0,!(128&~e.current.flags))}catch(t){}}(n.stateNode),rc(e,Ye()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(Hl)throw Hl=!1,e=Gl,Gl=null,e;!!(1&Ql)&&0!==e.tag&&Sc(),i=e.pendingLanes,1&i?e===Yl?Zl++:(Zl=0,Yl=e):Zl=0,$o()}(e,t,n,r)}finally{Ol.transition=o,yt=r}return null}function Sc(){if(null!==Kl){var e=wt(Ql),t=Ol.transition,n=yt;try{if(Ol.transition=null,yt=16>e?16:e,null===Kl)var r=!1;else{if(e=Kl,Kl=null,Ql=0,6&Al)throw Error(a(331));var o=Al;for(Al|=4,Js=e.current;null!==Js;){var i=Js,s=i.child;if(16&Js.flags){var l=i.deletions;if(null!==l){for(var c=0;c<l.length;c++){var u=l[c];for(Js=u;null!==Js;){var d=Js;switch(d.tag){case 0:case 11:case 15:nl(8,d,i)}var p=d.child;if(null!==p)p.return=d,Js=p;else for(;null!==Js;){var f=(d=Js).sibling,m=d.return;if(al(d),d===u){Js=null;break}if(null!==f){f.return=m,Js=f;break}Js=m}}}var h=i.alternate;if(null!==h){var g=h.child;if(null!==g){h.child=null;do{var b=g.sibling;g.sibling=null,g=b}while(null!==g)}}Js=i}}if(2064&i.subtreeFlags&&null!==s)s.return=i,Js=s;else e:for(;null!==Js;){if(2048&(i=Js).flags)switch(i.tag){case 0:case 11:case 15:nl(9,i,i.return)}var v=i.sibling;if(null!==v){v.return=i.return,Js=v;break e}Js=i.return}}var y=e.current;for(Js=y;null!==Js;){var w=(s=Js).child;if(2064&s.subtreeFlags&&null!==w)w.return=s,Js=w;else e:for(s=y;null!==Js;){if(2048&(l=Js).flags)try{switch(l.tag){case 0:case 11:case 15:rl(9,l)}}catch(S){Ec(l,l.return,S)}if(l===s){Js=null;break e}var k=l.sibling;if(null!==k){k.return=l.return,Js=k;break e}Js=l.return}}if(Al=o,$o(),at&&"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(ot,e)}catch(S){}r=!0}return r}finally{yt=n,Ol.transition=t}}return!1}function xc(e,t,n){e=za(e,t=fs(0,t=cs(n,t),1),1),t=ec(),null!==e&&(bt(e,1,t),rc(e,t))}function Ec(e,t,n){if(3===e.tag)xc(e,e,n);else for(;null!==t;){if(3===t.tag){xc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Vl||!Vl.has(r))){t=za(t,e=ms(t,e=cs(n,e),1),1),e=ec(),null!==t&&(bt(t,1,e),rc(t,e));break}}t=t.return}}function Cc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ec(),e.pingedLanes|=e.suspendedLanes&n,Tl===e&&(Ll&n)===n&&(4===Rl||3===Rl&&(130023424&Ll)===Ll&&500>Ye()-Ul?pc(e,0):Fl|=n),rc(e,t)}function _c(e,t){0===t&&(1&e.mode?(t=ut,!(130023424&(ut<<=1))&&(ut=4194304)):t=1);var n=ec();null!==(e=Na(e,t))&&(bt(e,t,n),rc(e,n))}function Oc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),_c(e,n)}function Ac(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),_c(e,n)}function Tc(e,t){return We(e,t)}function jc(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lc(e,t,n,r){return new jc(e,t,n,r)}function Pc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Dc(e,t){var n=e.alternate;return null===n?((n=Lc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Rc(e,t,n,r,o,i){var s=2;if(r=e,"function"==typeof e)Pc(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case x:return Nc(n.children,o,i,t);case E:s=8,o|=8;break;case C:return(e=Lc(12,n,t,2|o)).elementType=C,e.lanes=i,e;case T:return(e=Lc(13,n,t,o)).elementType=T,e.lanes=i,e;case j:return(e=Lc(19,n,t,o)).elementType=j,e.lanes=i,e;case D:return Ic(n,o,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:s=10;break e;case O:s=9;break e;case A:s=11;break e;case L:s=14;break e;case P:s=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Lc(s,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Nc(e,t,n,r){return(e=Lc(7,e,r,t)).lanes=n,e}function Ic(e,t,n,r){return(e=Lc(22,e,r,t)).elementType=D,e.lanes=n,e.stateNode={isHidden:!1},e}function Mc(e,t,n){return(e=Lc(6,e,null,t)).lanes=n,e}function Fc(e,t,n){return(t=Lc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bc(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function zc(e,t,n,r,o,a,i,s,l){return e=new Bc(e,t,n,s,l),1===t?(t=1,!0===a&&(t|=8)):t=0,a=Lc(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ma(a),e}function Uc(e){if(!e)return Ao;e:{if(qe(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Do(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(Do(n))return Io(e,n,t)}return t}function qc(e,t,n,r,o,a,i,s,l){return(e=zc(n,r,!0,e,0,a,0,s,l)).context=Uc(null),n=e.current,(a=Ba(r=ec(),o=tc(n))).callback=null!=t?t:null,za(n,a,o),e.current.lanes=o,bt(e,o,r),rc(e,r),e}function $c(e,t,n,r){var o=t.current,a=ec(),i=tc(o);return n=Uc(n),null===t.context?t.context=n:t.pendingContext=n,(t=Ba(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=za(o,t,i))&&(nc(e,o,i,a),Ua(e,o,i)),i}function Hc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Gc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Vc(e,t){Gc(e,t),(e=e.alternate)&&Gc(e,t)}xl=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||jo.current)ys=!0;else{if(!(e.lanes&n||128&t.flags))return ys=!1,function(e,t,n){switch(t.tag){case 3:Ts(t),ma();break;case 5:Ja(t);break;case 1:Do(t.type)&&Mo(t);break;case 4:Za(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;Oo(xa,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Oo(ei,1&ei.current),t.flags|=128,null):n&t.child.childLanes?Ms(e,t,n):(Oo(ei,1&ei.current),null!==(e=Hs(e,t,n))?e.sibling:null);Oo(ei,1&ei.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return qs(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),Oo(ei,ei.current),r)break;return null;case 22:case 23:return t.lanes=0,Es(e,t,n)}return Hs(e,t,n)}(e,t,n);ys=!!(131072&e.flags)}else ys=!1,aa&&1048576&t.flags&&ea(t,Wo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;$s(e,t),e=t.pendingProps;var o=Po(t,To.current);ja(t,n),o=gi(null,t,r,e,o,n);var i=bi();return t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Do(r)?(i=!0,Mo(t)):i=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,Ma(t),o.updater=os,t.stateNode=o,o._reactInternals=t,ls(t,r,e,n),t=As(null,t,r,!0,i,n)):(t.tag=0,aa&&i&&ta(t),ws(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch($s(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return Pc(e)?1:0;if(null!=e){if((e=e.$$typeof)===A)return 11;if(e===L)return 14}return 2}(r),e=ns(r,e),o){case 0:t=_s(null,t,r,e,n);break e;case 1:t=Os(null,t,r,e,n);break e;case 11:t=ks(null,t,r,e,n);break e;case 14:t=Ss(null,t,r,ns(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,_s(e,t,r,o=t.elementType===r?o:ns(r,o),n);case 1:return r=t.type,o=t.pendingProps,Os(e,t,r,o=t.elementType===r?o:ns(r,o),n);case 3:e:{if(Ts(t),null===e)throw Error(a(387));r=t.pendingProps,o=(i=t.memoizedState).element,Fa(e,t),$a(t,r,null,n);var s=t.memoizedState;if(r=s.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=js(e,t,r,n,o=cs(Error(a(423)),t));break e}if(r!==o){t=js(e,t,r,n,o=cs(Error(a(424)),t));break e}for(oa=co(t.stateNode.containerInfo.firstChild),ra=t,aa=!0,ia=null,n=Sa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ma(),r===o){t=Hs(e,t,n);break e}ws(e,t,r,n)}t=t.child}return t;case 5:return Ja(t),null===e&&ua(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,no(r,o)?s=null:null!==i&&no(r,i)&&(t.flags|=32),Cs(e,t),ws(e,t,s,n),t.child;case 6:return null===e&&ua(t),null;case 13:return Ms(e,t,n);case 4:return Za(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ka(t,null,r,n):ws(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,ks(e,t,r,o=t.elementType===r?o:ns(r,o),n);case 7:return ws(e,t,t.pendingProps,n),t.child;case 8:case 12:return ws(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,s=o.value,Oo(xa,r._currentValue),r._currentValue=s,null!==i)if(sr(i.value,s)){if(i.children===o.children&&!jo.current){t=Hs(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var l=i.dependencies;if(null!==l){s=i.child;for(var c=l.firstContext;null!==c;){if(c.context===r){if(1===i.tag){(c=Ba(-1,n&-n)).tag=2;var u=i.updateQueue;if(null!==u){var d=(u=u.shared).pending;null===d?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=n,null!==(c=i.alternate)&&(c.lanes|=n),Ta(i.return,n,t),l.lanes|=n;break}c=c.next}}else if(10===i.tag)s=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(s=i.return))throw Error(a(341));s.lanes|=n,null!==(l=s.alternate)&&(l.lanes|=n),Ta(s,n,t),s=i.sibling}else s=i.child;if(null!==s)s.return=i;else for(s=i;null!==s;){if(s===t){s=null;break}if(null!==(i=s.sibling)){i.return=s.return,s=i;break}s=s.return}i=s}ws(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,ja(t,n),r=r(o=La(o)),t.flags|=1,ws(e,t,r,n),t.child;case 14:return o=ns(r=t.type,t.pendingProps),Ss(e,t,r,o=ns(r.type,o),n);case 15:return xs(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ns(r,o),$s(e,t),t.tag=1,Do(r)?(e=!0,Mo(t)):e=!1,ja(t,n),is(t,r,o),ls(t,r,o,n),As(null,t,r,!0,e,n);case 19:return qs(e,t,n);case 22:return Es(e,t,n)}throw Error(a(156,t.tag))};var Wc="function"==typeof reportError?reportError:function(e){console.error(e)};function Kc(e){this._internalRoot=e}function Qc(e){this._internalRoot=e}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Yc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Jc(){}function Xc(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a;if("function"==typeof o){var s=o;o=function(){var e=Hc(i);s.call(e)}}$c(t,i,e,o)}else i=function(e,t,n,r,o){if(o){if("function"==typeof r){var a=r;r=function(){var e=Hc(i);a.call(e)}}var i=qc(t,r,e,0,null,!1,0,"",Jc);return e._reactRootContainer=i,e[ho]=i.current,qr(8===e.nodeType?e.parentNode:e),uc(),i}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var s=r;r=function(){var e=Hc(l);s.call(e)}}var l=zc(e,0,!1,null,0,!1,0,"",Jc);return e._reactRootContainer=l,e[ho]=l.current,qr(8===e.nodeType?e.parentNode:e),uc((function(){$c(t,l,n,r)})),l}(n,t,e,o,r);return Hc(i)}Qc.prototype.render=Kc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));$c(e,t,null,null)},Qc.prototype.unmount=Kc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;uc((function(){$c(null,e,null,null)})),t[ho]=null}},Qc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Dt.length&&0!==t&&t<Dt[n].priority;n++);Dt.splice(n,0,e),0===n&&Mt(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(vt(t,1|n),rc(t,Ye()),!(6&Al)&&(ql=Ye()+500,$o()))}break;case 13:uc((function(){var t=Na(e,1);if(null!==t){var n=ec();nc(t,e,1,n)}})),Vc(e,1)}},St=function(e){if(13===e.tag){var t=Na(e,134217728);if(null!==t)nc(t,e,134217728,ec());Vc(e,134217728)}},xt=function(e){if(13===e.tag){var t=tc(e),n=Na(e,t);if(null!==n)nc(n,e,t,ec());Vc(e,t)}},Et=function(){return yt},Ct=function(e,t){var n=yt;try{return yt=e,t()}finally{yt=n}},Se=function(e,t,n){switch(t){case"input":if(J(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=So(r);if(!o)throw Error(a(90));W(r),J(r,o)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Ae=cc,Te=uc;var eu={usingClientEntryPoint:!1,Events:[wo,ko,So,_e,Oe,cc]},tu={findFiberByHostInstance:yo,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nu={bundleType:tu.bundleType,version:tu.version,rendererPackageName:tu.rendererPackageName,rendererConfig:tu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ge(e))?null:e.stateNode},findFiberByHostInstance:tu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ru=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ru.isDisabled&&ru.supportsFiber)try{ot=ru.inject(nu),at=ru}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=eu,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zc(t))throw Error(a(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Zc(e))throw Error(a(299));var n=!1,r="",o=Wc;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=zc(e,1,!1,null,0,n,0,r,o),e[ho]=t.current,qr(8===e.nodeType?e.parentNode:e),new Kc(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return e=null===(e=Ge(t))?null:e.stateNode},t.flushSync=function(e){return uc(e)},t.hydrate=function(e,t,n){if(!Yc(t))throw Error(a(200));return Xc(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Zc(e))throw Error(a(405));var r=null!=n&&n.hydratedSources||null,o=!1,i="",s=Wc;if(null!=n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(s=n.onRecoverableError)),t=qc(t,null,e,1,null!=n?n:null,o,0,i,s),e[ho]=t.current,qr(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Qc(t)},t.render=function(e,t,n){if(!Yc(t))throw Error(a(200));return Xc(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Yc(e))throw Error(a(40));return!!e._reactRootContainer&&(uc((function(){Xc(null,null,e,!1,(function(){e._reactRootContainer=null,e[ho]=null}))})),!0)},t.unstable_batchedUpdates=cc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Yc(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return Xc(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},9576:(e,t,n)=>{"use strict";var r=n(8143);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},8143:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(9481)},4072:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(!a(e[l],i[l]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],i.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(e[l]!==i[l])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(i,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],i[c[l]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},932:(e,t,n)=>{"use strict";n.d(t,{mg:()=>X,vd:()=>G});var r=n(758),o=n(2736),a=n.n(o),i=n(4072),s=n.n(i),l=n(9597),c=n.n(l),u=n(2945),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),x=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=x(e,g.TITLE),n=x(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=x(e,"defaultTitle");return t||r||void 0},C=function(e){return x(e,"onChangeClientState")||function(){}},_=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},O=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var s=a[i],l=s.toLowerCase();-1===t.indexOf(l)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===l&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(n=s)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][c]&&(o[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var s=a[i],l=p({},r[s],o[s]);r[s]=l}return e}),[]).reverse()},T=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},j=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},D=[g.NOSCRIPT,g.SCRIPT,g.STYLE],R=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},N=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=I(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=N(n),a=j(t);return o?"<"+e+' data-rh="true" '+o+">"+R(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+R(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return N(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===D.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,s=e.title,l=void 0===s?"":s,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=L(e.metaTags,y),a=L(t,b),i=L(n,v);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,o.priority),M(g.LINK,a.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,u,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,p,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:l,titleAttributes:c},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},q=r.createContext({}),$=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(q.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},W=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),s=0;s<i.length;s+=1){var l=i[s],c=t[l]||"";n.getAttribute(l)!==c&&n.setAttribute(l,c),-1===o.indexOf(l)&&o.push(l);var u=a.indexOf(l);-1!==u&&a.splice(u,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},K=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;W(g.BODY,e.bodyAttributes),W(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=j(e)),W(g.TITLE,t)}(u,d);var p={baseTag:V(g.BASE,n),linkTags:V(g.LINK,o),metaTags:V(g.META,a),noscriptTags:V(g.NOSCRIPT,i),scriptTags:V(g.SCRIPT,l),styleTags:V(g.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),s(e,f,m)},Q=null,Z=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:O(["href"],e),bodyAttributes:_("bodyAttributes",e),defer:x(e,"defer"),encode:x(e,"encodeSpecialCharacters"),htmlAttributes:_("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:E(e),titleAttributes:_("titleAttributes",e),prioritizeSeoTags:T(e,"prioritizeSeoTags")});G.canUseDOM?(t=a,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){K(t,(function(){Q=null}))})):(K(t),Q=null)):B&&(o=B(a)),r(o)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Z.propTypes={context:$.isRequired},Z.displayName="HelmetDispatcher";var Y=["children"],J=["children"],X=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!s()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return p({},o,((t={})[r.type]=i,t.titleAttributes=p({},a),t));case g.BODY:return p({},o,{bodyAttributes:p({},a)});case g.HTML:return p({},o,{htmlAttributes:p({},a)});default:return p({},o,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=h(r,Y),s=Object.keys(i).reduce((function(e,t){return e[S[t]||t]=i[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:s,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,J),o=p({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof U||(a=new U(a.context,a.instances)),a?r.createElement(Z,p({},o,{context:a.value,helmetData:void 0})):r.createElement(q.Consumer,null,(function(e){return r.createElement(Z,p({},o,{context:e}))}))},t}(r.Component);X.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},X.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},X.displayName="Helmet"},5843:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case a:case s:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case h:case l:return e;default:return t}}case o:return t}}}function S(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=g,t.Memo=h,t.Portal=o,t.Profiler=s,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return S(e)||k(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===s||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=k},5959:(e,t,n)=>{"use strict";e.exports=n(5843)},1977:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>s});var r=n(5557),o=n(5890),a=n(758);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function s(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.dO,n,e.map((function(e,n){return a.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.A)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.A)({},n,t,{route:e}))}})}))):null}},1742:(e,t,n)=>{"use strict";n.d(t,{Kd:()=>u,N_:()=>g,k2:()=>y});var r=n(5557),o=n(7870),a=n(758),i=n(8602),s=n(5890),l=n(5045),c=n(5385),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,o.A)(t,e),t.prototype.render=function(){return a.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},f=function(e){return e},m=a.forwardRef;void 0===m&&(m=f);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,l.A)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,s.A)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=f!==m&&t||n,a.createElement("a",u)}));var g=m((function(e,t){var n=e.component,o=void 0===n?h:n,u=e.replace,g=e.to,b=e.innerRef,v=(0,l.A)(e,["component","replace","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,(function(e){e||(0,c.A)(!1);var n=e.history,r=p(d(g,e.location),e.location),l=r?n.createHref(r):"",h=(0,s.A)({},v,{href:l,navigate:function(){var t=d(g,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(p(t));(u||r?n.replace:n.push)(t)}});return f!==m?h.ref=t||b:h.innerRef=b,a.createElement(o,h)}))})),b=function(e){return e},v=a.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,f=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,S=e.strict,x=e.style,E=e.to,C=e.innerRef,_=(0,l.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,(function(e){e||(0,c.A)(!1);var n=w||e.location,i=p(d(E,n),n),l=i.pathname,O=l&&l.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=O?(0,r.B6)(n.pathname,{path:O,exact:h,sensitive:k,strict:S}):null,T=!!(y?y(A,n):A),j="function"==typeof m?m(T):m,L="function"==typeof x?x(T):x;T&&(j=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(j,u),L=(0,s.A)({},L,f));var P=(0,s.A)({"aria-current":T&&o||null,className:j,style:L,to:i},_);return b!==v?P.ref=t||C:P.innerRef=C,a.createElement(g,P)}))}))},5557:(e,t,n)=>{"use strict";n.d(t,{B6:()=>T,Ix:()=>y,W6:()=>F,XZ:()=>v,dO:()=>I,qh:()=>j,rd:()=>C,zy:()=>B});var r=n(7870),o=n(758),a=n(2736),i=n.n(a),s=n(8602),l=n(5385),c=n(5890),u=n(4785),d=n.n(u),p=(n(5959),n(5045)),f=(n(1035),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=o.createContext||function(e,t){var n,a,s="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",l=function(e){function n(){for(var t,n,r,o=arguments.length,a=new Array(o),i=0;i<o;i++)a[i]=arguments[i];return(t=e.call.apply(e,[this].concat(a))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.A)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);l.childContextTypes=((n={})[s]=i().object.isRequired,n);var c=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){(0|e.observedBits)&n&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},o.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},o.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},o.getValue=function(){return this.context[s]?this.context[s].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return c.contextTypes=((a={})[s]=i().object,a),{Provider:l,Consumer:c}},g=function(e){var t=h();return t.displayName=e,t},b=g("Router-History"),v=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(o.Component);var k={},S=1e4,x=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(k[e])return k[e];var t=d().compile(e);return x<S&&(k[e]=t,x++),t}(e)(t,{pretty:!0})}function C(e){var t=e.computedMatch,n=e.to,r=e.push,a=void 0!==r&&r;return o.createElement(v.Consumer,null,(function(e){e||(0,l.A)(!1);var r=e.history,i=e.staticContext,u=a?r.push:r.replace,d=(0,s.yJ)(t?"string"==typeof n?E(n,t.params):(0,c.A)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(u(d),null):o.createElement(w,{onMount:function(){u(d)},onUpdate:function(e,t){var n=(0,s.yJ)(t.to);(0,s.Fu)(n,(0,c.A)({},d,{key:n.key}))||u(d)},to:n})}))}var _={},O=1e4,A=0;function T(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,i=n.strict,s=void 0!==i&&i,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=_[n]||(_[n]={});if(r[e])return r[e];var o=[],a={regexp:d()(e,o,t),keys:o};return A<O&&(r[e]=a,A++),a}(n,{end:a,strict:s,sensitive:c}),o=r.regexp,i=r.keys,l=o.exec(e);if(!l)return null;var u=l[0],p=l.slice(1),f=e===u;return a&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(v.Consumer,null,(function(t){t||(0,l.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?T(n.pathname,e.props):t.match,a=(0,c.A)({},t,{location:n,match:r}),i=e.props,s=i.children,u=i.component,d=i.render;return Array.isArray(s)&&function(e){return 0===o.Children.count(e)}(s)&&(s=null),o.createElement(v.Provider,{value:a},a.match?s?"function"==typeof s?s(a):s:u?o.createElement(u,a):d?d(a):null:"function"==typeof s?s(a):null)}))},t}(o.Component);function L(e){return"/"===e.charAt(0)?e:"/"+e}function P(e,t){if(!e)return t;var n=L(e);return 0!==t.pathname.indexOf(n)?t:(0,c.A)({},t,{pathname:t.pathname.substr(n.length)})}function D(e){return"string"==typeof e?e:(0,s.AO)(e)}function R(e){return function(){(0,l.A)(!1)}}function N(){}o.Component;var I=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(v.Consumer,null,(function(t){t||(0,l.A)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?T(a.pathname,(0,c.A)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);var M=o.useContext;function F(){return M(b)}function B(){return M(v).location}},7462:(e,t,n)=>{"use strict";var r=n(758),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:s.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},2713:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function v(){}function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=b.prototype;var w=y.prototype=new v;w.constructor=y,h(w,b.prototype),w.isPureReactComponent=!0;var k=Array.isArray,S=Object.prototype.hasOwnProperty,x={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,r){var o,a={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)S.call(t,o)&&!E.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=r;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===a[o]&&(a[o]=l[o]);return{$$typeof:n,type:e,key:i,ref:s,props:a,_owner:x.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var O=/\/+/g;function A(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,o,a,i){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case n:case r:l=!0}}if(l)return i=i(l=e),e=""===a?"."+A(l,0):a,k(i)?(o="",null!=e&&(o=e.replace(O,"$&/")+"/"),T(i,t,o,"",(function(e){return e}))):null!=i&&(_(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||l&&l.key===i.key?"":(""+i.key).replace(O,"$&/")+"/")+e)),t.push(i)),1;if(l=0,a=""===a?".":a+":",k(e))for(var c=0;c<e.length;c++){var u=a+A(s=e[c],c);l+=T(s,t,o,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(s=e.next()).done;)l+=T(s=s.value,t,o,u=a+A(s,c++),i);else if("object"===s)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return l}function j(e,t,n){if(null==e)return e;var r=[],o=0;return T(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function L(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var P={current:null},D={transition:null},R={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:D,ReactCurrentOwner:x};function N(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:j,forEach:function(e,t,n){j(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return j(e,(function(){t++})),t},toArray:function(e){return j(e,(function(e){return e}))||[]},only:function(e){if(!_(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=b,t.Fragment=o,t.Profiler=i,t.PureComponent=y,t.StrictMode=a,t.Suspense=u,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,t.act=N,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=h({},e.props),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=x.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)S.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==l?l[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=r;else if(1<c){l=Array(c);for(var u=0;u<c;u++)l[u]=arguments[u+2];o.children=l}return{$$typeof:n,type:e.type,key:a,ref:i,props:o,_owner:s}},t.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:c,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=D.transition;D.transition={};try{e()}finally{D.transition=t}},t.unstable_act=N,t.useCallback=function(e,t){return P.current.useCallback(e,t)},t.useContext=function(e){return P.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return P.current.useDeferredValue(e)},t.useEffect=function(e,t){return P.current.useEffect(e,t)},t.useId=function(){return P.current.useId()},t.useImperativeHandle=function(e,t,n){return P.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return P.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return P.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return P.current.useMemo(e,t)},t.useReducer=function(e,t,n){return P.current.useReducer(e,t,n)},t.useRef=function(e){return P.current.useRef(e)},t.useState=function(e){return P.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return P.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return P.current.useTransition()},t.version="18.3.1"},758:(e,t,n)=>{"use strict";e.exports=n(2713)},6070:(e,t,n)=>{"use strict";e.exports=n(7462)},4733:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,i=o>>>1;r<i;){var s=2*(r+1)-1,l=e[s],c=s+1,u=e[c];if(0>a(l,n))c<o&&0>a(u,l)?(e[r]=u,e[c]=n,r=c):(e[r]=l,e[s]=n,r=s);else{if(!(c<o&&0>a(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}var c=[],u=[],d=1,p=null,f=3,m=!1,h=!1,g=!1,b="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,y="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(u);null!==t;){if(null===t.callback)o(u);else{if(!(t.startTime<=e))break;o(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function k(e){if(g=!1,w(e),!h)if(null!==r(c))h=!0,D(S);else{var t=r(u);null!==t&&R(k,t.startTime-e)}}function S(e,n){h=!1,g&&(g=!1,v(_),_=-1),m=!0;var a=f;try{for(w(n),p=r(c);null!==p&&(!(p.expirationTime>n)||e&&!T());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var s=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?p.callback=s:p===r(c)&&o(c),w(n)}else o(c);p=r(c)}if(null!==p)var l=!0;else{var d=r(u);null!==d&&R(k,d.startTime-n),l=!1}return l}finally{p=null,f=a,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var x,E=!1,C=null,_=-1,O=5,A=-1;function T(){return!(t.unstable_now()-A<O)}function j(){if(null!==C){var e=t.unstable_now();A=e;var n=!0;try{n=C(!0,e)}finally{n?x():(E=!1,C=null)}}else E=!1}if("function"==typeof y)x=function(){y(j)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,P=L.port2;L.port1.onmessage=j,x=function(){P.postMessage(null)}}else x=function(){b(j,0)};function D(e){C=e,E||(E=!0,x())}function R(e,n){_=b((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){h||m||(h=!0,D(S))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):O=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,o,a){var i=t.unstable_now();switch("object"==typeof a&&null!==a?a="number"==typeof(a=a.delay)&&0<a?i+a:i:a=i,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:d++,callback:o,priorityLevel:e,startTime:a,expirationTime:s=a+s,sortIndex:-1},a>i?(e.sortIndex=a,n(u,e),null===r(c)&&e===r(u)&&(g?(v(_),_=-1):g=!0,R(k,a-i))):(e.sortIndex=s,n(c,e),h||m||(h=!0,D(S))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},1896:(e,t,n)=>{"use strict";e.exports=n(4733)},2945:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<a.length;l++){var c=a[l];if(!s(c))return!1;var u=e[c],d=t[c];if(!1===(o=n?n.call(r,u,d,c):void 0)||void 0===o&&u!==d)return!1}return!0}},7500:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e="",t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=i(e,a(n)))}return e}function a(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return o.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var t="";for(var n in e)r.call(e,n)&&e[n]&&(t=i(t,n));return t}function i(e,t){return t?e?e+" "+t:e+t:e}e.exports?(o.default=o,e.exports=o):void 0===(n=function(){return o}.apply(t,[]))||(e.exports=n)}()},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Morph docs \u2013 The Optimistic zkEVM Scaling Solution docs",tagline:"",favicon:"https://www.morphl2.io/favicon.ico",staticDirectories:["public","static"],url:"https://docs.morphl2.io",baseUrl:"/",organizationName:"morph labs",projectName:"morph docs",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},plugins:["docusaurus-plugin-sass",null,["@docusaurus/plugin-client-redirects",{fromExtensions:["html","htm"],toExtensions:["exe","zip"],redirects:[{to:"/docs/about-morph/user-navigation-page",from:["/","/docs"]}]}]],presets:[["classic",{docs:{sidebarPath:"/Users/danny.fu/morphl2/morph-frontend/apps/morph-doc/sidebars.js",editUrl:"https://github.com/morph-l2/morph-doc/tree/main",remarkPlugins:[null],rehypePlugins:[null]},blog:{showReadingTime:!0,editUrl:"https://github.com/morph-l2/morph-doc/tree/main",remarkPlugins:[null],rehypePlugins:[null]},theme:{customCss:["/Users/danny.fu/morphl2/morph-frontend/apps/morph-doc/src/css/fonts.scss","/Users/danny.fu/morphl2/morph-frontend/apps/morph-doc/src/css/custom.scss"]}}]],stylesheets:[{href:"/katex/katex.min.css",type:"text/css"}],themeConfig:{prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},metadata:[{name:"keywords",content:"Morph,EVM-equivalent,Optimistic,zkEVM"},{name:"google-site-verification",content:"-GPotcMH5Ecuj8EnU-Tasmm8TOZXEHWEPD5qP5d0FEU"}],algolia:{appId:"8HKAWLQMLZ",apiKey:"021dba71d50406f34ded5e71c22283e5",indexName:"morph_doc",contextualSearch:!0,replaceSearchResultPathname:{from:"/docs/",to:"/docs/"},searchParameters:{},searchPagePath:"search"},image:"img/docusaurus-social-card.jpg",colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},sidebar:{autoCollapseCategories:!0},navbar:{title:"",logo:{alt:"Morph Doc Logo",src:"logo/LogoMorphGreen-summary.svg",srcDark:"logo/LogoMorphGreen-summary.svg"},items:[{type:"doc",position:"right",docId:"about-morph/user-navigation-page",label:"For Users"},{type:"doc",position:"right",docId:"build-on-morph/developer-navigation-page",label:"For Developers"}],hideOnScroll:!1},footer:{links:[{title:"Learn",items:[{label:"Docs",href:"https://docs.morphl2.io/docs/how-morph-works/intro/"},{label:"Blog",href:"https://blog.morphl2.io/"}]},{title:"Developers",items:[{label:"APIs",href:"https://explorer.morphl2.io/api-docs"},{label:"Tools",href:"https://morphl2.io/build"}]},{title:"Community",items:[{label:"Forum",href:"https://forum.morphl2.io"},{label:"Telegram",href:"https://t.me/MorphL2official"},{label:"Twitter",href:"https://x.com/MorphLayer"},{label:"Discord",href:"https://discord.com/invite/MorphLayer"}]},{title:"Company",items:[{label:"About",href:"https://morphl2.io/about"},{label:"Contact us",href:"https://morphl2.io/about"},{label:"Careers",href:"https://morphl2.io/careers"},{label:"Brand Kit",href:"https://morphl2brand.notion.site/Morph-brand-guideline-56eca01ef6d14212be0e9562ad1e2fc1"}]}],copyright:"\xa9 2025 Morph. All rights reserved.",style:"light"},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onBrokenAnchors:"warn",onDuplicateRoutes:"warn",customFields:{},themes:[],scripts:[],headTags:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0}}}},5890:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},7870:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})},5045:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},3526:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}n.d(t,{A:()=>o});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},5371:(e,t,n)=>{"use strict";n.d(t,{My:()=>k,f4:()=>Z});var r,o,a=n(758),i=n(3526),s=Object.create,l=Object.defineProperty,c=Object.defineProperties,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,m=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,g=Object.prototype.propertyIsEnumerable,b=(e,t,n)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))h.call(t,n)&&b(e,n,t[n]);if(f)for(var n of f(t))g.call(t,n)&&b(e,n,t[n]);return e},y=(e,t)=>c(e,d(t)),w=(e,t)=>{var n={};for(var r in e)h.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&f)for(var r of f(e))t.indexOf(r)<0&&g.call(e,r)&&(n[r]=e[r]);return n},k=((e,t,n)=>(n=null!=e?s(m(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of p(t))h.call(e,o)||o===n||l(e,o,{get:()=>t[o],enumerable:!(r=u(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:l(n,"default",{value:e,enumerable:!0}),e)))((r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={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(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var o=e.classList;if(o.contains(t))return!0;if(o.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var l in n)n.hasOwnProperty(l)&&(i[l]=n[l]);n.hasOwnProperty(s)||(i[s]=a[s])}var c=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],o||s);var l=t[s],c=r.util.type(l);"Object"!==c||a[i(l)]?"Array"!==c||a[i(l)]||(a[i(l)]=!0,e(l,n,s,a)):(a[i(l)]=!0,e(l,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",a),!a.grammar)throw new Error('The language "'+a.language+'" has no grammar.');return a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new s;return l(o,o.head,e),i(e,o,t,o.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function i(e,t,n,s,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var h=f[m],g=h.inside,b=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,S=s.next,x=u;S!==t.tail&&!(d&&x>=d.reach);x+=S.value.length,S=S.next){var E=S.value;if(t.length>e.length)return;if(!(E instanceof o)){var C,_=1;if(v){if(!(C=a(k,x,e,b))||C.index>=e.length)break;var O=C.index,A=C.index+C[0].length,T=x;for(T+=S.value.length;O>=T;)T+=(S=S.next).value.length;if(x=T-=S.value.length,S.value instanceof o)continue;for(var j=S;j!==t.tail&&(T<A||"string"==typeof j.value);j=j.next)_++,T+=j.value.length;_--,E=e.slice(x,T),C.index-=x}else if(!(C=a(k,0,E,b)))continue;O=C.index;var L=C[0],P=E.slice(0,O),D=E.slice(O+L.length),R=x+E.length;d&&R>d.reach&&(d.reach=R);var N=S.prev;if(P&&(N=l(t,N,P),x+=P.length),c(t,N,_),S=l(t,N,new o(p,g?r.tokenize(L,g):L,y,L)),D&&l(t,S,D),_>1){var I={cause:p+","+m,reach:R};i(e,t,n,S.prev,x,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function s(){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 l(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function c(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var s="";for(var l in a.attributes)s+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+s+">"+a.content+"</"+a.tag+">"},r}();t.exports=n,n.default=n}},function(){return o||(0,r[p(r)[0]])((o={exports:{}}).exports,o),o.exports})());k.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},k.languages.markup.tag.inside["attr-value"].inside.entity=k.languages.markup.entity,k.languages.markup.doctype.inside["internal-subset"].inside=k.languages.markup,k.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(k.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:k.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:k.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},k.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(k.languages.markup.tag,"addAttribute",{value:function(e,t){k.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:k.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),k.languages.html=k.languages.markup,k.languages.mathml=k.languages.markup,k.languages.svg=k.languages.markup,k.languages.xml=k.languages.extend("markup",{}),k.languages.ssml=k.languages.xml,k.languages.atom=k.languages.xml,k.languages.rss=k.languages.xml,function(e){var t={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},n=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,r="(?:[^\\\\-]|"+n.source+")",o=(r=RegExp(r+"-"+r),{pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"});e.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":o}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":o}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}}}(k),k.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},k.languages.javascript=k.languages.extend("clike",{"class-name":[k.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}|\?\?=?|\?\.?|[~:]/}),k.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,k.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:k.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:k.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:k.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:k.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:k.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),k.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:k.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"}}),k.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),k.languages.markup&&(k.languages.markup.tag.addInlined("script","javascript"),k.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")),k.languages.js=k.languages.javascript,k.languages.actionscript=k.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),k.languages.actionscript["class-name"].alias="function",delete k.languages.actionscript.parameter,delete k.languages.actionscript["literal-property"],k.languages.markup&&k.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:k.languages.markup}}),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}(k),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,i=a[o];if((i=i||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(i=a[o]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s<l;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),r(i[s]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(k),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),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,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(k),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(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("\\[(?:[^[\\]\"']|"+t.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":[t,{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}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{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|RebeccaPurple|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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(k),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+o+"|"+a+")"}))),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(a),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}(k),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(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+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o,a=t[n];"code"!==a.type?e(a.content):(o=a.content[1],a=a.content[3],o&&a&&"code-language"===o.type&&"code-block"===a.type&&"string"==typeof o.content&&(o=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),o="language-"+(o=(/[a-z][\w-]*/i.exec(o)||[""])[0].toLowerCase()),a.alias?"string"==typeof a.alias?a.alias=[a.alias,o]:a.alias.push(o):a.alias=[o]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r];if(a=/language-(.+)/.exec(a)){n=a[1];break}}var c,u=e.languages[n];u?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),l(n)):s[t]||e})),u,n):n&&"none"!==n&&e.plugins.autoloader&&(c="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),s={amp:"&",lt:"<",gt:">",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(k),k.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:k.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+/},k.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var o=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),0<o.length)){var s=p(/^\{$/,/^\}$/);if(-1!==s)for(var l=n;l<s;l++){var c=t[l];"variable"===c.type&&0<=o.indexOf(c.content)&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var o=1,a=n;a<t.length;a++){var i=t[a],s=i.content;if("punctuation"===i.type&&"string"==typeof s)if(e.test(s))o++;else if(r.test(s)&&0==--o)return a}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),k.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function l(t,n,i){var l=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),c=0,u={},d=(l=s(l.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n})).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var a=0;a<n.length;a++){if(c>=d.length)return;var i,l,p,f,m,h,g,b=n[a];"string"==typeof b||"string"==typeof b.content?(i=d[c],-1!==(g=(h="string"==typeof b?b:b.content).indexOf(i))&&(++c,l=h.substring(0,g),m=u[i],p=void 0,(f={})["interpolation-punctuation"]=o,3===(f=e.tokenize(m,f)).length&&((p=[1,1]).push.apply(p,s(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,m),f=h.substring(g+i.length),m=[],l&&m.push(l),m.push(p),f&&(t(h=[f]),m.push.apply(m,h)),"string"==typeof b?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):b.content=m)):(g=b.content,Array.isArray(g)?t(g):t([g]))}}(l),new e.Token(i,l,"language-"+i,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 c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in c&&function t(n){for(var r=0,o=n.length;r<o;r++){var a,i,s,c=n[r];"string"!=typeof c&&(a=c.content,Array.isArray(a)?"template-string"===c.type?(c=a[1],3===a.length&&"string"!=typeof c&&"embedded-code"===c.type&&(i=u(c),c=c.alias,c=Array.isArray(c)?c[0]:c,s=e.languages[c])&&(a[1]=l(i,s,c))):t(a):"string"!=typeof a&&t([a]))}}(t.tokens)}))}(k),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(k),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(k),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(k),k.languages.n4js=k.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),k.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),k.languages.n4jsd=k.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var o=n[r],a=e.languages.javascript[o];o=(a="RegExp"===e.util.type(a)?e.languages.javascript[o]={pattern:a}:a).inside||{};(a.inside=o)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(k),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;"string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===s(o.content[0].content[1])&&n.pop():"/>"!==o.content[o.content.length-1].content&&n.push({tagName:s(o.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&0<n.length&&0===n[n.length-1].openedBraces&&(a=s(o),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(a+=s(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(a=s(t[r-1])+a,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",a,null,a)),o.content&&"string"!=typeof o.content&&i(o.content)}}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var s=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(s).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(k),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(k),k.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},k.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=k.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(k),k.languages.c=k.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|[?:~]|[-+*/%&|^!=<>]=?/}),k.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),k.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},k.languages.c.string],char:k.languages.c.char,comment:k.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:k.languages.c}}}}),k.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 k.languages.c.boolean,k.languages.objectivec=k.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 k.languages.objectivec["class-name"],k.languages.objc=k.languages.objectivec,k.languages.reason=k.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/}),k.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 k.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(k),k.languages.go=k.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/}),k.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete k.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(k),k.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:/[{}[\];(),.:]/},k.languages.python["string-interpolation"].inside.interpolation.inside.rest=k.languages.python,k.languages.py=k.languages.python,k.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"}},k.languages.webmanifest=k.languages.json;((e,t)=>{for(var n in t)l(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>S,duotoneDark:()=>x,duotoneLight:()=>E,github:()=>C,gruvboxMaterialDark:()=>q,gruvboxMaterialLight:()=>$,jettwaveDark:()=>F,jettwaveLight:()=>B,nightOwl:()=>_,nightOwlLight:()=>O,oceanicNext:()=>j,okaidia:()=>L,oneDark:()=>z,oneLight:()=>U,palenight:()=>P,shadesOfPurple:()=>D,synthwave84:()=>R,ultramin:()=>N,vsDark:()=>I,vsLight:()=>M});var S={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},x={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},E={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},C={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},_={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},O={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},A="#c5a5c5",T="#8dc891",j={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:A}},{types:["attr-value"],style:{color:T}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:T}},{types:["punctuation"],style:{color:T}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:A}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},L={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},P={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},D={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},R={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},N={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},I={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},M={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},F={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},B={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},z={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},U={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},q={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},$={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},H=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=v(v({},e[t]),o);e[t]=n})),e}),{});return r.root=n,r.plain=y(v({},n),{backgroundColor:void 0}),r},G=/\r\n|\r|\n/,V=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},W=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},K=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,i=0,s=[];const l=[s];for(;i>-1;){for(;(a=r[i]++)<o[i];){let e,c=t[i];const u=n[i][a];if("string"==typeof u?(c=i>0?c:["plain"],e=u):(c=W(c,u.type),u.alias&&(c=W(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(G),p=d.length;s.push({types:c,content:d[0]});for(let t=1;t<p;t++)V(s),l.push(s=[]),s.push({types:c,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),o.pop()}return V(s),l},Q=({children:e,language:t,code:n,theme:r,prism:o})=>{const s=t.toLowerCase(),l=((e,t)=>{const[n,r]=(0,a.useState)(H(t,e)),o=(0,a.useRef)(),i=(0,a.useRef)();return(0,a.useEffect)((()=>{t===o.current&&e===i.current||(o.current=t,i.current=e,r(H(t,e)))}),[e,t]),n})(s,r),c=(e=>(0,a.useCallback)((t=>{var n=t,{className:r,style:o,line:a}=n,s=w(n,["className","style","line"]);const l=y(v({},s),{className:(0,i.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof o&&(l.style=v(v({},l.style||{}),o)),l}),[e]))(l),u=(e=>{const t=(0,a.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,a.useCallback)((e=>{var n=e,{token:r,className:o,style:a}=n,s=w(n,["token","className","style"]);const l=y(v({},s),{className:(0,i.A)("token",...r.types,o),children:r.content,style:t(r)});return null!=a&&(l.style=v(v({},l.style||{}),a)),l}),[t])})(l),d=(({prism:e,code:t,grammar:n,language:r})=>{const o=(0,a.useRef)(e);return(0,a.useMemo)((()=>{if(null==n)return K([t]);const e={code:t,grammar:n,language:r,tokens:[]};return o.current.hooks.run("before-tokenize",e),e.tokens=o.current.tokenize(t,n),o.current.hooks.run("after-tokenize",e),K(e.tokens)}),[t,n,r])})({prism:o,language:s,code:n,grammar:o.languages[s]});return e({tokens:d,className:`prism-code language-${s}`,style:null!=l?l.root:{},getLineProps:c,getTokenProps:u})},Z=e=>(0,a.createElement)(Q,y(v({},e),{prism:e.prism||k,theme:e.theme||I,code:e.code,language:e.language}))},5385:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},2654:e=>{"use strict";e.exports={}},4054:e=>{"use strict";e.exports=JSON.parse('{"/search-6c5":{"__comp":"1a4e3797","__context":{"plugin":"38a5c357"}},"/docs-a1a":{"__comp":"5e95c892","__context":{"plugin":"68efb262"}},"/docs-9c7":{"__comp":"a7bd4aaa","version":"935f2afb"},"/docs-af1":{"__comp":"a94703ab"},"/docs/about-morph/faqs-db6":{"__comp":"17896441","content":"39f485e7"},"/docs/about-morph/key-concepts-b1a":{"__comp":"17896441","content":"9fc9b620"},"/docs/about-morph/key-concepts/optimistic-rollup-ec2":{"__comp":"17896441","content":"dfd8dfaf"},"/docs/about-morph/morphs-architecture-1e7":{"__comp":"17896441","content":"ad8d1448"},"/docs/about-morph/morphs-vision-and-mission-cd4":{"__comp":"17896441","content":"99b8a708"},"/docs/about-morph/overview-of-morph-d84":{"__comp":"17896441","content":"08b9f613"},"/docs/about-morph/roadmap-460":{"__comp":"17896441","content":"1a1587e1"},"/docs/about-morph/the-technology-behind-morph-b44":{"__comp":"17896441","content":"33e57971"},"/docs/about-morph/user-navigation-page-19e":{"__comp":"17896441","content":"82419dfd"},"/docs/about-morph/where-should-i-start-e58":{"__comp":"17896441","content":"52171187"},"/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum-59b":{"__comp":"17896441","content":"5bc5b9ce"},"/docs/build-on-morph/build-on-morph/development-setup-d4d":{"__comp":"17896441","content":"9d4e1be7"},"/docs/build-on-morph/build-on-morph/integration-one-page-48a":{"__comp":"17896441","content":"73af12fb"},"/docs/build-on-morph/build-on-morph/integration-one-page-cn-e8d":{"__comp":"17896441","content":"a04af9a2"},"/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph-fc4":{"__comp":"17896441","content":"fac53bf8"},"/docs/build-on-morph/build-on-morph/verify-your-smart-contracts-120":{"__comp":"17896441","content":"af91f293"},"/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum-ed4":{"__comp":"17896441","content":"8347fa88"},"/docs/build-on-morph/code-examples/deploy-contract-on-morph-5af":{"__comp":"17896441","content":"2f19d5d4"},"/docs/build-on-morph/developer-navigation-page-6f3":{"__comp":"17896441","content":"e6f27cd2"},"/docs/build-on-morph/developer-resources/contracts-51b":{"__comp":"17896441","content":"e7a84acc"},"/docs/build-on-morph/developer-resources/dapp-examples-on-morph-899":{"__comp":"17896441","content":"8d0b932e"},"/docs/build-on-morph/developer-resources/how-to-run-a-morph-node-a6b":{"__comp":"17896441","content":"fb26d209"},"/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods-c1b":{"__comp":"17896441","content":"22a82985"},"/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker-e0e":{"__comp":"17896441","content":"ff3f68fa"},"/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host-c23":{"__comp":"17896441","content":"b137769e"},"/docs/build-on-morph/developer-resources/node-operation/prune-state-63a":{"__comp":"17896441","content":"5d313dc3"},"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker-fb2":{"__comp":"17896441","content":"3250a443"},"/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host-d69":{"__comp":"17896441","content":"a0d75a43"},"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker-4df":{"__comp":"17896441","content":"4f7a49ab"},"/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host-653":{"__comp":"17896441","content":"f3316ef7"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction-924":{"__comp":"17896441","content":"5c242b2e"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence-ad8":{"__comp":"17896441","content":"1f2dc99a"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer-cce":{"__comp":"17896441","content":"405a8a84"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services-b59":{"__comp":"17896441","content":"7a5975a7"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles-b1d":{"__comp":"17896441","content":"bce3eedd"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability-efa":{"__comp":"17896441","content":"b202810b"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services-2a2":{"__comp":"17896441","content":"e6305dab"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services-072":{"__comp":"17896441","content":"829cd294"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet-d7e":{"__comp":"17896441","content":"c7ccd35b"},"/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding-fe8":{"__comp":"17896441","content":"cfe67a99"},"/docs/build-on-morph/intro-235":{"__comp":"17896441","content":"3f6197d4"},"/docs/build-on-morph/sdk/classes/CrossChainMessenger-71f":{"__comp":"17896441","content":"e7f02677"},"/docs/build-on-morph/sdk/classes/ETHBridgeAdapter-e0f":{"__comp":"17896441","content":"59db22f4"},"/docs/build-on-morph/sdk/classes/StandardBridgeAdapter-be7":{"__comp":"17896441","content":"fb24aa13"},"/docs/build-on-morph/sdk/enumerations/L1ChainID-bfe":{"__comp":"17896441","content":"7824cff9"},"/docs/build-on-morph/sdk/enumerations/L1RpcUrls-212":{"__comp":"17896441","content":"69301e8b"},"/docs/build-on-morph/sdk/enumerations/L2ChainID-e8e":{"__comp":"17896441","content":"e8fcecf9"},"/docs/build-on-morph/sdk/enumerations/L2RpcUrls-7f9":{"__comp":"17896441","content":"7c45cc48"},"/docs/build-on-morph/sdk/enumerations/MessageDirection-681":{"__comp":"17896441","content":"720f9cb5"},"/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus-1f3":{"__comp":"17896441","content":"95a7ae32"},"/docs/build-on-morph/sdk/enumerations/MessageStatus-a5a":{"__comp":"17896441","content":"a2db6fd6"},"/docs/build-on-morph/sdk/functions/asL2Provider-4b1":{"__comp":"17896441","content":"72171cd8"},"/docs/build-on-morph/sdk/functions/estimateL1Gas-a2f":{"__comp":"17896441","content":"e3875bab"},"/docs/build-on-morph/sdk/functions/estimateL1GasCost-06e":{"__comp":"17896441","content":"e8c42455"},"/docs/build-on-morph/sdk/functions/estimateL2GasCost-20f":{"__comp":"17896441","content":"a1f831b5"},"/docs/build-on-morph/sdk/functions/estimateTotalGasCost-bc5":{"__comp":"17896441","content":"38e6cd8b"},"/docs/build-on-morph/sdk/functions/getAllOEContracts-91e":{"__comp":"17896441","content":"b4c00acc"},"/docs/build-on-morph/sdk/functions/getBridgeAdapters-5d3":{"__comp":"17896441","content":"d8273606"},"/docs/build-on-morph/sdk/functions/getL1GasPrice-68c":{"__comp":"17896441","content":"46618904"},"/docs/build-on-morph/sdk/functions/getOEContract-ea0":{"__comp":"17896441","content":"e912b961"},"/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2-301":{"__comp":"17896441","content":"9235c071"},"/docs/build-on-morph/sdk/functions/hashMessageHash-f9c":{"__comp":"17896441","content":"beb6ddce"},"/docs/build-on-morph/sdk/functions/isL2Provider-0a3":{"__comp":"17896441","content":"f93d7a3b"},"/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit-a8f":{"__comp":"17896441","content":"6ba36391"},"/docs/build-on-morph/sdk/functions/omit-31d":{"__comp":"17896441","content":"8613d4b8"},"/docs/build-on-morph/sdk/functions/toAddress-52d":{"__comp":"17896441","content":"028d32dc"},"/docs/build-on-morph/sdk/functions/toBigNumber-1cd":{"__comp":"17896441","content":"4784893f"},"/docs/build-on-morph/sdk/functions/toNumber-47f":{"__comp":"17896441","content":"a399e926"},"/docs/build-on-morph/sdk/functions/toProvider-b81":{"__comp":"17896441","content":"fe9c53f2"},"/docs/build-on-morph/sdk/functions/toSignerOrProvider-474":{"__comp":"17896441","content":"f435c040"},"/docs/build-on-morph/sdk/functions/toTransactionHash-b90":{"__comp":"17896441","content":"4cbe5783"},"/docs/build-on-morph/sdk/globals-a28":{"__comp":"17896441","content":"d475c619"},"/docs/build-on-morph/sdk/interfaces/BridgeAdapterData-658":{"__comp":"17896441","content":"5acb1cf6"},"/docs/build-on-morph/sdk/interfaces/BridgeAdapters-6e5":{"__comp":"17896441","content":"b0d24208"},"/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage-e90":{"__comp":"17896441","content":"ff883f18"},"/docs/build-on-morph/sdk/interfaces/CrossChainMessage-6a8":{"__comp":"17896441","content":"833a0690"},"/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest-c6e":{"__comp":"17896441","content":"7c1e7b23"},"/docs/build-on-morph/sdk/interfaces/IActionOptions-32e":{"__comp":"17896441","content":"e3bda051"},"/docs/build-on-morph/sdk/interfaces/IBridgeAdapter-d75":{"__comp":"17896441","content":"9e1db927"},"/docs/build-on-morph/sdk/interfaces/L2Block-526":{"__comp":"17896441","content":"9a9366b1"},"/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions-fd3":{"__comp":"17896441","content":"6f037fd7"},"/docs/build-on-morph/sdk/interfaces/L2Transaction-107":{"__comp":"17896441","content":"2b4bd9da"},"/docs/build-on-morph/sdk/interfaces/MessageReceipt-c6d":{"__comp":"17896441","content":"4a269d4a"},"/docs/build-on-morph/sdk/interfaces/OEContracts-174":{"__comp":"17896441","content":"c30bab43"},"/docs/build-on-morph/sdk/interfaces/OEContractsLike-86e":{"__comp":"17896441","content":"70e8639a"},"/docs/build-on-morph/sdk/interfaces/OEL1Contracts-8b8":{"__comp":"17896441","content":"9e78961b"},"/docs/build-on-morph/sdk/interfaces/OEL2Contracts-9ec":{"__comp":"17896441","content":"fda70fd8"},"/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal-8b3":{"__comp":"17896441","content":"1483841d"},"/docs/build-on-morph/sdk/interfaces/StateRoot-5a3":{"__comp":"17896441","content":"24734b3e"},"/docs/build-on-morph/sdk/interfaces/StateRootBatch-65f":{"__comp":"17896441","content":"25bec567"},"/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader-8f3":{"__comp":"17896441","content":"d4781eda"},"/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage-f09":{"__comp":"17896441","content":"98d1a41e"},"/docs/build-on-morph/sdk/interfaces/WithdrawalEntry-faa":{"__comp":"17896441","content":"ca4c51aa"},"/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof-545":{"__comp":"17896441","content":"979f48c0"},"/docs/build-on-morph/sdk/intro-542":{"__comp":"17896441","content":"61b1ff91"},"/docs/build-on-morph/sdk/type-aliases/AddressLike-bac":{"__comp":"17896441","content":"a0d49790"},"/docs/build-on-morph/sdk/type-aliases/DeepPartial-7e6":{"__comp":"17896441","content":"2a31694d"},"/docs/build-on-morph/sdk/type-aliases/L1Provider-8de":{"__comp":"17896441","content":"9b96db99"},"/docs/build-on-morph/sdk/type-aliases/L2Provider-181":{"__comp":"17896441","content":"a4da47e1"},"/docs/build-on-morph/sdk/type-aliases/LowLevelMessage-968":{"__comp":"17896441","content":"eac819ad"},"/docs/build-on-morph/sdk/type-aliases/MessageLike-5c1":{"__comp":"17896441","content":"76db7a6d"},"/docs/build-on-morph/sdk/type-aliases/MessageRequestLike-eb0":{"__comp":"17896441","content":"6a8ddb26"},"/docs/build-on-morph/sdk/type-aliases/NumberLike-214":{"__comp":"17896441","content":"5a91095f"},"/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike-6f6":{"__comp":"17896441","content":"c5f7ff1a"},"/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike-84a":{"__comp":"17896441","content":"c33d6554"},"/docs/build-on-morph/sdk/type-aliases/ProviderLike-2fe":{"__comp":"17896441","content":"81f29526"},"/docs/build-on-morph/sdk/type-aliases/SignerLike-e63":{"__comp":"17896441","content":"79dc0904"},"/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike-681":{"__comp":"17896441","content":"40b4f046"},"/docs/build-on-morph/sdk/type-aliases/TransactionLike-5b2":{"__comp":"17896441","content":"a5f26d61"},"/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA-e80":{"__comp":"17896441","content":"8b6091b0"},"/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES-c46":{"__comp":"17896441","content":"a00dd934"},"/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES-c94":{"__comp":"17896441","content":"08313b4f"},"/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES-302":{"__comp":"17896441","content":"02a35c22"},"/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES-f2f":{"__comp":"17896441","content":"829b4b9b"},"/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS-e9d":{"__comp":"17896441","content":"4a10ae38"},"/docs/build-on-morph/sdk/variables/l1BridgeName-58e":{"__comp":"17896441","content":"066c1628"},"/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName-55b":{"__comp":"17896441","content":"465c0bc5"},"/docs/build-on-morph/sdk/variables/l2BridgeName-8bb":{"__comp":"17896441","content":"44bbd017"},"/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName-ce4":{"__comp":"17896441","content":"9ff57eaa"},"/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network-76b":{"__comp":"17896441","content":"dcf2e50b"},"/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum-2f6":{"__comp":"17896441","content":"5aa3c257"},"/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph-1d1":{"__comp":"17896441","content":"fdc91eb1"},"/docs/how-morph-works/general-protocol-design/rollup-ec8":{"__comp":"17896441","content":"57c15217"},"/docs/how-morph-works/general-protocol-design/transactions-life-cycle-313":{"__comp":"17896441","content":"59f4fb6c"},"/docs/how-morph-works/intro-b70":{"__comp":"17896441","content":"60479fa4"},"/docs/how-morph-works/morph-modular-design-700":{"__comp":"17896441","content":"f6623e93"},"/docs/how-morph-works/optimistic-zkevm-e3e":{"__comp":"17896441","content":"578ca001"},"/docs/quick-start/bridge-199":{"__comp":"17896441","content":"6f5ac92b"},"/docs/quick-start/faucet-b32":{"__comp":"17896441","content":"325638e1"},"/docs/quick-start/wallet-setup-8e9":{"__comp":"17896441","content":"d26d133a"},"/docs/quick-start/welcome-to-morph-570":{"__comp":"17896441","content":"618914bf"},"/-509":{"__comp":"c4f5d8e4","__context":{"plugin":"868b6fb8"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[1869],(()=>{return t=7170,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/build/assets/js/main.16291c43.js.LICENSE.txt b/build/assets/js/main.16291c43.js.LICENSE.txt deleted file mode 100644 index 8033bea3f..000000000 --- a/build/assets/js/main.16291c43.js.LICENSE.txt +++ /dev/null @@ -1,70 +0,0 @@ -/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT */ - -/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ - -/*! Bundled license information: - -prismjs/prism.js: - (** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT <https://opensource.org/licenses/MIT> - * @author Lea Verou <https://lea.verou.me> - * @namespace - * @public - *) -*/ - -/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** @license React v16.13.1 - * react-is.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/build/assets/js/runtime~main.467872be.js b/build/assets/js/runtime~main.467872be.js deleted file mode 100644 index de514317b..000000000 --- a/build/assets/js/runtime~main.467872be.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,a,f,d,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=c,r.c=t,e=[],r.O=(a,f,d,b)=>{if(!f){var c=1/0;for(i=0;i<e.length;i++){f=e[i][0],d=e[i][1],b=e[i][2];for(var t=!0,o=0;o<f.length;o++)(!1&b||c>=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b<c&&(c=b));if(t){e.splice(i--,1);var n=d();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,d,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({44:"60479fa4",361:"e8c42455",408:"76db7a6d",569:"eac819ad",655:"465c0bc5",690:"25bec567",720:"98d1a41e",749:"4f7a49ab",819:"a04af9a2",835:"3f6197d4",841:"7c1e7b23",866:"4a10ae38",933:"24734b3e",999:"ff883f18",1141:"720f9cb5",1201:"d4781eda",1243:"a0d49790",1282:"7c45cc48",1311:"fda70fd8",1394:"5c242b2e",1508:"81f29526",1544:"1483841d",1557:"c7ccd35b",1688:"fe9c53f2",1971:"9235c071",1995:"b4c00acc",2061:"82419dfd",2106:"9a9366b1",2138:"1a4e3797",2286:"4784893f",2322:"8d0b932e",2397:"b0d24208",2428:"9e78961b",2487:"d26d133a",2500:"f435c040",2634:"c4f5d8e4",2708:"af91f293",2736:"08b9f613",2960:"9e1db927",2985:"868b6fb8",3046:"a0d75a43",3147:"5d313dc3",3186:"59f4fb6c",3197:"59db22f4",3210:"5acb1cf6",3427:"829b4b9b",3457:"5bc5b9ce",3654:"a2db6fd6",3667:"e7a84acc",3679:"979f48c0",3732:"beb6ddce",3764:"c5f7ff1a",3797:"028d32dc",3894:"08313b4f",3918:"e8fcecf9",3961:"7a5975a7",4116:"e912b961",4145:"40b4f046",4286:"38a5c357",4300:"ca4c51aa",4305:"fac53bf8",4352:"e3bda051",4405:"79dc0904",4734:"b202810b",4766:"57c15217",4788:"a4da47e1",4908:"fdc91eb1",4991:"e7f02677",5027:"52171187",5042:"d475c619",5107:"fb24aa13",5116:"95a7ae32",5130:"70e8639a",5223:"44bbd017",5577:"73af12fb",5678:"1a1587e1",5784:"a00dd934",5980:"39f485e7",5991:"ad8d1448",6039:"2a31694d",6107:"9ff57eaa",6142:"578ca001",6184:"bce3eedd",6232:"dcf2e50b",6371:"a1f831b5",6632:"405a8a84",6736:"4cbe5783",6819:"5a91095f",6913:"69301e8b",6935:"3250a443",6941:"c30bab43",6951:"b137769e",6956:"e3875bab",7e3:"fb26d209",7049:"6f5ac92b",7098:"a7bd4aaa",7131:"a399e926",7220:"9d4e1be7",7275:"d8273606",7362:"5aa3c257",7396:"4a269d4a",7430:"dfd8dfaf",7450:"e6f27cd2",7481:"2b4bd9da",7762:"6a8ddb26",7855:"9b96db99",7975:"8613d4b8",7990:"22a82985",8170:"1f2dc99a",8221:"ff3f68fa",8224:"f3316ef7",8237:"833a0690",8308:"6f037fd7",8318:"325638e1",8324:"72171cd8",8343:"33e57971",8371:"99b8a708",8401:"17896441",8451:"8b6091b0",8476:"38e6cd8b",8520:"c33d6554",8525:"61b1ff91",8581:"935f2afb",8656:"9fc9b620",8676:"7824cff9",8744:"68efb262",8752:"8347fa88",8898:"f93d7a3b",8991:"46618904",9048:"a94703ab",9075:"066c1628",9200:"f6623e93",9248:"829cd294",9266:"618914bf",9344:"a5f26d61",9567:"cfe67a99",9640:"2f19d5d4",9647:"5e95c892",9720:"6ba36391",9817:"e6305dab",9849:"02a35c22"}[e]||e)+"."+{44:"69d66973",361:"5bdb4e2d",408:"2bcc76ed",569:"f5609d88",655:"e3b956eb",690:"8e13158b",720:"a0a45743",749:"68e103c7",819:"a4172b2f",835:"3649865e",841:"0cceff70",866:"accc9646",933:"528e753c",999:"ab8b891b",1141:"1be73404",1201:"7819b49e",1243:"f6da78e9",1282:"7deaf08e",1311:"0b05c46c",1394:"a21dcfac",1508:"ef9fe313",1544:"c7695c94",1557:"88ca3abd",1688:"35732f59",1971:"f936f4f6",1995:"70d9fd4d",2061:"11312935",2106:"ab1a0d5d",2138:"dc00afb6",2286:"0785ce05",2322:"3e2c9c72",2397:"88806065",2428:"e32bc84b",2487:"fac89a01",2500:"edf90f1e",2634:"466ad3d3",2708:"42de5a7a",2736:"2292ec97",2960:"a0cdd623",2985:"ccb36e11",3046:"1b07a391",3147:"562fab67",3186:"b63e39f4",3197:"9c92db8f",3210:"9f129d6c",3427:"d5f25fd7",3457:"f3bc9251",3654:"323f6535",3667:"42a29373",3679:"2b0cba0c",3732:"9994c5f0",3764:"1a3bb12f",3797:"b0c0048b",3894:"d3eefb9b",3918:"4652c672",3961:"6a0313ab",4116:"d4c84c07",4145:"d2ffc80e",4286:"da46ef32",4300:"fd464d9a",4305:"c12dd61e",4352:"aa9f2698",4405:"3b3a5e18",4734:"3d55662b",4766:"beeb4523",4788:"11689d10",4908:"d0f3ea4e",4991:"feb86e37",5027:"077ab897",5042:"99c439c5",5081:"08af33ec",5107:"b798cdeb",5116:"3ed4f3ad",5130:"a7b63da5",5223:"f25bc314",5577:"015067f7",5678:"d312ff53",5784:"091ad5c4",5980:"e4d15ea7",5991:"e3e0b916",6039:"6b99dbda",6107:"986eb965",6142:"54e90cd3",6184:"ef73d91e",6232:"f1ec2836",6371:"99aa2e6e",6632:"afa08ab0",6736:"3425072e",6819:"bc5d777d",6913:"f3c5089c",6935:"4576d738",6941:"3af275f1",6951:"2be8350d",6956:"72a3ed86",7e3:"f7a1412e",7049:"3d93dd47",7098:"cf41b24b",7131:"6c89943b",7220:"a9ee7661",7242:"6da46571",7275:"8055d03c",7362:"869d8531",7396:"a94aba76",7426:"0fe1a9ef",7430:"60141c7c",7450:"ede20334",7481:"fed01c3d",7762:"a8d54b20",7855:"65caf0fb",7975:"a112ff98",7990:"bcaadd20",8170:"676c8cca",8221:"5479690d",8224:"030164ad",8237:"57155aee",8308:"be4f334b",8318:"54567db5",8324:"74acb7db",8343:"f01254b2",8371:"398eb8a9",8401:"26f2d090",8451:"2cc43598",8476:"aaca03cd",8520:"08872042",8525:"01109030",8581:"0bdf028c",8656:"4be64ddf",8676:"dde82ce4",8744:"36868b50",8752:"ca8e39f6",8898:"8270a95b",8991:"0e02e9d8",9048:"03e3ac63",9075:"ef013ffd",9200:"fbb75f09",9248:"d14b23ab",9266:"ad5ace09",9344:"614e3be4",9505:"7523b444",9567:"1a4c4cf9",9640:"fa2f851a",9647:"9856b0c7",9720:"bdee8d58",9817:"3df2285d",9849:"cf697fb9"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},b="morph-doc:",r.l=(e,a,f,c)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==b+f){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",b+f),t.src=e),d[e]=[a];var l=(a,f)=>{t.onerror=t.onload=null,clearTimeout(s);var b=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401",46618904:"8991",52171187:"5027","60479fa4":"44",e8c42455:"361","76db7a6d":"408",eac819ad:"569","465c0bc5":"655","25bec567":"690","98d1a41e":"720","4f7a49ab":"749",a04af9a2:"819","3f6197d4":"835","7c1e7b23":"841","4a10ae38":"866","24734b3e":"933",ff883f18:"999","720f9cb5":"1141",d4781eda:"1201",a0d49790:"1243","7c45cc48":"1282",fda70fd8:"1311","5c242b2e":"1394","81f29526":"1508","1483841d":"1544",c7ccd35b:"1557",fe9c53f2:"1688","9235c071":"1971",b4c00acc:"1995","82419dfd":"2061","9a9366b1":"2106","1a4e3797":"2138","4784893f":"2286","8d0b932e":"2322",b0d24208:"2397","9e78961b":"2428",d26d133a:"2487",f435c040:"2500",c4f5d8e4:"2634",af91f293:"2708","08b9f613":"2736","9e1db927":"2960","868b6fb8":"2985",a0d75a43:"3046","5d313dc3":"3147","59f4fb6c":"3186","59db22f4":"3197","5acb1cf6":"3210","829b4b9b":"3427","5bc5b9ce":"3457",a2db6fd6:"3654",e7a84acc:"3667","979f48c0":"3679",beb6ddce:"3732",c5f7ff1a:"3764","028d32dc":"3797","08313b4f":"3894",e8fcecf9:"3918","7a5975a7":"3961",e912b961:"4116","40b4f046":"4145","38a5c357":"4286",ca4c51aa:"4300",fac53bf8:"4305",e3bda051:"4352","79dc0904":"4405",b202810b:"4734","57c15217":"4766",a4da47e1:"4788",fdc91eb1:"4908",e7f02677:"4991",d475c619:"5042",fb24aa13:"5107","95a7ae32":"5116","70e8639a":"5130","44bbd017":"5223","73af12fb":"5577","1a1587e1":"5678",a00dd934:"5784","39f485e7":"5980",ad8d1448:"5991","2a31694d":"6039","9ff57eaa":"6107","578ca001":"6142",bce3eedd:"6184",dcf2e50b:"6232",a1f831b5:"6371","405a8a84":"6632","4cbe5783":"6736","5a91095f":"6819","69301e8b":"6913","3250a443":"6935",c30bab43:"6941",b137769e:"6951",e3875bab:"6956",fb26d209:"7000","6f5ac92b":"7049",a7bd4aaa:"7098",a399e926:"7131","9d4e1be7":"7220",d8273606:"7275","5aa3c257":"7362","4a269d4a":"7396",dfd8dfaf:"7430",e6f27cd2:"7450","2b4bd9da":"7481","6a8ddb26":"7762","9b96db99":"7855","8613d4b8":"7975","22a82985":"7990","1f2dc99a":"8170",ff3f68fa:"8221",f3316ef7:"8224","833a0690":"8237","6f037fd7":"8308","325638e1":"8318","72171cd8":"8324","33e57971":"8343","99b8a708":"8371","8b6091b0":"8451","38e6cd8b":"8476",c33d6554:"8520","61b1ff91":"8525","935f2afb":"8581","9fc9b620":"8656","7824cff9":"8676","68efb262":"8744","8347fa88":"8752",f93d7a3b:"8898",a94703ab:"9048","066c1628":"9075",f6623e93:"9200","829cd294":"9248","618914bf":"9266",a5f26d61:"9344",cfe67a99:"9567","2f19d5d4":"9640","5e95c892":"9647","6ba36391":"9720",e6305dab:"9817","02a35c22":"9849"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>d=e[a]=[f,b]));f.push(d[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var b=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,b,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n<c.length;n++)b=c[n],r.o(e,b)&&e[b]&&e[b][0](),e[b]=0;return r.O(i)},f=self.webpackChunkmorph_doc=self.webpackChunkmorph_doc||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})(); \ No newline at end of file diff --git a/build/docs/about-morph/faqs.htm/index.html b/build/docs/about-morph/faqs.htm/index.html deleted file mode 100644 index 9b3a5b26c..000000000 --- a/build/docs/about-morph/faqs.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <meta http-equiv="refresh" content="0; url=/docs/about-morph/faqs"> - <link rel="canonical" href="/docs/about-morph/faqs" /> - </head> - <script> - window.location.href = '/docs/about-morph/faqs' + window.location.search + window.location.hash; - </script> -</html> \ No newline at end of file diff --git a/build/docs/about-morph/faqs.html/index.html b/build/docs/about-morph/faqs.html/index.html deleted file mode 100644 index 9b3a5b26c..000000000 --- a/build/docs/about-morph/faqs.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <meta http-equiv="refresh" content="0; url=/docs/about-morph/faqs"> - <link rel="canonical" href="/docs/about-morph/faqs" /> - </head> - <script> - window.location.href = '/docs/about-morph/faqs' + window.location.search + window.location.hash; - </script> -</html> \ No newline at end of file diff --git a/build/docs/about-morph/faqs/index.html b/build/docs/about-morph/faqs/index.html deleted file mode 100644 index 0f568b4c4..000000000 --- a/build/docs/about-morph/faqs/index.html +++ /dev/null @@ -1,41 +0,0 @@ -<!doctype html> -<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-about-morph/faqs" data-has-hydrated="false"> -<head> -<meta charset="UTF-8"> -<meta name="generator" content="Docusaurus v3.1.1"> -<title data-rh="true">FAQs | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

FAQs

What Kind of Rollup is Morph?

-

Morph uses a hybrid rollup model called "Optimistic zkEVM & RVP". This combines the strengths of both zkRollups and Optimistic Rollups, optimizing for efficiency, cost, and speed. This unique approach places Morph at the cutting edge of rollup technology.

-

What Sets Morph Apart from Other Rollups?

-

Morph stands out with its innovative features:

-

State Verification: The Optimistic zkEVM & RVP method enhances efficiency by combining zkRollups and Optimistic Rollups.

-

Efficiency and Cost Reduction: Morph ensures fast transaction execution and cost-effectiveness while maintaining decentralization.

-

Decentralized Sequencer Network: This pioneering network setup addresses security concerns and ensures robustness at a Layer 1 level.

-

Modular Architecture: Morph’s adaptable and composable architecture fosters a flexible and interactive ecosystem.

-

As a Solidity Developer, Will I Notice Differences Deploying on Morph Compared to Ethereum?

-

Deploying on Morph is very similar to deploying on Ethereum, thanks to its EVM compatibility. Ethereum applications can be migrated to Morph with minimal adjustments. For more detailed guidance, check out the Development Guides section.

-

The L2 gas price is too high to execute transactions or deploy contracts, what should i do?

-

The L2 Gas Price you obtained from external resources (eg. RPC) is typically derived from the average or median of confirmed transactions over a certain period. This figure reflects the recommended settings to ensure your transaction gets confirmed, rather than representing the most cost-effective value.

-

In some cases, certain users may intentionally raise the priority fee (hence the total gas fee) to earn more campaign points, resulting in abnormally high Gas Prices. We recommend that you can reduce your transaction costs by manually setting the L2 Gas Price.

-

Currently, Morph's L2 Base Fee is 0.001 gwei, and as long as the number of transactions per block does not reach the limit, you only need to pay the Base Fee to ensure your transaction confirmation, without needing to pay an excess Priority Fee.

-

Here is a transaction example that only pays the L2 Base Fee and got confirmed:

-

https://explorer.morphl2.io/tx/0x5968aa54ca3072f56ee3d26602f4e8104d1239a7b1cef6847e0306f81881bf50

-

How long should I wait for my funds to withdraw from Morph?

-

Currently, the Morph mainnet has a 48-hour (2 days) challenge window. This means that if you are using our canonical bridge, you need to wait 48 hours (2 days) to receive your funds. There are several third-party bridges that offer a faster withdrawal experience by using a liquidity pool mechanism.

-

How do i speed the transaction on Morph?

-

Same like Ethereum mainnet and any other EIP 1559 chains. If your transaction is pending and not confirmed, you can replace it with a new one that has a higher gas price. This involves sending the same transaction again but with an incrementally higher gas price, using the same nonce as the original.

-

A lot of the wallet have built in features to help you do this.

-

My Transaction is Pending, What Should I Do?

-

For the testnet, if the priority fee you paid is too low, less than 0.01 gwei, your transaction will not be processed. This is to prevent spam transactions from impacting the whole network. If you encounter this situation, please accelerate your transaction by providing a higher priority fee that meets the requirements.

-

For the mainnet, this is usually because each block is currently full, so you need to provide a more competitive priority fee to ensure your transaction is confirmed.

-

Additionally, if your previous transaction has not yet been confirmed, your newly submitted transaction will wait for the previous transaction to be fully confirmed.

- - \ No newline at end of file diff --git a/build/docs/about-morph/key-concepts.htm/index.html b/build/docs/about-morph/key-concepts.htm/index.html deleted file mode 100644 index d71d179c7..000000000 --- a/build/docs/about-morph/key-concepts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/key-concepts.html/index.html b/build/docs/about-morph/key-concepts.html/index.html deleted file mode 100644 index d71d179c7..000000000 --- a/build/docs/about-morph/key-concepts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/key-concepts/index.html b/build/docs/about-morph/key-concepts/index.html deleted file mode 100644 index c4b3c364e..000000000 --- a/build/docs/about-morph/key-concepts/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - -Key Concepts | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Key Concepts

Optimistic Rollups

-

Optimistic rollups are a Layer 2 scaling solution for blockchains that enhance transaction throughput and reduce costs by assuming transactions are valid and only verifying them if a challenge is raised. This method relies on a challenge period during which validators can dispute transactions they believe to be incorrect. If no disputes are raised, the transactions are considered final. Optimistic rollups significantly improve scalability while maintaining security, making them an efficient solution for handling a higher volume of transactions on blockchain networks.

-

Learn more about Optimistic Rollups

-

ZK Rollups

-

ZK rollups, or zero-knowledge rollups, are a Layer 2 scaling solution that uses cryptographic proofs to verify the validity of transactions off-chain before bundling them and submitting a proof to the main blockchain. Each batch of transactions is accompanied by a zero-knowledge proof, which ensures that all transactions within the batch are valid without revealing the underlying data. This method provides immediate finality and high security, as the main chain only needs to verify the proof rather than each individual transaction, significantly reducing the computational load and enhancing scalability.

-

Learn more about ZK Rollups

-

Sequencers

-

Sequencers are specialized nodes responsible for ordering and bundling transactions in Layer 2 scaling solutions like rollups. They play a crucial role in determining the sequence of transactions, creating blocks, and periodically committing these blocks to the main blockchain. In decentralized systems, multiple sequencers work together to enhance security and prevent single points of failure. By ensuring transactions are processed efficiently and securely, sequencers help maintain the integrity and performance of Layer 2 networks.

-

Fraud Proof

-

Fraud proof is a mechanism used in blockchain scaling solutions like optimistic rollups to ensure transaction validity. When a sequencer submits a batch of transactions, they are assumed to be valid unless contested. During a designated challenge period, any validator or network participant can submit a fraud proof if they detect an incorrect transaction. This proof involves verifying the transaction data and demonstrating the error to the main blockchain. If the fraud proof is validated, the incorrect transaction is rejected, ensuring the integrity and security of the network while minimizing computational costs.

-

Validity Proof

-

Validity proof is a cryptographic method used to ensure that transactions within a rollup are correct before they are finalized on the main blockchain. In systems like ZK rollups, each batch of transactions is accompanied by a validity proof that verifies the correctness of all transactions within the batch. This approach enhances security and efficiency by eliminating the need for individual transaction verification on the main chain, providing immediate finality and reducing computational overhead.

-

zkEVM

-

zkEVM, or Zero-Knowledge Ethereum Virtual Machine, is an advanced implementation of the Ethereum Virtual Machine that integrates zero-knowledge proofs to enhance scalability and security. By using zk proofs, zkEVM allows for the validation of transactions off-chain, ensuring that only valid state transitions are submitted to the main chain. This method provides high throughput and lower transaction costs while maintaining the security and trustlessness of Ethereum.

-

BLS Signatures

-

BLS (Boneh-Lynn-Shacham) signatures are a cryptographic technique used to aggregate multiple signatures into a single compact signature. This is particularly useful in blockchain networks for reducing the data size and improving the efficiency of transaction verification. BLS signatures enable multiple validators to sign a message collectively, resulting in a single signature that can be verified quickly and cost-effectively, enhancing the overall scalability of the network.

-

Data availability

-

Data availability refers to the assurance that all necessary data for verifying blockchain transactions is accessible and retrievable. In the context of rollups, ensuring data availability is crucial for maintaining the integrity and security of off-chain transactions. It guarantees that anyone can download and verify the data used in rollup proofs, preventing scenarios where transactions are finalized without the possibility of verification.

-

EIP - 4844

-

EIP-4844, also known as Proto-Danksharding, is an Ethereum Improvement Proposal aimed at introducing a new type of transaction that reduces data costs and improves scalability. It involves adding a new transaction format that can efficiently handle large amounts of data, laying the groundwork for future sharding implementations. This proposal enhances the network's ability to manage data more effectively, contributing to overall improvements in throughput and cost-efficiency.

-

Discover how EIP-4844 impacts Morph and other rollups.

- - \ No newline at end of file diff --git a/build/docs/about-morph/key-concepts/optimistic-rollup.htm/index.html b/build/docs/about-morph/key-concepts/optimistic-rollup.htm/index.html deleted file mode 100644 index b1c4dc4f2..000000000 --- a/build/docs/about-morph/key-concepts/optimistic-rollup.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/key-concepts/optimistic-rollup.html/index.html b/build/docs/about-morph/key-concepts/optimistic-rollup.html/index.html deleted file mode 100644 index b1c4dc4f2..000000000 --- a/build/docs/about-morph/key-concepts/optimistic-rollup.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/key-concepts/optimistic-rollup/index.html b/build/docs/about-morph/key-concepts/optimistic-rollup/index.html deleted file mode 100644 index 91639cadd..000000000 --- a/build/docs/about-morph/key-concepts/optimistic-rollup/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -optimistic-rollup | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/morphs-architecture.htm/index.html b/build/docs/about-morph/morphs-architecture.htm/index.html deleted file mode 100644 index d9ceb7fd8..000000000 --- a/build/docs/about-morph/morphs-architecture.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/morphs-architecture.html/index.html b/build/docs/about-morph/morphs-architecture.html/index.html deleted file mode 100644 index d9ceb7fd8..000000000 --- a/build/docs/about-morph/morphs-architecture.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/morphs-architecture/index.html b/build/docs/about-morph/morphs-architecture/index.html deleted file mode 100644 index 44ae0203b..000000000 --- a/build/docs/about-morph/morphs-architecture/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -Morph's Architecture | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Morph's Architecture

tip

This overview offers a concise introduction to Morph’s rollup technology stack. For an in-depth understanding, please refer to the "How Morph Works" section of our documentation.

-

Archi

-

The Modular Approach in Layer 2

-

Traditionally, the concept of modularity has been applied to Layer 1 blockchains, segmenting them into distinct layers. At Morph, we've extended this modular philosophy to Layer 2, building our platform around this principle.

-

In a typical Layer 1 blockchain, the architecture consists of four major layers:

-
    -
  • Consensus: The mechanism through which network agreement is achieved.
  • -
  • Execution: Where transaction processing and smart contract operations occur.
  • -
  • Settlement: The process of finalizing transactions.
  • -
  • Data Availability: Ensuring that necessary information is accessible for validation.
  • -
-

In the context of Layer 2, Morph reinterprets these layers with unique functionalities:

-
    -
  • Consensus and Execution via Decentralized Sequencer Network: At Morph, these functions are integrated and handled by our decentralized sequencer network. Sequencers orchestrate, process, and achieve consensus on Layer 2 transactions, forming the primary interface for user interactions.
  • -
-

Archi

-
    -
  • Settlement with Optimistic zkEVM: Settlement in Morph refers to the finalization of Layer 2 transactions at the Ethereum level. It involves the crucial step of validating Layer 2 states. Morph employs the optimistic zkEVM for this purpose, a hybrid approach blending the best of optimistic rollups and zk-rollups. Layer 2 states will be eventually finalized by a significantly shorter challenge period or if gets challenged, a corresponding zk-proof.
  • -
-

Archi

-
    -
  • Data Availability through 'Rollup' Process: This entails transferring essential Layer 2 data to Ethereum. In Morph, this is achieved through the 'Rollup' process, where a batch submitter compiles blocks into batches and submits them as Layer 1 transactions on Ethereum.
  • -
-

Archi

-

Independent yet Collaborative Functions

-

Each of these major functions operates independently, facilitating asynchronous tasks and switchable implementations:

-
    -
  1. Sequencer Network: Executes Layer 2 transactions and updates local state.
  2. -
  3. Rollup Module: Transforms Layer 2 blocks into batches for submission to Layer 1.
  4. -
  5. State Verification: Utilizes Layer 1 security to verify Layer 2 states under the optimistic zkEVM rules.
  6. -
-

This modular architecture enhances flexibility, adaptability, and composability within the Morph ecosystem.

-

Diverse Roles

-

Morph’s architecture is further defined by five pivotal roles: Sequencers, Validators, Nodes, Provers, and Layer 1 (Ethereum). Each role carries specific responsibilities and utilizes distinct components to fulfill its function, contributing to the seamless operation of the network.

-

For a deeper understanding of Morph’s architecture, please visit our comprehensive Developer Docs.

-

Safety and Security

-

We place the highest priority on security and are committed to providing users with a safe and trustworthy environment. To achieve this, we’ve implemented multiple measures, including making our codebase open-source, engaging leading third-party firms for audits, and continuously improving our systems to uphold the highest standards of transparency and security. Below are some specific efforts we’ve undertaken:

-

Open-Source Codebase:

-

We’re proud to make our codebase publicly available, inviting scrutiny and contributions from the community. You can review it at the following links:

-

Morph Contracts

-

Sherlock Open-Source Audit Report:

-

We commissioned a comprehensive security audit from Sherlock, and the results are publicly available. You can view the detailed report here:

-

Sherlock Open-Source Audit Report

-

Trail of Bits Audit Report:

-

Additionally, we enlisted the renowned Trail of Bits team to conduct an in-depth audit of our codebase, including a review of implemented fixes. The full report is accessible.

-

Audit Scope:

-

The above audit reports cover the entirety of our codebase, including the bridge contract, ensuring that all critical components have undergone rigorous security assessments.

-

We firmly believe that transparency and security are the cornerstones of trust. We will continue to collaborate with the community and professional organizations to elevate our security standards and provide users with peace of mind. If you have any questions or suggestions, feel free to reach out to us at any time!

- - \ No newline at end of file diff --git a/build/docs/about-morph/morphs-vision-and-mission.htm/index.html b/build/docs/about-morph/morphs-vision-and-mission.htm/index.html deleted file mode 100644 index 7711c1b5b..000000000 --- a/build/docs/about-morph/morphs-vision-and-mission.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/morphs-vision-and-mission.html/index.html b/build/docs/about-morph/morphs-vision-and-mission.html/index.html deleted file mode 100644 index 7711c1b5b..000000000 --- a/build/docs/about-morph/morphs-vision-and-mission.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/morphs-vision-and-mission/index.html b/build/docs/about-morph/morphs-vision-and-mission/index.html deleted file mode 100644 index 4520e7fa2..000000000 --- a/build/docs/about-morph/morphs-vision-and-mission/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -Morph's Vision and Mission | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Morph's Vision and Mission

Morph is redefining the blockchain landscape with a clear focus on the consumer. Our vision is rooted in the belief that blockchain technology should be an accessible, practical tool for daily life, rather than a complex concept reserved for experts. We aim to transform how individuals interact with blockchain technology, making it as integral and user-friendly as any essential service in the digital age.

-

We Seek to Bridge the Gap​

-

Our mission is to build an ecosystem of on-chain consumer applications on a completely decentralized infrastructure. Morph was created as a more approachable and practical blockchain solution in response to the gap in existing Layer 2 offerings – a lack of focus on the end-user experience and practicality.

-

Why Morph?​

-

The inspiration behind Morph is a fusion of dreams and precision. Our platform is named after Morpheus, the Greek god of dreams, symbolizing our ability to influence both the commonplace and the extraordinary. Morph also draws on the mathematical principle of morphology, representing transformations that maintain structure and integrity. The combination of these concepts represents our ability to bring revolutionary blockchain applications that focus on improving everyday life with precision and reliability.

-

Commitment to Our Community​

-

At Morph, our commitment extends beyond technology. We prioritize:

-
    -
  • Consumer-Centric Innovation: Focusing on the needs and experiences of users, ensuring that our platform is intuitive, efficient, and beneficial for everyday use.
  • -
  • Transparency and Trust: Building a community grounded in openness and mutual trust, where every step we take is communicated clearly and honestly.
  • -
  • Collaborative Ecosystem: Encouraging active participation and feedback from our community, ensuring that Morph evolves in alignment with the needs and demands of its users.
  • -
- - \ No newline at end of file diff --git a/build/docs/about-morph/overview-of-morph.htm/index.html b/build/docs/about-morph/overview-of-morph.htm/index.html deleted file mode 100644 index dd1c92224..000000000 --- a/build/docs/about-morph/overview-of-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/overview-of-morph.html/index.html b/build/docs/about-morph/overview-of-morph.html/index.html deleted file mode 100644 index dd1c92224..000000000 --- a/build/docs/about-morph/overview-of-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/overview-of-morph/index.html b/build/docs/about-morph/overview-of-morph/index.html deleted file mode 100644 index be4b4d432..000000000 --- a/build/docs/about-morph/overview-of-morph/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -Overview | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Overview

Welcome to Morph, a blockchain for consumers. At the core of Morph is a revolutionary approach to Ethereum Layer 2 scalability, harnessing the power of rollup technology.

-

Our platform is uniquely designed to enhance the blockchain experience, making it more accessible, efficient, and user-friendly for both developers and consumers. We achieve these innovations through a unique combination of cutting-edge technologies.

-

What Makes Morph Special

-

Given that our platform is built on the philosophy of consumer-centric innovation, we believe blockchain technology has the transformative power to enhance users’ daily lives. To accomplish this vision, our infrastructure has three core technological components that function as the foundation of a consumer blockchain.

-

Decentralized Sequencer Network

-

Morph’s distribution of the sequencing role eliminates single points of failure, reduces transaction censorship, and prevents monopolies over Miner Extractable Value (MEV). Building on Morph means guaranteed high availability, resilience, and fairness in transaction processing.

-

Optimistic zkEVM Integration

-

Morph’s Optimistic zkEVM Integration combines the efficiency of optimistic rollups with the security of zero-knowledge proofs, using a novel method called Responsive Validity Proof (RVP). RVP reduces costs and shortens withdrawal periods while maintaining high security, enabling robust applications that don’t compromise on performance or security.

-

Modular Design

-

Morph's architecture is divided into three modules: Sequencer Network for consensus and execution, Optimistic zkEVM for state verification, and Rollup for data availability. Developers can build and maintain applications more efficiently, ensuring each component can be upgraded independently without disrupting the entire system.

-

Before you dive into a deeper exploration of our technology, understanding our Vision and Mission will offer a better idea of why Morph stands out in the industry.

- - \ No newline at end of file diff --git a/build/docs/about-morph/roadmap.htm/index.html b/build/docs/about-morph/roadmap.htm/index.html deleted file mode 100644 index b78a0ebbc..000000000 --- a/build/docs/about-morph/roadmap.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/roadmap.html/index.html b/build/docs/about-morph/roadmap.html/index.html deleted file mode 100644 index b78a0ebbc..000000000 --- a/build/docs/about-morph/roadmap.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/roadmap/index.html b/build/docs/about-morph/roadmap/index.html deleted file mode 100644 index e4c0ca5fb..000000000 --- a/build/docs/about-morph/roadmap/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - -Roadmap | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Roadmap

tip

The roadmap is subject to changes based on technological developments, community feedback, and external factors.

-

1

-

2024 Q1

-
    -
  • Optimistic zkEVM
  • -
  • Decentralized Sequencers
  • -
-

2024 Q2

-
    -
  • EIP-4844 Integration
  • -
  • zkEVM Upgrade
  • -
-

2024 Q4

-
    -
  • 1st Rollup with SP1 zkVM
  • -
  • 1st Rollup with Decentralized Sequencers
  • -
-

2025 Q1

-
    -
  • Morph Pay
  • -
  • Gasless Transaction
  • -
- - \ No newline at end of file diff --git a/build/docs/about-morph/the-technology-behind-morph.htm/index.html b/build/docs/about-morph/the-technology-behind-morph.htm/index.html deleted file mode 100644 index 5825dc959..000000000 --- a/build/docs/about-morph/the-technology-behind-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/the-technology-behind-morph.html/index.html b/build/docs/about-morph/the-technology-behind-morph.html/index.html deleted file mode 100644 index 5825dc959..000000000 --- a/build/docs/about-morph/the-technology-behind-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/the-technology-behind-morph/index.html b/build/docs/about-morph/the-technology-behind-morph/index.html deleted file mode 100644 index 25a763755..000000000 --- a/build/docs/about-morph/the-technology-behind-morph/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - -The Technology Behind Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

The Technology Behind Morph

Decentralized Sequencer Network

-

Morph's Decentralized Sequencer Network is designed to enhance the security and reliability of the blockchain. Unlike traditional Layer 2 solutions that rely on a centralized sequencer, Morph employs a network of decentralized sequencers. This setup ensures that no single entity has control over the transaction sequencing process, thereby eliminating the risk of a single point of failure. If one sequencer fails or acts maliciously, the others can continue processing transactions, maintaining the system's integrity and uptime. This decentralization also prevents transaction censorship and ensures that no single entity can monopolize Miner Extractable Value (MEV), creating a fairer environment for all users.

-

This collaborative approach not only increases security but also improves the overall efficiency and reliability of the transaction processing system, making Morph a robust and resilient Layer 2 solution.

-

Sequqencer Network

-

Visit Morph’s Decentralized Sequencer Network for a more comprehensive article.

-

Optimistic zkEVM Integration

-

Optimistic and Zero-Knowledge (ZK) rollups are two distinct approaches to scaling blockchain transactions on layer 2. Optimistic rollups simply assume all transactions are valid when submitting a batch for settlement on Ethereum. However, the validity of any transaction can be contested by entities known as challengers, by submitting proof of fraudulent activity. If the fraud-proof is successful, the incorrect transaction is rejected, ensuring security but at the cost of some potential delays and high gas fees associated with the challenge process.

-

ZK rollups, on the other hand, use cryptographic proofs to verify the validity of transactions before these are submitted for settlement. All batches have their own ZK proof, allowing quick verification on the main chain without needing to review all the data associated with each transaction (hence “zero-knowledge”). This offers immediate finality with higher security, but generating these proofs is computationally intensive and costly.

-

Morph’s hybrid rollup combines the best of these two approaches. Initially, the system operates optimistically, assuming transactions are valid to allow for quick processing and low costs. When a transaction is contested within Morph’s challenge window, it’s the sequencer that is required to produce a ZK proof to validate the transaction. We call this approach Responsive Validity Proof (RVP). It comes with the following improvements:

-
    -
  • Efficiency and Speed: A typical 7-day challenge window can be shortened to 1-3 days (a challenger no longer needs the extra time to identify malicious submissions, create a proof, and engage in multiple rounds of challenge procedures).
  • -
  • Reduced Costs: Employing ZK-proofs means that only minimal transaction information is retained, thereby significantly reducing the cost of L2 submissions. When no challenges arise, the cost of ZK-proof submission and verification can be ignored. RVP is therefore more cost-effective than both optimistic and ZK rollups.
  • -
-

Sequqencer Network

-

Visit Responsive Validity Proof for a more comprehensive article.

-

Modular Design

-

At its core, Morph is constructed using a sophisticated modular design architecture. The platform is organized into three functional modules (Sequencer Network, Rollup, Optimistic zk-EVM), each defined by distinct roles that collaborate in various configurations to meet diverse requirements. Each role within these modules operates its specific components, maintaining functional independence. This modular structure not only fosters flexibility and adaptability but also bolsters the composability of the system. It enables an efficient and interactive ecosystem, supporting the varied operational needs of our platform.

-

Sequqencer Network

-

Visit Morph’s Modular Design for a more comprehensive article.

- - \ No newline at end of file diff --git a/build/docs/about-morph/user-navigation-page.htm/index.html b/build/docs/about-morph/user-navigation-page.htm/index.html deleted file mode 100644 index 3a74dbfcb..000000000 --- a/build/docs/about-morph/user-navigation-page.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/user-navigation-page.html/index.html b/build/docs/about-morph/user-navigation-page.html/index.html deleted file mode 100644 index 3a74dbfcb..000000000 --- a/build/docs/about-morph/user-navigation-page.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/user-navigation-page/index.html b/build/docs/about-morph/user-navigation-page/index.html deleted file mode 100644 index 3f18f861c..000000000 --- a/build/docs/about-morph/user-navigation-page/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - -Welcome to Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Welcome to Morph

We’re thrilled to have you here, exploring the world of Morph. If you’re a developer looking for technical documentation, head over to our For Developers section. But if you’re here to understand what Morph is all about, you’re in the right place!

-

userpage

-

What is Morph?

-

Morph is a cutting-edge Layer 2 solution built on Ethereum, combining the best of optimistic rollups and zk technology. This makes us scalable, secure, and perfect for everyday applications. Our mission is to build the first blockchain for consumers, where user-friendly applications integrate seamlessly into everyday life, becoming indispensable utilities. We prioritize enabling blockchain applications that enhance daily experiences over chasing trivial technical milestones. Our focus is on creating meaningful, practical solutions that transform blockchain technology into core aspects of daily life

-

Getting Started

-

To help you navigate through our resources, here’s a quick guide:

-

Introductory Concepts: Get a general understanding of Morph, including what makes it unique, our vision and mission, key concepts, and a look at our roadmap. This section will help you grasp the basics and understand the foundation of Morph.

- -

Step-by-Step Guides: Follow these practical tutorials for setting up your wallet, using the faucet, bridging assets, and exploring the Morph ecosystem. These guides are perfect for hands-on learning and getting started with Morph.

- -

Links and Tools: Access useful tools such as the Morph Holesky Explorer and the official bridge. This section provides all the necessary links and resources to interact with and explore the Morph network effectively.

- -

Engage in Our Ecosystem

-

Want to skip most of the reading and get started with exploring more right away? These are the guides that will get you right into the action:

-
    -
  • Wallet Setup: Learn how to set up your wallet to interact with Morph.
  • -
  • Using the Faucet: Get test tokens to start experimenting on our testnet.
  • -
  • Bridging Assets: Understand how to bridge assets between Morph and Ethereum.
  • -
  • Exploring Morph Zoo: Dive into the diverse range of dApps and projects in the Morph ecosystem.
  • -
  • Morph Holesky Explorer: Use our explorer to track transactions and explore the blockchain.
  • -
-

Explore and Connect

-

We believe in building a vibrant community around Morph. Join us on Discord to engage with other users and follow us on Twitter to stay updated with our latest news and developments.

- - \ No newline at end of file diff --git a/build/docs/about-morph/where-should-i-start.htm/index.html b/build/docs/about-morph/where-should-i-start.htm/index.html deleted file mode 100644 index dcdd164f0..000000000 --- a/build/docs/about-morph/where-should-i-start.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/where-should-i-start.html/index.html b/build/docs/about-morph/where-should-i-start.html/index.html deleted file mode 100644 index dcdd164f0..000000000 --- a/build/docs/about-morph/where-should-i-start.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/about-morph/where-should-i-start/index.html b/build/docs/about-morph/where-should-i-start/index.html deleted file mode 100644 index 7306f28da..000000000 --- a/build/docs/about-morph/where-should-i-start/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -Where Should I Start? | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Where Should I Start?

For Developers: Dive Into Building On Morph

-

As a developer keen on harnessing the innovative capabilities of the Morph network, your journey begins in the "Build on Morph" section of our documentation. Here, you'll find all the resources you need – from comprehensive guides and tutorials to practical examples. These materials are designed to elucidate the core concepts and features of Morph, enabling you to integrate with our APIs, deploy sophisticated smart contracts, and utilize an array of tools and libraries. The "Build on Morph" guide is your gateway to crafting powerful, decentralized applications that leverage the full potential of our network.

-

For Users: Embark On Your Morph Journey

-

If you're eager to explore the possibilities within the Morph network, the "Quick Start" section in our documentation is your ideal starting point. Tailored for ease of understanding, this guide walks you through the essentials – from setting up your wallet to engaging in transactions on the network. It's designed to introduce you to the world of asset transfers, decentralized finance, and the diverse range of dApps available on Morph. Follow the "Quick Start" guide for a smooth, user-friendly introduction to leveraging Morph's functionalities in your everyday activities.

-

For Researchers: Unraveling The Technical Depth Of Morph

-

For those intrigued by the technical intricacies of the Morph network, the "How Morph Works" section offers an in-depth exploration of its underlying architecture and mechanisms. This comprehensive resource is rich in technical details, providing an extensive understanding of Morph's innovative features and foundational principles. Whether you're delving into research or seeking a thorough grasp of blockchain technology, this section unveils the nuances and sophisticated engineering that define the Morph network.

-

No matter your background – developer, user, or researcher – our documentation is structured to offer you a customized pathway into the Morph ecosystem. Each guide is designed to help you leverage and understand our state-of-the-art technology and features, ensuring a rewarding experience on the Morph network.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum.htm/index.html b/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum.htm/index.html deleted file mode 100644 index 1358f1057..000000000 --- a/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum.html/index.html b/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum.html/index.html deleted file mode 100644 index 1358f1057..000000000 --- a/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum/index.html b/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum/index.html deleted file mode 100644 index 06c059e0e..000000000 --- a/build/docs/build-on-morph/build-on-morph/bridge-between-morph-and-ethereum/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -Bridge between Morph and Ethereum | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Bridge between Morph and Ethereum

Please first review our documentation on Communication Between Morph and Ethereum for some required fundamental knowledge.

-

Deposit ETH and ERC20 Tokens from L1​

-

The Gateway Router allows ETH and ERC20 token bridging from L1 to L2 using the depositETH and depositERC20 functions respectively. It is a permissionless bridge deployed on L1. Notice that ERC20 tokens will have a different address on L2, you can use the getL2ERC20Address function to query the new address.

-
tip

depositETH and depositERC20 are payable functions, the amount of ETH sent to these functions will be used -to pay for L2 fees. If the amount is not enough, the transaction will not be sent. All excess ETH will be sent back to -the sender. 0.00001 ETH should be more than enough to process a token deposit.

-

When bridging ERC20 tokens, you don’t have to worry about selecting the right Gateway. This is because the L1GatewayRouter will choose the correct underlying entry point to send the message:

-
    -
  • L1StandardERC20Gateway: This Gateway permits any ERC20 deposit and will be selected as the default by the L1GatewayRouter for an ERC20 token that doesn’t need custom logic on L2. On the very first token bridging, a new token will be created on L2 that implements the MorphStandardERC20. To bridge a token, call the depositERC20 function on the L1GatewayRouter.
  • -
-

All Gateway contracts will form the message and send it to the L1CrossDomainMessenger which can send arbitrary messages to L2. The L1CrossDomainMessenger passes the message to the L1MessageQueueWithGasPriceOracle. Any user can send messages directly to the Messenger to execute arbitrary data on L2.

-

This means they can execute any function on L2 from a transaction made on L1 via the bridge. Although an application could directly pass messages to existing token contracts, the Gateway abstracts the specifics and simplifies making transfers and calls.

-

When a new block gets created on L1, the Sequencer will detect the message on the L1MessageQueue, and submit the transaction to the L2 via the L2 node. Finally, the L2 node will pass the transaction to the L2CrossDomainMessenger contract for execution on L2.

-

Withdraw ETH and ERC20 tokens from L2

-

The L2 Gateway is very similar to the L1 Gateway. We can withdraw ETH and ERC20 tokens back to L1 using the withdrawETH and withdrawERC20 functions. The contract address is deployed on L2. We use the getL1ERC20Address to retrieve the token address on L1.

-
tip

withdrawETH and withdrawERC20 are payable functions, and the amount of ETH sent to these functions will be used to pay for L1 fees. If the amount is not enough, the transaction will not be sent. All excess ETH will be sent back to the sender. Fees will depend on L1 activity but 0.005 ETH should be enough to process a token withdrawal.

-
tip

Ensure transactions won’t revert on L1 while sending from L2 There is no way to recover bridged ETH, tokens, or NFTs if your transaction reverts on L1. All assets are burned on Morph when the transaction is sent, and it's impossible to mint them again.

-

Finalize your Withdrawal

-

Besides starting a withdrawal request on Morph, there is one additional step to do. You need to finalize your withdrawal on Ethereum.

-

This is because of Morph's optimistic zkEVM design, you can read the details here:

-

To do this, first you need to make sure:

-
    -
  • The batch containing the withdraw transactions has passed the challenge period and is marked as finalized (meaning in the Rollupcontract, withdrawalRoots[batchDataStore[_batchIndex].withdrawalRoot] = true).
  • -
-

Once confirmed, you can call our backend services interface:

-

/getProof?nonce=withdraw.index

-

to obtain all the information you need to finalize your withdraw, which include:

-
    -
  • Index: The position of the withdrawal transaction in the withdraw tree, or rank of your transaction among all the L2->L1 transactions.
  • -
  • Leaf: The hash value of your withdraw transaction that stored in the tree.
  • -
  • Proof: The merkel proof of your withdraw transaction.
  • -
  • Root: The withdraw tree root.
  • -
-

you need to use the proveAndRelayMessage function of the L1CrossDomainMessenger contract.

-

After obtaining the above information, the finalization of the withdraw operation can be carried out by calling L1CrossDomainMessenger.proveAndRelayMessage().

-

The required parameters are

-
  address _from, 
address _to,
uint256 _value,
uint256 _nonce,
bytes memory _message,
bytes32[32] calldata _withdrawalProof,
bytes32 _withdrawalRoot
-

_from, _to, _value, _nonce, and _message are the original content of the withdraw transaction, which can be obtained from the Event SentMessage included in the transaction initiated by the L2 layer withdraw.

-

_withdrawalProof and _withdrawalRoot can be obtained from the aforementioned backend API interface.

-
Use the SDK

You can also try our SDK to interact with the bridge system by referring to our SDK Doc.

-

Add your Token to the Official Bridge

-

Currently, our canonical bridge only supports certain pre-defined tokens to be bridged. If you want to bridge your own tokens, you need to manually add the token, and here is how to do it.

-

Add Tokens to the gateway through Morph Bridge Frontend

-

The easiest way to support your token is to manually add it on our canonical bridge frontend, you can simply do it with the following steps:

-
    -
  1. Click the token selection button on Morph Holesky Bridge
  2. -
-

tokenlist1

-
    -
  1. Input & Confirm your desire Ethereum token contract address under the custom token section
  2. -
-

tokenlist2

-
    -
  1. Get the Layer 2 token contract address and confirm it.
  2. -
-

tokenlist3

-
    -
  1. Now it is supported and you and other users can start to bridge it!
  2. -
-

tokenlist4

-

Add token support to the bridge frontend

-

By adding your token to the gateway, you and other users can bridge the token by inputting the token address.You need to raise a PR to our bridge repo if you want your token shown on the bridge frontend token list.

-

You can find how to do it in the morph list repo.

-

Keep in mind that:

-
    -
  • You need to add both your L1 & L2 token to the list.
  • -
  • The L2 token contract address is obtained by adding your tokens through Morph bridge frontend.
  • -
-

Here is an example PR commit for your reference.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/development-setup.htm/index.html b/build/docs/build-on-morph/build-on-morph/development-setup.htm/index.html deleted file mode 100644 index 44581551b..000000000 --- a/build/docs/build-on-morph/build-on-morph/development-setup.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/development-setup.html/index.html b/build/docs/build-on-morph/build-on-morph/development-setup.html/index.html deleted file mode 100644 index 44581551b..000000000 --- a/build/docs/build-on-morph/build-on-morph/development-setup.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/development-setup/index.html b/build/docs/build-on-morph/build-on-morph/development-setup/index.html deleted file mode 100644 index 73278d8c7..000000000 --- a/build/docs/build-on-morph/build-on-morph/development-setup/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - -Development Setup | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Start Developing on Morph

-

Developing on Morph is as straightforward as developing on Ethereum.

-

To deploy contracts onto a MorphL2 chain, simply set the RPC endpoint of your target MorphL2 chain and deploy using your preferred Ethereum development framework:

- -

...it all just works!

-

Mainnet:

-

Step 1: Network Configuration

-

Before you start, ensure you are connected to the following networks:

-
Network NameMorph MainnetEthereum Mainnet
RPC URLhttps://rpc-quicknode.morphl2.iohttps://ethereum-rpc.publicnode.com/
Chain ID28181
Currency SymbolETHETH
Block Explorer URLhttps://explorer.morphl2.io/https://etherscan.io/
-
Websocket Connection

wss://rpc-quicknode.morphl2.io

-

Step 2: Set up your developing framework

-

Hardhat

-

Modify your Hardhat config file hardhat.config.ts to point at the Morph public RPC.

-
const config: HardhatUserConfig = {
...
networks: {
morphl2: {
url: 'https://rpc-quicknode.morphl2.io',
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
gasprice = 1000000000
},
},
};

-

Foundry

-

To deploy using Morph Public RPC, run:

-
forge create ... --rpc-url= --legacy
-

ethers.js

-

Setting up a Morph provider in an ethers script:

-
import { ethers } from 'ethers';

const provider = new ethers.providers.JsonRpcProvider(
'https://rpc-quicknode.morphl2.io'
);
-

Holesky Testnet:

-

Step 1: Network Configuration

-

Before you start, ensure you are connected to the following networks:

-
Network NameMorph Holesky TestnetHolesky Testnet
RPC URLhttps://rpc-quicknode-holesky.morphl2.iohttps://ethereum-holesky-rpc.publicnode.com/
Chain ID281017000
Currency SymbolETHETH
Block Explorer URLhttps://explorer-holesky.morphl2.io/https://holesky.etherscan.io/
-
Websocket Connection

wss://rpc-quicknode-holesky.morphl2.io

-

Step 2: Set up your developing framework

-

Hardhat

-

Modify your Hardhat config file hardhat.config.ts to point at the Morph public RPC.

-
const config: HardhatUserConfig = {
...
networks: {
morphl2: {
url: 'https://rpc-quicknode-holesky.morphl2.io',
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
gasprice = 2000000000
},
},
};

-

Foundry

-

To deploy using Morph Public RPC, run:

-
forge create ... --rpc-url= --legacy
-

ethers.js

-

Setting up a Morph provider in an ethers script:

-
import { ethers } from 'ethers';

const provider = new ethers.providers.JsonRpcProvider(
'https://rpc-quicknode-holesky.morphl2.io'
);
-

Step 3: Acquire Ether

-

To start building on Morph, you may need some testnet ETH. Use a faucet to acquire holesky Ether, then bridge the test Ethereum Ether to the Morph testnet.

-

Each faucet has its own rules and requirements, so you may need to try a few before finding one that works for you.

-

Holesky ETH faucet websites:

-

https://stakely.io/en/faucet/ethereum-holesky-testnet-eth

-

https://faucet.quicknode.com/ethereum/holesky

-

https://holesky-faucet.pk910.de/

-

https://cloud.google.com/application/web3/faucet/ethereum (needs a Google account)

-

We have our own website faucet that can claim ETH & USDT for you initial usage.

-

Morph also offers a Discord faucet to obtain Morph Holesky USDT & Morph Holesky ETH.

-

Once you receive ETH on Holesky, you should see it in your wallet on the Holesky Network. It may take a few seconds for them to appear, but you can check the status by looking for a transaction to your address on a Holesky Block Explorer.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/integration-one-page-cn.htm/index.html b/build/docs/build-on-morph/build-on-morph/integration-one-page-cn.htm/index.html deleted file mode 100644 index 6e6dd0601..000000000 --- a/build/docs/build-on-morph/build-on-morph/integration-one-page-cn.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/integration-one-page-cn.html/index.html b/build/docs/build-on-morph/build-on-morph/integration-one-page-cn.html/index.html deleted file mode 100644 index 6e6dd0601..000000000 --- a/build/docs/build-on-morph/build-on-morph/integration-one-page-cn.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/integration-one-page-cn/index.html b/build/docs/build-on-morph/build-on-morph/integration-one-page-cn/index.html deleted file mode 100644 index ade1d51e8..000000000 --- a/build/docs/build-on-morph/build-on-morph/integration-one-page-cn/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - -中文开发者集成文档 | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

中文开发者集成文档

网络参数

-
网络链 IDRPC URL区块浏览器
Morph 主网2818https://rpc-quicknode.morphl2.iohttps://explorer.morphl2.io/
Ethereum 主网1https://ethereum-rpc.publicnode.com/https://etherscan.io/
Morph Holesky 测试网2810https://rpc-quicknode-holesky.morphl2.iohttps://explorer-holesky.morphl2.io/
Holesky 测试网17000https://ethereum-holesky-rpc.publicnode.com/https://holesky.etherscan.io/
-

请注意,我们已为公共 RPC 访问设置了速率限制,目前为每个 IP 每分钟 600 次请求。

-

如果您需要更高的额度,请联系Morph团队为您开放更高限额。您还可以使用我们的合作伙伴产品 quicknodetenderly 创建自己的私人 RPC。

-
Websocket 连接

wss://rpc-quicknode.morphl2.io

-

浏览器信息

-

官方主网浏览器

-

官方测试网浏览器

-

浏览器 API 文档

-

浏览器 API: https://explorer-api.morphl2.io/api

-

测试网浏览器 API: https://explorer-holesky-api.morphl2.io/api

-

有关如何在 Morph 浏览器上验证您的合约的详细指南,点击这里

-

桥信息

-

官方桥

-

官方测试网桥

-
提现和存款时间

由于 Morph opzkEVM 设计,每个提现请求需要经过 48 小时的提现期(挑战窗口)才能完成。

存款需要等待 2 个以太坊Epoch(大约 13~20 分钟)。

-

新桥接资产支持:

-

将您的代币添加到官方桥

-

您还可以使用 LayerZero 来包装您的代币:

-

LayerZero 在 Morph 上

-

交易费用与区块

-

对于以太坊 Layer2,费用分为两部分:L1 费用和 L2 费用。

-

对于 L2 费用,Morph 目前使用与以太坊主网相同的 EIP-1559 机制来计算交易费用。每笔交易将有一个基础费用和一个优先费用。基础费用设定为 0.001 Gwei。如果区块交易限制(每个区块 100 笔)未达到,用户只需要仅支付基础费即可。

-
tip

请注意,我们在测试网上设置了最低的 L2 优先费(0.01 gwei),这是为了防止垃圾交易影响其他正常交易。对于主网,我们可以在不收取优先级费用的情况下处理交易。

-

Morph 目前每秒生成 1 个非空区块,如果没有新交易,我们将每 5 秒生成 1 个空区块。

-

每个区块最多可以容纳 100 笔交易,我们将继续提高限制来达成更高的TPS。

-

重要合约

-

我们已记录所有重要的 Morph 合约,您可以在 这里 找到它们。

-

节点部署

-

目前我们支持您在 Docker 中运行 Morph 节点(全节点和验证节点)或在Host上运行。

-

您可以查看 节点部署指南 以获取更多详细信息。

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/integration-one-page.htm/index.html b/build/docs/build-on-morph/build-on-morph/integration-one-page.htm/index.html deleted file mode 100644 index 02ff257b6..000000000 --- a/build/docs/build-on-morph/build-on-morph/integration-one-page.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/integration-one-page.html/index.html b/build/docs/build-on-morph/build-on-morph/integration-one-page.html/index.html deleted file mode 100644 index 02ff257b6..000000000 --- a/build/docs/build-on-morph/build-on-morph/integration-one-page.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/integration-one-page/index.html b/build/docs/build-on-morph/build-on-morph/integration-one-page/index.html deleted file mode 100644 index efa2ad59b..000000000 --- a/build/docs/build-on-morph/build-on-morph/integration-one-page/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - -Morph Integration One Page | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Morph Integration One Page

Network Parameters

-
NetworkChain IDRPC URLBlock Explorer URL
Morph Mainnet2818https://rpc-quicknode.morphl2.iohttps://explorer.morphl2.io/
Ethereum Mainnet1https://ethereum-rpc.publicnode.com/https://etherscan.io/
Morph Holesky Testnet2810https://rpc-quicknode-holesky.morphl2.iohttps://explorer-holesky.morphl2.io/
Holesky Testnet17000https://ethereum-holesky-rpc.publicnode.com/https://holesky.etherscan.io/
-

To notice, we have set a rate limit for the public RPC access, currently 600 requests per minute per IP.

-

If you need higher tps, please contact our team for private RPC access. You can also use our partner quicknode or tenderly to create your own private RPC.

-
Websocket Connection

wss://rpc-quicknode.morphl2.io

-

Explorer Information

-

Official Mainnet Explorer

-

Official Testnet Explorer

-

Explorer API Documentation

-

Explorer API: https://explorer-api.morphl2.io/api

-

Testnet Explorer API: https://explorer-holesky-api.morphl2.io/api

-

For detail guide on how to verify your contract on Morph explorer, click here

-

Bridge Information

-

Official Bridge

-

Official Testnet Bridge

-
Withdrawal and Deposit Time

Due to Morph opzkEVM design, each withdrawal request will need to go through a 48 hours withdrawal period (challenge window) to be finalized.

Deposit needs to wait for 2 Ethereum epoch (about 13~20 min).

-

New Bridge Asset Support:

-

Add your Token to the Official Bridge

-

You can also use LayerZero to wrap your token:

-

LayerZero on Morph

-

Transaction Fees & Blocks

-

For Ethereum Layer2, there are 2 part of fees: L1 fee and L2 fee.

-

For L2 fee, Morph currently using the EIP-1559 mechanism for transaction fees same as Ethereum mainnet. Each transaction will have a base fee and a priority fee. The base fee is set to 0.001 Gwei. If the block transaction limit (100 per block) is not reached, only pay base fee is enough.

-
tip

Please note we have a lowest L2 priority fee setting (0.01 gwei) for testnet, this is in order to prevent spams. For mainnet, we are able process transaction without priority fee.

-

Morph currently produce 1 block per second for non-empty block, if there is no new transaction, we will produce 1 empty block every 5 seconds.

-

Each block can have 100 transactions maximum and we will keep raising the limit.

-

Important Contracts

-

We have documented all the important contracts on Morph, you can find them here

-

Node Deployment

-

Right now we support you to run the Morph node (full node and validator node) in docker and run on host.

-

You can check the node deployment guide for more details.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph.htm/index.html b/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph.htm/index.html deleted file mode 100644 index 101bfb78d..000000000 --- a/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph.html/index.html b/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph.html/index.html deleted file mode 100644 index 101bfb78d..000000000 --- a/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph/index.html b/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph/index.html deleted file mode 100644 index 3fc74a5ec..000000000 --- a/build/docs/build-on-morph/build-on-morph/understand-transaction-cost-on-morph/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Understand Transaction Cost on Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Understand Transaction Cost on Morph

Transaction fees on Morph work similarly to fees on Ethereum. However, Layer 2 introduces some unique aspects. Morph's optimistic zkEVM makes these differences easy to understand and even easier to handle.

-

This page includes the formula for calculating the gas cost of transactions on Morph. -There are two kinds of costs for transactions on Morph: the L2 execution fee and the L1 data/security fee.

-

The L2 execution fee

-

Like Ethereum, transactions on Morph incur gas costs for computation and storage usage.

-

Every L2 transaction will pay some execution fee, equal to the amount of gas used multiplied by the gas price of the transaction.

-

Morph supports EIP-1559 transaction type. The EIP-1559 pricing model, which comprises a base fee and a priority fee, contributes to a more predictable and stable transaction fee.

-

The formula is straightforward:

-
l2_execution_fee = l2_gas_price * l2_gas_used
l2_gas_price = l2_base_fee + l2_priority_fee
-

The amount of L2 gas used depends on the specific transaction. Due to EVM compatibility, gas usage on Morph is typically similar to Ethereum.

-

The L1 data fee

-

Morph transactions are also published to Ethereum, crucial to Morph’s security as it ensures all data needed to verify Morph's state is always publicly available on Ethereum.

-

Users must pay for the cost of submitting their transactions to Ethereum, known as the L1 data fee. This fee typically represents most of the total cost of a transaction on Morph.

-

Formula:

-
l1DataFee = (l1BaseFee * commitScalar + l1BlobBaseFee * len(tx_data) * blobScalar) / rcfg.Precision
-
len(tx_data) = count_zero_bytes(tx_data) * 4 + count_non_zero_bytes(tx_data) * 16
-

And other parameters:

-
    -
  1. l1BaseFee:Layer1 base fee
  2. -
  3. commitScalar: a factor used to measure the gas cost for data commitment
  4. -
  5. l1BlobBaseFee: the blobBaseFee on L1
  6. -
  7. blobScalar: a factor used to measure the gas cost for one transaction to be stored in EIP-4844 blob
  8. -
-
tip

You can read the parameter values from the GasPrice oracle contract. Morph has pre-deployed GasPriceOracle, accessible on Morph mainnet at GasPriceOracle.

-

Transaction fees' effect on software development

-

Sending transactions

-

The process of sending a transaction on Morph is identical to sending a transaction on Ethereum.

-

When sending a transaction, you should provide a gas price that is greater than or equal to the current L2 gas price.

-

Like on Ethereum, you can query this gas price with the eth_gasPrice RPC method.

-

Similarly, you should set your transaction gas limit in the same way that you would set it on Ethereum (e.g. via eth_estimateGas).

-

Displaying fees to users

-

Many Ethereum applications display estimated fees to users by multiplying the gas price by the gas limit.

-

However, as discussed earlier, users on Morph are charged both an L2 execution fee and an L1 data fee.

-

As a result, you should display the sum of both of these fees to give users the most accurate estimate of the total cost of a transaction.

-

Estimating the L2 execution fee

-

You can estimate the L2 execution fee by multiplying the gas price by the gas used, just like on Ethereum.

-

The formula is straightforward:

-
l2_execution_fee = l2_gas_price * l2_gas_used
l2_gas_price = l2_base_fee + l2_priority_fee
-

The amount of L2 gas used depends on the specific transaction. Due to EVM compatibility, gas usage on Morph is typically similar to Ethereum.

-

Estimating the L1 data fee

-

You can utilize the pre-deployed L1GasPriceOracle at 0x530000000000000000000000000000000000000f. It offers a getL1Fee method to estimate the L1 data fee for the raw data of a given transaction.

-
function getL1Fee(bytes memory _data) external view override returns (uint256);
-
tip

Once the sequencer has processed a transaction, a user's L1 fee is secured, and any fluctuations will not impact what a user pays.

Due to Morph's ~1s block time, any changes in L1 gas between a transaction's submission and its inclusion in a block should be minimal. The sequencer will account for any variations in L1 gas costs between a transaction's inclusion in a block and when the sequencer commits the data to L1.

-

Estimating the total fee

-

You can estimate the total fee by combining your estimates for the L2 execution fee and L1 data fee.

-

Sending max ETH

-

Sending the maximum amount of ETH that a user has in their wallet is a relatively common use case.

-

When doing this, you will need to subtract the estimated L2 execution fee and the estimated L1 data fee from the amount of ETH you want the user to send.

-

Use the logic described above for estimating the total fee.

-

Common RPC Errors

-

Insufficient funds

-
    -
  • Error code: -32000
  • -
  • Error message: invalid transaction: insufficient funds for l1Fee + l2Fee + value
  • -
-

You'll get this error when attempting to send a transaction and you don't have enough ETH to pay for the value of the transaction, the L2 execution fee, and the L1 data fee. -You might get this error when attempting to send max ETH if you aren't properly accounting for both the L2 execution fee and the L1 data fee.

-

Gas price too low

-
    -
  • Error code: -32000
  • -
  • Error message: gas price too low: X wei, use at least tx.gasPrice = Y wei
  • -
-

This is a custom RPC error that Morph returns when a transaction is rejected because the gas price is too low. -See the section on Responding to gas price updates for more information.

-

Gas price too high

-
    -
  • Error code: -32000
  • -
  • Error message: gas price too high: X wei, use at most tx.gasPrice = Y wei
  • -
-

This is a custom RPC error that Morph returns when a transaction is rejected because the gas price is too high. -We include this as a safety measure to prevent users from accidentally sending a transaction with an extremely high L2 gas price.

-

See the section on Responding to gas price updates for more information.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts.htm/index.html b/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts.htm/index.html deleted file mode 100644 index 3d286071d..000000000 --- a/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts.html/index.html b/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts.html/index.html deleted file mode 100644 index 3d286071d..000000000 --- a/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts/index.html b/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts/index.html deleted file mode 100644 index 684585b4f..000000000 --- a/build/docs/build-on-morph/build-on-morph/verify-your-smart-contracts/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - -Verify Your Smart Contracts | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Verify Your Smart Contracts

After deploying your smart contracts, it's crucial to verify your code on our block explorer. This can be automated using your development framework, such as Hardhat.

-

Verify with development framework

-

Most smart contract tools have plugins for verifying contracts on Etherscan. Blockscout supports Etherscan's contract verification APIs, making it straightforward to use these tools with the Morph Mainnet & Testnet.

-

Verify with Hardhat

-

To verify your contract through hardhat, you need to add the following Etherscan and Sourcify configs to your hardhat.config.js file:

-
module.exports = {
networks: {
morph: { ... }
},
etherscan: {
apiKey: {
morph: 'anything',
},
customChains: [
{
network: 'morph',
chainId: 2818,
urls: {
apiURL: 'https://explorer-api.morphl2.io/api? ',
browserURL: 'https://explorer.morphl2.io/',
},
},
],
},
};
-

Verify with Foundry

-

Verification with foundry requires some flags passed to the normal verification script. You can verify using the command below:

-
 forge verify-contract YourContractAddress Counter\
--chain 2818 \
--verifier-url https://explorer-api.morphl2.io/api? \
--verifier blockscout --watch
-

Verify with Morph explorer frontend

- -

We currently support 6 different ways to verify your contracts on our block explorer.

-

There are 2 general parameters:

-
    -
  • Compiler: Has to be consistent with what you select when deployment.
  • -
  • Optimization: Can be ignored if you don't have contract optimization. If you do, it has to be consistent with deployment.
  • -
-

Method: Solidity (Flattened Sources Code)

-

Frontend:

-

fscs

-

Flatten

-

Flatten through forge command, for example:

-
forge flatten --output FlattenedL2StandardBridge.sol ./contracts/L2/L2StandardBridge.sol
-

Method: Solidity (Standard JSON Input)

-

sjis1

-

Obtain JSON File

-
    -
  • Can be obtained through solc
  • -
  • Can be obatined through remix compiler
  • -
-

sjis2

-

sjis3

-

Method: Solidity (Multi-part files)

-

Frontend:

-
    -
  • You can submit multiple contract file by your own needs -mpfs1
  • -
-

SOL File Process

-
    -
  • If there is any imported file, it needs to be modified to be referenced by the same level path, and these files must be submitted together. -mpfs2
  • -
-

Method: Vyper (Contracts)

-

Frontend:

-

cv

-

Method: Vyper (Standard Json Input)

-

Frontend:

-

sjiv

-

Method: Vyper (Multi-part files)

-

Frontend:

-

mpfv

-

After Verification

-

avp

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum.htm/index.html b/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum.htm/index.html deleted file mode 100644 index b99854404..000000000 --- a/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum.html/index.html b/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum.html/index.html deleted file mode 100644 index b99854404..000000000 --- a/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum/index.html b/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum/index.html deleted file mode 100644 index 6cf521c32..000000000 --- a/build/docs/build-on-morph/code-examples/bridge-between-morph-and-ethereum/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - -Bridge between Morph and Ethereum | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Bridge between Morph and Ethereum

Bridge an ERC20 through custom gateway

-

Step 1: Launch a token on Holesky

-

First, we need a token to bridge. There is no need for a particular ERC20 implementation in order for a token to be compatible with L2. If you already have a token, feel free to skip this step. If you want to deploy a new token, use the following contract of a simple ERC20 token that mints 1 million tokens to the deployer when launched.

-
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract L1Token is ERC20 {
constructor() ERC20("My Token L1", "MTL1") {
_mint(msg.sender, 1_000_000 ether);
}
}
-

Step 2: Launch the counterpart token on Morph Holesky testnet

-

Next, you'll launch a counterpart to this token on Morph, which will represent the original token on Holesky. This token can implement custom logic to match that of the L1 token or even add additional features beyond those of the L1 token.

-

For this to work:

-
    -
  • The token must implement the IMorphStandardERC20 interface in order to be compatible with the bridge.
  • -
  • The contract should provide the gateway address and the counterpart token addresses (the L1 token we just launched) under the gateway() and counterpart() functions. It should also allow the L2 gateway to call the token mint() and burn() functions, which are called when a token is deposited and withdrawn.
  • -
-

The following is a complete example of a token compatible with the bridge. To the constructor, you will pass the official Morph Custom Gateway address (0x058dec71E53079F9ED053F3a0bBca877F6f3eAcf) and the address of the token launched on Holesky.

-
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@Morph-tech/contracts@0.1.0/libraries/token/IMorphERC20Extension.sol";

contract L2Token is ERC20, IMorphERC20Extension {
// We store the gateway and the L1 token address to provide the gateway() and counterpart() functions which are needed from the Morph Standard ERC20 interface
address _gateway;
address _counterpart;

// In the constructor we pass as parameter the Custom L2 Gateway and the L1 token address as parameters
constructor(address gateway_, address counterpart_) ERC20("My Token L2", "MTL2") {
_gateway = gateway_;
_counterpart = counterpart_;
}

function gateway() public view returns (address) {
return _gateway;
}

function counterpart() external view returns (address) {
return _counterpart;
}

// We allow minting only to the Gateway so it can mint new tokens when bridged from L1
function transferAndCall(address receiver, uint256 amount, bytes calldata data) external returns (bool success) {
transfer(receiver, amount);
data;
return true;
}

// We allow minting only to the Gateway so it can mint new tokens when bridged from L1
function mint(address _to, uint256 _amount) external onlyGateway {
_mint(_to, _amount);
}

// Similarly to minting, the Gateway is able to burn tokens when bridged from L2 to L1
function burn(address _from, uint256 _amount) external onlyGateway {
_burn(_from, _amount);
}

modifier onlyGateway() {
require(gateway() == _msgSender(), "Ownable: caller is not the gateway");
_;
}
}
-

Step 3: Add the token to the Morph Bridge

-

You need to contact the Morph team to add the token to L2CustomERC20Gateway contract in Morph and L1CustomERC20Gateway contract in L1. In addition, follow the instructions on the token lists repository to add your token to the Morph canonical bridge frontend.

-

Step 4: Deposit tokens

-

Once your token has been approved by the Morph team, you should be able to deposit tokens from L1. To do so, you must first approve the L1CustomGateway contract address on Holesky (0x31C994F2017E71b82fd4D8118F140c81215bbb37). Then, deposit tokens by calling the depositERC20 function from the L1CustomGateway contract. This can be done using our bridge UI, Etherscan Holesky, or a smart contract.

-

Step 5: Withdraw tokens

-

You will follow similar steps to send tokens back from L2 to L1. First, approve the L2CustomGateway address (0x058dec71E53079F9ED053F3a0bBca877F6f3eAcf) and then withdraw the tokens calling the withdrawERC20 from the L2CustomGateway contract.

-

Send messages between Morph and Ethereum

-

Deploying the Contracts

-

Target Smart Contract

-

Let’s start by deploying the target smart contract. We will use the Greeter contract for this -example, but you can use any other contract. Deploy it to either Holesky or Morph. On Morph, L1 -and L2 use the same API, so it’s up to you.

-
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

// This Greeter contract will be interacted with through the MorphMessenger across the bridge
contract Greeter {
string public greeting = "Hello World!";

// This function will be called by executeFunctionCrosschain on the Operator Smart Contract
function setGreeting(string memory greeting_) public {
greeting = greeting_;
}
}
-

We will now execute setGreeting in a cross-chain way.

-

Operator Smart Contract

-

Switch to the other chain and deploy the GreeterOperator. So, if you deployed the Greeter contract on L1, deploy the GreeterOperator on L2 or vice versa.

-
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

// The Morph Messenger interface is the same on both L1 and L2, it allows sending cross-chain transactions
// Let's import it directly from the Morph Contracts library
import "@Morph-tech/contracts@0.1.0/libraries/IMorphMessenger.sol";

// The GreeterOperator is capable of executing the Greeter function through the bridge
contract GreeterOperator {
// This function will execute setGreeting on the Greeter contract
function executeFunctionCrosschain(
address MorphMessengerAddress,
address targetAddress,
uint256 value,
string memory greeting,
uint32 gasLimit
) public payable {
IMorphMessenger MorphMessenger = IMorphMessenger(MorphMessengerAddress);
// sendMessage is able to execute any function by encoding the abi using the encodeWithSignature function
MorphMessenger.sendMessage{ value: msg.value }(
targetAddress,
value,
abi.encodeWithSignature("setGreeting(string)", greeting),
gasLimit,
msg.sender
);
}
}
-

Calling a Cross-chain Function

-

We pass the message by executing executeFunctionCrosschain and passing the following parameters:

-
    -
  • MorphMessengerAddress: This will depend on where you deployed the GreeterOperator contract. -
      -
    • If you deployed it on Holesky use 0x50c7d3e7f7c656493D1D76aaa1a836CedfCBB16A. If you deployed on Morph Holesky use 0xBa50f5340FB9F3Bd074bD638c9BE13eCB36E603d.
    • -
    -
  • -
  • targetAddress: The address of the Greeter contract on the opposite chain.
  • -
  • value: In this case, it is 0 because the setGreetingis not payable.
  • -
  • greeting: This is the parameter that will be sent through the message. Try passing “This message was cross-chain!”
  • -
  • gasLimit: -
      -
    • If you are sending the message from L1 to L2, around 1000000 gas limit should be more than enough. That said, if you set this too high, and msg.value doesn't cover gasLimit * baseFee, the transaction will revert. If msg.value is greater than the gas fee, the unused portion will be refunded.
    • -
    • If you are sending the message from L2 to L1, pass 0, as the transaction will be completed by executing an additional transaction on L1.
    • -
    -
  • -
-

Relay the Message when sending from L2 to L1

-

When a transaction is passed from L2 to L1, an additional "execute withdrawal transaction" must be sent on L1. To do this, you must call relayMessageWithProof on the L1 Morph Messenger -contract from an EOA wallet.

-

You can do this directly on Etherscan Holesky. -To do so, you will need to pass a Merkle inclusion proof for the bridged transaction and other parameters. You'll query these using the Morph Bridge API.

- -

We're finalizing the API specifics, but for now, fetch or curl the following endpoint:

-
curl "https://Holesky-api-bridge.Morph.io/api/claimable?page_size=10&page=1&address=GREETER_OPERATOR_ADDRESS_ON_L2"
-
tip

This API was made for our Bridge UI. It is not yet finalized and may change in the future. We will update this guide -when the API is finalized.

-
Anyone can execute your message

relayMessageWithProof is fully permissionless, so anyone can call it on your behalf if they're willing to pay the L1 -gas fees. This feature allows for additional support infrastructure, including tooling to automate this process for -applications and users.

-

After executing and confirming the transaction on both L1 and L2, the new state of greeting on the Greeter contract should be “This message was cross-chain!”. Sending a message from one chain to the other should take around 20 minutes after the transactions are confirmed on the origin chain.

-

Congratulations, you now executed a transaction from one chain to the other using our native bridge!

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/code-examples/deploy-contract-on-morph.htm/index.html b/build/docs/build-on-morph/code-examples/deploy-contract-on-morph.htm/index.html deleted file mode 100644 index 67572b043..000000000 --- a/build/docs/build-on-morph/code-examples/deploy-contract-on-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/code-examples/deploy-contract-on-morph.html/index.html b/build/docs/build-on-morph/code-examples/deploy-contract-on-morph.html/index.html deleted file mode 100644 index 67572b043..000000000 --- a/build/docs/build-on-morph/code-examples/deploy-contract-on-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/code-examples/deploy-contract-on-morph/index.html b/build/docs/build-on-morph/code-examples/deploy-contract-on-morph/index.html deleted file mode 100644 index f9058e8aa..000000000 --- a/build/docs/build-on-morph/code-examples/deploy-contract-on-morph/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - -Deploy Contracts on Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Deploy Contracts on Morph

The Morph Holesky Testnet allows anyone to deploy a smart contract on Morph. This tutorial will guide you through deploying a contract on Morph Holesky using common Ethereum development tools.

-

This demo repo illustrates contract deployment with Hardhat and Foundry.

-
tip

Before you start deploying the contract, you need to request test tokens from a Holesky faucet and use the -bridge to transfer some test ETH from Holesky to Morph Holesky.

See our Faucet for details.

-

Deploy with Hardhat

-

Clone the repo

-
git clone https://github.com/morph-l2/morph-examples.git
-

Install Dependencies

-

If you haven't already, install nodejs and yarn.

-
cd contract-deployment-demos/hardhat-demo
yarn install
-

This will install everything you need include hardhat for you.

-

Compile

-

Compile your contract

-
yarn compile
-

Test

-

This will run the test script in test/Lock.ts

-
yarn test
-

Deploy

-

Create a .env file following the example .env.example in the root directory. Change PRIVATE_KEY to your own account private key in the .env.

-

And Change the network settings in the hardhat.config.ts file with the following information:

-
 morphTestnet: {
url: process.env.MORPH_TESTNET_URL || "",
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
}
-

Then run the following command to deploy the contract on the Morph Holesky Testnet. This will run the deployment script that set the initialing parameters, you can edit the script in scripts/deploy.ts

-
yarn deploy:morphTestnet
-

Verify your contracts on Morph Explorer

-

To verify your contract through hardhat, you need to add the following Etherscan and Sourcify configs to your hardhat.config.js file:

-
module.exports = {
networks: {
morphTestnet: { ... }
},
etherscan: {
apiKey: {
morphTestnet: 'anything',
},
customChains: [
{
network: 'morphTestnet',
chainId: 2810,
urls: {
apiURL: 'https://explorer-api-holesky.morphl2.io/api? ',
browserURL: 'https://explorer-holesky.morphl2.io/',
},
},
],
},
};
-

Then run the hardhat verify command to finish the verification

-
npx hardhat verify --network morphTestnet DEPLOYED_CONTRACT_ADDRESS <ConstructorParameter>
-

For example

-
npx hardhat verify --network morphTestnet 0x8025985e35f1bAFfd661717f66fC5a434417448E '0.00001'
-

Once succeed, you can check your contract and the deployment transaction on Morph Holesky Explorer

-

Deploy contracts with Foundry

-

Clone the repo

-
git clone https://github.com/morph-l2/morph-examples.git
-

Install Foundry

-
curl -L https://foundry.paradigm.xyz | bash
foundryup
-

Then go the right folder of our example:

-
cd contract-deployment-demos/foundry-demo
-

Compile

-
forge build
-

Deploy

-

A Deployment script and use of environment variables has already been set up for you. You can view the script at script/Counter.s.sol

-

Rename your .env.example file to .env and fill in your private key. The RPC URL has already been filled in along with the verifier URL.

-

To use the variables in your .env file run the following command:

-
source .env
-

You can now deploy to Morph with the following command:

-
forge script script/Counter.s.sol --rpc-url $RPC_URL --broadcast --private-key $DEPLOYER_PRIVATE_KEY --legacy
-

Adjust as needed for your own script names.

-

Verify

-

Verification requires some flags passed to the normal verification script. You can verify using the command below:

-
 forge verify-contract YourContractAddress Counter\
--chain 2810 \
--verifier-url $VERIFIER_URL \
--verifier blockscout --watch
-

Once succeeded, you can check your contract and the deployment transaction on Morph Holesky Explorer.

-

Questions and Feedback

-

Thank you for participating in and developing on the Morph Holesky Testnet! If you encounter any issues, join our Discord and find us at #dev-support channel.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-navigation-page.htm/index.html b/build/docs/build-on-morph/developer-navigation-page.htm/index.html deleted file mode 100644 index 1a91f0ac1..000000000 --- a/build/docs/build-on-morph/developer-navigation-page.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-navigation-page.html/index.html b/build/docs/build-on-morph/developer-navigation-page.html/index.html deleted file mode 100644 index 1a91f0ac1..000000000 --- a/build/docs/build-on-morph/developer-navigation-page.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-navigation-page/index.html b/build/docs/build-on-morph/developer-navigation-page/index.html deleted file mode 100644 index 5815f9f63..000000000 --- a/build/docs/build-on-morph/developer-navigation-page/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - -Build on Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Build on Morph

If you’re ready to build applications on Morph, you're in the right place.

-

For those who are regular users or visiting for the first time, we recommend starting with our For Users section to explore introductory content such as definitions, our vision, key concepts, and more.

-

What is Morph?

-

Morph is the first optimistic zkEVM Ethereum Layer 2 solution that is 100% EVM compatible. Building on Morph is just like building on Ethereum. If you’re experienced in Ethereum development, you'll find your existing code, tooling, and dependencies are fully compatible with Morph.

-

We provide a one-page for Morph integration resources if you want to get started quickly.

- -

Getting Started

-

To help you get started, here’s a recommended navigation through our documentation:

-

Fundamental Concepts: Start here to learn the core components of Morph, including Morph’s Modular Design, the Decentralized Sequencer Network, and the Responsive Validity Proof system.

- -

Developer Guides: Access comprehensive guides on verifying smart contracts, running a Morph node, deploying contracts, and more.

- -

Developer Resources: Find detailed API methods, contract addresses and other useful developer resources.

- -

Engage in Our Developer Community​

-

We're actively enhancing our network with more integrations and support infrastructure, progressing towards our Mainnet release. Join our growing developer community. You can find us on Discord or follow our progress on Twitter.

-

devintro

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/contracts.htm/index.html b/build/docs/build-on-morph/developer-resources/contracts.htm/index.html deleted file mode 100644 index 796458a07..000000000 --- a/build/docs/build-on-morph/developer-resources/contracts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/contracts.html/index.html b/build/docs/build-on-morph/developer-resources/contracts.html/index.html deleted file mode 100644 index 796458a07..000000000 --- a/build/docs/build-on-morph/developer-resources/contracts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/contracts/index.html b/build/docs/build-on-morph/developer-resources/contracts/index.html deleted file mode 100644 index c7bef10b6..000000000 --- a/build/docs/build-on-morph/developer-resources/contracts/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - -Contract Addresses | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Contract Addresses

Morph Network Info

-

Morph Mainnet

-
Network NameMorph MainnetEthereum Mainnet
RPC URLhttps://rpc-quicknode.morphl2.iohttps://ethereum-rpc.publicnode.com/
Chain ID28181
Currency SymbolETHETH
Block Explorer URLhttps://explorer.morphl2.io/https://etherscan.io/
-

Morph Holesky Testnet

-
Network NameMorph Holesky TestnetEthereum Holesky Testnet
RPC URLhttps://rpc-quicknode-holesky.morphl2.iohttps://ethereum-holesky-rpc.publicnode.com/
Chain ID281017000
Currency SymbolETHETH
Block Explorer URLhttps://explorer-holesky.morphl2.io/https://holesky.etherscan.io/
-

Morph Mainnet Contracts

-

Main Contract

-

L1 Contract

-

Staking: 0x0dc417f8af88388737c5053ff73f345f080543f7

-

Rollup: 0x759894ced0e6af42c26668076ffa84d02e3cef60

-

L1MessageQueueWithGasPriceOracle: 0x3931ade842f5bb8763164bdd81e5361dce6cc1ef

-

L1CrossDomainMessenger: 0xdc71366effa760804dcfc3edf87fa2a6f1623304

-

L2 Contract

-

L2ToL1MessagePasser: 0x5300000000000000000000000000000000000001

-

Sequencer: 0x5300000000000000000000000000000000000017

-

Gov: 0x5300000000000000000000000000000000000004

-

L2CrossDomainMessenger: 0x5300000000000000000000000000000000000007

-

Gateway

-

L1 Gateway

-

L1GatewayRouter: 0x7497756ada7e656ae9f00781af49fc0fd08f8a8a

-

L1ETHGateway: 0x1c1ffb5828c3a48b54e8910f1c75256a498ade68

-

L1WETHGateway: 0x788890ba6f105cca373c4ff01055cd34de01877f

-

L1StandardERC20Gateway: 0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8

-

L1CustomERC20Gateway: 0xa534badd09b4c62b7b1c32c41df310aa17b52ef1

-

L1ERC721Gateway: 0x5ae782c23a303c0d70ae697a0aee9eae9a5d77c4

-

L1ERC1155Gateway: 0x7c9a3d9531692d057d496d04938bdb7d367e9765

-

L1USDCGateway: 0x2C8314f5AADa5D7a9D32eeFebFc43aCCAbe1b289

-

EnforcedTxGateway: 0xc5fa3b8968c7fabeea2b530a20b88d0c2ed8abb7

-

L2 Gateway

-

L2GatewayRouter: 0x5300000000000000000000000000000000000002

-

L2StandardERC20Gateway: 0x5300000000000000000000000000000000000008

-

L2ERC721Gateway: 0x5300000000000000000000000000000000000009

-

L2ERC1155Gateway: 0x530000000000000000000000000000000000000c

-

L2USDCGateway:0xc5e44E2fFe9523809146eD17D62bb382ECCf426B

-

L2WETHGateway: 0x5300000000000000000000000000000000000010

-

L2ETHGateway: 0x5300000000000000000000000000000000000006

-

Other Layer 2 Predeploys

-

L2Staking: 0x5300000000000000000000000000000000000015

-

L2TxFeeVault: 0x530000000000000000000000000000000000000a

-

L2CustomERC20Gateway: 0x5300000000000000000000000000000000000016

-

ProxyAdmin: 0x530000000000000000000000000000000000000b

-

MorphStandardERC20: 0x530000000000000000000000000000000000000d

-

MorphStandardERC20Factory: 0x530000000000000000000000000000000000000e

-

GasPriceOracle: 0x530000000000000000000000000000000000000f

-

L2WETH: 0x5300000000000000000000000000000000000011

-

Tokens

-

L1 Tokens

-

WETH: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-

USDT: 0xdAC17F958D2ee523a2206206994597C13D831ec7

-

USDC: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

-

DAI: 0x6B175474E89094C44Da98b954EedeAC495271d0F

-

WBTC: 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599

-

L2 Tokens

-

WETH: 0x5300000000000000000000000000000000000011

-

USDT: 0xc7D67A9cBB121b3b0b9c053DD9f469523243379A

-

WBTC: 0x803DcE4D3f4Ae2e17AF6C51343040dEe320C149D

-

USDC: 0xe34c91815d7fc18A9e2148bcD4241d0a5848b693

-

DAI: 0xef8A24599229D002B28bA2F5C0eBdD3c0EFFbed4

-

weETH: 0x7DCC39B4d1C53CB31e1aBc0e358b43987FEF80f7

-

BGB: 0x55d1f1879969bdbB9960d269974564C58DBc3238

-

Morph Holesky Contracts

-
tip

Please not the following is the contract address of the Morph Holesky Testnet.

-

Main Contract

-

L1 Contract

-

Staking: 0x868dd5d1c268277e331b726bb438edde8221d389

-

Rollup: 0xd8c5c541d56f59d65cf775de928ccf4a47d4985c

-

L1MessageQueueWithGasPriceOracle: 0x778d1d9a4d8b6b9ade36d967a9ac19455ec3fd0b

-

L1CrossDomainMessenger: 0xecc966ab425f3f5bd58085ce4ebdbf81d829126f

-

L2 Contract

-

L2ToL1MessagePasser: 0x5300000000000000000000000000000000000001

-

L2Sequencer: 0x5300000000000000000000000000000000000003

-

L2Gov: 0x5300000000000000000000000000000000000004

-

L2Submitter: 0x5300000000000000000000000000000000000005

-

L2CrossDomainMessenger: 0x5300000000000000000000000000000000000007

-

L2 Tokens

-

L2USDT:0x9E12AD42c4E4d2acFBADE01a96446e48e6764B98

-

L2USDC:0xeA2610c28B4c5857689EAFa8b2116a617206d283

-

L2DAI:0xAa19d46626947C6E1E5F281aE835971579827DDC

-

Gateway

-

L1 Gateway

-

L1GatewayRouter: 0xea593b730d745fb5fe01b6d20e6603915252c6bf

-

L1ETHGateway: 0xcc3d455481967dc97346ef1771a112d7a14c8f12

-

L1WETHGateway: 0xbbdb317b50313d96823eba0fc2c1d9e469dc1906

-

L1StandardERC20Gateway: 0xb26dafdb434ae93e3b8efde4f0193934955d86cd

-

L2 Gateway

-

L2GatewayRouter: 0x5300000000000000000000000000000000000002

-

L2StandardERC20Gateway: 0x5300000000000000000000000000000000000008

-

L2ERC721Gateway: 0x5300000000000000000000000000000000000009

-

L2ERC1155Gateway: 0x530000000000000000000000000000000000000c

-

L2WETHGateway: 0x5300000000000000000000000000000000000010

-

L2ETHGateway: 0x5300000000000000000000000000000000000006

-

Other Layer 2 Predeploys

-

L2TxFeeVault: 0x530000000000000000000000000000000000000a

-

ProxyAdmin: 0x530000000000000000000000000000000000000b

-

MorphStandardERC20: 0x530000000000000000000000000000000000000d

-

MorphStandardERC20Factory: 0x530000000000000000000000000000000000000e

-

GasPriceOracle: 0x530000000000000000000000000000000000000f

-

L2WETH: 0x5300000000000000000000000000000000000011

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph.htm/index.html b/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph.htm/index.html deleted file mode 100644 index b5d8576cd..000000000 --- a/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph.html/index.html b/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph.html/index.html deleted file mode 100644 index b5d8576cd..000000000 --- a/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph/index.html b/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph/index.html deleted file mode 100644 index a06ae8cc8..000000000 --- a/build/docs/build-on-morph/developer-resources/dapp-examples-on-morph/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - -Dapp Examples on Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Dapp Examples on Morph

We provide multiple example Dapps for developers, built on our Morph starter template, deployed on the Morph Testnet, and accompanied by corresponding frontends.

-

These examples are very helpful for developers to go through the entire development process on Morph. Below is a brief introduction of the example Dapps and tutorial links.

-
Morph Starter Template

The Morph starter kit helps developers quickly and efficiently, build dApps on the Morph blockchain. It is a comprehensive template for building fullstack dApps.

-

Example Dapp: Building a Decentralized Hotel Booking System on Morph

-

Okido Finance

-

Check the tutorial

-

This guide walks you through the process of building a decentralized hotel booking system on the MorphL2 blockchain using Solidity smart contracts and a React & Wagmi front-end. This system allows hotel owners to add rooms, manage room availability, accept bookings, and receive reviews from guests.

-

Example Dapp: Building a fractionalized real-estate dApp

-

Okido Finance

-

Check the tutorial

-

Imagine being able to invest in a high-value real estate property without needing to shell out a huge amount of money upfront. Sounds pretty appealing, right? This is the magic of fractionalization. By dividing a property into smaller, more affordable shares, fractionalization makes it possible for just about anyone to get in on the real estate action. It’s like turning a luxury mansion into a bunch of reasonably priced slices that you can buy and sell easily, just like stocks.

-

Our project today, Okido Finance, takes this idea and builds a decentralized application (DApp) around it. With Okido Finance, property owners can create shares of their real estate assets and investors can buy these shares using a custom ERC20 token. This not only democratizes real estate investment but also adds a layer of liquidity, making it easier to trade shares and get in or out of investments.

-

In this tutorial, I’ll walk you through building the Okido Finance DApp step by step. We’ll start with setting up the development environment, move on to deploying smart contracts, and finish with designing a user-friendly UI.

-

By the end, you’ll have a solid grasp of how to build a decentralized real estate fractionalization platform. Whether you’re looking to create something similar or just want to learn more about these technologies, you’ll be well-equipped to dive deeper into fractionalization. Let’s get started!

-

Query and Index Smart Contracts on Morph using Goldsky

-

Okido Finance

-

Check the tutorial

-

Picture this: you're a developer with a brand-new smart contract deployed on the Morph. Your next challenge is to efficiently query and retrieve on-chain data for your decentralized application (dApp). That's where subgraphs come in. Subgraphs offer a powerful and flexible way to index and query blockchain data, making it easy to build responsive and data-rich dApps.

-

In this tutorial, we'll walk through deploying a smart contract on the Morph chain and setting up a subgraph to query this contract. We’ll also introduce Goldsky, a tool that makes creating and managing subgraphs a breeze. Let’s get started and see what we can build together!

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node.htm/index.html b/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node.htm/index.html deleted file mode 100644 index e5a35e759..000000000 --- a/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node.html/index.html b/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node.html/index.html deleted file mode 100644 index e5a35e759..000000000 --- a/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node/index.html b/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node/index.html deleted file mode 100644 index 09bdbb281..000000000 --- a/build/docs/build-on-morph/developer-resources/how-to-run-a-morph-node/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -How to Run a Morph Node | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

How to Run a Morph Node

Run a Morph Full Node

-

This guide outlines the steps to start a Morph node. The example assumes the home directory is ~/.morph

-

Hardware requirements

-

Running the morph node requires 2 processes:geth and node.

- -
tip

Due to limitations in the current geth implementation, only archive mode is supported, meaning the storage size will continually increase with produced blocks.

-

Build executable binary

-

Clone morph

-
mkdir -p ~/.morph 
cd ~/.morph
git clone https://github.com/morph-l2/morph.git
-

Currently, we use tag v0.2.0-beta as our beta version.

-
cd morph
git checkout v0.2.0-beta
-

Build Geth

-

Notice: You need C compiler to build geth

-
make nccc_geth
-

Build Node

-
cd ~/.morph/morph/node 
make build
-

Sync from genesis block

-

Config Preparation

-

Download the config files and make data dir

-
cd ~/.morph
wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/holesky/data.zip
unzip data.zip
-

Create a shared secret with node

-
cd ~/.morph
openssl rand -hex 32 > jwt-secret.txt
-

Script to start the process

-

Geth

-
./morph/go-ethereum/build/bin/geth --morph-holesky \
--datadir "./geth-data" \
--http --http.api=web3,debug,eth,txpool,net,engine \
--authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551 \
--authrpc.jwtsecret=./jwt-secret.txt \
--miner.gasprice="100000000" \
--log.filename=./geth.log
-

tail -f geth.log to check if the Geth is running properly, or you can also exeucte the below curl command to check if you are connected to the peer.

-
curl -X POST -H 'Content-Type: application/json' --data 
'{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
localhost:8545

{"jsonrpc":"2.0","id":74,"result":"0x3"}
-

Node

-
./morph/node/build/bin/morphnode --home ./node-data \
--l2.jwt-secret ./jwt-secret.txt \
--l2.eth http://localhost:8545 \
--l2.engine http://localhost:8551 \
--log.filename ./node.log
-

tail -f node.log to check if the node is running properly, and you can also execute the command curl to check your node connection status.

-
curl http://localhost:26657/net_info

{
"jsonrpc": "2.0",
"id": -1,
"result": {
"listening": true,
"listeners": [
"Listener(@)"
],
"n_peers": "3",
"peers": [
{
"node_info": {
"protocol_version": {
"p2p": "8",
"block": "11",
"app": "0"
},
"id": "0fb5ce425197a462a66de015ee5fbbf103835b8a",
"listen_addr": "tcp://0.0.0.0:26656",
"network": "chain-morph-holesky",
"version": "0.37.0-alpha.1",
"channels": "4020212223386061",
"moniker": "morph-dataseed-node-1",
"other": {
"tx_index": "on",
"rpc_address": "tcp://0.0.0.0:26657"
}
},
"is_outbound": true,
-

Check sync status

-

curl http://localhost:26657/status to check the sync status of the node

-
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"node_info": {
"protocol_version": {
"p2p": "8",
"block": "11",
"app": "0"
},
"id": "b3f34dc2ce9c4fee5449426992941aee1e09670f",
"listen_addr": "tcp://0.0.0.0:26656",
"network": "chain-morph-holesky",
"version": "0.37.0-alpha.1",
"channels": "4020212223386061",
"moniker": "my-morph-node",
"other": {
"tx_index": "on",
"rpc_address": "tcp://0.0.0.0:26657"
}
},
"sync_info": {
"latest_block_hash": "71024385DDBEB7B554DB11FD2AE097ECBD99B2AF826C11B2A74F7172F2DEE5D2",
"latest_app_hash": "",
"latest_block_height": "2992",
"latest_block_time": "2024-04-25T13:48:27.647889852Z",
"earliest_block_hash": "C7A73D3907C6CA34B9DFA043FC6D4529A8EAEC8F059E100055653E46E63F6F8E",
"earliest_app_hash": "",
"earliest_block_height": "1",
"earliest_block_time": "2024-04-25T09:06:30Z",
"catching_up": false
},
"validator_info": {
"address": "5FB3D3734640792F14B70E7A53FBBD39DB9787A8",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "rzN67ZJWsaLSGGpNj7HOWs8nrL5kr1n+w0OckWUCetw="
},
"voting_power": "0"
}
}
}
-

The returned "catching_up" indicates whether the node is in sync or not. True means it is in sync. Meanwhile, the returned latest_block_height indicates the latest block height this node synced.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods.htm/index.html b/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods.htm/index.html deleted file mode 100644 index f253d03b9..000000000 --- a/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods.html/index.html b/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods.html/index.html deleted file mode 100644 index f253d03b9..000000000 --- a/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods/index.html b/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods/index.html deleted file mode 100644 index e2c3ca9b5..000000000 --- a/build/docs/build-on-morph/developer-resources/morph-json-rpc-api-methods/index.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - -Morph JSON-RPC API Methods | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Morph JSON-RPC API Methods

Most methods are similar to Ethereum's. For those methods, we recommend you visit Ethereum JSON-RPC API.

-

This page lists some unique methods exclusive to Morph.

-

morph_getBlockByNumber

-

Returns information about a block by block number. In addition, it returns more fields than the standard eth_getBlockByNumber, such as withdrawTrieRoot, batchHash, nextL1MsgIndex and rowConsumption.

-

Parameters

-
    -
  1. QUANTITY|TAG - integer of a block number, or the string "earliest", "latest", "pending", "safe" or "finalized", as in the default block parameter.
  2. -
  3. Boolean - If true it returns the full transaction objects, if false only the hashes of the transactions.
  4. -
-

Returns

-

See JSON-RPC API | ethereum.org, and more fields showing as the blew

-
    -
  • withdrawTrieRoot: DATA, 32 Bytes - the root of the withdraw trie, used to prove the users’ withdrawals.
  • -
  • batchHash: DATA, 32 Bytes - the hash of the latest batch. It indicates the block is a batch point if it is not empty.
  • -
  • nextL1MsgIndex: quantity - the next expected L1 message nonce after this block.
  • -
  • rowConsumption: the rows consumption of this block, which rows are used to generate the ZK Proof based on halo2 schema.
  • -
-

Example

-
// request
curl -X POST --data '{"jsonrpc":"2.0","method":"morph_getBlockByNumber","params":["0x1b4", true],"id":1}'

// Result
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"batchHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x0",
"extraData": "0x",
"gasLimit": "0x989680",
"gasUsed": "0x0",
"hash": "0xbc979055d001fe70ed637edd20e918bc583c84c35372f4cdf04253ec34b99178",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"miner": "0x0000000000000000000000000000000000000000",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"nextL1MsgIndex": "0x0",
"nonce": "0x0000000000000000",
"number": "0x1b4",
"parentHash": "0xff26c60bca2d08d9b0d17431a4c9d80d007dace61fb551bdf7c376d16bc77441",
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"rowConsumption": [
{
"name": "evm",
"row_number": 2
},
{
"name": "state",
"row_number": 4
},
{
"name": "bytecode",
"row_number": 0
},
{
"name": "copy",
"row_number": 4
},
{
"name": "keccak",
"row_number": 1591
},
{
"name": "tx",
"row_number": 0
},
{
"name": "rlp",
"row_number": 0
},
{
"name": "exp",
"row_number": 150
},
{
"name": "mod_exp",
"row_number": 0
},
{
"name": "pi",
"row_number": 0
},
{
"name": "poseidon",
"row_number": 1222
},
{
"name": "sig",
"row_number": 0
},
{
"name": "ecc",
"row_number": 0
},
{
"name": "mpt",
"row_number": 101
}
],
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"size": "0x1fe",
"stateRoot": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",
"timestamp": "0x6619043f",
"totalDifficulty": "0x0",
"transactions": [],
"transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"uncles": [],
"withdrawTrieRoot": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757"
}
}
-

morph_getBlockByHash

-

Returns information about a block by hash.

-

Parameters

-
    -
  • DATA, 32 Bytes - Hash of a block.
  • -
  • Boolean - If true it returns the full transaction objects, if false only the hashes of the transactions.
  • -
-

Returns

-

See morph_getBlockByNumber returns

-

morph_estimateL1DataFee

-

Generates and returns an estimate of how much L1DataFee the transaction will cost.

-

Parameters

-
    -
  1. Object - TransactionArgs -
      -
    • from: DATA, 20 Bytes - (optional) The address the transaction is sent from.
    • -
    -
  2. -
-
    -
  • to: DATA, 20 Bytes - The address the transaction is directed to.
  • -
  • gas: QUANTITY - (optional) Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions.
  • -
  • gasPrice: QUANTITY - (optional) Integer of the gasPrice used for each paid gas.
  • -
  • value: QUANTITY - (optional) Integer of the value sent with this transaction.
  • -
  • input: DATA - (optional) Hash of the method signature and encoded parameters.
  • -
-
    -
  1. QUANTITY|TAG - integer block number, or the string "latest", "earliest", "pending", "safe" or "finalized".
  2. -
-

Returns

-

QUANTITY - integer of the current l1 data fee in wei.

-

Example

-
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"morph_estimateL1DataFee","params":[{see above}],"id":1}'

// Result
{
"id":1,
"jsonrpc": "2.0",
"result": "0x3f4e2160f00"
}
-

morph_getNumSkippedTransactions

-

Get the number of the skipped transactions

-

Parameters

-

None

-

Returns

-

Quantity - integer of the number of the skipped transactions

-

Example

-
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"morph_getNumSkippedTransactions","params":[],"id":1}'

// Result
{
"id":1,
"jsonrpc": "2.0",
"result": "0"
}
-

morph_getSkippedTransactionHashes

-

Get a list of skipped transaction hashes between the two indices provided (inclusive)

-

Parameters

-
    -
  1. from index
  2. -
  3. to index
  4. -
-

Returns

-

Arrays of transaction hashes

-

Example

-
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"morph_getSkippedTransactionHashes","params":[0, 1],"id":1}'

// Result
{
"id":1,
"jsonrpc": "2.0",
"result": [“0x….,”0x….]
}

-

morph_getSkippedTransaction

-

Get a skipped transaction by its hash.

-

Parameters

-

DATA, 32 Bytes - Hash of a transaction.

-

Returns

-

Object - a transaction object(see JSON-RPC API | ethereum.org), an some extended fields:

-
    -
  • sender: DATA, 20 Bytes - address of the sender.
  • -
  • queueIndex: QUANTITY - integer of the L1Message index.
  • -
  • skipReason: string - the skip reason of this transaction.
  • -
  • skipBlockNumber: quantity - integer of the block number where the transaction is skipped.
  • -
  • skipBlockHash: DATA, 32 Bytes - hash of the block where the transaction is skipped.
  • -
-

Example

-
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"morph_getSkippedTransaction","params":[“0x…”],"id":1}'

// Result
{
"id":1,
"jsonrpc": "2.0",
"result": {
"from": "0x59b79a4fc3e0e1646b254fb6804d8f5fa8fae7e0",
"gas": "0x33450",
"gasPrice": "0x0",
"hash": "0x74e13cc35fbeffc9747dd3a5a191b2d62939ee1d1c24651adb89b470f9cf0a36",
"input": "0x8ef1332e00000000000000000000000082c74cd310438d4938799af4c2a29587284a2ca700000000000000000000000053000000000000000000000000000000000000060000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a4232e8748000000000000000000000000f1d598fd5f8367be41b0761696e643ac092b313e000000000000000000000000f1d598fd5f8367be41b0761696e643ac092b313e0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"nonce": "0x0",
"to": "0x5300000000000000000000000000000000000007",
"transactionIndex": "0x0",
"value": "0x0",
"type": "0x7e",
"v": "0x0",
"r": "0x0",
"s": "0x0",
"sender": "0x59b79a4fc3e0e1646b254fb6804d8f5fa8fae7e0",
"queueIndex": "0x0",
“skipReason”: “row consumption overflow”, "skippedBlockHash":"0x61411498b0c241895d44c1bf9a9448ae8584bf434246d680980e8a5edf9ce27c",
"skippedBlockNumber": "0x382e",
“”
}
}
-

morph_getSkippedTransactionHashes

-

Get the batches by index

-

Parameters

-

Quantity - integer of the index of batch

-

Returns

-

Object - RollupBatch

-
    -
  1. version: quantity - the version of the batch
  2. -
  3. hash: DATA: 32 bytes - the batch of this batch
  4. -
  5. parentBatchHeader: bytes - the parent batch header
  6. -
  7. Chunks: arrays of chunk - Chunk: bytes : the chunk bytes of this batch
  8. -
  9. skippedL1MessageBitmap: bytes - the bitmap of the skipped L1Message
  10. -
  11. prevStateRoot: DATA: 32 bytes - the state root at the beginning of this batch
  12. -
  13. postStateRoot: DATA: 32 bytes - the state root at the end of this batch
  14. -
  15. withdrawRoot: DATA : 32 bytes - the withdraw root at the end of this batch
  16. -
  17. sidecar - the side car for the rollup transaction of the blob type
  18. -
  19. signatures - array of object of signature:
  20. -
-
    -
  • version: quantity - the version of sequencers
  • -
  • signer: quantity - the index of the registered sequencer on L1Sequencer
  • -
  • signerPubKey: bytes - the bls public key
  • -
  • signature: the bls signature of the batch signed by this signer
  • -
-

Example

-
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"morph_getRollupBatchByIndex","params":[1],"id":1}'

//Result
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"version": 0,
"hash": "0x559c75fb09451ef19968b6c17c2ed3b3f431ab496d29d0a611970bf3e377ed4f",
"parentBatchHeader": "0x000000000000000000000000000000000000000000000000008b1cfd86e7ac16004ef7aae3e693402764e10471efc9a67c3051a44b2d5a5ad2010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140000000000000000000000000000000000000000000000000000000000000000",
"chunks": [
"0x010000000000000001000000006623829f0000000000000000000000000000000000000000000000000000000000000000000000000098968000000000"
],
"skippedL1MessageBitmap": "0x",
"prevStateRoot": "0x232ce5fc696e7033ec630174d4c78aa157cc13ffba01aba5154bb900ae2b61b3",
"postStateRoot": "0x232ce5fc696e7033ec630174d4c78aa157cc13ffba01aba5154bb900ae2b61b3",
"withdrawRoot": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757",
"sidecar": {
"Blobs": [
[...]
],
"Commitments": [
[...]
],
"Proofs": [
[...]
]
},
"signatures": [
{
"version": 0,
"signer": 0,
"signerPubKey": "0x00000000000000000000000000000000095ad465c2895ee825c7d4f1b60a18734db57d4108369e47c6e3a94ee15846f825c06dad5d98f503bd31ece1d9f94b11000000000000000000000000000000000c5d6ba04bc9b9674dd2acbfc5caed3976c1b8be2ec90a03d78dffe924648b4fba82225aff43c744310c6a60185b75ac000000000000000000000000000000000fce6be001c871a11b9db1c6c15f0a6999de5646941a74486206dc784f0b3ffe11799212f3f44ef754b4a0f1ecf85639000000000000000000000000000000000b2f06634e5ea719682c30911c94dfb560f0b7656b5c34a871ea035e3fe7b041885420f8fe1e251f1cce5cdb7514869e",
"signature": "0x079ff817623be61e3dc48ad755020d3eb37e47697e97394df3707248e5e923d8cb92cc2c788e2e19eb21d878224e3e2a023170f091b979dbdc5ac47e95a1e3e6edf5a91279b3c89e871927370abeefd43430b561b640d91f0f474db8e871f05f"
},
{
"version": 0,
"signer": 1,
"signerPubKey": "0x0000000000000000000000000000000010173aeac4ff317e8e60493f962b91dbd27614e1f6594e17d18a02968bd1fd698b6703092ab8622cd22d6948d9421156000000000000000000000000000000000801aea15697ab4d7a808be45377e4f0d2f54857fdc04031e476402ff16c66a6cbcc5f09a84bf85400c8afbabed006600000000000000000000000000000000015fc71b2c4e81148274e6169c9c9aace8c34fa6030547650242b6c32527dd23a996416e32640bce4f495a0afabc7dbb900000000000000000000000000000000088c4a0dffccc96bce47aef0e176b129457a5f3ae1651b132ddb418e9f7b5850a38c6fec1be6d169eb88dc1619648bf4",
"signature": "0x05784fcf2c9b50b2503282a464106ce6bad4d29798869d2d24dae047eba48662ef66b54f193a4a0aad511cee57b8fc960b44e478cfc0c021a92dba44495ffa9237f4cf4f9865bb8fb95cee9bb32f2b283940bce6d8f4fdfe89bec0c186ecc429"
},
{
"version": 0,
"signer": 2,
"signerPubKey": "0x0000000000000000000000000000000003fd9468a8ceffc1b696874517777ef8bfdc9a1bade95c480ee2624903e648c1caf01c65de5b4fda8876a3a0e8d9f0890000000000000000000000000000000004c02f3609a0f61d12fe737dcbb047d5253bd3ff905b55c0e0f932b476fd77d172a58b72ef0f506407870988dd6038220000000000000000000000000000000017fa5765899f60f7a58f8ccdaaa295cde55992231710672692ba6a71a4faa9572f728f438ded65576a570d57e19fd304000000000000000000000000000000001226138813bde98af3464ed03649d8c731bc4e5cb3d26b53bf7483f4105d18bbb3f19e23905119e156e7d003d2fd125c",
"signature": "0x17d127f711bbfd578f3a9d6c897f6eb4c109f2b12ec16c7976c2146325b718ac06713ecfd168b1abd60d5c4d84b8c75105019a522a96f9d28974dafab640e146abc29322e5550bdb606bcf768c1d7de468fa42e09f2c806bfbedcffd6cfa652c"
},
{
"version": 0,
"signer": 3,
"signerPubKey": "0x00000000000000000000000000000000109bf02a2636c0dc1968b0a50db77251eb090c3e9f51e2a2bc60c4ac72213f41f01f0a34e92c2e0625bd62e28e27edb500000000000000000000000000000000139969bd92522113c0615659874d1fae311ad8152d0584c7b57ffc14927067486dcf86413c5684fccc1163ee2d45c1c1000000000000000000000000000000000f172603f70a0730d100ad6d28bde477195987062e8ade83b82d093935d956ff20ca768c26263577b094f1cb756adc400000000000000000000000000000000010dde3acca00b4ff1b4976500a8f97e92246f43f78cadc95c4993dfc4f4c501c33d42a4bf52587f4931287b59623149c",
"signature": "0x053a7119c0fa920e94c8a1f32441537509f654a673af02179a01ff2c7ac6dee24b22c2f93da4b4a37bb08e2115ef097e00038d0cabdeec2ae1838aa30cb62bff8e528ac200eff0d69fbe8848646972dbb09f4cf3a06c62be0c5e314f25bdbd68"
}
]
}
}

-

morph_GetBlockTraceByNumberOrHash

-

It replays the block and returns the structured blockTrace for rollers.

-

Parameters

-
    -
  1. QUANTITY|TAG - integer of a block number, or the string "earliest", "latest", "pending", "safe" or "finalized", as in the default block parameter. Or DATA, 32 Bytes - Hash of a block.
  2. -
  3. tracerConfig(optional), see debug Namespace | go-ethereum
  4. -
-

Example

-
// Request
{"jsonrpc":"2.0","method":"morph_getBlockTraceByNumberOrHash","params":["latest"],"id":67}

// Result
{
"jsonrpc": "2.0",
"id": 67,
"result": {
"chainID": 53077,
"version": "5.2.0-mainnet",
"coinbase": {
"address": "0xfabb0ac9d68b0b445fb7357272ff202c5651694a",
"nonce": 0,
"balance": "0x2000000000000000000000000000000000000000000000000006b49161ba10",
"keccakCodeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"poseidonCodeHash": "0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864",
"codeSize": 0
},
"header": {
"parentHash": "0xa2b3ee7a3718baeb1b460bc9a479838532c184129d0238b342e1bc9430e15961",
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"miner": "0x0000000000000000000000000000000000000000",
"stateRoot": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",
"transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x0",
"number": "0x31",
"gasLimit": "0x989680",
"gasUsed": "0x0",
"timestamp": "0x6618fa6a",
"extraData": "0x",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"nonce": "0x0000000000000000",
"nextL1MsgIndex": "0x0",
"batchHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"baseFeePerGas": null,
"withdrawalsRoot": null,
"blobGasUsed": null,
"excessBlobGas": null,
"parentBeaconBlockRoot": null,
"hash": "0x65645773fa2056771753878cdf5a1280dff36756096e8f9c1cf51fe66690a448"
},
"transactions": [],
"storageTrace": {
"rootBefore": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",
"rootAfter": "0x1492cc1cebd586279388370e1184960e289d180eb867aa076fbad54aeb0a855b",
"proofs": {
"0x5300000000000000000000000000000000000001": [
"0x09261068d5568cdf6020d6b6703b831fbc4c5928019dcc23606eceaa4cb4befd3a22bd9a05e5f4619cebb743688e2bb2510352fa7b64cee7d6c947e1c8655b3e88",
"0x0912cea39ac19eee30407d6760f267dcaa3456c6ab30a2d7285e1ae726debdc3a228bc075d0a3a84f79e301293ac8c4188d5e58e3a30a49ca058d77784ec477d6c",
"0x092a1073697a898cbfc740c3c327cc3bcc1517b23dd5a44ea7f7e5975a55a615790e69dfcd0c8346b28ff2dffa8db5d0c5b7ed8291eab83be0292051c2dd9a55bc",
"0x0927f8c131313ff2ce0d551273c407fd6e94e5d9f644eab09c4c20b13e00fb5a4b1e00b9701c7f2ac25be7e3fe8ad00ce18f642d07188ff1aacc6d7a1fc44987b5",
"0x090296736b61c7a9c43b7260c2f652d1bc941b882c0a1e71a9b8d86657cc0b9d8e1b6b72e48fe7cfc89ae526ae345245d7f6871db82148a8a0c1c9cf992e177ba2",
"0x090a6feef711af23824583c2bcd54147c2991287ca1fbad2cbb0e9ac2f42dc0c2d1b510d4e26002d7f33e82092a7c28f26ac6cf3f2349eb23e4374ad31f3e289d0",
"0x091a8fc20731feea420de908b0d66e7c53398f53ce5d76054cf3d0e4747ba1896222d288ea2a9d771a19771658abf5a64fd503f4ed277aa8d6f779137a88ea1c8d",
"0x091628b91a861616a64807781ae6aaa549dae9555ef1454a85df052398404f44690f386bb59d106d7a27ff2df1de738c3fae5cf8307f84e07ac6957e3c42fa3f5e",
"0x09220b163279be211a426832f5ff47e0ecadb5bd5eaaf0d62189998fde4e14e62913696e7ffd560b4bf7df760cbfdc330a8c5e7cf15b4e2f60fb9146fd28fe2db7",
"0x08150feb81fe1639286c75adb93e5467d36ad52d9ff00e0c706bc5345f6dcd49500000000000000000000000000000000000000000000000000000000000000000",
"0x081cb430cbc5dd11f62a713fb3656184085386104dc53fc135fb3c56dba49670500000000000000000000000000000000000000000000000000000000000000000",
"0x060c320ff8f6c3907ae6df62a7fe70e2be093390bd246197d5f56b6bce56f513f812fac8f51e3812914c097147217411381b9b2dad76963ef63c261885d3a49223",
"0x0427cfcbd2fe87474008e199ef5bff09273803bbf38032c75a36a7726b3c88f8a205080000000000000000000000000000000000000000000000000aec000000000000000000000000000000000000000000000000000000000000000000000000000000002198e2c16011cd18ef5be82557ea4552a16cc88ed8026d68fc38a18776550fa944107d7c70e67e04d35d77455d5755c94d4897196e4ea9a341c1a6d864a6d4d518d32c9790b7656cb1991e831f76e6d65151cbd1c05aef8cfa7d369ad2076f8400",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
],
"0x530000000000000000000000000000000000000f": [
"0x09261068d5568cdf6020d6b6703b831fbc4c5928019dcc23606eceaa4cb4befd3a22bd9a05e5f4619cebb743688e2bb2510352fa7b64cee7d6c947e1c8655b3e88",
"0x0912cea39ac19eee30407d6760f267dcaa3456c6ab30a2d7285e1ae726debdc3a228bc075d0a3a84f79e301293ac8c4188d5e58e3a30a49ca058d77784ec477d6c",
"0x0910b680ab891bca41519a50437acf0fd6001d3843132362201baeecfefe64861d004b217e8efd3e9ff7f15214f53868836cd5341e524a6862cf599a2c91e066e4",
"0x092bc917a3803350b7b4b99e33f5612886fe67ae2346b7b8a80c4f33ea2b2143c5157889ebd8bd189e158f8e315bf0e81eeaade2de06d9514962a676c2b5c43fe6",
"0x0923373510953f88897d7fcfd22182f41afbc558d2f862f437a31d1919ce2e34c925c888335ad923fc91289b73b7cb65de69d93146389a6af856490d8578203517",
"0x092ea32b06c112526e73d5c4828866500f096d35e79c13d7c1f7aa42afce901bd618bb82398f0bc28770139185439bf42dea1f543e8a0a266399ba43a3dd60f463",
"0x09199e7116f18fc4121b627c11b0ca83bbb70b204098c01db84cd2c27ec3416bd4002ea098b20a57201744454a787c20550c1ffa4145ab218c28906ba3df5ea6cb",
"0x0923bfab6f7b9cc20bae8ca8989ad45df9625cf0c14ee54257ffd31b2593b8385f0861f83d52b30f3b4ea0dbf9aa1b95e8864f2b2032249d6fa43ba22be66e5e82",
"0x0609fd578e322ce608e81c29d820eca5e2d610bf211aa40fbfdfc7bd1327c9c6432a868ae99ff40d43cff3f28ff0655bf467eaa89e3d3a1493203e4abb26099b3b",
"0x0418a86f98026d1a55f6fee616f04d51be16c033651ffaafb0514287ec067d04e805080000000000000000000000000000000000000000000000000aec00000000000000000000000000000000000000000000000000000000000000000000000000000000025f5484cf6758b2d9e10b66230e7ed93fd790931c579d1583b40a25c29b3cc944107d7c70e67e04d35d77455d5755c94d4897196e4ea9a341c1a6d864a6d4d518d32c9790b7656cb1991e831f76e6d65151cbd1c05aef8cfa7d369ad2076f8420530000000000000000000000000000000000000f000000000000000000000000",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
],
"0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": [
"0x09261068d5568cdf6020d6b6703b831fbc4c5928019dcc23606eceaa4cb4befd3a22bd9a05e5f4619cebb743688e2bb2510352fa7b64cee7d6c947e1c8655b3e88",
"0x09132e097dde889d85b8b3309a827f0496c58979f869fe9827851d59f3af8d3bad1db74244979778c4e7c6b56496b5a3f1ee84cd42acacbc6ae3842deb5332b101",
"0x0919474ec6b34f96f735c336cc161ed84fdd3a683fa201b518af5c2c1626f02f4612a08d77db2b9b67c38d89ed19f9ca59dadbd1699d27829f985020f6f3432959",
"0x090dc9f8dd06d98c5a78af9836fc75823e4e2b0c95085c36dc33b8c35f5fc224d319e43044e7ac03d516f20d38f68682109407871d5f07f080c59857789fad1e46",
"0x0907bc083c80445c99e7239f960beabcf360f7a6999ade44323b8401e0ec6842b80c789c2f71e21b35f96a71c66a774edac37ba18b809b8122d9000fbf0f8ac74b",
"0x091e9ddabce6463c4843a7f43ce562b40bd7cc778a539486f6739bf7daf6f14bdf2da1168d26e898c81e03ba275f3474d4172c1f936d272114b87a486ae25a0c7e",
"0x092ebed3e1476b235ef7ee7d5c160d7738aee3a9ecf02754975430203dbe05b7ce1f81e74d1f8a355b7dda2b293a8833c0926df34b6ab6516de484a7c682123e3b",
"0x0700000000000000000000000000000000000000000000000000000000000000000bca6f26c452ec72dc90f8ac79855df88d3b88ce77a5c4ac472eea9ef7b619ae",
"0x0824eb7acc6f05bd88d0aecfb7e170edc0f99384a54657916103d91fad99bf01030000000000000000000000000000000000000000000000000000000000000000",
"0x072449731363c43de43d2516f39791c43a3be1e83edc3432352d81d2d1384a946e159ad10b4c89ff16157cc364c81f6039eeea9a8eb87e4b4700249219e71cc3ef",
"0x0403d2c88868dc8b5f7994604147a8246c48cc905235de980c42c3e78f351f00c5050800000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006b49161ba100000000000000000000000000000000000000000000000000000000000000000c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4702098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b6486420fabb0ac9d68b0b445fb7357272ff202c5651694a000000000000000000000000",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
]
},
"storageProofs": {
"0x5300000000000000000000000000000000000001": {
"0x0000000000000000000000000000000000000000000000000000000000000021": [
"0x0825bcd8ed4a7e39c0f0e835761cda36131dd34f16de95765d2216d997923a52f60e38bf5d7d592ab89df92d87f260b8529d9c466b936b42ad8fbfe576bf97b200",
"0x06216372aa3165a29ee67494a5a9680358be92c254cc5724949e4d52742ba8d57f02a40b5614637fca2783d673559f035f5f5a0588ee27d164bb5375568493200a",
"0x042f683d080c393f5fb2ade2190fd56e8a5e8fa26533acdea8cce25caa236027cc0101000027ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75700",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
]
},
"0x530000000000000000000000000000000000000f": {
"0x0000000000000000000000000000000000000000000000000000000000000001": [
"0x09224baa919e1495600105d8a4446f80cabd9a915d7556e0b5d2956a3ad01e96862b531affe57e7f49ddcfef93ff839a215de0865c985188f99c61838f366e2bbe",
"0x091eb325ae1568060f3957cc990d35e5ef48b7b2bc7979151083abe2d68aabc812162b4d479ff13f2af3f0cfaadc6bccc8622dd980f83c7014e947f50577eedaba",
"0x08015c4fc60a3c6160762783cfc0da7e9d0518e56f0f4f236b7666e1afde43c8f60e867960e703abfccf265c16aceb5c2a092c39248e00fa04f717cf3ca38dfe9e",
"0x080782addd8b48a93860ab4cb45e80c6cc869c1288f09d52cb7dec1f6aab62deb70000000000000000000000000000000000000000000000000000000000000000",
"0x0700000000000000000000000000000000000000000000000000000000000000000f35c10e1893b6065c8ce8ba23fcd841bb168eb35643ca124118a4e44668fab2",
"0x080487bd50c628c019d7858418000d1393427df64c9c103a4229f7b6cb3cdf5ae60000000000000000000000000000000000000000000000000000000000000000",
"0x0700000000000000000000000000000000000000000000000000000000000000001046b31bcd31548fa80d0a9fb9fae45e61112d689f6b9c82958033c0787f1f94",
"0x0805b5be5c8d36bd01ef9c3d10f3d994da611bc1484e9e48f69d2224efeb811b320000000000000000000000000000000000000000000000000000000000000000",
"0x081ebc02f6986209f10fc7d04ba0c4ef196d75ad0a22e786fc7cf789f591e9b26f0000000000000000000000000000000000000000000000000000000000000000",
"0x0700000000000000000000000000000000000000000000000000000000000000002680dd0a6ed49fc1faf7d4ef23a8328de46b8a4c1d86e6553f4940e394673978",
"0x0628658ea3cbfa933d0e4041f9000bcc3393a3536913008ef6e1837ba7053bdec1156a0960a84fa4287f66d18b9c39ab9d403fa6b6dddd126f47758aadcb82e122",
"0x0426049ba6de63003492eb078a01a8aa4f4a0e67f28f0955c2eba9101d5d2eea5001010000000000000000000000000000000000000000000000000000000000000000000700",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
],
"0x0000000000000000000000000000000000000000000000000000000000000002": [
"0x09224baa919e1495600105d8a4446f80cabd9a915d7556e0b5d2956a3ad01e96862b531affe57e7f49ddcfef93ff839a215de0865c985188f99c61838f366e2bbe",
"0x091eb325ae1568060f3957cc990d35e5ef48b7b2bc7979151083abe2d68aabc812162b4d479ff13f2af3f0cfaadc6bccc8622dd980f83c7014e947f50577eedaba",
"0x08015c4fc60a3c6160762783cfc0da7e9d0518e56f0f4f236b7666e1afde43c8f60e867960e703abfccf265c16aceb5c2a092c39248e00fa04f717cf3ca38dfe9e",
"0x04020953ad52de135367a1ba2629636216ed5174cce5629d11b5d97fe733f07dcc0101000000000000000000000000000000000000000000000000000000000000000029d7200000000000000000000000000000000000000000000000000000000000000002",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
],
"0x0000000000000000000000000000000000000000000000000000000000000003": [
"0x09224baa919e1495600105d8a4446f80cabd9a915d7556e0b5d2956a3ad01e96862b531affe57e7f49ddcfef93ff839a215de0865c985188f99c61838f366e2bbe",
"0x07000000000000000000000000000000000000000000000000000000000000000014a36870c64d2edad5a210b41e5bdfd73e7f4201161a755c434a621ffe103cc8",
"0x061c3181dc54d9c120fdc034e9c12d47d19f07bdeb049e492e0e7c5c9d7fe19a4d0e38bf5d7d592ab89df92d87f260b8529d9c466b936b42ad8fbfe576bf97b200",
"0x0406c50541f08911ad149aa545dd3d606f86ee63c751a795c7d57f0d3f85e6bdeb01010000000000000000000000000000000000000000000000000000000000174876e800200000000000000000000000000000000000000000000000000000000000000003",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
]
}
}
},
"executionResults": [],
"withdraw_trie_root": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757",
"startL1QueueIndex": 0
}
}
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker.htm/index.html deleted file mode 100644 index b91d31b13..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker.html/index.html deleted file mode 100644 index b91d31b13..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker/index.html b/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker/index.html deleted file mode 100644 index 689848b4e..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-in-docker/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - -Run a full node with docker | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Run a full node with docker

This guide will help you start a full node running in the docker container using run-morph-node

-

Quick Start

-
note

The instructions outlined below detail the procedure for running a full node on the mainnet. To set up and operate a Holesky node, you need to follow the tutorial on sync node from snapshot.

-
    -
  1. Clone the dockerfile repository
  2. -
-
git clone https://github.com/morph-l2/run-morph-node.git
-
    -
  1. Run the following command
  2. -
-
cd morph-node
make run-node
-

The command make run-node takes the ../mainnet as your node's Home directory by default. There will be two folders in the Home directory named geth-data and node-data, serving as data directories for the execution client and consensus client of the morph ndoe, respectively.

-

This command will also generate the secret-jwt.txt file under Home directory for the authentication during RPC calls between the execution client and consensus client.

-

Advanced Usage

-

With the Quick Start guide above, you can quickly start a node using the default configuration files. However, we also support customizing the node's data directory and parameter settings.

-

Customizing Data Directory

-

The host directory paths that are mounted by the Docker container are specified in the morph-node/.env file.

-
morph-node/.env
// HOME folder for morph node
MORPH_HOME=../mainnet
// Flag indicates the network for execution client.
MORPH_FLAG=morph
// Location of the jwt file for the authentication between clients
JWT_SECRET_FILE=${MORPH_HOME}/jwt-secret.txt
// The entrypoint shell script for start execution client
GETH_ENTRYPOINT_FILE=./entrypoint-geth.sh
// The snapshot name for Morph node
MAINNET_SNAPSHOT_NAME=snapshot-20241218-1

......
-

You have the flexibility to customize the directory paths as per your requirements.

-

Please note that if you have customized the HOME directory of your node, you need to copy the necessary configuration files to this directory. Specifically, you should copy the node-data and geth-data from ./mainnet to your HOME directory.

-
note

For running a testnet node, the morph-node/.env_holesky file should be used instead of the morph-node/.env file.

-

Customizing parameters

-

The default configuration required for mainnet node startup is located in the ./mainnet directory, while the files under ./holesky directory is used for testnet node startup.

-
└── mainnet
├── geth-data
│   └── static-nodes.json
└── node-data
├── config
│   ├── config.toml
│   └── genesis.json
└── data

// for testnet nodes
└── holesky
├── geth-data
│   └── static-nodes.json
└── node-data
├── config
│   ├── config.toml
│   └── genesis.json
└── data
-

If you wish to modify the Geth startup command, you can do so by editing the ./morph-node/entrypoint-geth.sh file. For adjustments to the Tendermint-related configuration parameters, you should modify the node-data/config/config.toml file.

-

Sync node from snapshot

-

We suggest starting your node sync from a snapshot to speed up the process of syncing your node to the latest state.

-

Clone the dockerfile repository

-
git clone https://github.com/morph-l2/run-morph-node.git
-

Acquire the snapshot you need

-

The morph-node/.env configuration file in the repository you just cloned is designed for setting up the Morph node on the mainnet. By default, it is pre-configured to use the latest snapshot.

-

If you need a historical snapshot, you must manually update the SNAPSHOT_NAME in the morph-node/.env file. (Note: For the testnet, the corresponding file is morph-node/.env_holesky.)

-
    -
  • -

    Fetch historical snapshot(Optional):

    -

    The historical snapshots are recorded in snapshot-information

    -
    // ...

    MAINNET_SNAPSHOT_NAME={your expected snapshot name}

    // ...
    -
  • -
  • -

    Execute download and decompress the snapshot for your network:

    -

    Run the following command to download and decompress the snapshot for your network:

    -

    For mainnet:

    -
    cd ./morph-node
    make download-and-decompress-mainnet-snapshot
    -

    For testnet:

    -
    cd ./morph-node
    make download-and-decompress-holesky-snapshot
    -

    The command will assist you in downloading and decompressing the snapshot archive.

    -
  • -
-

Set up the snapshot data

-

After downloading, locate the snapshot by placing the decompressed data files in the correct directory specified by the MORPH_HOME path in your .env file. Ensure the data files align with the node's expected structure to allow seamless synchronization.

-

For example, if the snapshot folder is named snapshot-20241218-1,

-
    -
  • move the directory snapshot-20241218-1/geth to the ${MORPH_HOME}/geth-data directory
  • -
  • move the contents from snapshot-20241218-1/data to the ${NODE_DATA_DIR}/data directory.
  • -
-
mv ./morph-node/snapshot-20241218-1/geth ${MORPH_HOME}/geth-data
mv ./morph-node/snapshot-20241218-1/data/* ${MORPH_HOME}/node-data/data
-

The folder structure will be like

-
└── ${MORPH_HOME}
├── geth-data // data directory for geth
│   └── static-nodes.json
│   └── geth // directory from snapshot/geth
└── node-data // data directory for node
├── config
│   ├── config.toml
│   └── genesis.json
└── data // data directory from snapshot/node
-

4. Run the Node

-

With the snapshot and configuration files ready, navigate to the morph-node folder under your cloned repository, and start the node using the provided command

-
make run-node
-

For testnet, run

-
make run-holesky-node
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host.htm/index.html deleted file mode 100644 index de725a984..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host.html/index.html deleted file mode 100644 index de725a984..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host/index.html b/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host/index.html deleted file mode 100644 index 425dcaf39..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/full-node/run-on-host/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - -Run a full node from source | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Run a full node from source

This guide outlines the steps to start a Morph node. The example assumes the home directory is ~/.morph

-

Hardware requirements

-

Running the morph node requires 2 processes: geth and node.

-
    -
  • -

    Geth:the Morph execution layer which needs to meet the requirements as below

    -
      -
    • Fast CPU with 4+ cores
    • -
    • 32GB+ RAM
    • -
    • High-performance SSD with at least 1TB of free space
    • -
    • 25+ MBit/sec download Internet service
    • -
    -
  • -
  • -

    Node:the Morph consensus layer embedded tendermint which needs to meet the tendermint hardware requirements.

    -
  • -
-
tip

According to limitations of the current geth implementation, we only support archive mode for launching a Geth. So the storage size of Geth will constantly increase along with blocks produced.

-

Build executable binary

-

Clone morph

-
mkdir -p ~/.morph 
cd ~/.morph
git clone https://github.com/morph-l2/morph.git
-

Next, you need to check out a release version. You can find the available release versions on the Morph Releases page. It is recommended to use the latest release version.

-
cd morph
git checkout ${RELEASE_VERSION}
-

Build Geth

-

Notice: You need C compiler to build geth

-
make geth
-

Build Node

-
cd ~/.morph/morph/node 
make build
-

Config Preparation

-
    -
  1. Download the config files and make data dir
  2. -
-
cd ~/.morph

## mainnet
wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/mainnet/data.zip

## testnet
wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/holesky/data.zip

unzip data.zip
-
    -
  1. Create a shared secret with node
  2. -
-
cd ~/.morph
openssl rand -hex 32 > jwt-secret.txt
-

Start Node

-

Mainnet nodes support synchronization from either the genesis block or a snapshot block, while testnet nodes only support synchronization from snapshots.

-

Sync from snapshot(Recommended)

-

You should build the binary and prepare the config files in the above steps first, then download the snapshot.

-

Download snapshot

-

Download the latest snapshot corresponding to either the mainnet or testnet network.

-

A complete record of historical snapshots is available here. Below is an example of how to download a snapshot

-
## mainnet
wget -q --show-progress https://snapshot.morphl2.io/mainnet/${SNAPSHOT_NAME}.tar.gz
tar -xzvf ${SNAPSHOT_NAME}.tar.gz

## holesky
wget -q --show-progress https://snapshot.morphl2.io/holesky/${SNAPSHOT_NAME}.tar.gz
tar -xzvf ${SNAPSHOT_NAME}.tar.gz
-

Extracting snapshot data to the data directory your node points to

-
mv ${SNAPSHOT_NAME}/geth geth-data
mv ${SNAPSHOT_NAME}/data node-data
-

Start execution client

-
Script for starting mainnet geth
./morph/go-ethereum/build/bin/geth --morph \
--datadir "./geth-data" \
--http --http.api=web3,debug,eth,txpool,net,engine \
--authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551 \
--authrpc.jwtsecret=./jwt-secret.txt \
--log.filename=./geth.log

-
note

For testnet, using --morph-holesky instead

-

tail -f geth.log to check if the Geth is running properly, or you can also execute the curl command below to check if you are connected to the peer.

-
curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}' localhost:8545

{"jsonrpc":"2.0","id":74,"result":"0x6"}
-

Start consensus client

-
 ./morph/node/build/bin/morphnode --home ./node-data \
--l2.jwt-secret ./jwt-secret.txt \
--l2.eth http://localhost:8545 \
--l2.engine http://localhost:8551 \
--log.filename ./node.log
-

tail -f node.log to check if the node is running properly, and you can also execute the command curl to check your node connection status.

-
curl http://localhost:26657/net_info

{
"jsonrpc": "2.0",
"id": -1,
"result": {
"listening": true,
"listeners": [
"Listener(@)"
],
"n_peers": "7",
"peers": [
{
"node_info": {
"protocol_version": {
"p2p": "8",
"block": "11",
"app": "0"
},
"id": "b4ac59de479b0251d441ca0385429bc21713a208",
"listen_addr": "tcp://0.0.0.0:26610",
"network": "chain-morph-mainnet",
"version": "0.37.0-alpha.1",
"channels": "402021222338606100",
"moniker": "morph-dataseed-node-0",
"other": {
"tx_index": "on",
"rpc_address": "tcp://0.0.0.0:26657"
}
},
"is_outbound": true,
.......
-

Check sync status

-

curl http://localhost:26657/status to check the sync status of the node

-
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"node_info": {
"protocol_version": {
"p2p": "8",
"block": "11",
"app": "0"
},
"id": "cde0d7cecfe9c82244c1dfa72c951759d02f1024",
"listen_addr": "tcp://0.0.0.0:26656",
"network": "chain-morph-mainnet",
"version": "0.37.0-alpha.1",
"channels": "402021222338606100",
"moniker": "my-morph-node",
"other": {
"tx_index": "on",
"rpc_address": "tcp://0.0.0.0:26657"
}
},
"sync_info": {
"latest_block_hash": "B4C0E514CD984B101FA89D7DB48C1FE18384F64C25E5565F618A5FE2851C42A9",
"latest_app_hash": "",
"latest_block_height": "2410",
"latest_block_time": "2024-10-21T08:49:09.952573291Z",
"earliest_block_hash": "0D66D908033DA7A3F5A95179B8D64261EDD887B944E59502A1C9EFBC1C9C4EF5",
"earliest_app_hash": "",
"earliest_block_height": "1",
"earliest_block_time": "2024-10-21T06:00:00Z",
"catching_up": false
},
"validator_info": {
"address": "B7395023EFF719D0EE15AD96FFC7F69B6B9E52EF",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "tZI+wTExwoKeyUFgdSSYmf4sAYp4BhJu13UgPy1wDOc="
},
"voting_power": "0"
}
}
}
-

The returned "catching_up" indicates whether the node is in sync or not. True means it is in sync.

-

The returned "latest_block_height" indicates the latest block height this node synced.

-

Sync from genesis block

-

Start the execution client and consensus client directly without downloading snapshot.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/prune-state.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/prune-state.htm/index.html deleted file mode 100644 index e8e097bdc..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/prune-state.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/prune-state.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/prune-state.html/index.html deleted file mode 100644 index e8e097bdc..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/prune-state.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/prune-state/index.html b/build/docs/build-on-morph/developer-resources/node-operation/prune-state/index.html deleted file mode 100644 index 7f4b92e28..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/prune-state/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -Prune State | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Prune State

The performance of a full node will degrade when the storage size reaches a high volume. We suggest that the fullnode always keep light storage by pruning the storage.

-

How to Prune

-
    -
  1. Stop the node, including the consensus client(morphnode) and the execution client(geth)
  2. -
  3. Run nohup geth snapshot prune-zk-state --datadir "$GETH_DB_DIR" > prune.log &. It will take 5~7 hours to finish.
  4. -
  5. Start the node once it is done.
  6. -
-

The hardware is important, make sure the SSD meets: solid-state drive(SSD), 8k IOPS, 500 MB/S throughput, read latency < 1ms.

-
note

To prune a Geth node at least 200 GB of free disk space is recommended. This means pruning cannot be used to save a hard drive that has been completely filled. A good rule of thumb is to prune before the node fills ~80% of the available disk space.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker.htm/index.html deleted file mode 100644 index c2be0b845..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker.html/index.html deleted file mode 100644 index c2be0b845..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker/index.html b/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker/index.html deleted file mode 100644 index 63bdbfbb7..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-docker/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - -Upgrade node running from docker | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Upgrade node running from docker

Docker Images

- -

If You Are Using a Custom Setup

-

If you are running the Docker container for the node using a custom setup, you will need to manually update the Docker image version and restart the container.

- -

For those using the Run a full node with docker to start the container, follow these steps to upgrade your node.

-

Step1: Update docker images version

-
    -
  • -

    Check the latest docker image version from Docker Images

    -
  • -
  • -

    Update the docker image version on morph-node/docker-compose.yml

    -
    morph-node/docker-compose.yml
    services:  
    geth:
    container_name: morph-geth
    image: ghcr.io/morph-l2/go-ethereum:{update_version} ## Specify the Geth image version
    restart: unless-stopped

    # ...

    node:
    container_name: morph-node
    depends_on:
    geth:
    condition: service_started
    image: ghcr.io/morph-l2/node:{update_version} ## Specify the Node image version

    # ...

    -
    tip

    Optionally update the image version for go-ethereum, node, or both, depending on your requirements.

    -
  • -
-

Step2: Restart the container

-

Use the following commands to stop and restart the container. The updated Docker images will be pulled automatically.

-
// stop the docker containers
make stop-node

// start the docker container, it will automatically pull the updated docker images
make run-node
-

If you are running a validator, use these commands instead:

-
make stop-validator
make run-validator
-
note

Ensure that the startup parameters for the Docker container remain consistent with your previous configuration. If you previously used a custom setup, verify that the configuration and directory paths match your earlier setup. For details, please refer to Advanced Usage

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host.htm/index.html deleted file mode 100644 index 7dc12e64b..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host.html/index.html deleted file mode 100644 index 7dc12e64b..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host/index.html b/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host/index.html deleted file mode 100644 index 6d1369b5b..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/upgrade-node/upgrade-node-host/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - -Upgrade node running on the host | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Upgrade node running on the host

Upgrading the node is straightforward. Simply install the new version of the node executable file and replace the previous version. Then, stop the currently running node and restart it with the updated version. Node will automatically use the data of your old node and sync the latest blocks that were mined since you shut down the old software.

-

Running the node requires two binary files: morphnode and geth. Choose to upgrade the binary files according to your specific needs.

-

Step1: Compile the new version of the code

-

You can have the released code version from Morph release page.

-
git clone https://github.com/morph-l2/morph.git

// checkout the latest version of the source code you need
git checkout ${latestVersion}

// install geth
make geth

// install morphnode
cd ./morph/node && make build
-

If you only update the Geth version

-

Check the Geth version from go-ethereum

-
git clone https://github.com/morph-l2/go-ethereum.git

git checkout ${latestVersion}

// install geth
make geth
-

Step2: Stop nodes

-
# stop morphnode process
pid=`ps -ef | grep morphnode | grep -v grep | awk '{print $2}'`
kill $pid

# stop geth process
pid=`ps -ef | grep geth | grep -v grep | awk '{print $2}'`
kill $pid
-

Step3: Restart

-

Make sure to use the same start-up command you used before the upgrade

-
## start geth
./morph/go-ethereum/build/bin/geth --morph \
--datadir "./geth-data" \
--http --http.api=web3,debug,eth,txpool,net,engine \
--authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551 \
--authrpc.jwtsecret=./jwt-secret.txt \
--log.filename=./geth.log

## start node
./morph/node/build/bin/morphnode --home ./node-data \
--l2.jwt-secret ./jwt-secret.txt \
--l2.eth http://localhost:8545 \
--l2.engine http://localhost:8551 \
--log.filename ./node.log
-
note

For holesky network, use --morph-holesky instead

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker.htm/index.html deleted file mode 100644 index bdc24f740..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker.html/index.html deleted file mode 100644 index bdc24f740..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker/index.html b/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker/index.html deleted file mode 100644 index a1c3106e2..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-in-docker/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Run a validator with docker | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Run a validator with docker

This guide will help you start a validator node running in the docker container using run-morph-node

-

Quick Start

-
info

The following quick start steps are only applicable for running a validator node on the mainnet. To set up and operate a Holesky validator node, please refer to Sync from Snapshot.

-
note

Starting with the Quick Start initiates synchronization from height 0, which can be extremely time-consuming to reach the latest state. We highly recommend using the Sync from Snapshot approach outlined below for a faster and more efficient startup.

-

1. Clone the dockerfile repository

-
git clone https://github.com/morph-l2/run-morph-node.git
-

2. Configure morph-node/.env

-

The morph-node/.env file defines the environment variables required for deploying a validator node. Below is an example configuration:

-
morph-node/.env
// General settings
MORPH_HOME=../mainnet
MORPH_FLAG=morph
JWT_SECRET_FILE=${MORPH_HOME}/jwt-secret.txt
GETH_ENTRYPOINT_FILE=./entrypoint-geth.sh

// Environment variables for validator node
L1_CHAIN_ID=1
L1_ETH_RPC=${your_layer1_execution_client_rpc_url}
L1_BEACON_CHAIN_RPC=${your_layer1_beacon_client_rpc_url}
L1MESSAGEQUEUE_CONTRACT=0x3931ade842f5bb8763164bdd81e5361dce6cc1ef
ROLLUP_CONTRACY=0x759894ced0e6af42c26668076ffa84d02e3cef60
DERIVATION_START_HEIGHT=20996776
L1_MSG_START_HEIGHT=20996776
-

Default Directory: -For running a validator on the mainnet, the MORPH_HOME directory defaults to ../mainnet. You can customize this path to suit your setup.

-

Layer1 RPC URLs: -Ensure you provide the correct RPC URLs for the Layer 1 execution client (L1_ETH_RPC) and the beacon chain client (L1_BEACON_CHAIN_RPC). These URLs are essential for the validator to fetch rollup batches and maintain synchronization.

-

3. Run the following command

-
cd morph-node
make run-validator
-

Sync from snapshot

-

We recommend synchronizing blocks using snapshot data to reduce the time required for block synchronization. This approach allows you to start the node from a specific block height, significantly reducing the time needed to reach the latest state.

-

1. Clone the dockerfile repository

-
git clone https://github.com/morph-l2/run-morph-node.git
-

2. Download the Snapshot

-

The morph-node/.env configuration file in the repository you just cloned is designed for setting up the Morph node on the mainnet. By default, it is pre-configured to use the latest snapshot.

-

If you need a historical snapshot, you must manually update the SNAPSHOT_NAME in the morph-node/.env file. (Note: For the testnet, the corresponding file is morph-node/.env_holesky.)

-

You can find the historical snapshot names from Snapshot Information.

-
// ...

MAINNET_SNAPSHOT_NAME={your expected snapshot name}

// ...
-

Run the following command to download and decompress the snapshot for your network:

-

For the mainnet:

-
make download-and-decompress-mainnet-snapshot
-

For the testnet:

-
make download-and-decompress-holesky-snapshot
-

3. Set up the snapshot

-

After downloading, locate the snapshot by placing the extracted data files in the correct directory specified by the MORPH_HOME path in your morph-node/.env file. Ensure the data files align with the node's expected structure to allow seamless synchronization.

-

For example, if the snapshot folder is named snapshot-20241218-1,

-
    -
  • move the directory snapshot-20241218-1/geth to the ${MORPH_HOME}/geth-data directory.
  • -
  • move the contents from snapshot-20241218-1/data to the ${NODE_DATA_DIR}/data directory.
  • -
-
mv ./morph-node/snapshot-20241218-1/geth ${MORPH_HOME}/geth-data
mv ./morph-node/snapshot-20241218-1/data/* ${MORPH_HOME}/node-data/data
-

The folder structure will be like

-
└── ${MORPH_HOME}
├── geth-data // data directory for geth
│   └── static-nodes.json
│   └── geth // directory from snapshot/geth
└── node-data // data directory for node
├── config
│   ├── config.toml
│   └── genesis.json
└── data // data directory from snapshot/node
-

4. Update the Environment Variables

-

Before running the node, update the DERIVATION_START_HEIGHT and L1_MSG_START_HEIGHT variables in the morph-node/.env file (or .env_holesky for the testnet).

-

Refer to snapshot-information for the specific values of the configuration heights. Ensure that the corresponding height values match the snapshot version you are configuring.

-
// ...
MAINNET_SNAPSHOT_NAME={your expected snapshot name}

// ...
DERIVATION_START_HEIGHT={the expected start height match the snapshot}
L1_MSG_START_HEIGHT={the expected start height match the snapshot}

-

5. Run the Validator

-

With the snapshot and configuration files ready, navigate to the morph-node folder under your cloned repository, and start the node using the provided command

-
cd morph-node
make run-validator

// or for testnet
cd morph-node
make run-holesky-validator
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host.htm/index.html b/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host.htm/index.html deleted file mode 100644 index 27ce5fa98..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host.html/index.html b/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host.html/index.html deleted file mode 100644 index 27ce5fa98..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host/index.html b/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host/index.html deleted file mode 100644 index 3b7775e20..000000000 --- a/build/docs/build-on-morph/developer-resources/node-operation/validator-node/run-on-host/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -Run a validator from source | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Run a validator from source

Run a Morph Validator

-

This guide describes the approach to running a Morph validator node. If you are unfamiliar with the validator duties, please refer to our optimistic zkEVM design.

-

Create the folder ~/.morph as our home directory for this example.

-

Build executable binary

-

Clone Morph

-
mkdir -p ~/.morph 
cd ~/.morph
git clone https://github.com/morph-l2/morph.git
-

Next, you need to check out a release version. You can find the available release versions on the Morph Releases page. It is recommended to use the latest release version.

-
cd morph
git checkout ${RELEASE_VERSION}
-

Build Geth

-

Notice: You need C compiler to build geth

-
make geth
-

Build Node

-
cd ~/.morph/morph/node 
make build
-

Sync from the snapshot

-

Config Preparation

-
    -
  1. Download the config files and make data dir
  2. -
-
cd ~/.morph

## mainnet
wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/mainnet/data.zip

## testnet
wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/holesky/data.zip

unzip data.zip
-
    -
  1. Create a shared secret with node
  2. -
-
cd ~/.morph
openssl rand -hex 32 > jwt-secret.txt
-

Download snapshot

-

Download the latest snapshot corresponding to either the mainnet or testnet network.

-

A complete record of historical snapshots is available here. Below is an example of how to download a snapshot

-
## mainnet
wget -q --show-progress https://snapshot.morphl2.io/mainnet/${SNAPSHOT_NAME}.tar.gz
tar -xzvf ${SNAPSHOT_NAME}.tar.gz

## holesky
wget -q --show-progress https://snapshot.morphl2.io/holesky/${SNAPSHOT_NAME}.tar.gz
tar -xzvf ${SNAPSHOT_NAME}.tar.gz
-

Extracting snapshot data to the data directory your node points to

-
mv ${SNAPSHOT_NAME}/geth geth-data
mv ${SNAPSHOT_NAME}/data node-data
-

Script to start the process

-

Geth

-
Script for starting mainnet geth
./morph/go-ethereum/build/bin/geth --morph \
--datadir "./geth-data" \
--http --http.api=web3,debug,eth,txpool,net,engine \
--authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551 \
--authrpc.jwtsecret=./jwt-secret.txt \
--log.filename=./geth.log

-
note

For testnet, using --morph-holesky instead

-

tail -f geth.log to check if the Geth is running properly, or you can also execute the below curl command to check if you are connected to the peer.

-
curl --location --request POST 'localhost:8545/' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc":"2.0",
"method":"eth_blockNumber",
"id":1
}'

{"jsonrpc":"2.0","id":1,"result":"0x148e39"}
-

Node

-

You need to set the DERIVATION_START_HEIGHT and L1_MSG_START_HEIGHT variables correctly to match the snapshot version you downloaded. From the snapshot information, you can find the corresponding height values.

-
cd ~/.morph

## mainnet
export CHAIN_ID=1
export L1MESSAGEQUEUE_CONTRACT=0x3931ade842f5bb8763164bdd81e5361dce6cc1ef
export ROLLUP=0x759894ced0e6af42c26668076ffa84d02e3cef60
export DERIVATION_START_HEIGHT=${The height matches your snapshot}
export L1_MSG_START_HEIGHT=${The height matches your snapshot}

## start node
./morph/node/build/bin/morphnode --validator --home ./node-data \
--l2.jwt-secret ./jwt-secret.txt \
--l2.eth http://localhost:8545 \
--l2.engine http://localhost:8551 \
--l1.rpc $(Ethereum RPC) \
--l1.beaconrpc $(Ethereum beacon chain RPC) \
--l1.chain-id ${CHAIN_ID} \
--validator.privateKey 0x0000000000000000000000000000000000000000000000000000000000000001 \
--sync.depositContractAddr ${L1MESSAGEQUEUE_CONTRACT} \
--sync.startHeight ${L1_MSG_START_HEIGHT} \
--derivation.rollupAddress ${ROLLUP} \
--derivation.startHeight ${DERIVATION_START_HEIGHT} \
--derivation.fetchBlockRange 200 \
--log.filename ./node.log
-

For holesky network, using

-
export CHAIN_ID=17000 
export L1MESSAGEQUEUECONTRACT=0x778d1d9a4d8b6b9ade36d967a9ac19455ec3fd0b
export ROLLUP=0xd8c5c541d56f59d65cf775de928ccf4a47d4985c
export DERIVATION_START_HEIGHT=${The height matches your snapshot}
export L1_MSG_START_HEIGHT=${The height matches your snapshot}
-
note

Note the validator.privateKey is of no use to you. It is used to send challenges when the state root is found to be incorrect. However, we do not currently accept challenges from third party addresses. But it is also a required parameter for the morphnode command, so we give a 0x00... 1.

-

Check Status

-

If your node is successfully started, you will see the following response:

-
I[2024-06-06|15:57:35.216] metrics server enabled                       module=derivation host=0.0.0.0 port=26660
derivation node starting
ID> 24-06-06|15:57:35.216] initial sync start module=syncer msg="Running initial sync of L1 messages before starting sequencer, this might take a while..."
I[2024-06-06|15:57:35.242] initial sync completed module=syncer latestSyncedBlock=1681622
I[2024-06-06|15:57:35.242] derivation start pull rollupData form l1 module=derivation startBlock=1681599 end=1681622
I[2024-06-06|15:57:35.244] fetched rollup tx module=derivation txNum=8 latestBatchIndex=59201
I[2024-06-06|15:57:35.315] fetch rollup transaction success module=derivation txNonce=8764 txHash=0x5fb8a98472d1be73be2bc6be0807b9e0c68b7ba14a648c8a17bdaff7b26eb923 l1BlockNumber=1681599 firstL2BlockNumber=1347115 lastL2BlockNumber=1347129
I[2024-06-06|15:57:35.669] new l2 block success module=derivation blockNumber=1347115
-

You can use the following command to check the newest block height to make sure you are aligned.

-
curl --location --request POST 'localhost:8545/' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc":"2.0",
"method":"eth_blockNumber",
"id":1
}'
{"jsonrpc":"2.0","id":1,"result":"0x148e39"}
-

Make sure you check the validator status constantly, if you find response

-
[2024-06-14|16:43:50.904] root hash or withdrawal hash is not equal    originStateRootHash=0x13f91d1c272e48e2d864ce7bfb421506d5b2a04def64d45c75391cdcdd69cd78 deriveStateRootHash=0x27e10420c0e34676a7d75c4189d7ccd1c3407cc8fd0b3eafb01c15e250a1215f batchWithdrawalRoot=0xa3e4a7cf45c7591a6bd9868f1fa7485ae345f10067acaade5f5b07d418b2e172 deriveWithdrawalRoot=0xa3e4a7cf45c7591a6bd9868f1fa7485ae345f10067acaade5f5b07d418b2e172
-

This means your validators find inconsistent between sequencer submission and your own observation.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction.htm/index.html deleted file mode 100644 index 9c674b951..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction.html/index.html deleted file mode 100644 index 9c674b951..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction/index.html deleted file mode 100644 index a5a5979e0..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/account-abstraction/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -Account Abstraction | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence.htm/index.html deleted file mode 100644 index c09b02aac..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence.html/index.html deleted file mode 100644 index c09b02aac..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence/index.html deleted file mode 100644 index f222e8f74..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/artificial-intelligence/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -Artificial Intelligence | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer.htm/index.html deleted file mode 100644 index b8e025cdd..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer.html/index.html deleted file mode 100644 index b8e025cdd..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer/index.html deleted file mode 100644 index 4bee41997..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/block-explorer/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - -Block Explorer | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services.htm/index.html deleted file mode 100644 index 0cc1f2d1b..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services.html/index.html deleted file mode 100644 index 0cc1f2d1b..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services/index.html deleted file mode 100644 index b76f22e65..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-indexing-services/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -Blockchain Indexing Services | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Blockchain Indexing Services

Goldsky

-

goldsky

-

We have partnered with Goldsky to provide indexing and subgraph services for Morph Holesky and Morph Mainnet.

-

Goldsky also allow us to grant selected developers with free subgraph services now. If you want to deploy a subgraph with Goldsky, please raise a ticket in our Discord to let us know how we can help.

-

For more information, please refer to their documentation.

-

Envio

-

envio

-

Envio is a modern, multi-chain EVM blockchain indexing framework speed-optimized for querying real-time and historical data on Morph Holesky and Morph Mainnet.

-

Designed with a core focus on delivering superior performance and seamless developer experience, Envio empowers the next generation of consumer apps.

-

The Quickstart allows you to instantly autogenerate a basic indexer and query your smart contract data on Morph. This is the quickest way to get going and likely the starting point for most developers.

-

For more information, please refer to their documentation.

-

Click here for live indexer examples to be inspired.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles.htm/index.html deleted file mode 100644 index 431623532..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles.html/index.html deleted file mode 100644 index 431623532..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles/index.html deleted file mode 100644 index 933aab954..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/blockchain-oracles/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -Blockchain Oracles | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability.htm/index.html deleted file mode 100644 index ced85577b..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability.html/index.html deleted file mode 100644 index ced85577b..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability/index.html deleted file mode 100644 index a0fbea3fd..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/cross-chain-interoperability/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -Cross Chain Interoperability | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services.htm/index.html deleted file mode 100644 index f32710516..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services.html/index.html deleted file mode 100644 index f32710516..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services/index.html deleted file mode 100644 index 36d322e4a..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/decentralized-naming-services/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -Decentralized Naming Services | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Decentralized Naming Services

SpaceID

-

Space ID

-

Space ID offers a universal namespace for blockchain, enabling users to register and manage domain names across different blockchains. It enhances cross-chain interoperability and simplifies user identification across the Web3 ecosystem. This project supports a broad range of applications, from crypto trading to token lending and NFT minting, showcasing a versatile approach to decentralized digital identities.

-

Space ID has launched the .mph domain specific for Morph. If you are looking for integration, please refer to this doc

-

The Space ID .mph domain integration

-

How SpaceID works

-

SPACE ID aims to create a universal name service network that connects decentralized identities with the physical and digital worlds. It is progressing toward becoming a comprehensive digital identity solution for Web3. Read the details here

-

Key features of SpaceID

-

Multi-Chain Name Service

-

Among the top priorities of SPACE ID is supporting more blockchains and top-level domains (TLDs). Unlike SPACE ID 1.0, whose main emphasis was on .bnb Name Service, SPACE ID 2.0 instead focuses on multi-chain name service. SPACE ID has reached out to various blockchains for partnership discussions, and expects its ecosystem to flourish with time.

-

Web3 Name SDK & API

-

SPACE ID aims to streamline web3 services through the use of a single SDK to assist in the building of DApps. This saves developers time, since they don’t have to work with multiple protocols and be encumbered with issues of blockchain incompatibility. This vision is being realized by adding an all-in-one API over the SDK, allowing current and future partners to seamlessly integrate their web3 services with their unified Web3 Name SDK.

-

Benefits of DNS

-
    -
  • Simplified Address Management: Users can use easy-to-remember names instead of long hexadecimal addresses, reducing the risk of errors in transactions.
  • -
  • Interoperability: SpaceID names can point to various types of addresses and resources, supporting multiple blockchain networks and off-chain data.
  • -
  • Decentralization: SpaceID is built on blockchain, ensuring that no single entity controls the naming system, which enhances security and censorship resistance.
  • -
  • Flexibility: Domain owners have full control over their domains, including the ability to create subdomains, update addresses, and manage metadata.
  • -
-

Use Case of SpaceID

-
    -
  • Cryptocurrency Wallets: Users can receive payments using simple names instead of complex addresses.
  • -
  • Decentralized Websites: SpaceID names can point to Greenfield content, enabling decentralized websites.
  • -
  • Identity Management: SpaceID can be used as part of a decentralized identity system, linking a user’s SpaceID to their decentralized identifiers and attestations.
  • -
  • DApps and Smart Contracts: Developers can use SpaceID to provide human-readable names for their smart contracts and decentralized applications, improving user experience.
  • -
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services.htm/index.html deleted file mode 100644 index f131652b1..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services.html/index.html deleted file mode 100644 index f131652b1..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services/index.html deleted file mode 100644 index 0dbf1d979..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/rpc-services/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -RPC Services | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

RPC Services

Quicknode

-

QuickNode is transforming blockchain infrastructure and tooling by simplifying web3 development and providing high-performance access to Morph.

-

Developers in the Morph ecosystem are now eligible for free QuickNode credits/discounts!

-

Read more about what you can get here:

-

Quicknode Partnership

-

QuickNode

-

Tenderly

-

Tenderly is a full-stack Web3 infrastructure – node RPC, dev environments & exploration tools.

-

Build & scale with ease. Get started here

-

tenderly

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet.htm/index.html deleted file mode 100644 index 66da84069..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet.html/index.html deleted file mode 100644 index 66da84069..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet/index.html deleted file mode 100644 index b6fcc59e7..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/safe-multi-signature-wallet/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -Safe Multi-Signature Wallet | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Safe Multi-Signature Wallet

What is Morph Safe?

-

safemultisig

-

Morph Safe is a fork managed by the Morph team in collaboration with Protofire, an official partner of the Safe team. It is a multi-signature smart contract wallet, which means it requires a minimum number of signatures to approve a transaction before it can occur.

-

For example, if your business has three main stakeholders, you can configure the wallet to require approval from either two out of three or all three individuals before a transaction can proceed. This security measure ensures that no single person can compromise the funds.

-

In addition to robust security, Morph Safe offers complete self-custody over funds. The smart contract deployed for the wallet has full control over the wallet's contents and does not rely on any trusted external party for execution.

-

To create your Morph Mainnet Safe wallet click here.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding.htm/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding.htm/index.html deleted file mode 100644 index 6a82f049a..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding.html/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding.html/index.html deleted file mode 100644 index 6a82f049a..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding/index.html b/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding/index.html deleted file mode 100644 index d0b229199..000000000 --- a/build/docs/build-on-morph/developer-resources/use-ecosystem-developer-tools/user-onboarding/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -User Onboarding | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

User Onboarding

-

Reown (prev. known as WalletConnect)

-

Reown gives developers the tools to build user experiences that make digital ownership effortless, intuitive, and secure.

-

Reown has two major product offerings, they are, AppKit and WalletKit.

-

AppKit

-

AppKit is a powerful, free, and fully open-source SDK for developers looking to integrate wallet connections and other Web3 functionalities into their apps on any EVM and non-EVM chain. In just a few simple steps, you can provide your users with seamless wallet access, one-click authentication, social logins, and notifications—streamlining their experience while enabling advanced features like on-ramp functionality, in-app token swaps and smart accounts.

-

WalletKit

-

WalletKit is a robust, open-source SDK designed to empower seamless wallet connections and interactions across any blockchain. With WalletKit, you can offer your users a simple and secure way to connect with thousands of apps, enabling features like one-click authentication, secure transaction signing, and streamlined wallet address verification. Its chain-agnostic design ensures effortless multi-chain support, eliminating the need for complex integrations while delivering unmatched connectivity and security.

-

To summarize, AppKit is for Web3 applications and WalletKit is for Web3 wallets.

-

You will be able to use Reown AppKit to power end-to-end wallet interactions on your Web3 app deployed on Morph.

-

Some links to learn more about Reown:

-
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/intro.htm/index.html b/build/docs/build-on-morph/intro.htm/index.html deleted file mode 100644 index 221596c3f..000000000 --- a/build/docs/build-on-morph/intro.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/intro.html/index.html b/build/docs/build-on-morph/intro.html/index.html deleted file mode 100644 index 221596c3f..000000000 --- a/build/docs/build-on-morph/intro.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/intro/index.html b/build/docs/build-on-morph/intro/index.html deleted file mode 100644 index 4e21dd555..000000000 --- a/build/docs/build-on-morph/intro/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - -Developer Docs | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Developer Docs

Welcome to Morph’s Developer Docs!

-

Are you eager to build applications on Morph but unsure where to start?

-

You're in the right place – we've got you covered!

-

devintro

-

As the first optimistic zkEVM Ethereum Layer 2 solution, Morph is 100% EVM compatible.

-

Building on morph is just like building on Ethereum. If you’re experienced in Ethereum development, you'll find your existing code, tooling, and dependencies are fully compatible with Morph.

-

What's next

-

Depending on what do you need

- -

Engage in Our Developer Community

-

We're actively enhancing our network with more integrations and support infrastructure, progressing towards our Mainnet release.

-

Join our growing developer community. You can find us on Discord, join our discussion forum, or follow our progress on Twitter.

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/CrossChainMessenger.htm/index.html b/build/docs/build-on-morph/sdk/classes/CrossChainMessenger.htm/index.html deleted file mode 100644 index ba5f01f9c..000000000 --- a/build/docs/build-on-morph/sdk/classes/CrossChainMessenger.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/CrossChainMessenger.html/index.html b/build/docs/build-on-morph/sdk/classes/CrossChainMessenger.html/index.html deleted file mode 100644 index ba5f01f9c..000000000 --- a/build/docs/build-on-morph/sdk/classes/CrossChainMessenger.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/CrossChainMessenger/index.html b/build/docs/build-on-morph/sdk/classes/CrossChainMessenger/index.html deleted file mode 100644 index 6a24b3f08..000000000 --- a/build/docs/build-on-morph/sdk/classes/CrossChainMessenger/index.html +++ /dev/null @@ -1,850 +0,0 @@ - - - - - -CrossChainMessenger | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / CrossChainMessenger

-

Class: CrossChainMessenger

-

Constructors

-

new CrossChainMessenger()

-
-

new CrossChainMessenger(opts): CrossChainMessenger

-
-

Creates a new CrossChainProvider instance.

-

Parameters

-

opts

-

Options for the provider.

-

opts.backendURL?: string

-

backend for withdraw proof gen.

-

opts.bridges?: BridgeAdapterData

-

Optional bridge address list.

-

opts.contracts?: DeepPartial<OEContractsLike>

-

Optional contract address overrides.

-

opts.l1ChainId: NumberLike

-

Chain ID for the L1 chain.

-

opts.l1SignerOrProvider: SignerOrProviderLike

-

Signer or Provider for the L1 chain, or a JSON-RPC url.

-

opts.l2ChainId: NumberLike

-

Chain ID for the L2 chain.

-

opts.l2SignerOrProvider: SignerOrProviderLike

-

Signer or Provider for the L2 chain, or a JSON-RPC url.

-

Returns

-

CrossChainMessenger

-

Source

-

src/cross-chain-messenger.ts:130

-

Properties

-

backendURL

-
-

backendURL: string

-
-

Backend url for withdrawal prove server

-

Source

-

src/cross-chain-messenger.ts:76

-
-

bridges

-
-

bridges: BridgeAdapters

-
-

List of custom bridges for the given network.

-

Source

-

src/cross-chain-messenger.ts:116

-
-

contracts

-
-

contracts: OEContracts

-
-

Contract objects attached to their respective providers and addresses.

-

Source

-

src/cross-chain-messenger.ts:111

-
-

estimateGas

-
-

estimateGas: object

-
-

Object that holds the functions that estimates the gas required for a given transaction. -Follows the pattern used by ethers.js.

-

approveERC20()

-
-

approveERC20: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-

Estimates gas required to approve some tokens to deposit into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

depositERC20()

-
-

depositERC20: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-

Estimates gas required to deposit some ERC20 tokens into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

Address of the L1 token.

-

l2Token: AddressLike

-

Address of the L2 token.

-

amount: NumberLike

-

Amount to deposit.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

depositETH()

-
-

depositETH: (amount, opts?) => Promise<BigNumber>

-
-

Estimates gas required to deposit some ETH into the L2 chain.

-
Parameters
-

amount: NumberLike

-

Amount of ETH to deposit.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

proveAndRelayMessage()

-
-

proveAndRelayMessage: (message, opts?) => Promise<BigNumber>

-
-

Estimates gas required to proveAndRelay a cross chain message. Only applies to L2 to L1 messages.

-
Parameters
-

message: MessageLike

-

Message to generate the proving transaction for.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

sendMessage()

-
-

sendMessage: (message, opts?) => Promise<BigNumber>

-
-

Estimates gas required to send a cross chain message.

-
Parameters
-

message: CrossChainMessageRequest

-

Cross chain message to send.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

withdrawERC20()

-
-

withdrawERC20: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-

Estimates gas required to withdraw some ERC20 tokens back to the L1 chain.

-
Parameters
-

l1Token: AddressLike

-

Address of the L1 token.

-

l2Token: AddressLike

-

Address of the L2 token.

-

amount: NumberLike

-

Amount to withdraw.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

withdrawETH()

-
-

withdrawETH: (amount, opts?) => Promise<BigNumber>

-
-

Estimates gas required to withdraw some ETH back to the L1 chain.

-
Parameters
-

amount: NumberLike

-

Amount of ETH to withdraw.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

Source

-

src/cross-chain-messenger.ts:1600

-
-

l1ChainId

-
-

l1ChainId: number

-
-

Chain ID for the L1 network.

-

Source

-

src/cross-chain-messenger.ts:101

-
-

l1CrossDomainMessenger

-
-

l1CrossDomainMessenger: Contract

-
-

CrossDomainMessenger connected to the L1 chain.

-

Source

-

src/cross-chain-messenger.ts:91

-
-

l1SignerOrProvider

-
-

l1SignerOrProvider: Provider | Signer

-
-

Provider connected to the L1 chain.

-

Source

-

src/cross-chain-messenger.ts:81

-
-

l2ChainId

-
-

l2ChainId: number

-
-

Chain ID for the L2 network.

-

Source

-

src/cross-chain-messenger.ts:106

-
-

l2CrossDomainMessenger

-
-

l2CrossDomainMessenger: Contract

-
-

CrossDomainMessenger connected to the L2 chain.

-

Source

-

src/cross-chain-messenger.ts:96

-
-

l2SignerOrProvider

-
-

l2SignerOrProvider: Provider | Signer

-
-

Provider connected to the L2 chain.

-

Source

-

src/cross-chain-messenger.ts:86

-
-

populateTransaction

-
-

populateTransaction: object

-
-

Object that holds the functions that generate transactions to be signed by the user. -Follows the pattern used by ethers.js.

-

approveERC20()

-
-

approveERC20: (l1Token, l2Token, amount, opts?) => Promise<TransactionRequest>

-
-

Generates a transaction for approving some tokens to deposit into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<TransactionRequest>

-

depositERC20()

-
-

depositERC20: (l1Token, l2Token, amount, opts?, isEstimatingGas) => Promise<TransactionRequest>

-
-

Generates a transaction for depositing some ERC20 tokens into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

Address of the L1 token.

-

l2Token: AddressLike

-

Address of the L2 token.

-

amount: NumberLike

-

Amount to deposit.

-

opts?: IActionOptions

-

Additional options.

-

isEstimatingGas?: boolean= false

-
Returns
-

Promise<TransactionRequest>

-

depositETH()

-
-

depositETH: (amount, opts?, isEstimatingGas) => Promise<TransactionRequest>

-
-

Generates a transaction for depositing some ETH into the L2 chain.

-
Parameters
-

amount: NumberLike

-

Amount of ETH to deposit.

-

opts?: IActionOptions

-

Additional options.

-

isEstimatingGas?: boolean= false

-
Returns
-

Promise<TransactionRequest>

-

proveAndRelayMessage()

-
-

proveAndRelayMessage: (message, opts?) => Promise<TransactionRequest>

-
-

Generates a message proving and relaying transaction that can be signed and executed. Only -applicable for L2 to L1 messages.

-
Parameters
-

message: MessageLike

-

Message to generate the proving transaction for.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<TransactionRequest>

-

sendMessage()

-
-

sendMessage: (message, opts?) => Promise<TransactionRequest>

-
-

Generates a transaction that sends a given cross chain message. This transaction can be signed -and executed by a signer.

-
Parameters
-

message: CrossChainMessageRequest

-

Cross chain message to send.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<TransactionRequest>

-

withdrawERC20()

-
-

withdrawERC20: (l1Token, l2Token, amount, opts?, isEstimatingGas?) => Promise<TransactionRequest>

-
-

Generates a transaction for withdrawing some ERC20 tokens back to the L1 chain.

-
Parameters
-

l1Token: AddressLike

-

Address of the L1 token.

-

l2Token: AddressLike

-

Address of the L2 token.

-

amount: NumberLike

-

Amount to withdraw.

-

opts?: IActionOptions

-

Additional options.

-

isEstimatingGas?: boolean

-
Returns
-

Promise<TransactionRequest>

-

withdrawETH()

-
-

withdrawETH: (amount, opts?, isEstimatingGas?) => Promise<TransactionRequest>

-
-

Generates a transaction for withdrawing some ETH back to the L1 chain.

-
Parameters
-

amount: NumberLike

-

Amount of ETH to withdraw.

-

opts?: IActionOptions

-

Additional options.

-

isEstimatingGas?: boolean

-
Returns
-

Promise<TransactionRequest>

-

Source

-

src/cross-chain-messenger.ts:1304

-

Accessors

-

l1Provider

-
-

get l1Provider(): Provider

-
-

Provider connected to the L1 chain.

-

Returns

-

Provider

-

Source

-

src/cross-chain-messenger.ts:193

-
-

l1Signer

-
-

get l1Signer(): Signer

-
-

Signer connected to the L1 chain.

-

Returns

-

Signer

-

Source

-

src/cross-chain-messenger.ts:215

-
-

l2Provider

-
-

get l2Provider(): Provider

-
-

Provider connected to the L2 chain.

-

Returns

-

Provider

-

Source

-

src/cross-chain-messenger.ts:204

-
-

l2Signer

-
-

get l2Signer(): Signer

-
-

Signer connected to the L2 chain.

-

Returns

-

Signer

-

Source

-

src/cross-chain-messenger.ts:226

-

Methods

-

approval()

-
-

approval(l1Token, l2Token, opts?): Promise<BigNumber>

-
-

Queries the account's approval amount for a given L1 token.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<BigNumber>

-

Amount of tokens approved for deposits from the account.

-

Source

-

src/cross-chain-messenger.ts:1214

-
-

approveERC20()

-
-

approveERC20(l1Token, l2Token, amount, opts?): Promise<TransactionResponse>

-
-

Approves a deposit into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the approval transaction.

-

Source

-

src/cross-chain-messenger.ts:1233

-
-

depositERC20()

-
-

depositERC20(l1Token, l2Token, amount, opts?): Promise<TransactionResponse>

-
-

Deposits some ERC20 tokens into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

Address of the L1 token.

-

l2Token: AddressLike

-

Address of the L2 token.

-

amount: NumberLike

-

Amount to deposit.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the deposit transaction.

-

Source

-

src/cross-chain-messenger.ts:1256

-
-

depositETH()

-
-

depositETH(amount, opts?): Promise<TransactionResponse>

-
-

Deposits some ETH into the L2 chain.

-

Parameters

-

amount: NumberLike

-

Amount of ETH to deposit (in wei).

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the deposit transaction.

-

Source

-

src/cross-chain-messenger.ts:1183

-
-

encodeFunctionMessage()

-
-

encodeFunctionMessage(options): string

-
-

L2CrossDomainMessenger contract encode message, such as hashCrossDomainMessagev1

-

Parameters

-

options

-

options.message: string

-

The message passed along with the cross domain message

-

options.messageNonce: BigNumber

-

The cross domain message nonce

-

options.sender: string

-

The sender of the cross domain message

-

options.target: string

-

The target of the cross domain message

-

options.value: BigNumber

-

The value being sent with the cross domain message

-

Returns

-

string

-

Source

-

src/cross-chain-messenger.ts:972

-
-

estimateL2MessageGasLimit()

-
-

estimateL2MessageGasLimit(message, opts?): Promise<BigNumber>

-
-

Estimates the amount of gas required to fully execute a given message on L2. Only applies to -L1 => L2 messages. You would supply this gas limit when sending the message to L2.

-

Parameters

-

message: MessageRequestLike

-

Message get a gas estimate for.

-

opts?

-

Options object.

-

opts.bufferPercent?: number

-

Percentage of gas to add to the estimate. Defaults to 20.

-

opts.from?: string

-

Address to use as the sender.

-

Returns

-

Promise<BigNumber>

-

Estimates L2 gas limit.

-

Source

-

src/cross-chain-messenger.ts:918

-
-

getBackendTreeSyncIndex()

-
-

getBackendTreeSyncIndex(): Promise<number>

-
-

Returns

-

Promise<number>

-

Source

-

src/cross-chain-messenger.ts:1122

-
-

getBridgeForTokenPair()

-
-

getBridgeForTokenPair(l1Token, l2Token): Promise<IBridgeAdapter>

-
-

Finds the appropriate bridge adapter for a given L1 - L2 token pair. Will throw if no bridges -support the token pair or if more than one bridge supports the token pair.

-

Parameters

-

l1Token: AddressLike

-

L1 token address.

-

l2Token: AddressLike

-

L2 token address.

-

Returns

-

Promise<IBridgeAdapter>

-

The appropriate bridge adapter for the given token pair.

-

Source

-

src/cross-chain-messenger.ts:378

-
-

getCommittedL2BlockNumber()

-
-

getCommittedL2BlockNumber(): Promise<any>

-
-

Returns

-

Promise<any>

-

Source

-

src/cross-chain-messenger.ts:995

-
-

getDepositsByAddress()

-
-

getDepositsByAddress(address, opts): Promise<TokenBridgeMessage[]>

-
-

Gets all deposits for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts= {}

-

Options object.

-

opts.fromBlock?: BlockTag

-

Block to start searching for messages from. If not provided, will start -from the first block (block #0).

-

opts.toBlock?: BlockTag

-

Block to stop searching for messages at. If not provided, will stop at the -latest known block ("latest").

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All deposit token bridge messages sent by the given address.

-

Source

-

src/cross-chain-messenger.ts:424

-
-

getFinalizedL2BlockNumber()

-
-

getFinalizedL2BlockNumber(): Promise<any>

-
-

Returns

-

Promise<any>

-

Source

-

src/cross-chain-messenger.ts:1017

-
-

getMessageReceipt()

-
-

getMessageReceipt(message, opts): Promise<MessageReceipt>

-
-

Finds the receipt of the transaction that executed a particular cross chain message.

-

Parameters

-

message: MessageLike

-

Message to find the receipt of.

-

opts= {}

-

opts.direction?: MessageDirection

-

Returns

-

Promise<MessageReceipt>

-

CrossChainMessage receipt including receipt of the transaction that relayed the -given message.

-

Source

-

src/cross-chain-messenger.ts:757

-
-

getMessageStatus()

-
-

getMessageStatus(message, opts): Promise<MessageStatus>

-
-

Retrieves the status of a particular message as an enum.

-

Parameters

-

message: MessageLike

-

Cross chain message to check the status of.

-

opts= {}

-

opts.direction?: MessageDirection

-

Returns

-

Promise<MessageStatus>

-

Status of the message.

-

Source

-

src/cross-chain-messenger.ts:634

-
-

getMessagesByTransaction()

-
-

getMessagesByTransaction(transaction, opts): Promise<CrossChainMessage[]>

-
-

Retrieves all cross chain messages sent within a given transaction.

-

Parameters

-

transaction: TransactionLike

-

Transaction hash or receipt to find messages from.

-

opts= {}

-

Options object.

-

opts.direction?: MessageDirection

-

Direction to search for messages in. If not provided, will attempt to -automatically search both directions under the assumption that a transaction hash will only -exist on one chain. If the hash exists on both chains, will throw an error.

-

Returns

-

Promise<CrossChainMessage[]>

-

All cross chain messages sent within the transaction.

-

Source

-

src/cross-chain-messenger.ts:244

-
-

getProvenWithdrawal()

-
-

getProvenWithdrawal(withdrawalHash): Promise<ProvenWithdrawal>

-
-

Queries the L1CrossDomainMessenger contract's provenWithdrawals mapping -for a ProvenWithdrawal that matches the passed withdrawalHash

-

Parameters

-

withdrawalHash: string

-

Returns

-

Promise<ProvenWithdrawal>

-

A ProvenWithdrawal object

-

Source

-

src/cross-chain-messenger.ts:957

-
-

getWithdrawMessageProof()

-
-

getWithdrawMessageProof(message): Promise<WithdrawMessageProof>

-
-

Generates the proof required to finalize an L2 to L1 message.

-

Parameters

-

message: MessageLike

-

Message to generate a proof for.

-

Returns

-

Promise<WithdrawMessageProof>

-

Proof that can be used to finalize the message.

-

Source

-

src/cross-chain-messenger.ts:1042

-
-

getWithdrawalsByAddress()

-
-

getWithdrawalsByAddress(address, opts): Promise<TokenBridgeMessage[]>

-
-

Gets all withdrawals for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts= {}

-

Options object.

-

opts.fromBlock?: BlockTag

-

Block to start searching for messages from. If not provided, will start -from the first block (block #0).

-

opts.toBlock?: BlockTag

-

Block to stop searching for messages at. If not provided, will stop at the -latest known block ("latest").

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All withdrawal token bridge messages sent by the given address.

-

Source

-

src/cross-chain-messenger.ts:458

-
-

proveAndRelayMessage()

-
-

proveAndRelayMessage(message, opts?): Promise<TransactionResponse>

-
-

Prove and relay a cross chain message that was sent from L2 to L1. Only applicable for L2 to L1 -messages.

-

Parameters

-

message: MessageLike

-

Message to finalize.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the finalization transaction.

-

Source

-

src/cross-chain-messenger.ts:1163

-
-

sendMessage()

-
-

sendMessage(message, opts?): Promise<TransactionResponse>

-
-

Sends a given cross chain message. Where the message is sent depends on the direction attached -to the message itself.

-

Parameters

-

message: CrossChainMessageRequest

-

Cross chain message to send.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the message sending transaction.

-

Source

-

src/cross-chain-messenger.ts:1143

-
-

toCrossChainMessage()

-
-

toCrossChainMessage(message, opts?): Promise<CrossChainMessage>

-
-

Resolves a MessageLike into a CrossChainMessage object. -Unlike other coercion functions, this function is stateful and requires making additional -requests. For now I'm going to keep this function here, but we could consider putting a -similar function inside of utils/coercion.ts if people want to use this without having to -create an entire CrossChainProvider object.

-

Parameters

-

message: MessageLike

-

MessageLike to resolve into a CrossChainMessage.

-

opts?

-

opts.direction?: MessageDirection

-

Returns

-

Promise<CrossChainMessage>

-

Message coerced into a CrossChainMessage.

-

Source

-

src/cross-chain-messenger.ts:491

-
-

toLowLevelMessage()

-
-

toLowLevelMessage(message, opts?): Promise<LowLevelMessage>

-
-

Transforms a CrossChainMessenger message into its low-level representation inside the -L2ToL1MessagePasser contract on L2.

-

Parameters

-

message: MessageLike

-

Message to transform.

-

opts?

-

opts.direction?: MessageDirection

-

Returns

-

Promise<LowLevelMessage>

-

Transformed message.

-

Source

-

src/cross-chain-messenger.ts:326

-
-

waitBatchFinalize()

-
-

waitBatchFinalize(transactionHash): Promise<void>

-
-

Parameters

-

transactionHash: string

-

Returns

-

Promise<void>

-

Source

-

src/cross-chain-messenger.ts:600

-
-

waitForMessageReceipt()

-
-

waitForMessageReceipt(message, opts): Promise<MessageReceipt>

-
-

Waits for a message to be executed and returns the receipt of the transaction that executed -the given message.

-

Parameters

-

message: MessageLike

-

Message to wait for.

-

opts= {}

-

Options to pass to the waiting function.

-

opts.confirmations?: number

-

Number of transaction confirmations to wait for before returning.

-

opts.pollIntervalMs?: number

-

Number of milliseconds to wait between polling for the receipt.

-

opts.timeoutMs?: number

-

Milliseconds to wait before timing out.

-

Returns

-

Promise<MessageReceipt>

-

CrossChainMessage receipt including receipt of the transaction that relayed the -given message.

-

Source

-

src/cross-chain-messenger.ts:802

-
-

waitForMessageStatus()

-
-

waitForMessageStatus(message, status, opts): Promise<void>

-
-

Waits until the status of a given message changes to the expected status. Note that if the -status of the given message changes to a status that implies the expected status, this will -still return. If the status of the message changes to a status that exclues the expected -status, this will throw an error.

-

Parameters

-

message: MessageLike

-

Message to wait for.

-

status: MessageStatus

-

Expected status of the message.

-

opts= {}

-

Options to pass to the waiting function.

-

opts.direction?: MessageDirection

-

opts.pollIntervalMs?: number

-

Number of milliseconds to wait when polling.

-

opts.timeoutMs?: number

-

Milliseconds to wait before timing out.

-

Returns

-

Promise<void>

-

Source

-

src/cross-chain-messenger.ts:840

-
-

waitRollupSuccess()

-
-

waitRollupSuccess(transactionHash): Promise<void>

-
-

Parameters

-

transactionHash: string

-

Returns

-

Promise<void>

-

Source

-

src/cross-chain-messenger.ts:552

-
-

waitSyncSuccess()

-
-

waitSyncSuccess(transactionHash): Promise<void>

-
-

Parameters

-

transactionHash: string

-

Returns

-

Promise<void>

-

Source

-

src/cross-chain-messenger.ts:576

-
-

withdrawERC20()

-
-

withdrawERC20(l1Token, l2Token, amount, opts?): Promise<TransactionResponse>

-
-

Withdraws some ERC20 tokens back to the L1 chain.

-

Parameters

-

l1Token: AddressLike

-

Address of the L1 token.

-

l2Token: AddressLike

-

Address of the L2 token.

-

amount: NumberLike

-

Amount to withdraw.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the withdraw transaction.

-

Source

-

src/cross-chain-messenger.ts:1282

-
-

withdrawETH()

-
-

withdrawETH(amount, opts?): Promise<TransactionResponse>

-
-

Withdraws some ETH back to the L1 chain.

-

Parameters

-

amount: NumberLike

-

Amount of ETH to withdraw.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the withdraw transaction.

-

Source

-

src/cross-chain-messenger.ts:1198

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.htm/index.html b/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.htm/index.html deleted file mode 100644 index 6db9f68a8..000000000 --- a/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.html/index.html b/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.html/index.html deleted file mode 100644 index 6db9f68a8..000000000 --- a/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter/index.html b/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter/index.html deleted file mode 100644 index b969994fa..000000000 --- a/build/docs/build-on-morph/sdk/classes/ETHBridgeAdapter/index.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - -ETHBridgeAdapter | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / ETHBridgeAdapter

-

Class: ETHBridgeAdapter

-

Bridge adapter for the ETH bridge.

-

Extends

- -

Constructors

-

new ETHBridgeAdapter()

-
-

new ETHBridgeAdapter(opts): ETHBridgeAdapter

-
-

Creates a StandardBridgeAdapter instance.

-

Parameters

-

opts

-

Options for the adapter.

-

opts.l1Bridge: AddressLike

-

L1 bridge contract.

-

opts.l2Bridge: AddressLike

-

L2 bridge contract.

-

opts.messenger: CrossChainMessenger

-

Provider used to make queries related to cross-chain interactions.

-

Returns

-

ETHBridgeAdapter

-

Inherited from

-

StandardBridgeAdapter.constructor

-

Source

-

src/adapters/standard-bridge.ts:52

-

Properties

-

estimateGas

-
-

estimateGas: object

-
-

Object that holds the functions that estimates the gas required for a given transaction. -Follows the pattern used by ethers.js.

-

approve()

-
-

approve: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<BigNumber>

-

deposit()

-
-

deposit: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<BigNumber>

-

withdraw()

-
-

withdraw: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<BigNumber>

-

Inherited from

-

StandardBridgeAdapter.estimateGas

-

Source

-

src/adapters/standard-bridge.ts:405

-
-

l1Bridge

-
-

l1Bridge: Contract

-
-

L1 bridge contract.

-

Inherited from

-

StandardBridgeAdapter.l1Bridge

-

Source

-

src/adapters/standard-bridge.ts:41

-
-

l2Bridge

-
-

l2Bridge: Contract

-
-

L2 bridge contract.

-

Inherited from

-

StandardBridgeAdapter.l2Bridge

-

Source

-

src/adapters/standard-bridge.ts:42

-
-

messenger

-
-

messenger: CrossChainMessenger

-
-

Provider used to make queries related to cross-chain interactions.

-

Inherited from

-

StandardBridgeAdapter.messenger

-

Source

-

src/adapters/standard-bridge.ts:40

-
-

populateTransaction

-
-

populateTransaction: object

-
-

Object that holds the functions that generate transactions to be signed by the user. -Follows the pattern used by ethers.js.

-

approve()

-
-

approve: (l1Token, l2Token, amount, opts?) => Promise<never>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<never>

-

deposit()

-
-

deposit: (l1Token, l2Token, amount, opts) => Promise<TransactionRequest>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts: IActionOptions

-
Returns
-

Promise<TransactionRequest>

-

withdraw()

-
-

withdraw: (l1Token, l2Token, amount, opts) => Promise<TransactionRequest>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts: IActionOptions

-
Returns
-

Promise<TransactionRequest>

-

Overrides

-

StandardBridgeAdapter.populateTransaction

-

Source

-

src/adapters/eth-bridge.ts:116

-

Methods

-

approval()

-
-

approval(l1Token, l2Token, opts?): Promise<BigNumber>

-
-

Queries the account's approval amount for a given L1 token.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<BigNumber>

-

Amount of tokens approved for deposits from the account.

-

Overrides

-

StandardBridgeAdapter.approval

-

Source

-

src/adapters/eth-bridge.ts:22

-
-

approve()

-
-

approve(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Approves a deposit into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the approval transaction.

-

Inherited from

-

StandardBridgeAdapter.approve

-

Source

-

src/adapters/standard-bridge.ts:250

-
-

deposit()

-
-

deposit(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Deposits some tokens into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to deposit.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the deposit transaction.

-

Inherited from

-

StandardBridgeAdapter.deposit

-

Source

-

src/adapters/standard-bridge.ts:262

-
-

getDepositsByAddress()

-
-

getDepositsByAddress(address, opts?): Promise<TokenBridgeMessage[]>

-
-

Gets all deposits for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts?

-

Options object.

-

opts.fromBlock?: BlockTag

-

opts.toBlock?: BlockTag

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All deposit token bridge messages sent by the given address.

-

Overrides

-

StandardBridgeAdapter.getDepositsByAddress

-

Source

-

src/adapters/eth-bridge.ts:30

-
-

getWithdrawalsByAddress()

-
-

getWithdrawalsByAddress(address, opts?): Promise<TokenBridgeMessage[]>

-
-

Gets all withdrawals for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts?

-

Options object.

-

opts.fromBlock?: BlockTag

-

opts.toBlock?: BlockTag

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All withdrawal token bridge messages sent by the given address.

-

Overrides

-

StandardBridgeAdapter.getWithdrawalsByAddress

-

Source

-

src/adapters/eth-bridge.ts:64

-
-

supportsTokenPair()

-
-

supportsTokenPair(l1Token, l2Token): Promise<boolean>

-
-

Checks whether the given token pair is supported by the bridge.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

Returns

-

Promise<boolean>

-

Whether the given token pair is supported by the bridge.

-

Overrides

-

StandardBridgeAdapter.supportsTokenPair

-

Source

-

src/adapters/eth-bridge.ts:105

-
-

withdraw()

-
-

withdraw(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Withdraws some tokens back to the L1 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to withdraw.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the withdraw transaction.

-

Inherited from

-

StandardBridgeAdapter.withdraw

-

Source

-

src/adapters/standard-bridge.ts:274

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.htm/index.html b/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.htm/index.html deleted file mode 100644 index 3fecf6494..000000000 --- a/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.html/index.html b/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.html/index.html deleted file mode 100644 index 3fecf6494..000000000 --- a/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter/index.html b/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter/index.html deleted file mode 100644 index 1bc03ef56..000000000 --- a/build/docs/build-on-morph/sdk/classes/StandardBridgeAdapter/index.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - -StandardBridgeAdapter | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / StandardBridgeAdapter

-

Class: StandardBridgeAdapter

-

Bridge adapter for any token bridge that uses the standard token bridge interface.

-

Extended by

- -

Implements

- -

Constructors

-

new StandardBridgeAdapter()

-
-

new StandardBridgeAdapter(opts): StandardBridgeAdapter

-
-

Creates a StandardBridgeAdapter instance.

-

Parameters

-

opts

-

Options for the adapter.

-

opts.l1Bridge: AddressLike

-

L1 bridge contract.

-

opts.l2Bridge: AddressLike

-

L2 bridge contract.

-

opts.messenger: CrossChainMessenger

-

Provider used to make queries related to cross-chain interactions.

-

Returns

-

StandardBridgeAdapter

-

Source

-

src/adapters/standard-bridge.ts:52

-

Properties

-

estimateGas

-
-

estimateGas: object

-
-

Object that holds the functions that estimates the gas required for a given transaction. -Follows the pattern used by ethers.js.

-

approve()

-
-

approve: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<BigNumber>

-

deposit()

-
-

deposit: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<BigNumber>

-

withdraw()

-
-

withdraw: (l1Token, l2Token, amount, opts?) => Promise<BigNumber>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<BigNumber>

-

Implementation of

-

IBridgeAdapter.estimateGas

-

Source

-

src/adapters/standard-bridge.ts:405

-
-

l1Bridge

-
-

l1Bridge: Contract

-
-

L1 bridge contract.

-

Implementation of

-

IBridgeAdapter.l1Bridge

-

Source

-

src/adapters/standard-bridge.ts:41

-
-

l2Bridge

-
-

l2Bridge: Contract

-
-

L2 bridge contract.

-

Implementation of

-

IBridgeAdapter.l2Bridge

-

Source

-

src/adapters/standard-bridge.ts:42

-
-

messenger

-
-

messenger: CrossChainMessenger

-
-

Provider used to make queries related to cross-chain interactions.

-

Implementation of

-

IBridgeAdapter.messenger

-

Source

-

src/adapters/standard-bridge.ts:40

-
-

populateTransaction

-
-

populateTransaction: object

-
-

Object that holds the functions that generate transactions to be signed by the user. -Follows the pattern used by ethers.js.

-

approve()

-
-

approve: (l1Token, l2Token, amount, opts?) => Promise<TransactionRequest>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<TransactionRequest>

-

deposit()

-
-

deposit: (l1Token, l2Token, amount, opts?) => Promise<TransactionRequest>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<TransactionRequest>

-

withdraw()

-
-

withdraw: (l1Token, l2Token, amount, opts?) => Promise<TransactionRequest>

-
-
Parameters
-

l1Token: AddressLike

-

l2Token: AddressLike

-

amount: NumberLike

-

opts?: IActionOptions

-
Returns
-

Promise<TransactionRequest>

-

Implementation of

-

IBridgeAdapter.populateTransaction

-

Source

-

src/adapters/standard-bridge.ts:286

-

Methods

-

approval()

-
-

approval(l1Token, l2Token, opts): Promise<BigNumber>

-
-

Queries the account's approval amount for a given L1 token.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

opts: IActionOptions

-

Additional options.

-

Returns

-

Promise<BigNumber>

-

Amount of tokens approved for deposits from the account.

-

Implementation of

-

IBridgeAdapter.approval

-

Source

-

src/adapters/standard-bridge.ts:209

-
-

approve()

-
-

approve(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Approves a deposit into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the approval transaction.

-

Implementation of

-

IBridgeAdapter.approve

-

Source

-

src/adapters/standard-bridge.ts:250

-
-

deposit()

-
-

deposit(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Deposits some tokens into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to deposit.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the deposit transaction.

-

Implementation of

-

IBridgeAdapter.deposit

-

Source

-

src/adapters/standard-bridge.ts:262

-
-

getDepositsByAddress()

-
-

getDepositsByAddress(address, opts?): Promise<TokenBridgeMessage[]>

-
-

Gets all deposits for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts?

-

Options object.

-

opts.fromBlock?: BlockTag

-

opts.toBlock?: BlockTag

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All deposit token bridge messages sent by the given address.

-

Implementation of

-

IBridgeAdapter.getDepositsByAddress

-

Source

-

src/adapters/standard-bridge.ts:75

-
-

getWithdrawalsByAddress()

-
-

getWithdrawalsByAddress(address, opts?): Promise<TokenBridgeMessage[]>

-
-

Gets all withdrawals for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts?

-

Options object.

-

opts.fromBlock?: BlockTag

-

opts.toBlock?: BlockTag

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All withdrawal token bridge messages sent by the given address.

-

Implementation of

-

IBridgeAdapter.getWithdrawalsByAddress

-

Source

-

src/adapters/standard-bridge.ts:122

-
-

supportsTokenPair()

-
-

supportsTokenPair(l1Token, l2Token): Promise<boolean>

-
-

Checks whether the given token pair is supported by the bridge.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

Returns

-

Promise<boolean>

-

Whether the given token pair is supported by the bridge.

-

Implementation of

-

IBridgeAdapter.supportsTokenPair

-

Source

-

src/adapters/standard-bridge.ts:165

-
-

withdraw()

-
-

withdraw(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Withdraws some tokens back to the L1 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to withdraw.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the withdraw transaction.

-

Implementation of

-

IBridgeAdapter.withdraw

-

Source

-

src/adapters/standard-bridge.ts:274

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L1ChainID.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/L1ChainID.htm/index.html deleted file mode 100644 index 2780874fd..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L1ChainID.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L1ChainID.html/index.html b/build/docs/build-on-morph/sdk/enumerations/L1ChainID.html/index.html deleted file mode 100644 index 2780874fd..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L1ChainID.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L1ChainID/index.html b/build/docs/build-on-morph/sdk/enumerations/L1ChainID/index.html deleted file mode 100644 index 2241b2c3d..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L1ChainID/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -L1ChainID | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L1ChainID

-

Enumeration: L1ChainID

-

L1 network chain IDs

-

Enumeration Members

-

HOLESKY

-
-

HOLESKY: 17000

-
-

Source

-

src/interfaces/types.ts:23

-
-

MAINNET

-
-

MAINNET: 1

-
-

Source

-

src/interfaces/types.ts:17

-
-

MORPH_LOCAL_DEVNET

-
-

MORPH_LOCAL_DEVNET: 900

-
-

Source

-

src/interfaces/types.ts:20

-
-

MORPH_QANET

-
-

MORPH_QANET: 900

-
-

Source

-

src/interfaces/types.ts:21

-
-

SEPOLIA

-
-

SEPOLIA: 11155111

-
-

Source

-

src/interfaces/types.ts:22

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls.htm/index.html deleted file mode 100644 index 83bdc9e8c..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls.html/index.html b/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls.html/index.html deleted file mode 100644 index 83bdc9e8c..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls/index.html b/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls/index.html deleted file mode 100644 index 441e09bc6..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L1RpcUrls/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -L1RpcUrls | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L1RpcUrls

-

Enumeration: L1RpcUrls

-

Enumeration Members

-

HOLESKY

-
-

HOLESKY: "https://1rpc.io/holesky"

-
-

Source

-

src/interfaces/types.ts:41

-
-

MORPH_LOCAL_DEVNET

-
-

MORPH_LOCAL_DEVNET: "http://localhost:9545"

-
-

Source

-

src/interfaces/types.ts:39

-
-

SEPOLIA

-
-

SEPOLIA: "https://1rpc.io/sepolia"

-
-

Source

-

src/interfaces/types.ts:40

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L2ChainID.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/L2ChainID.htm/index.html deleted file mode 100644 index b67ae8cbe..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L2ChainID.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L2ChainID.html/index.html b/build/docs/build-on-morph/sdk/enumerations/L2ChainID.html/index.html deleted file mode 100644 index b67ae8cbe..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L2ChainID.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L2ChainID/index.html b/build/docs/build-on-morph/sdk/enumerations/L2ChainID/index.html deleted file mode 100644 index 22d58c6b3..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L2ChainID/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -L2ChainID | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L2ChainID

-

Enumeration: L2ChainID

-

L2 network chain IDs

-

Enumeration Members

-

MORPH_HOLESKY

-
-

MORPH_HOLESKY: 2810

-
-

Source

-

src/interfaces/types.ts:35

-
-

MORPH_LOCAL_DEVNET

-
-

MORPH_LOCAL_DEVNET: 53077

-
-

Source

-

src/interfaces/types.ts:32

-
-

MORPH_MAINNET

-
-

MORPH_MAINNET: 0

-
-

Source

-

src/interfaces/types.ts:30

-
-

MORPH_QANET

-
-

MORPH_QANET: 53077

-
-

Source

-

src/interfaces/types.ts:33

-
-

MORPH_TESTNET

-
-

MORPH_TESTNET: 2710

-
-

Source

-

src/interfaces/types.ts:34

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls.htm/index.html deleted file mode 100644 index 88498a405..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls.html/index.html b/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls.html/index.html deleted file mode 100644 index 88498a405..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls/index.html b/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls/index.html deleted file mode 100644 index 2a4ae6a5d..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/L2RpcUrls/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -L2RpcUrls | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L2RpcUrls

-

Enumeration: L2RpcUrls

-

Enumeration Members

-

MORPH_HOLESKY

-
-

MORPH_HOLESKY: "https://rpc-holesky.morphl2.io"

-
-

Source

-

src/interfaces/types.ts:47

-
-

MORPH_LOCAL_DEVNET

-
-

MORPH_LOCAL_DEVNET: "http://localhost:8545"

-
-

Source

-

src/interfaces/types.ts:45

-
-

MORPH_TESTNET

-
-

MORPH_TESTNET: "https://rpc-testnet.morphl2.io"

-
-

Source

-

src/interfaces/types.ts:46

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageDirection.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageDirection.htm/index.html deleted file mode 100644 index 79d485d42..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageDirection.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageDirection.html/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageDirection.html/index.html deleted file mode 100644 index 79d485d42..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageDirection.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageDirection/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageDirection/index.html deleted file mode 100644 index 3d75df44f..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageDirection/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - -MessageDirection | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / MessageDirection

-

Enumeration: MessageDirection

-

Enum describing the direction of a message.

-

Enumeration Members

-

L1_TO_L2

-
-

L1_TO_L2: 0

-
-

Source

-

src/interfaces/types.ts:223

-
-

L2_TO_L1

-
-

L2_TO_L1: 1

-
-

Source

-

src/interfaces/types.ts:224

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.htm/index.html deleted file mode 100644 index 80b73642d..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.html/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.html/index.html deleted file mode 100644 index 80b73642d..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus/index.html deleted file mode 100644 index 269d965f4..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageReceiptStatus/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - -MessageReceiptStatus | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / MessageReceiptStatus

-

Enumeration: MessageReceiptStatus

-

Enum describing the status of a CrossDomainMessage message receipt.

-

Enumeration Members

-

RELAYED_FAILED

-
-

RELAYED_FAILED: 0

-
-

Source

-

src/interfaces/types.ts:299

-
-

RELAYED_SUCCEEDED

-
-

RELAYED_SUCCEEDED: 1

-
-

Source

-

src/interfaces/types.ts:300

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageStatus.htm/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageStatus.htm/index.html deleted file mode 100644 index 5fbe726c0..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageStatus.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageStatus.html/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageStatus.html/index.html deleted file mode 100644 index 5fbe726c0..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageStatus.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/enumerations/MessageStatus/index.html b/build/docs/build-on-morph/sdk/enumerations/MessageStatus/index.html deleted file mode 100644 index 10b252fdf..000000000 --- a/build/docs/build-on-morph/sdk/enumerations/MessageStatus/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - -MessageStatus | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / MessageStatus

-

Enumeration: MessageStatus

-

Enum describing the status of a message.

-

Enumeration Members

-

FAILED_L1_TO_L2_MESSAGE

-
-

FAILED_L1_TO_L2_MESSAGE: 1

-
-

Message is an L1 to L2 message and the transaction to execute the message failed. -When this status is returned, you will need to resend the L1 to L2 message, probably with a -higher gas limit.

-

Source

-

src/interfaces/types.ts:186

-
-

IN_CHALLENGE_PERIOD

-
-

IN_CHALLENGE_PERIOD: 5

-
-

Message is a proved L2 to L1 message and is undergoing the challenge period.

-

Source

-

src/interfaces/types.ts:206

-
-

READY_FOR_RELAY

-
-

READY_FOR_RELAY: 6

-
-

Message is ready to be relayed.

-

Source

-

src/interfaces/types.ts:211

-
-

READY_TO_PROVE

-
-

READY_TO_PROVE: 4

-
-

Message is ready to be proved on L1 to initiate the challenge period.

-

Source

-

src/interfaces/types.ts:201

-
-

RELAYED

-
-

RELAYED: 7

-
-

Message has been relayed.

-

Source

-

src/interfaces/types.ts:216

-
-

UNCONFIRMED_L1_TO_L2_MESSAGE

-
-

UNCONFIRMED_L1_TO_L2_MESSAGE: 0

-
-

Message is an L1 to L2 message and has not been processed by the L2.

-

Source

-

src/interfaces/types.ts:179

-
-

WITHDRAWAL_HASH_NOT_SYNC

-
-

WITHDRAWAL_HASH_NOT_SYNC: 3

-
-

Message is an L2 to L1 message and withdrawal hash has not been published to backend yet.

-

Source

-

src/interfaces/types.ts:196

-
-

WITHDRAWAL_ROOT_NOT_PUBLISHED

-
-

WITHDRAWAL_ROOT_NOT_PUBLISHED: 2

-
-

Message is an L2 to L1 message and withdrawal root has not been published yet.

-

Source

-

src/interfaces/types.ts:191

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/asL2Provider.htm/index.html b/build/docs/build-on-morph/sdk/functions/asL2Provider.htm/index.html deleted file mode 100644 index 8c40acca2..000000000 --- a/build/docs/build-on-morph/sdk/functions/asL2Provider.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/asL2Provider.html/index.html b/build/docs/build-on-morph/sdk/functions/asL2Provider.html/index.html deleted file mode 100644 index 8c40acca2..000000000 --- a/build/docs/build-on-morph/sdk/functions/asL2Provider.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/asL2Provider/index.html b/build/docs/build-on-morph/sdk/functions/asL2Provider/index.html deleted file mode 100644 index 7bd565c3e..000000000 --- a/build/docs/build-on-morph/sdk/functions/asL2Provider/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -asL2Provider | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / asL2Provider

-

Function: asL2Provider()

-
-

asL2Provider<TProvider>(provider): L2Provider<TProvider>

-
-

Returns an provider wrapped as an Morph L2 provider. Adds a few extra helper functions to -simplify the process of estimating the gas usage for a transaction on Morph. Returns a COPY -of the original provider.

-

Type parameters

-

TProvider extends Provider<TProvider>

-

Parameters

-

provider: TProvider

-

Provider to wrap into an L2 provider.

-

Returns

-

L2Provider<TProvider>

-

Provider wrapped as an L2 provider.

-

Source

-

src/l2-provider.ts:171

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL1Gas.htm/index.html b/build/docs/build-on-morph/sdk/functions/estimateL1Gas.htm/index.html deleted file mode 100644 index f2ca304d9..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL1Gas.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL1Gas.html/index.html b/build/docs/build-on-morph/sdk/functions/estimateL1Gas.html/index.html deleted file mode 100644 index f2ca304d9..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL1Gas.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL1Gas/index.html b/build/docs/build-on-morph/sdk/functions/estimateL1Gas/index.html deleted file mode 100644 index b7dc53029..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL1Gas/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -estimateL1Gas | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / estimateL1Gas

-

Function: estimateL1Gas()

-
-

estimateL1Gas(l2Provider, tx): Promise<BigNumber>

-
-

Estimates the amount of L1 gas required for a given L2 transaction.

-

Parameters

-

l2Provider: ProviderLike

-

L2 provider to query the gas usage from.

-

tx: TransactionRequest

-

Transaction to estimate L1 gas for.

-

Returns

-

Promise<BigNumber>

-

Estimated L1 gas.

-

Source

-

src/l2-provider.ts:71

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL1GasCost.htm/index.html b/build/docs/build-on-morph/sdk/functions/estimateL1GasCost.htm/index.html deleted file mode 100644 index 0937e6b7b..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL1GasCost.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL1GasCost.html/index.html b/build/docs/build-on-morph/sdk/functions/estimateL1GasCost.html/index.html deleted file mode 100644 index 0937e6b7b..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL1GasCost.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL1GasCost/index.html b/build/docs/build-on-morph/sdk/functions/estimateL1GasCost/index.html deleted file mode 100644 index a3df20ea3..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL1GasCost/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -estimateL1GasCost | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / estimateL1GasCost

-

Function: estimateL1GasCost()

-
-

estimateL1GasCost(l2Provider, tx): Promise<BigNumber>

-
-

Estimates the amount of L1 gas cost for a given L2 transaction in wei.

-

Parameters

-

l2Provider: ProviderLike

-

L2 provider to query the gas usage from.

-

tx: TransactionRequest

-

Transaction to estimate L1 gas cost for.

-

Returns

-

Promise<BigNumber>

-

Estimated L1 gas cost.

-

Source

-

src/l2-provider.ts:95

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL2GasCost.htm/index.html b/build/docs/build-on-morph/sdk/functions/estimateL2GasCost.htm/index.html deleted file mode 100644 index 2bba089f4..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL2GasCost.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL2GasCost.html/index.html b/build/docs/build-on-morph/sdk/functions/estimateL2GasCost.html/index.html deleted file mode 100644 index 2bba089f4..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL2GasCost.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateL2GasCost/index.html b/build/docs/build-on-morph/sdk/functions/estimateL2GasCost/index.html deleted file mode 100644 index 7e9623d97..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateL2GasCost/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -estimateL2GasCost | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / estimateL2GasCost

-

Function: estimateL2GasCost()

-
-

estimateL2GasCost(l2Provider, tx): Promise<BigNumber>

-
-

Estimates the L2 gas cost for a given L2 transaction in wei.

-

Parameters

-

l2Provider: ProviderLike

-

L2 provider to query the gas usage from.

-

tx: TransactionRequest

-

Transaction to estimate L2 gas cost for.

-

Returns

-

Promise<BigNumber>

-

Estimated L2 gas cost.

-

Source

-

src/l2-provider.ts:119

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost.htm/index.html b/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost.htm/index.html deleted file mode 100644 index db5fe61ea..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost.html/index.html b/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost.html/index.html deleted file mode 100644 index db5fe61ea..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost/index.html b/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost/index.html deleted file mode 100644 index c32a8ff63..000000000 --- a/build/docs/build-on-morph/sdk/functions/estimateTotalGasCost/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -estimateTotalGasCost | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / estimateTotalGasCost

-

Function: estimateTotalGasCost()

-
-

estimateTotalGasCost(l2Provider, tx): Promise<BigNumber>

-
-

Estimates the total gas cost for a given L2 transaction in wei.

-

Parameters

-

l2Provider: ProviderLike

-

L2 provider to query the gas usage from.

-

tx: TransactionRequest

-

Transaction to estimate total gas cost for.

-

Returns

-

Promise<BigNumber>

-

Estimated total gas cost.

-

Source

-

src/l2-provider.ts:136

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getAllOEContracts.htm/index.html b/build/docs/build-on-morph/sdk/functions/getAllOEContracts.htm/index.html deleted file mode 100644 index 856271a5d..000000000 --- a/build/docs/build-on-morph/sdk/functions/getAllOEContracts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getAllOEContracts.html/index.html b/build/docs/build-on-morph/sdk/functions/getAllOEContracts.html/index.html deleted file mode 100644 index 856271a5d..000000000 --- a/build/docs/build-on-morph/sdk/functions/getAllOEContracts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getAllOEContracts/index.html b/build/docs/build-on-morph/sdk/functions/getAllOEContracts/index.html deleted file mode 100644 index 3379f2bac..000000000 --- a/build/docs/build-on-morph/sdk/functions/getAllOEContracts/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -getAllOEContracts | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / getAllOEContracts

-

Function: getAllOEContracts()

-
-

getAllOEContracts(l2ChainId, opts): OEContracts

-
-

Automatically connects to all contract addresses, both L1 and L2, for the given L2 chain ID. The -user can provide custom contract address overrides for L1 or L2 contracts. If the given chain ID -is not known then the user MUST provide custom contract addresses for ALL L1 contracts or this -function will throw an error.

-

Parameters

-

l2ChainId: number

-

Chain ID for the L2 network.

-

opts= {}

-

Additional options for connecting to the contracts.

-

opts.l1SignerOrProvider?: Provider | Signer

-

opts.l2SignerOrProvider?: Provider | Signer

-

opts.overrides?: DeepPartial<OEContractsLike>

-

Custom contract address overrides for L1 or L2 contracts.

-

Returns

-

OEContracts

-

An object containing ethers.Contract objects connected to the appropriate addresses on -both L1 and L2.

-

Source

-

src/utils/contracts.ts:88

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getBridgeAdapters.htm/index.html b/build/docs/build-on-morph/sdk/functions/getBridgeAdapters.htm/index.html deleted file mode 100644 index a469c4e8c..000000000 --- a/build/docs/build-on-morph/sdk/functions/getBridgeAdapters.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getBridgeAdapters.html/index.html b/build/docs/build-on-morph/sdk/functions/getBridgeAdapters.html/index.html deleted file mode 100644 index a469c4e8c..000000000 --- a/build/docs/build-on-morph/sdk/functions/getBridgeAdapters.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getBridgeAdapters/index.html b/build/docs/build-on-morph/sdk/functions/getBridgeAdapters/index.html deleted file mode 100644 index 7f11fc3d9..000000000 --- a/build/docs/build-on-morph/sdk/functions/getBridgeAdapters/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - -getBridgeAdapters | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / getBridgeAdapters

-

Function: getBridgeAdapters()

-
-

getBridgeAdapters(l2ChainId, messenger, opts?): BridgeAdapters

-
-

Gets a series of bridge adapters for the given L2 chain ID.

-

Parameters

-

l2ChainId: number

-

Chain ID for the L2 network.

-

messenger: CrossChainMessenger

-

Cross chain messenger to connect to the bridge adapters

-

opts?

-

Additional options for connecting to the custom bridges.

-

opts.contracts?: DeepPartial<OEContractsLike>

-

opts.overrides?: BridgeAdapterData

-

Custom bridge adapters.

-

Returns

-

BridgeAdapters

-

An object containing all bridge adapters

-

Source

-

src/utils/contracts.ts:142

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getL1GasPrice.htm/index.html b/build/docs/build-on-morph/sdk/functions/getL1GasPrice.htm/index.html deleted file mode 100644 index a6e7fec78..000000000 --- a/build/docs/build-on-morph/sdk/functions/getL1GasPrice.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getL1GasPrice.html/index.html b/build/docs/build-on-morph/sdk/functions/getL1GasPrice.html/index.html deleted file mode 100644 index a6e7fec78..000000000 --- a/build/docs/build-on-morph/sdk/functions/getL1GasPrice.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getL1GasPrice/index.html b/build/docs/build-on-morph/sdk/functions/getL1GasPrice/index.html deleted file mode 100644 index 4efae2295..000000000 --- a/build/docs/build-on-morph/sdk/functions/getL1GasPrice/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -getL1GasPrice | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / getL1GasPrice

-

Function: getL1GasPrice()

-
-

getL1GasPrice(l2Provider): Promise<BigNumber>

-
-

Gets the current L1 gas price as seen on L2.

-

Parameters

-

l2Provider: ProviderLike

-

L2 provider to query the L1 gas price from.

-

Returns

-

Promise<BigNumber>

-

Current L1 gas price as seen on L2.

-

Source

-

src/l2-provider.ts:57

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getOEContract.htm/index.html b/build/docs/build-on-morph/sdk/functions/getOEContract.htm/index.html deleted file mode 100644 index 13b730c04..000000000 --- a/build/docs/build-on-morph/sdk/functions/getOEContract.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getOEContract.html/index.html b/build/docs/build-on-morph/sdk/functions/getOEContract.html/index.html deleted file mode 100644 index 13b730c04..000000000 --- a/build/docs/build-on-morph/sdk/functions/getOEContract.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/getOEContract/index.html b/build/docs/build-on-morph/sdk/functions/getOEContract/index.html deleted file mode 100644 index fe5dc5055..000000000 --- a/build/docs/build-on-morph/sdk/functions/getOEContract/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -getOEContract | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / getOEContract

-

Function: getOEContract()

-
-

getOEContract(contractName, l2ChainId, opts): Contract

-
-

Returns an ethers.Contract object for the given name, connected to the appropriate address for -the given L2 chain ID. Users can also provide a custom address to connect the contract to -instead. If the chain ID is not known then the user MUST provide a custom address or this -function will throw an error.

-

Parameters

-

contractName: "L1MessageQueueWithGasPriceOracle" | "L1GatewayRouter" | "L2GatewayRouter" | "MorphStandardERC20" | "L2WETH" | "L1WETHGateway" | "L2WETHGateway" | "L2ToL1MessagePasser" | "Sequencer" | "Gov" | "L2ETHGateway" | "L2CrossDomainMessenger" | "L2StandardERC20Gateway" | "L2ERC721Gateway" | "L2TxFeeVault" | "L2ERC1155Gateway" | "MorphStandardERC20Factory" | "GasPriceOracle" | "WrappedEther" | "MorphToken" | "L1CrossDomainMessenger" | "Staking" | "Rollup" | "L1ETHGateway" | "L1StandardERC20Gateway" | "L1ERC721Gateway" | "L1ERC1155Gateway" | "EnforcedTxGateway" | "WETH"

-

Name of the contract to connect to.

-

l2ChainId: number

-

Chain ID for the L2 network.

-

opts= {}

-

Additional options for connecting to the contract.

-

opts.address?: AddressLike

-

Custom address to connect to the contract.

-

opts.signerOrProvider?: Provider | Signer

-

Signer or provider to connect to the contract.

-

Returns

-

Contract

-

An ethers.Contract object connected to the appropriate address and interface.

-

Source

-

src/utils/contracts.ts:42

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.htm/index.html b/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.htm/index.html deleted file mode 100644 index 30d44d167..000000000 --- a/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.html/index.html b/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.html/index.html deleted file mode 100644 index 30d44d167..000000000 --- a/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2/index.html b/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2/index.html deleted file mode 100644 index ea3b197e3..000000000 --- a/build/docs/build-on-morph/sdk/functions/hashLowLevelMessageV2/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -hashLowLevelMessageV2 | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / hashLowLevelMessageV2

-

Function: hashLowLevelMessageV2()

-
-

hashLowLevelMessageV2(message): string

-
-

Utility for hashing a LowLevelMessage object.

-

Parameters

-

message: LowLevelMessage

-

LowLevelMessage object to hash.

-

Returns

-

string

-

Hash of the given LowLevelMessage.

-

Source

-

src/utils/message-utils.ts:82

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/hashMessageHash.htm/index.html b/build/docs/build-on-morph/sdk/functions/hashMessageHash.htm/index.html deleted file mode 100644 index 5ce4ed257..000000000 --- a/build/docs/build-on-morph/sdk/functions/hashMessageHash.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/hashMessageHash.html/index.html b/build/docs/build-on-morph/sdk/functions/hashMessageHash.html/index.html deleted file mode 100644 index 5ce4ed257..000000000 --- a/build/docs/build-on-morph/sdk/functions/hashMessageHash.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/hashMessageHash/index.html b/build/docs/build-on-morph/sdk/functions/hashMessageHash/index.html deleted file mode 100644 index 0316f0786..000000000 --- a/build/docs/build-on-morph/sdk/functions/hashMessageHash/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -hashMessageHash | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / hashMessageHash

-

Function: hashMessageHash()

-
-

hashMessageHash(messageHash): string

-
-

Utility for hashing a message hash. This computes the storage slot -where the message hash will be stored in state. HashZero is used -because the first mapping in the contract is used.

-

Parameters

-

messageHash: string

-

Message hash to hash.

-

Returns

-

string

-

Hash of the given message hash.

-

Source

-

src/utils/message-utils.ts:24

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/isL2Provider.htm/index.html b/build/docs/build-on-morph/sdk/functions/isL2Provider.htm/index.html deleted file mode 100644 index 6e7ec506d..000000000 --- a/build/docs/build-on-morph/sdk/functions/isL2Provider.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/isL2Provider.html/index.html b/build/docs/build-on-morph/sdk/functions/isL2Provider.html/index.html deleted file mode 100644 index 6e7ec506d..000000000 --- a/build/docs/build-on-morph/sdk/functions/isL2Provider.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/isL2Provider/index.html b/build/docs/build-on-morph/sdk/functions/isL2Provider/index.html deleted file mode 100644 index cc2608717..000000000 --- a/build/docs/build-on-morph/sdk/functions/isL2Provider/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - -isL2Provider | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / isL2Provider

-

Function: isL2Provider()

-
-

isL2Provider<TProvider>(provider): provider is L2Provider<TProvider>

-
-

Determines if a given Provider is an L2Provider. Will coerce type -if true

-

Type parameters

-

TProvider extends Provider<TProvider>

-

Parameters

-

provider: TProvider

-

The provider to check

-

Returns

-

provider is L2Provider<TProvider>

-

Boolean

-

Example

-
if (isL2Provider(provider)) {
// typescript now knows it is of type L2Provider
const gasPrice = await provider.estimateL2GasPrice(tx)
}
-

Source

-

src/l2-provider.ts:157

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.htm/index.html b/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.htm/index.html deleted file mode 100644 index 675d2b60a..000000000 --- a/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.html/index.html b/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.html/index.html deleted file mode 100644 index 675d2b60a..000000000 --- a/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit/index.html b/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit/index.html deleted file mode 100644 index 64ba31f63..000000000 --- a/build/docs/build-on-morph/sdk/functions/migratedWithdrawalGasLimit/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -migratedWithdrawalGasLimit | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / migratedWithdrawalGasLimit

-

Function: migratedWithdrawalGasLimit()

-
-

migratedWithdrawalGasLimit(data, chainID): BigNumber

-
-

Compute the min gas limit for a migrated withdrawal.

-

Parameters

-

data: string

-

chainID: number

-

Returns

-

BigNumber

-

Source

-

src/utils/message-utils.ts:35

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/omit.htm/index.html b/build/docs/build-on-morph/sdk/functions/omit.htm/index.html deleted file mode 100644 index 26aa2fee2..000000000 --- a/build/docs/build-on-morph/sdk/functions/omit.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/omit.html/index.html b/build/docs/build-on-morph/sdk/functions/omit.html/index.html deleted file mode 100644 index 26aa2fee2..000000000 --- a/build/docs/build-on-morph/sdk/functions/omit.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/omit/index.html b/build/docs/build-on-morph/sdk/functions/omit/index.html deleted file mode 100644 index 80f425634..000000000 --- a/build/docs/build-on-morph/sdk/functions/omit/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - -omit | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / omit

-

Function: omit()

-
-

omit<T, K>(obj, ...keys): Omit<T, K>

-
-

Returns a copy of the given object ( ...obj ) with the given keys omitted.

-

Type parameters

-

T extends object

-

K extends string | number | symbol

-

Parameters

-

obj: T

-

Object to return with the keys omitted.

-

• ...keys: K[]

-

Keys to omit from the returned object.

-

Returns

-

Omit<T, K>

-

A copy of the given object with the given keys omitted.

-

Source

-

src/utils/misc-utils.ts:11

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toAddress.htm/index.html b/build/docs/build-on-morph/sdk/functions/toAddress.htm/index.html deleted file mode 100644 index 0ecbebaf7..000000000 --- a/build/docs/build-on-morph/sdk/functions/toAddress.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toAddress.html/index.html b/build/docs/build-on-morph/sdk/functions/toAddress.html/index.html deleted file mode 100644 index 0ecbebaf7..000000000 --- a/build/docs/build-on-morph/sdk/functions/toAddress.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toAddress/index.html b/build/docs/build-on-morph/sdk/functions/toAddress/index.html deleted file mode 100644 index 1f8763227..000000000 --- a/build/docs/build-on-morph/sdk/functions/toAddress/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -toAddress | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / toAddress

-

Function: toAddress()

-
-

toAddress(addr): string

-
-

Converts an address-like into a 0x-prefixed address string.

-

Parameters

-

addr: AddressLike

-

Address-like to convert into an address.

-

Returns

-

string

-

Address-like as an address.

-

Source

-

src/utils/coercion.ts:104

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toBigNumber.htm/index.html b/build/docs/build-on-morph/sdk/functions/toBigNumber.htm/index.html deleted file mode 100644 index 7ebc20d23..000000000 --- a/build/docs/build-on-morph/sdk/functions/toBigNumber.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toBigNumber.html/index.html b/build/docs/build-on-morph/sdk/functions/toBigNumber.html/index.html deleted file mode 100644 index 7ebc20d23..000000000 --- a/build/docs/build-on-morph/sdk/functions/toBigNumber.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toBigNumber/index.html b/build/docs/build-on-morph/sdk/functions/toBigNumber/index.html deleted file mode 100644 index 0c03c420f..000000000 --- a/build/docs/build-on-morph/sdk/functions/toBigNumber/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -toBigNumber | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / toBigNumber

-

Function: toBigNumber()

-
-

toBigNumber(num): BigNumber

-
-

Converts a number-like into an ethers BigNumber.

-

Parameters

-

num: NumberLike

-

Number-like to convert into a BigNumber.

-

Returns

-

BigNumber

-

Number-like as a BigNumber.

-

Source

-

src/utils/coercion.ts:84

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toNumber.htm/index.html b/build/docs/build-on-morph/sdk/functions/toNumber.htm/index.html deleted file mode 100644 index 364029218..000000000 --- a/build/docs/build-on-morph/sdk/functions/toNumber.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toNumber.html/index.html b/build/docs/build-on-morph/sdk/functions/toNumber.html/index.html deleted file mode 100644 index 364029218..000000000 --- a/build/docs/build-on-morph/sdk/functions/toNumber.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toNumber/index.html b/build/docs/build-on-morph/sdk/functions/toNumber/index.html deleted file mode 100644 index 981c87992..000000000 --- a/build/docs/build-on-morph/sdk/functions/toNumber/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -toNumber | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / toNumber

-

Function: toNumber()

-
-

toNumber(num): number

-
-

Converts a number-like into a number.

-

Parameters

-

num: NumberLike

-

Number-like to convert into a number.

-

Returns

-

number

-

Number-like as a number.

-

Source

-

src/utils/coercion.ts:94

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toProvider.htm/index.html b/build/docs/build-on-morph/sdk/functions/toProvider.htm/index.html deleted file mode 100644 index 6480e4b3f..000000000 --- a/build/docs/build-on-morph/sdk/functions/toProvider.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toProvider.html/index.html b/build/docs/build-on-morph/sdk/functions/toProvider.html/index.html deleted file mode 100644 index 6480e4b3f..000000000 --- a/build/docs/build-on-morph/sdk/functions/toProvider.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toProvider/index.html b/build/docs/build-on-morph/sdk/functions/toProvider/index.html deleted file mode 100644 index 2015714dd..000000000 --- a/build/docs/build-on-morph/sdk/functions/toProvider/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - -toProvider | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / toProvider

-

Function: toProvider()

-
-

toProvider(provider): Provider

-
-

Converts a ProviderLike into a Provider. Assumes that if the input is a string then it is a -JSON-RPC url.

-

Parameters

-

provider: ProviderLike

-

ProviderLike to turn into a Provider.

-

Returns

-

Provider

-

Input as a Provider.

-

Source

-

src/utils/coercion.ts:46

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toSignerOrProvider.htm/index.html b/build/docs/build-on-morph/sdk/functions/toSignerOrProvider.htm/index.html deleted file mode 100644 index 221aca997..000000000 --- a/build/docs/build-on-morph/sdk/functions/toSignerOrProvider.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toSignerOrProvider.html/index.html b/build/docs/build-on-morph/sdk/functions/toSignerOrProvider.html/index.html deleted file mode 100644 index 221aca997..000000000 --- a/build/docs/build-on-morph/sdk/functions/toSignerOrProvider.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toSignerOrProvider/index.html b/build/docs/build-on-morph/sdk/functions/toSignerOrProvider/index.html deleted file mode 100644 index 391f0212a..000000000 --- a/build/docs/build-on-morph/sdk/functions/toSignerOrProvider/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - -toSignerOrProvider | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / toSignerOrProvider

-

Function: toSignerOrProvider()

-
-

toSignerOrProvider(signerOrProvider): Provider | Signer

-
-

Converts a SignerOrProviderLike into a Signer or a Provider. Assumes that if the input is a -string then it is a JSON-RPC url.

-

Parameters

-

signerOrProvider: SignerOrProviderLike

-

SignerOrProviderLike to turn into a Signer or Provider.

-

Returns

-

Provider | Signer

-

Input as a Signer or Provider.

-

Source

-

src/utils/coercion.ts:25

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toTransactionHash.htm/index.html b/build/docs/build-on-morph/sdk/functions/toTransactionHash.htm/index.html deleted file mode 100644 index bb402c565..000000000 --- a/build/docs/build-on-morph/sdk/functions/toTransactionHash.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toTransactionHash.html/index.html b/build/docs/build-on-morph/sdk/functions/toTransactionHash.html/index.html deleted file mode 100644 index bb402c565..000000000 --- a/build/docs/build-on-morph/sdk/functions/toTransactionHash.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/functions/toTransactionHash/index.html b/build/docs/build-on-morph/sdk/functions/toTransactionHash/index.html deleted file mode 100644 index a61ad063a..000000000 --- a/build/docs/build-on-morph/sdk/functions/toTransactionHash/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -toTransactionHash | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / toTransactionHash

-

Function: toTransactionHash()

-
-

toTransactionHash(transaction): string

-
-

Pulls a transaction hash out of a TransactionLike object.

-

Parameters

-

transaction: TransactionLike

-

TransactionLike to convert into a transaction hash.

-

Returns

-

string

-

Transaction hash corresponding to the TransactionLike input.

-

Source

-

src/utils/coercion.ts:62

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/globals.htm/index.html b/build/docs/build-on-morph/sdk/globals.htm/index.html deleted file mode 100644 index dfa15a82b..000000000 --- a/build/docs/build-on-morph/sdk/globals.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/globals.html/index.html b/build/docs/build-on-morph/sdk/globals.html/index.html deleted file mode 100644 index dfa15a82b..000000000 --- a/build/docs/build-on-morph/sdk/globals.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/globals/index.html b/build/docs/build-on-morph/sdk/globals/index.html deleted file mode 100644 index 17d164c5b..000000000 --- a/build/docs/build-on-morph/sdk/globals/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - -Use SDK to interact with Morph | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk

-

The @morph-l2/sdk package provides a set of tools for interacting with Morph.

-

Installation

-
npm install @morph-l2/sdk@latest
-

Docs

-

You can find auto-generated API documentation over at docs.morphl2.io.

-

Using the SDK

-

CrossChainMessenger

-

The CrossChainMessenger class simplifies the process of moving assets and data between Ethereum and Morph. -You can use this class to, for example, initiate a withdrawal of ERC20 tokens from Morph back to Ethereum, accurately track when the withdrawal is ready to be finalized on Ethereum, and execute the finalization transaction after the challenge period has elapsed. -The CrossChainMessenger can handle deposits and withdrawals of ETH and any ERC20-compatible token. -The CrossChainMessenger automatically connects to all relevant contracts so complex configuration is not necessary.

- -

The Morph SDK includes various utilities for handling Morph's transaction fee model. -For instance, estimateTotalGasCost will estimate the total cost (in wei) to send at transaction on Morph including both the L2 execution cost and the L1 data cost. -You can also use the asL2Provider function to wrap an ethers Provider object into an L2Provider which will have all of these helper functions attached.

-

Other utilities

-

The SDK contains other useful helper functions and constants. -For a complete list, refer to the auto-generated SDK documentation

-

Documents

-

Enumerations

- -

Classes

- -

Interfaces

- -

Type Aliases

- -

Variables

- -

Functions

-
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.htm/index.html deleted file mode 100644 index 6f52710a6..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.html/index.html b/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.html/index.html deleted file mode 100644 index 6f52710a6..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData/index.html b/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData/index.html deleted file mode 100644 index 8db6c5360..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapterData/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -BridgeAdapterData | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters.htm/index.html deleted file mode 100644 index e44fbfb87..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters.html/index.html b/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters.html/index.html deleted file mode 100644 index e44fbfb87..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters/index.html b/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters/index.html deleted file mode 100644 index 9d30a4e6b..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/BridgeAdapters/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -BridgeAdapters | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.htm/index.html deleted file mode 100644 index 0bce75105..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.html/index.html b/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.html/index.html deleted file mode 100644 index 0bce75105..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage/index.html b/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage/index.html deleted file mode 100644 index 62e633277..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CoreCrossChainMessage/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -CoreCrossChainMessage | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / CoreCrossChainMessage

-

Interface: CoreCrossChainMessage

-

Core components of a cross chain message.

-

Extended by

- -

Properties

-

message

-
-

message: string

-
-

Source

-

src/interfaces/types.ts:242

-
-

messageNonce

-
-

messageNonce: BigNumber

-
-

Source

-

src/interfaces/types.ts:243

-
-

minGasLimit

-
-

minGasLimit: BigNumber

-
-

Source

-

src/interfaces/types.ts:245

-
-

sender

-
-

sender: string

-
-

Source

-

src/interfaces/types.ts:240

-
-

target

-
-

target: string

-
-

Source

-

src/interfaces/types.ts:241

-
-

value

-
-

value: BigNumber

-
-

Source

-

src/interfaces/types.ts:244

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage.htm/index.html deleted file mode 100644 index 45f22b15d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage.html/index.html b/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage.html/index.html deleted file mode 100644 index 45f22b15d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage/index.html b/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage/index.html deleted file mode 100644 index a935bd91b..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessage/index.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - -CrossChainMessage | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / CrossChainMessage

-

Interface: CrossChainMessage

-

Describes a message that is sent between L1 and L2. Direction determines where the message was -sent from and where it's being sent to.

-

Extends

- -

Properties

-

blockNumber

-
-

blockNumber: number

-
-

Source

-

src/interfaces/types.ts:255

-
-

direction

-
-

direction: MessageDirection

-
-

Source

-

src/interfaces/types.ts:253

-
-

logIndex

-
-

logIndex: number

-
-

Source

-

src/interfaces/types.ts:254

-
-

message

-
-

message: string

-
-

Inherited from

-

CoreCrossChainMessage.message

-

Source

-

src/interfaces/types.ts:242

-
-

messageNonce

-
-

messageNonce: BigNumber

-
-

Inherited from

-

CoreCrossChainMessage.messageNonce

-

Source

-

src/interfaces/types.ts:243

-
-

minGasLimit

-
-

minGasLimit: BigNumber

-
-

Inherited from

-

CoreCrossChainMessage.minGasLimit

-

Source

-

src/interfaces/types.ts:245

-
-

sender

-
-

sender: string

-
-

Inherited from

-

CoreCrossChainMessage.sender

-

Source

-

src/interfaces/types.ts:240

-
-

target

-
-

target: string

-
-

Inherited from

-

CoreCrossChainMessage.target

-

Source

-

src/interfaces/types.ts:241

-
-

transactionHash

-
-

transactionHash: string

-
-

Source

-

src/interfaces/types.ts:256

-
-

value

-
-

value: BigNumber

-
-

Inherited from

-

CoreCrossChainMessage.value

-

Source

-

src/interfaces/types.ts:244

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.htm/index.html deleted file mode 100644 index 44775d0c8..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.html/index.html b/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.html/index.html deleted file mode 100644 index 44775d0c8..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest/index.html b/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest/index.html deleted file mode 100644 index 0ec3334f6..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/CrossChainMessageRequest/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -CrossChainMessageRequest | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / CrossChainMessageRequest

-

Interface: CrossChainMessageRequest

-

Partial message that needs to be signed and executed by a specific signer.

-

Properties

-

direction

-
-

direction: MessageDirection

-
-

Source

-

src/interfaces/types.ts:231

-
-

message

-
-

message: string

-
-

Source

-

src/interfaces/types.ts:233

-
-

target

-
-

target: string

-
-

Source

-

src/interfaces/types.ts:232

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/IActionOptions.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/IActionOptions.htm/index.html deleted file mode 100644 index 6e5a62546..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/IActionOptions.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/IActionOptions.html/index.html b/build/docs/build-on-morph/sdk/interfaces/IActionOptions.html/index.html deleted file mode 100644 index 6e5a62546..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/IActionOptions.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/IActionOptions/index.html b/build/docs/build-on-morph/sdk/interfaces/IActionOptions/index.html deleted file mode 100644 index f3ff33b16..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/IActionOptions/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -IActionOptions | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / IActionOptions

-

Interface: IActionOptions

-

Param

-

Optional signer to use to send the transaction.

-

Param

-

Optional address to receive the funds on chain. Defaults to sender.

-

Param

-

Direction to search for messages in. If not provided, will attempt to

-
    -
  • automatically search both directions under the assumption that a transaction hash will only
  • -
  • exist on one chain. If the hash exists on both chains, will throw an error.
  • -
-

Param

-

Optional transaction overrides.

-

Properties

-

direction?

-
-

optional direction: MessageDirection

-
-

Source

-

src/interfaces/types.ts:412

-
-

from?

-
-

optional from: string

-
-

Source

-

src/interfaces/types.ts:410

-
-

overrides?

-
-

optional overrides: object & CallOverrides

-
-

Type declaration

-
gatewayAddress?
-
-

optional gatewayAddress: string

-
-
gatewayName?
-
-

optional gatewayName: string

-
-

Source

-

src/interfaces/types.ts:413

-
-

recipient?

-
-

optional recipient: AddressLike

-
-

Source

-

src/interfaces/types.ts:411

-
-

signer?

-
-

optional signer: Signer

-
-

Source

-

src/interfaces/types.ts:409

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.htm/index.html deleted file mode 100644 index d7e6981c1..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.html/index.html b/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.html/index.html deleted file mode 100644 index d7e6981c1..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter/index.html b/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter/index.html deleted file mode 100644 index 3dcfab8dc..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/IBridgeAdapter/index.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - -IBridgeAdapter | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / IBridgeAdapter

-

Interface: IBridgeAdapter

-

Represents an adapter for an L1 - L2 token bridge. Each custom bridge currently needs its own -adapter because the bridge interface is not standardized. This may change in the future.

-

Properties

-

estimateGas

-
-

estimateGas: object

-
-

Object that holds the functions that estimates the gas required for a given transaction. -Follows the pattern used by ethers.js.

-

approve()

-

Estimates gas required to approve some tokens to deposit into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

Gas estimate for the transaction.

-

deposit()

-

Estimates gas required to deposit some tokens into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to deposit.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

Gas estimate for the transaction.

-

withdraw()

-

Estimates gas required to withdraw some tokens back to the L1 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to withdraw.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<BigNumber>

-

Gas estimate for the transaction.

-

Source

-

src/interfaces/bridge-adapter.ts:221

-
-

l1Bridge

-
-

l1Bridge: Contract

-
-

L1 bridge contract.

-

Source

-

src/interfaces/bridge-adapter.ts:38

-
-

l2Bridge

-
-

l2Bridge: Contract

-
-

L2 bridge contract.

-

Source

-

src/interfaces/bridge-adapter.ts:43

-
-

messenger

-
-

messenger: CrossChainMessenger

-
-

Provider used to make queries related to cross-chain interactions.

-

Source

-

src/interfaces/bridge-adapter.ts:33

-
-

populateTransaction

-
-

populateTransaction: object

-
-

Object that holds the functions that generate transactions to be signed by the user. -Follows the pattern used by ethers.js.

-

approve()

-

Generates a transaction for approving some tokens to deposit into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<TransactionRequest>

-

Transaction that can be signed and executed to deposit the tokens.

-

deposit()

-

Generates a transaction for depositing some tokens into the L2 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to deposit.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<TransactionRequest>

-

Transaction that can be signed and executed to deposit the tokens.

-

withdraw()

-

Generates a transaction for withdrawing some tokens back to the L1 chain.

-
Parameters
-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to withdraw.

-

opts?: IActionOptions

-

Additional options.

-
Returns
-

Promise<TransactionRequest>

-

Transaction that can be signed and executed to withdraw the tokens.

-

Source

-

src/interfaces/bridge-adapter.ts:167

-

Methods

-

approval()

-
-

approval(l1Token, l2Token, opts?): Promise<BigNumber>

-
-

Queries the account's approval amount for a given L1 token.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<BigNumber>

-

Amount of tokens approved for deposits from the account.

-

Source

-

src/interfaces/bridge-adapter.ts:103

-
-

approve()

-
-

approve(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Approves a deposit into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to approve.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the approval transaction.

-

Source

-

src/interfaces/bridge-adapter.ts:119

-
-

deposit()

-
-

deposit(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Deposits some tokens into the L2 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to deposit.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the deposit transaction.

-

Source

-

src/interfaces/bridge-adapter.ts:137

-
-

getDepositsByAddress()

-
-

getDepositsByAddress(address, opts?): Promise<TokenBridgeMessage[]>

-
-

Gets all deposits for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts?

-

Options object.

-

opts.fromBlock?: BlockTag

-

Block to start searching for messages from. If not provided, will start -from the first block (block #0).

-

opts.toBlock?: BlockTag

-

Block to stop searching for messages at. If not provided, will stop at the -latest known block ("latest").

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All deposit token bridge messages sent by the given address.

-

Source

-

src/interfaces/bridge-adapter.ts:56

-
-

getWithdrawalsByAddress()

-
-

getWithdrawalsByAddress(address, opts?): Promise<TokenBridgeMessage[]>

-
-

Gets all withdrawals for a given address.

-

Parameters

-

address: AddressLike

-

Address to search for messages from.

-

opts?

-

Options object.

-

opts.fromBlock?: BlockTag

-

Block to start searching for messages from. If not provided, will start -from the first block (block #0).

-

opts.toBlock?: BlockTag

-

Block to stop searching for messages at. If not provided, will stop at the -latest known block ("latest").

-

Returns

-

Promise<TokenBridgeMessage[]>

-

All withdrawal token bridge messages sent by the given address.

-

Source

-

src/interfaces/bridge-adapter.ts:75

-
-

supportsTokenPair()

-
-

supportsTokenPair(l1Token, l2Token): Promise<boolean>

-
-

Checks whether the given token pair is supported by the bridge.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

Returns

-

Promise<boolean>

-

Whether the given token pair is supported by the bridge.

-

Source

-

src/interfaces/bridge-adapter.ts:90

-
-

withdraw()

-
-

withdraw(l1Token, l2Token, amount, signer, opts?): Promise<TransactionResponse>

-
-

Withdraws some tokens back to the L1 chain.

-

Parameters

-

l1Token: AddressLike

-

The L1 token address.

-

l2Token: AddressLike

-

The L2 token address.

-

amount: NumberLike

-

Amount of the token to withdraw.

-

signer: Signer

-

Signer used to sign and send the transaction.

-

opts?: IActionOptions

-

Additional options.

-

Returns

-

Promise<TransactionResponse>

-

Transaction response for the withdraw transaction.

-

Source

-

src/interfaces/bridge-adapter.ts:155

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2Block.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/L2Block.htm/index.html deleted file mode 100644 index 21606be78..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2Block.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2Block.html/index.html b/build/docs/build-on-morph/sdk/interfaces/L2Block.html/index.html deleted file mode 100644 index 21606be78..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2Block.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2Block/index.html b/build/docs/build-on-morph/sdk/interfaces/L2Block/index.html deleted file mode 100644 index 7a3549911..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2Block/index.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - -L2Block | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L2Block

-

Interface: L2Block

-

JSON block representation when returned by L2Geth nodes. Just a normal block but with -an added stateRoot field.

-

Extends

-
    -
  • Block
  • -
-

Properties

-

_difficulty

-
-

_difficulty: BigNumber

-
-

Inherited from

-

Block._difficulty

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:41

-
-

baseFeePerGas?

-
-

optional baseFeePerGas: BigNumber

-
-

Inherited from

-

Block.baseFeePerGas

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:46

-
-

difficulty

-
-

difficulty: number

-
-

Inherited from

-

Block.difficulty

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:40

-
-

extraData

-
-

extraData: string

-
-

Inherited from

-

Block.extraData

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:45

-
-

gasLimit

-
-

gasLimit: BigNumber

-
-

Inherited from

-

Block.gasLimit

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:42

-
-

gasUsed

-
-

gasUsed: BigNumber

-
-

Inherited from

-

Block.gasUsed

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:43

-
-

hash

-
-

hash: string

-
-

Inherited from

-

Block.hash

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:35

-
-

miner

-
-

miner: string

-
-

Inherited from

-

Block.miner

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:44

-
-

nonce

-
-

nonce: string

-
-

Inherited from

-

Block.nonce

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:39

-
-

number

-
-

number: number

-
-

Inherited from

-

Block.number

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:37

-
-

parentHash

-
-

parentHash: string

-
-

Inherited from

-

Block.parentHash

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:36

-
-

stateRoot

-
-

stateRoot: string

-
-

Source

-

src/interfaces/l2-provider.ts:27

-
-

timestamp

-
-

timestamp: number

-
-

Inherited from

-

Block.timestamp

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:38

-
-

transactions

-
-

transactions: string[]

-
-

Inherited from

-

Block.transactions

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:49

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.htm/index.html deleted file mode 100644 index 31415895d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.html/index.html b/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.html/index.html deleted file mode 100644 index 31415895d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions/index.html b/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions/index.html deleted file mode 100644 index 3ef6c7063..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2BlockWithTransactions/index.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - -L2BlockWithTransactions | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L2BlockWithTransactions

-

Interface: L2BlockWithTransactions

-

JSON block representation when returned by L2Geth nodes. Just a normal block but with -L2Transaction objects instead of the standard transaction response object.

-

Extends

-
    -
  • BlockWithTransactions
  • -
-

Properties

-

_difficulty

-
-

_difficulty: BigNumber

-
-

Inherited from

-

BlockWithTransactions._difficulty

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:41

-
-

baseFeePerGas?

-
-

optional baseFeePerGas: BigNumber

-
-

Inherited from

-

BlockWithTransactions.baseFeePerGas

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:46

-
-

difficulty

-
-

difficulty: number

-
-

Inherited from

-

BlockWithTransactions.difficulty

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:40

-
-

extraData

-
-

extraData: string

-
-

Inherited from

-

BlockWithTransactions.extraData

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:45

-
-

gasLimit

-
-

gasLimit: BigNumber

-
-

Inherited from

-

BlockWithTransactions.gasLimit

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:42

-
-

gasUsed

-
-

gasUsed: BigNumber

-
-

Inherited from

-

BlockWithTransactions.gasUsed

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:43

-
-

hash

-
-

hash: string

-
-

Inherited from

-

BlockWithTransactions.hash

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:35

-
-

miner

-
-

miner: string

-
-

Inherited from

-

BlockWithTransactions.miner

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:44

-
-

nonce

-
-

nonce: string

-
-

Inherited from

-

BlockWithTransactions.nonce

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:39

-
-

number

-
-

number: number

-
-

Inherited from

-

BlockWithTransactions.number

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:37

-
-

parentHash

-
-

parentHash: string

-
-

Inherited from

-

BlockWithTransactions.parentHash

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:36

-
-

stateRoot

-
-

stateRoot: string

-
-

Source

-

src/interfaces/l2-provider.ts:35

-
-

timestamp

-
-

timestamp: number

-
-

Inherited from

-

BlockWithTransactions.timestamp

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:38

-
-

transactions

-
-

transactions: [L2Transaction]

-
-

Overrides

-

BlockWithTransactions.transactions

-

Source

-

src/interfaces/l2-provider.ts:36

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2Transaction.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/L2Transaction.htm/index.html deleted file mode 100644 index 4328fcff3..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2Transaction.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2Transaction.html/index.html b/build/docs/build-on-morph/sdk/interfaces/L2Transaction.html/index.html deleted file mode 100644 index 4328fcff3..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2Transaction.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/L2Transaction/index.html b/build/docs/build-on-morph/sdk/interfaces/L2Transaction/index.html deleted file mode 100644 index 4f8563b66..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/L2Transaction/index.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - -L2Transaction | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L2Transaction

-

Interface: L2Transaction

-

JSON transaction representation when returned by L2Geth nodes. This is simply an extension to -the standard transaction response type. You do NOT need to use this type unless you care about -having typed access to L2-specific fields.

-

Extends

-
    -
  • TransactionResponse
  • -
-

Properties

-

accessList?

-
-

optional accessList: AccessList

-
-

Inherited from

-

TransactionResponse.accessList

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:40

-
-

blockHash?

-
-

optional blockHash: string

-
-

Inherited from

-

TransactionResponse.blockHash

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:26

-
-

blockNumber?

-
-

optional blockNumber: number

-
-

Inherited from

-

TransactionResponse.blockNumber

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:25

-
-

chainId

-
-

chainId: number

-
-

Inherited from

-

TransactionResponse.chainId

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:35

-
-

confirmations

-
-

confirmations: number

-
-

Inherited from

-

TransactionResponse.confirmations

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:28

-
-

data

-
-

data: string

-
-

Inherited from

-

TransactionResponse.data

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:33

-
-

from

-
-

from: string

-
-

Inherited from

-

TransactionResponse.from

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:29

-
-

gasLimit

-
-

gasLimit: BigNumber

-
-

Inherited from

-

TransactionResponse.gasLimit

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:31

-
-

gasPrice?

-
-

optional gasPrice: BigNumber

-
-

Inherited from

-

TransactionResponse.gasPrice

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:32

-
-

hash

-
-

hash: string

-
-

Inherited from

-

TransactionResponse.hash

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:24

-
-

l1BlockNumber

-
-

l1BlockNumber: number

-
-

Source

-

src/interfaces/l2-provider.ts:16

-
-

l1TxOrigin

-
-

l1TxOrigin: string

-
-

Source

-

src/interfaces/l2-provider.ts:17

-
-

maxFeePerGas?

-
-

optional maxFeePerGas: BigNumber

-
-

Inherited from

-

TransactionResponse.maxFeePerGas

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:42

-
-

maxPriorityFeePerGas?

-
-

optional maxPriorityFeePerGas: BigNumber

-
-

Inherited from

-

TransactionResponse.maxPriorityFeePerGas

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:41

-
-

nonce

-
-

nonce: number

-
-

Inherited from

-

TransactionResponse.nonce

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:30

-
-

queueOrigin

-
-

queueOrigin: string

-
-

Source

-

src/interfaces/l2-provider.ts:18

-
-

r?

-
-

optional r: string

-
-

Inherited from

-

TransactionResponse.r

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:36

-
-

raw?

-
-

optional raw: string

-
-

Inherited from

-

TransactionResponse.raw

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:30

-
-

rawTransaction

-
-

rawTransaction: string

-
-

Source

-

src/interfaces/l2-provider.ts:19

-
-

s?

-
-

optional s: string

-
-

Inherited from

-

TransactionResponse.s

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:37

-
-

timestamp?

-
-

optional timestamp: number

-
-

Inherited from

-

TransactionResponse.timestamp

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:27

-
-

to?

-
-

optional to: string

-
-

Inherited from

-

TransactionResponse.to

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:28

-
-

type?

-
-

optional type: number

-
-

Inherited from

-

TransactionResponse.type

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:39

-
-

v?

-
-

optional v: number

-
-

Inherited from

-

TransactionResponse.v

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:38

-
-

value

-
-

value: BigNumber

-
-

Inherited from

-

TransactionResponse.value

-

Source

-

node_modules/@ethersproject/transactions/lib/index.d.ts:34

-
-

wait()

-
-

wait: (confirmations?) => Promise<TransactionReceipt>

-
-

Parameters

-

confirmations?: number

-

Returns

-

Promise<TransactionReceipt>

-

Inherited from

-

TransactionResponse.wait

-

Source

-

node_modules/@ethersproject/abstract-provider/lib/index.d.ts:31

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/MessageReceipt.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/MessageReceipt.htm/index.html deleted file mode 100644 index f0cbd39f7..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/MessageReceipt.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/MessageReceipt.html/index.html b/build/docs/build-on-morph/sdk/interfaces/MessageReceipt.html/index.html deleted file mode 100644 index f0cbd39f7..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/MessageReceipt.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/MessageReceipt/index.html b/build/docs/build-on-morph/sdk/interfaces/MessageReceipt/index.html deleted file mode 100644 index 3841b4c9b..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/MessageReceipt/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - -MessageReceipt | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEContracts.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/OEContracts.htm/index.html deleted file mode 100644 index f2c38d194..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEContracts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEContracts.html/index.html b/build/docs/build-on-morph/sdk/interfaces/OEContracts.html/index.html deleted file mode 100644 index f2c38d194..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEContracts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEContracts/index.html b/build/docs/build-on-morph/sdk/interfaces/OEContracts/index.html deleted file mode 100644 index 389b77c77..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEContracts/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -OEContracts | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEContractsLike.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/OEContractsLike.htm/index.html deleted file mode 100644 index 6aeea99d6..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEContractsLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEContractsLike.html/index.html b/build/docs/build-on-morph/sdk/interfaces/OEContractsLike.html/index.html deleted file mode 100644 index 6aeea99d6..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEContractsLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEContractsLike/index.html b/build/docs/build-on-morph/sdk/interfaces/OEContractsLike/index.html deleted file mode 100644 index f6470d6a1..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEContractsLike/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -OEContractsLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts.htm/index.html deleted file mode 100644 index 54b52d128..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts.html/index.html b/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts.html/index.html deleted file mode 100644 index 54b52d128..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts/index.html b/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts/index.html deleted file mode 100644 index 122e561a6..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEL1Contracts/index.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - -OEL1Contracts | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / OEL1Contracts

-

Interface: OEL1Contracts

-

L1 contract references.

-

Properties

-

EnforcedTxGateway

-
-

EnforcedTxGateway: Contract

-
-

Source

-

src/interfaces/types.ts:64

-
-

L1CrossDomainMessenger

-
-

L1CrossDomainMessenger: Contract

-
-

Source

-

src/interfaces/types.ts:54

-
-

L1ERC1155Gateway

-
-

L1ERC1155Gateway: Contract

-
-

Source

-

src/interfaces/types.ts:63

-
-

L1ERC721Gateway

-
-

L1ERC721Gateway: Contract

-
-

Source

-

src/interfaces/types.ts:62

-
-

L1ETHGateway

-
-

L1ETHGateway: Contract

-
-

Source

-

src/interfaces/types.ts:60

-
-

L1GatewayRouter

-
-

L1GatewayRouter: Contract

-
-

Source

-

src/interfaces/types.ts:59

-
-

L1MessageQueueWithGasPriceOracle

-
-

L1MessageQueueWithGasPriceOracle: Contract

-
-

Source

-

src/interfaces/types.ts:55

-
-

L1StandardERC20Gateway

-
-

L1StandardERC20Gateway: Contract

-
-

Source

-

src/interfaces/types.ts:61

-
-

L1WETHGateway

-
-

L1WETHGateway: Contract

-
-

Source

-

src/interfaces/types.ts:66

-
-

MorphToken?

-
-

optional MorphToken: Contract

-
-

Source

-

src/interfaces/types.ts:68

-
-

Rollup

-
-

Rollup: Contract

-
-

Source

-

src/interfaces/types.ts:58

-
-

Staking

-
-

Staking: Contract

-
-

Source

-

src/interfaces/types.ts:56

-
-

WETH

-
-

WETH: Contract

-
-

Source

-

src/interfaces/types.ts:65

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts.htm/index.html deleted file mode 100644 index 361976de0..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts.html/index.html b/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts.html/index.html deleted file mode 100644 index 361976de0..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts/index.html b/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts/index.html deleted file mode 100644 index e885b3058..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/OEL2Contracts/index.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - -OEL2Contracts | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / OEL2Contracts

-

Interface: OEL2Contracts

-

L2 contract references.

-

Properties

-

GasPriceOracle

-
-

GasPriceOracle: Contract

-
-

Source

-

src/interfaces/types.ts:97

-
-

Gov

-
-

Gov: Contract

-
-

Source

-

src/interfaces/types.ts:86

-
-

L2CrossDomainMessenger

-
-

L2CrossDomainMessenger: Contract

-
-

Source

-

src/interfaces/types.ts:89

-
-

L2ERC1155Gateway

-
-

L2ERC1155Gateway: Contract

-
-

Source

-

src/interfaces/types.ts:94

-
-

L2ERC721Gateway

-
-

L2ERC721Gateway: Contract

-
-

Source

-

src/interfaces/types.ts:91

-
-

L2ETHGateway

-
-

L2ETHGateway: Contract

-
-

Source

-

src/interfaces/types.ts:88

-
-

L2GatewayRouter

-
-

L2GatewayRouter: Contract

-
-

Source

-

src/interfaces/types.ts:84

-
-

L2StandardERC20Gateway

-
-

L2StandardERC20Gateway: Contract

-
-

Source

-

src/interfaces/types.ts:90

-
-

L2ToL1MessagePasser

-
-

L2ToL1MessagePasser: Contract

-
-

Source

-

src/interfaces/types.ts:83

-
-

L2TxFeeVault

-
-

L2TxFeeVault: Contract

-
-

Source

-

src/interfaces/types.ts:92

-
-

L2WETH

-
-

L2WETH: Contract

-
-

Source

-

src/interfaces/types.ts:98

-
-

L2WETHGateway

-
-

L2WETHGateway: Contract

-
-

Source

-

src/interfaces/types.ts:99

-
-

MorphStandardERC20

-
-

MorphStandardERC20: Contract

-
-

Source

-

src/interfaces/types.ts:95

-
-

MorphStandardERC20Factory

-
-

MorphStandardERC20Factory: Contract

-
-

Source

-

src/interfaces/types.ts:96

-
-

MorphToken?

-
-

optional MorphToken: Contract

-
-

Source

-

src/interfaces/types.ts:102

-
-

Sequencer

-
-

Sequencer: Contract

-
-

Source

-

src/interfaces/types.ts:85

-
-

WrappedEther

-
-

WrappedEther: Contract

-
-

Source

-

src/interfaces/types.ts:100

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.htm/index.html deleted file mode 100644 index 2177ee277..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.html/index.html b/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.html/index.html deleted file mode 100644 index 2177ee277..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal/index.html b/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal/index.html deleted file mode 100644 index c18ed1cd2..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/ProvenWithdrawal/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -ProvenWithdrawal | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / ProvenWithdrawal

-

Interface: ProvenWithdrawal

-

ProvenWithdrawal in L1CrossDomainMessenger

-

Properties

-

timestamp

-
-

timestamp: BigNumber

-
-

Source

-

src/interfaces/types.ts:316

-
-

withdrawalIndex

-
-

withdrawalIndex: BigNumber

-
-

Source

-

src/interfaces/types.ts:319

-
-

withdrawalRoot

-
-

withdrawalRoot: string

-
-

Source

-

src/interfaces/types.ts:318

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRoot.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRoot.htm/index.html deleted file mode 100644 index 92d73e24d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRoot.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRoot.html/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRoot.html/index.html deleted file mode 100644 index 92d73e24d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRoot.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRoot/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRoot/index.html deleted file mode 100644 index 745ba28a3..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRoot/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -StateRoot | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / StateRoot

-

Interface: StateRoot

-

Information about a state root, including header, block number, and root iself.

-

Properties

-

batch

-
-

batch: StateRootBatch

-
-

Source

-

src/interfaces/types.ts:339

-
-

stateRoot

-
-

stateRoot: string

-
-

Source

-

src/interfaces/types.ts:337

-
-

stateRootIndexInBatch

-
-

stateRootIndexInBatch: number

-
-

Source

-

src/interfaces/types.ts:338

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRootBatch.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRootBatch.htm/index.html deleted file mode 100644 index 60e21bb2a..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRootBatch.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRootBatch.html/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRootBatch.html/index.html deleted file mode 100644 index 60e21bb2a..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRootBatch.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRootBatch/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRootBatch/index.html deleted file mode 100644 index abaa0f82d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRootBatch/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -StateRootBatch | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / StateRootBatch

-

Interface: StateRootBatch

-

Information about a batch of state roots.

-

Properties

-

blockNumber

-
-

blockNumber: number

-
-

Source

-

src/interfaces/types.ts:346

-
- -
-

header: StateRootBatchHeader

-
-

Source

-

src/interfaces/types.ts:347

-
-

stateRoots

-
-

stateRoots: string[]

-
-

Source

-

src/interfaces/types.ts:348

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.htm/index.html deleted file mode 100644 index 35d4c4b7f..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.html/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.html/index.html deleted file mode 100644 index 35d4c4b7f..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader/index.html b/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader/index.html deleted file mode 100644 index 2e5eae247..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/StateRootBatchHeader/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -StateRootBatchHeader | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / StateRootBatchHeader

-

Interface: StateRootBatchHeader

-

Header for a state root batch.

-

Properties

-

batchIndex

-
-

batchIndex: BigNumber

-
-

Source

-

src/interfaces/types.ts:326

-
-

batchRoot

-
-

batchRoot: string

-
-

Source

-

src/interfaces/types.ts:327

-
-

batchSize

-
-

batchSize: BigNumber

-
-

Source

-

src/interfaces/types.ts:328

-
-

extraData

-
-

extraData: string

-
-

Source

-

src/interfaces/types.ts:330

-
-

prevTotalElements

-
-

prevTotalElements: BigNumber

-
-

Source

-

src/interfaces/types.ts:329

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.htm/index.html deleted file mode 100644 index b11c7d828..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.html/index.html b/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.html/index.html deleted file mode 100644 index b11c7d828..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage/index.html b/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage/index.html deleted file mode 100644 index 993e4305e..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/TokenBridgeMessage/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -TokenBridgeMessage | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / TokenBridgeMessage

-

Interface: TokenBridgeMessage

-

Describes a token withdrawal or deposit, along with the underlying raw cross chain message -behind the deposit or withdrawal.

-

Properties

-

amount

-
-

amount: BigNumber

-
-

Source

-

src/interfaces/types.ts:280

-
-

blockNumber

-
-

blockNumber: number

-
-

Source

-

src/interfaces/types.ts:283

-
-

data

-
-

data: string

-
-

Source

-

src/interfaces/types.ts:281

-
-

direction

-
-

direction: MessageDirection

-
-

Source

-

src/interfaces/types.ts:275

-
-

from

-
-

from: string

-
-

Source

-

src/interfaces/types.ts:276

-
-

l1Token

-
-

l1Token: string

-
-

Source

-

src/interfaces/types.ts:278

-
-

l2Token

-
-

l2Token: string

-
-

Source

-

src/interfaces/types.ts:279

-
-

logIndex

-
-

logIndex: number

-
-

Source

-

src/interfaces/types.ts:282

-
-

to

-
-

to: string

-
-

Source

-

src/interfaces/types.ts:277

-
-

transactionHash

-
-

transactionHash: string

-
-

Source

-

src/interfaces/types.ts:284

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.htm/index.html deleted file mode 100644 index cb2a96647..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.html/index.html b/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.html/index.html deleted file mode 100644 index cb2a96647..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof/index.html b/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof/index.html deleted file mode 100644 index e1326b99d..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/WithdrawMessageProof/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -WithdrawMessageProof | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / WithdrawMessageProof

-

Interface: WithdrawMessageProof

-

Properties

-

withdrawalIndex

-
-

withdrawalIndex: BigNumber

-
-

Source

-

src/cross-chain-messenger.ts:61

-
-

withdrawalLeaf

-
-

withdrawalLeaf: any

-
-

Source

-

src/cross-chain-messenger.ts:64

-
-

withdrawalProof

-
-

withdrawalProof: string[]

-
-

Source

-

src/cross-chain-messenger.ts:62

-
-

withdrawalRoot

-
-

withdrawalRoot: string

-
-

Source

-

src/cross-chain-messenger.ts:63

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.htm/index.html b/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.htm/index.html deleted file mode 100644 index fed76a0b0..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.html/index.html b/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.html/index.html deleted file mode 100644 index fed76a0b0..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry/index.html b/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry/index.html deleted file mode 100644 index 5b18cafbb..000000000 --- a/build/docs/build-on-morph/sdk/interfaces/WithdrawalEntry/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -WithdrawalEntry | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / WithdrawalEntry

-

Interface: WithdrawalEntry

-

Represents a withdrawal entry within the logs of a L2 to L1 -CrossChainMessage

-

Properties

-

MessagePassed

-
-

MessagePassed: any

-
-

Source

-

src/interfaces/types.ts:292

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/intro.htm/index.html b/build/docs/build-on-morph/sdk/intro.htm/index.html deleted file mode 100644 index 204f75328..000000000 --- a/build/docs/build-on-morph/sdk/intro.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/intro.html/index.html b/build/docs/build-on-morph/sdk/intro.html/index.html deleted file mode 100644 index 204f75328..000000000 --- a/build/docs/build-on-morph/sdk/intro.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/intro/index.html b/build/docs/build-on-morph/sdk/intro/index.html deleted file mode 100644 index f7dd762ce..000000000 --- a/build/docs/build-on-morph/sdk/intro/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - -intro | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/AddressLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/AddressLike.htm/index.html deleted file mode 100644 index ed41ac977..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/AddressLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/AddressLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/AddressLike.html/index.html deleted file mode 100644 index ed41ac977..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/AddressLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/AddressLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/AddressLike/index.html deleted file mode 100644 index ec9e330d9..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/AddressLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -AddressLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / AddressLike

-

Type alias: AddressLike

-
-

AddressLike: string | Contract

-
-

Stuff that can be coerced into an address.

-

Source

-

src/interfaces/types.ts:391

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/DeepPartial.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/DeepPartial.htm/index.html deleted file mode 100644 index b9ae209c5..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/DeepPartial.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/DeepPartial.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/DeepPartial.html/index.html deleted file mode 100644 index b9ae209c5..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/DeepPartial.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/DeepPartial/index.html b/build/docs/build-on-morph/sdk/type-aliases/DeepPartial/index.html deleted file mode 100644 index 26d902e56..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/DeepPartial/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -DeepPartial | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / DeepPartial

-

Type alias: DeepPartial<T>

-
-

DeepPartial<T>: { [P in keyof T]?: DeepPartial<T[P]> }

-
-

Utility type for deep partials.

-

Type parameters

-

T

-

Source

-

src/utils/type-utils.ts:4

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/L1Provider.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/L1Provider.htm/index.html deleted file mode 100644 index 0a95491cb..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/L1Provider.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/L1Provider.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/L1Provider.html/index.html deleted file mode 100644 index 0a95491cb..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/L1Provider.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/L1Provider/index.html b/build/docs/build-on-morph/sdk/type-aliases/L1Provider/index.html deleted file mode 100644 index 97d3fe23a..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/L1Provider/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - -L1Provider | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L1Provider

-

Type alias: L1Provider<TProvider>

-
-

L1Provider<TProvider>: TProvider & object

-
-

Represents an extended version of an normal ethers Provider that returns additional L1 info and -has special functions for L1-specific interactions.

-

Type declaration

-

_isL1Provider

-
-

_isL1Provider: true

-
-

Internal property to determine if a provider is a L1Provider -You are likely looking for the isL2Provider function

-

estimateCrossDomainMessageFee()

-

Gets the current L1 (data) gas price.

-

Parameters

-

l1Provider: ProviderLike

-

sender: string

-

gasLimit: number | bigint | BigNumber

-

Returns

-

Promise<BigNumber>

-

Current L1 data gas price in wei.

-

Type parameters

-

TProvider extends Provider

-

Source

-

src/interfaces/l1-provider.ts:11

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/L2Provider.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/L2Provider.htm/index.html deleted file mode 100644 index 05c31e88b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/L2Provider.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/L2Provider.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/L2Provider.html/index.html deleted file mode 100644 index 05c31e88b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/L2Provider.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/L2Provider/index.html b/build/docs/build-on-morph/sdk/type-aliases/L2Provider/index.html deleted file mode 100644 index e8d4cafee..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/L2Provider/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -L2Provider | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / L2Provider

-

Type alias: L2Provider<TProvider>

-
-

L2Provider<TProvider>: TProvider & object

-
-

Represents an extended version of an normal ethers Provider that returns additional L2 info and -has special functions for L2-specific interactions.

-

Type declaration

-

_isL2Provider

-
-

_isL2Provider: true

-
-

Internal property to determine if a provider is a L2Provider -You are likely looking for the isL2Provider function

-

estimateL1Gas()

-

Estimates the L1 (data) gas required for a transaction.

-

Parameters

-

tx: TransactionRequest

-

Transaction to estimate L1 gas for.

-

Returns

-

Promise<BigNumber>

-

Estimated L1 gas.

-

estimateL1GasCost()

-

Estimates the L1 (data) gas cost for a transaction in wei by multiplying the estimated L1 gas -cost by the current L1 gas price.

-

Parameters

-

tx: TransactionRequest

-

Transaction to estimate L1 gas cost for.

-

Returns

-

Promise<BigNumber>

-

Estimated L1 gas cost.

-

estimateL2GasCost()

-

Estimates the L2 (execution) gas cost for a transaction in wei by multiplying the estimated L1 -gas cost by the current L2 gas price. This is a simple multiplication of the result of -getGasPrice and estimateGas for the given transaction request.

-

Parameters

-

tx: TransactionRequest

-

Transaction to estimate L2 gas cost for.

-

Returns

-

Promise<BigNumber>

-

Estimated L2 gas cost.

-

estimateTotalGasCost()

-

Estimates the total gas cost for a transaction in wei by adding the estimated the L1 gas cost -and the estimated L2 gas cost.

-

Parameters

-

tx: TransactionRequest

-

Transaction to estimate total gas cost for.

-

Returns

-

Promise<BigNumber>

-

Estimated total gas cost.

-

getL1GasPrice()

-

Gets the current L1 (data) gas price.

-

Returns

-

Promise<BigNumber>

-

Current L1 data gas price in wei.

-

Type parameters

-

TProvider extends Provider

-

Source

-

src/interfaces/l2-provider.ts:43

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.htm/index.html deleted file mode 100644 index 07179109f..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.html/index.html deleted file mode 100644 index 07179109f..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage/index.html b/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage/index.html deleted file mode 100644 index 661d43a0b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/LowLevelMessage/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -LowLevelMessage | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / LowLevelMessage

-

Type alias: LowLevelMessage

-
-

LowLevelMessage: CoreCrossChainMessage & object

-
-

Describes messages sent inside the L2ToL1MessagePasser on L2. Happens to be the same structure -as the CoreCrossChainMessage so we'll reuse the type for now.

-

Type declaration

-

encodedMessage

-
-

encodedMessage: string

-
-

messageHash

-
-

messageHash: string

-
-

messageSender

-
-

messageSender: string

-
-

messageTarget

-
-

messageTarget: string

-
-

Source

-

src/interfaces/types.ts:263

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/MessageLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/MessageLike.htm/index.html deleted file mode 100644 index bb37965ec..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/MessageLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/MessageLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/MessageLike.html/index.html deleted file mode 100644 index bb37965ec..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/MessageLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/MessageLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/MessageLike/index.html deleted file mode 100644 index 8a104e0b9..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/MessageLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -MessageLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.htm/index.html deleted file mode 100644 index 92371a39c..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.html/index.html deleted file mode 100644 index 92371a39c..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike/index.html deleted file mode 100644 index 69a210b6a..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/MessageRequestLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -MessageRequestLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/NumberLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/NumberLike.htm/index.html deleted file mode 100644 index 2f7b13c9b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/NumberLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/NumberLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/NumberLike.html/index.html deleted file mode 100644 index 2f7b13c9b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/NumberLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/NumberLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/NumberLike/index.html deleted file mode 100644 index 080a892e7..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/NumberLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -NumberLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / NumberLike

-

Type alias: NumberLike

-
-

NumberLike: string | number | BigNumber | bigint

-
-

Stuff that can be coerced into a number.

-

Source

-

src/interfaces/types.ts:396

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.htm/index.html deleted file mode 100644 index 1012969f2..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.html/index.html deleted file mode 100644 index 1012969f2..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike/index.html deleted file mode 100644 index e46ea8dfc..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/OEL1ContractsLike/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -OEL1ContractsLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / OEL1ContractsLike

-

Type alias: OEL1ContractsLike

-
-

OEL1ContractsLike: { [K in keyof OEL1Contracts]: AddressLike }

-
-

Convenience type for something that looks like the L1 OE contract interface but could be -addresses instead of actual contract objects.

-

Source

-

src/interfaces/types.ts:129

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.htm/index.html deleted file mode 100644 index 68ab86694..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.html/index.html deleted file mode 100644 index 68ab86694..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike/index.html deleted file mode 100644 index 27fa9d567..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/OEL2ContractsLike/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -OEL2ContractsLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / OEL2ContractsLike

-

Type alias: OEL2ContractsLike

-
-

OEL2ContractsLike: { [K in keyof OEL2Contracts]: AddressLike }

-
-

Convenience type for something that looks like the L2 OE contract interface but could be -addresses instead of actual contract objects.

-

Source

-

src/interfaces/types.ts:137

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/ProviderLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/ProviderLike.htm/index.html deleted file mode 100644 index 2f1d595fd..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/ProviderLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/ProviderLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/ProviderLike.html/index.html deleted file mode 100644 index 2f1d595fd..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/ProviderLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/ProviderLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/ProviderLike/index.html deleted file mode 100644 index a7cc60648..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/ProviderLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -ProviderLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / ProviderLike

-

Type alias: ProviderLike

-
-

ProviderLike: string | Provider

-
-

Stuff that can be coerced into a provider.

-

Source

-

src/interfaces/types.ts:376

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/SignerLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/SignerLike.htm/index.html deleted file mode 100644 index 902a5c05b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/SignerLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/SignerLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/SignerLike.html/index.html deleted file mode 100644 index 902a5c05b..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/SignerLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/SignerLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/SignerLike/index.html deleted file mode 100644 index 322617009..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/SignerLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -SignerLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / SignerLike

-

Type alias: SignerLike

-
-

SignerLike: string | Signer

-
-

Stuff that can be coerced into a signer.

-

Source

-

src/interfaces/types.ts:381

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.htm/index.html deleted file mode 100644 index a0000d977..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.html/index.html deleted file mode 100644 index a0000d977..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike/index.html deleted file mode 100644 index 8d3c1f423..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/SignerOrProviderLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -SignerOrProviderLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/TransactionLike.htm/index.html b/build/docs/build-on-morph/sdk/type-aliases/TransactionLike.htm/index.html deleted file mode 100644 index af0435b94..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/TransactionLike.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/TransactionLike.html/index.html b/build/docs/build-on-morph/sdk/type-aliases/TransactionLike.html/index.html deleted file mode 100644 index af0435b94..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/TransactionLike.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/type-aliases/TransactionLike/index.html b/build/docs/build-on-morph/sdk/type-aliases/TransactionLike/index.html deleted file mode 100644 index b7bcacdd4..000000000 --- a/build/docs/build-on-morph/sdk/type-aliases/TransactionLike/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -TransactionLike | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / TransactionLike

-

Type alias: TransactionLike

-
-

TransactionLike: string | TransactionReceipt | TransactionResponse

-
-

Stuff that can be coerced into a transaction.

-

Source

-

src/interfaces/types.ts:354

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.htm/index.html b/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.htm/index.html deleted file mode 100644 index 74dcab3bb..000000000 --- a/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.html/index.html b/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.html/index.html deleted file mode 100644 index 74dcab3bb..000000000 --- a/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA/index.html b/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA/index.html deleted file mode 100644 index ac7c564e8..000000000 --- a/build/docs/build-on-morph/sdk/variables/BRIDGE_ADAPTER_DATA/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -BRIDGE_ADAPTER_DATA | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / BRIDGE_ADAPTER_DATA

-

Variable: BRIDGE_ADAPTER_DATA

-
-

const BRIDGE_ADAPTER_DATA: { [ChainID in L2ChainID]?: BridgeAdapterData }

-
-

Mapping of L1 chain IDs to the list of custom bridge addresses for each chain.

-

Source

-

src/utils/chain-constants.ts:128

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.htm/index.html b/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.htm/index.html deleted file mode 100644 index 3d4f8009e..000000000 --- a/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.html/index.html b/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.html/index.html deleted file mode 100644 index 3d4f8009e..000000000 --- a/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES/index.html b/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES/index.html deleted file mode 100644 index dd03ef40c..000000000 --- a/build/docs/build-on-morph/sdk/variables/CHAIN_BLOCK_TIMES/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -CHAIN_BLOCK_TIMES | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / CHAIN_BLOCK_TIMES

-

Variable: CHAIN_BLOCK_TIMES

-
-

const CHAIN_BLOCK_TIMES: { [ChainID in L1ChainID]: number }

-
-

Source

-

src/utils/chain-constants.ts:22

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.htm/index.html b/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.htm/index.html deleted file mode 100644 index 33fc84222..000000000 --- a/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.html/index.html b/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.html/index.html deleted file mode 100644 index 33fc84222..000000000 --- a/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES/index.html b/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES/index.html deleted file mode 100644 index 59eb29feb..000000000 --- a/build/docs/build-on-morph/sdk/variables/CONTRACT_ADDRESSES/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -CONTRACT_ADDRESSES | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / CONTRACT_ADDRESSES

-

Variable: CONTRACT_ADDRESSES

-
-

const CONTRACT_ADDRESSES: { [ChainID in L2ChainID]: OEContractsLike }

-
-

Mapping of L1 chain IDs to the appropriate contract addresses for the OE deployments to the -given network. Simplifies the process of getting the correct contract addresses for a given -contract name.

-

Source

-

src/utils/chain-constants.ts:100

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.htm/index.html b/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.htm/index.html deleted file mode 100644 index 8e19f25c6..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.html/index.html b/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.html/index.html deleted file mode 100644 index 8e19f25c6..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES/index.html b/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES/index.html deleted file mode 100644 index 6c382468e..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEFAULT_L1_CONTRACT_ADDRESSES/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -DEFAULT_L1_CONTRACT_ADDRESSES | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.htm/index.html b/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.htm/index.html deleted file mode 100644 index 0fd5fc48a..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.html/index.html b/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.html/index.html deleted file mode 100644 index 0fd5fc48a..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES/index.html b/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES/index.html deleted file mode 100644 index ceff7f196..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEFAULT_L2_CONTRACT_ADDRESSES/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -DEFAULT_L2_CONTRACT_ADDRESSES | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.htm/index.html b/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.htm/index.html deleted file mode 100644 index c8910088f..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.html/index.html b/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.html/index.html deleted file mode 100644 index c8910088f..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS/index.html b/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS/index.html deleted file mode 100644 index 6abcddbc9..000000000 --- a/build/docs/build-on-morph/sdk/variables/DEPOSIT_CONFIRMATION_BLOCKS/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -DEPOSIT_CONFIRMATION_BLOCKS | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / DEPOSIT_CONFIRMATION_BLOCKS

-

Variable: DEPOSIT_CONFIRMATION_BLOCKS

-
-

const DEPOSIT_CONFIRMATION_BLOCKS: { [ChainID in L2ChainID]: number }

-
-

Source

-

src/utils/chain-constants.ts:12

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l1BridgeName.htm/index.html b/build/docs/build-on-morph/sdk/variables/l1BridgeName.htm/index.html deleted file mode 100644 index f9ea7c2c9..000000000 --- a/build/docs/build-on-morph/sdk/variables/l1BridgeName.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l1BridgeName.html/index.html b/build/docs/build-on-morph/sdk/variables/l1BridgeName.html/index.html deleted file mode 100644 index f9ea7c2c9..000000000 --- a/build/docs/build-on-morph/sdk/variables/l1BridgeName.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l1BridgeName/index.html b/build/docs/build-on-morph/sdk/variables/l1BridgeName/index.html deleted file mode 100644 index fd428c11e..000000000 --- a/build/docs/build-on-morph/sdk/variables/l1BridgeName/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -l1BridgeName | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.htm/index.html b/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.htm/index.html deleted file mode 100644 index 56afe2593..000000000 --- a/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.html/index.html b/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.html/index.html deleted file mode 100644 index 56afe2593..000000000 --- a/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName/index.html b/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName/index.html deleted file mode 100644 index 2bf0e139c..000000000 --- a/build/docs/build-on-morph/sdk/variables/l1CrossDomainMessengerName/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -l1CrossDomainMessengerName | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / l1CrossDomainMessengerName

-

Variable: l1CrossDomainMessengerName

-
-

const l1CrossDomainMessengerName: "L1CrossDomainMessenger" = 'L1CrossDomainMessenger'

-
-

Source

-

src/cross-chain-messenger.ts:67

- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l2BridgeName.htm/index.html b/build/docs/build-on-morph/sdk/variables/l2BridgeName.htm/index.html deleted file mode 100644 index ee3992d44..000000000 --- a/build/docs/build-on-morph/sdk/variables/l2BridgeName.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l2BridgeName.html/index.html b/build/docs/build-on-morph/sdk/variables/l2BridgeName.html/index.html deleted file mode 100644 index ee3992d44..000000000 --- a/build/docs/build-on-morph/sdk/variables/l2BridgeName.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l2BridgeName/index.html b/build/docs/build-on-morph/sdk/variables/l2BridgeName/index.html deleted file mode 100644 index fadfe1d03..000000000 --- a/build/docs/build-on-morph/sdk/variables/l2BridgeName/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -l2BridgeName | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.htm/index.html b/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.htm/index.html deleted file mode 100644 index 68291925b..000000000 --- a/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.html/index.html b/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.html/index.html deleted file mode 100644 index 68291925b..000000000 --- a/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName/index.html b/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName/index.html deleted file mode 100644 index 6907c392c..000000000 --- a/build/docs/build-on-morph/sdk/variables/l2CrossDomainMessengerName/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -l2CrossDomainMessengerName | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

@morph-l2/sdkDocs

-
-

@morph-l2/sdk / l2CrossDomainMessengerName

-

Variable: l2CrossDomainMessengerName

-
-

const l2CrossDomainMessengerName: "L2CrossDomainMessenger" = 'L2CrossDomainMessenger'

-
-

Source

-

src/cross-chain-messenger.ts:68

- - \ No newline at end of file diff --git a/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network.htm/index.html b/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network.htm/index.html deleted file mode 100644 index f1cac2e48..000000000 --- a/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network.html/index.html b/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network.html/index.html deleted file mode 100644 index f1cac2e48..000000000 --- a/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network/index.html b/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network/index.html deleted file mode 100644 index fc039dce7..000000000 --- a/build/docs/how-morph-works/decentralized-sequencers/morph-decentralized-sequencer-network/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Morph's Decentralized Sequencer Network | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Morph's Decentralized Sequencer Network

RVP

-

The Importance of Decentralized Sequencers

-

What is a sequencer and what does it do?

-

In a traditional Layer 1 blockchain, transactions are packaged and processed by miners in proof-of-work systems or validators nodes in proof-of-stake systems. These entities earn the authority to package, sequence, and produce blocks either through the competitive task of computational mining or via staking-based elections.

-

However, many current Layer 2 designs employ a single role, unburdened by competition or staking costs, responsible for packaging and sequencing all Layer 2 transactions. This entity is known as the “sequencer”. Its duties extend beyond sequencing; it is also tasked with generating L2 blocks, periodically committing Layer 2 transactions and state changes to Layer 1, and addressing any potential challenges to its submissions.

-

Centralized sequencers present a challenge due to their sole dominion over the sequencing and packaging of Layer 2 transactions. This monopoly raises concerns, largely stemming from this centralized control.

-

What are the problems with centralized sequencers?

-

Vulnerability of a Single Point of Failure

-

The proper functioning of Layer 2 is intrinsically tied to the operation of the sequencer. If the sequencer stops working, transactions from all Layer 2 users will not be processed, effectively bringing down Layer 2 operations. The problem is magnified when a single entity controls the sequencer. Should the entity fail, the entirety of the Layer 2 is paralyzed, rendering the system vulnerable to a single point of failure. Therefore, centralized sequencers pose a significant risk to the stability of Layer 2.

-

Excessive Transaction Censorship

-

Centralized sequencers have the ability to reject user-submitted transactions, rendering them unprocessable — a blatant form of transaction censorship. In a scenario where a centralized Layer 2 deliberately blocks transactions involving its governance tokens, panic and selling among users is likely to follow. -Some solutions allow users to submit their intended transactions directly on Layer 1. However, this process is time-consuming, often taking several hours, and burdens users with Layer 1 gas fees. Therefore, this alternative does not fundamentally solve the problem. -In a decentralized sequencer framework, should one sequencer decline a transaction, users can still relay it to alternative sequencers. The content of the next block is ultimately determined through consensus, ensuring no single entity can censor transactions based on personal interests.

-

Monopoly Over MEV

-

Because the sequencer can determine the order (or "sequence") of received transactions, it effectively has a monopoly over all Miner Extractable Value (MEV). In this scenario, users must bear any potential losses incurred by the sequencer’s exclusive control over MEV, necessitating an additional and unwarranted layer of trust in the sequencer. -Decentralized sequencers introduce a competitive dynamic among multiple entities aiming for MEV. This competition eliminates the monopoly of any single sequencer, mitigating the adverse effects of unchecked MEV on users.

-

What's Morph's Approach to Decentralized Sequencers?

-

Morph is distinct from other Rollup projects due to the emphasis on establishing a decentralized sequencer network from inception. This design is guided by the following core principles:

-

Efficiency:​

-

Morph is first and foremost an Ethereum scaling solution, focused on improved efficiency and cost reduction. Our solution must guarantee fast execution and transaction confirmation at Layer 2 while maintaining the highest possible level of decentralization.

-

Scalable and Manageable:​

-

The sequencer network’s design prioritizes ease of maintenance, expansion, and updating. If one network functionality requires maintenance, it should not disrupt the operation of other functionalities. In addition, the sequencer network should be adaptable and easily upgradable as new and more efficient solutions emerge.

-

Solutions Formulated on These Principles​

-

With these principles, Morph’s sequencer network design includes:

-
    -
  • Modularity: The structure emphasizes modular components that are loosely connected, allowing for swift upgrades or replacements.
  • -
  • Byzantine Fault Tolerant (BFT) Consensus: Sequencers employ a BFT consensus for L2 block generation.
  • -
  • BLS Signature for Batch Signing: Sequencers sign a collective of L2 blocks using the BLS signature method. The L1 contract then verifies this L2 consensus through the BLS signature.
  • -
-
tip

Why BLS signature?

A current basic signature algorithm such as ECDSA in Ethereum has an excessive cost. This issue arises because the signature data needs to be submitted to the Layer 1 contract and requires payment of the corresponding cost. As the number of validators increases, this cost will also increase proportionally. By using BLS signatures, the cost of uploading signatures can be maintained at a constant level, unaffected by the gradual growth of the sequencer's quantity.

-

Architecture

-

The following is a simple illustration of Morph’s decentralized sequencing network architecture.

-

Sequencer Network Archi

-

Sequencer Set Selection

-

A complete Morph decentralized sequencer network consists of two parts:

-
    -
  • Sequencer Set : This forms the core group that provides sequencing services
  • -
  • Sequencer Staking Contract: This contract facilitates the selection of the sequencer set via an election process.
  • -
-

Through the sequencer staking contract, members are elected into the sequencer set, where they collaboratively provide services for the Morph network. Periodically, the election results are synchronized to the Layer 1 Rollup contract. This synchronized data is utilized to obtain the BLS aggregate signatures of sequencer network participants for comparison and verification.

-

Layer 2 Blocks Generation

-

Given Morph's modular design, each sequencer operates a consensus client that runs BFT to communicate with other sequencers.

-

Block Generation

-

Following the BFT consensus protocol, the selected sequencer extracts transactions from the mempool, constructs blocks, and synchronizes these blocks with other sequencers to undergo verification and voting. The end result is the generation of new Layer 2 blocks.

-

Batching

-

Considering the costs of uploading to and validating signatures on Layer 1, sequencers will sign a batch of blocks with BLS signatures at designated checkpoints.

-

BlockSign

-

Post-signing, the designated sequencer forwards the collective batch of blocks to Layer 1 through its batch submitter component.

-

Consensus Verification

-

The selected sequencer must submit to the Layer 1 contract:

-
    -
  • The aggregated BLS signatures
  • -
  • The batch of transactions
  • -
  • The consensus-determined state
  • -
-

The Layer 1 contract will verify the submitted signature to confirm the transaction's consensus.

-

Summary

-
    -
  • Morph operates a native decentralized sequencer network based on BFT consensus.
  • -
  • Through protocol and network optimization, Morph maximizes the scalability of Ethereum while ensuring decentralization.
  • -
  • Based on BLS signatures, other participants in Layer 1 and Layer 2 can effectively verify the consensus results of Layer 2, ensuring the security provided by the sequencer network is confirmable at the Layer 1 level.
  • -
-

Roadmap

-

Stage 1: Close test on morph beta testnet

-

Stage 2: Decentralized sequencer network live on mainnet

-

Stage 3: Open election of sequencer set

-

Stage 4: Open Morph's sequencer network to the public l2 space

- - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum.htm/index.html b/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum.htm/index.html deleted file mode 100644 index 00d11a6dd..000000000 --- a/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum.html/index.html b/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum.html/index.html deleted file mode 100644 index 00d11a6dd..000000000 --- a/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum/index.html b/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum/index.html deleted file mode 100644 index 8547813c9..000000000 --- a/build/docs/how-morph-works/general-protocol-design/communicate-between-morph-and-ethereum/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - -Communication between Morph and Ethereum | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Communication between Morph and Ethereum

Although Morph is a Layer 2 solution built atop Ethereum, it remains a separate and distinct blockchain. Thus, it’s essential to establish a communication channel between Morph and Ethereum to facilitate the smooth transfer of assets and messages. The communication can occur in two directions: from Ethereum to Morph and from Morph to Ethereum.

-

The Basics of Morph - Ethereum Bridge​

-

Transferring assets between Ethereum and Morph involves the following process:

-
    -
  • -

    Asset Locking and Wrapping: To initiate the transfer, a user must lock their asset on the cross-layer bridge. When the lock is confirmed, Morph mints a Wrapped Token that represents the value of the locked asset, in a procedure referred to as a "deposit".

    -
  • -
  • -

    Asset Reception: Following the minting, the user or intended recipient will receive the asset on Morph, reflecting the value of the originally locked asset.

    -
  • -
  • -

    Reverse Process: Conversely, to transfer assets back to Ethereum, the bridge can unlock the original asset on Ethereum by burning the Wrapped Token on Morph. This is referred to as "withdraw".

    -
  • -
-

Furthermore, the bridge’s utility extends beyond asset transfers. It employs the same foundational principle for message transfers, enabling the conveyance of data payloads across two network layers.

-

Understanding the Gateway

-

The Gateway serves as the primary entry point for users to interact with the entire bridge system. While the core process of transferring assets across layers still relies on message transmission, we recommend using the Gateway approach for efficient cross-layer transactions.

-

Catering to diverse cross-layer asset transfer needs, we have designed distinct Gateways such as the ETH Gateway, standard ERC20 Gateway, and others.

-

Furthermore, we have implemented the Gateway Router to call on different Gateways based on the type of assets you have. This facilitates seamless interaction with the Gateway Router contract.

-
L1 Gateway ContractDescription
L1GatewayRouterThe gateway router supports the deposit of ETH and ERC20 tokens.
L1ETHGatewayThe gateway to deposit ETH.
L1StandardERC20GatewayThe gateway for standard ERC20 token deposits.
L1CustomERC20GatewayThe gateway for custom ERC20 token deposits.
L1WETHGatewayThe gateway for Wrapped ETH deposits.
-
L2 Gateway ContractDescription
L2GatewayRouterThe gateway router supports the withdraw of ETH and ERC20 tokens.
L2ETHGatewayThe gateway to withdraw ETH.
L2StandardERC20GatewayThe gateway for standard ERC20 token withdraw.
L2CustomERC20GatewayThe gateway for custom ERC20 token withdraw.
L2WETHGatewayThe gateway for Wrapped ETH withdraw.
-

Deposit (L1 to L2 message)

-

Deposit Process

-

Constructing a Deposit Request Through the Gateway

-

A bridge request, whether it is for ETH, ERC20, or ERC721, is essentially a cross-layer message, which necessitates the initial construction of a message.

-

Generally, the message structure remains consistent, especially for ETH & ERC20 Gateways.

-

Employing a token gateway compiles a standard token gateway message and relays it to the CrossDomainMessenger.

-

Passing the Message Through the CrossDomainMessenger

-

The CrossDomainMessenger serves as the core unit of cross-layer communication, -with corresponding messenger contracts on both Layer 1 and Layer 2.

-

For a deposit, the L1 messenger sends a message to the L2 messenger, akin to a contract call on Layer 1, which means custom messages (contract interactions) can be constructed to perform various types of cross-layer interactions.

-

Executing the Message on Layer 2

-

The cross-domain message is delivered to the L1MessageQueueWithGasPriceOracle, which then triggers an event called QueueTransaction.

-

The Sequencer will monitor this event and include a Layer 2 transaction in its next block.

-

How to make sure Sequencer doesn't fake a deposit transaction?

-

Sequencers may have the motivation to forge a non-existent deposit transaction, such as minting a large amount of Layer 2 tokens and transferring these to an address they own.

-

Morph prevents these risks with two measures:

-

Due to Morph’s decentralized Sequencer architecture, forging transactions would require control of at least two-thirds of the Sequencers, a challenging feat.

-

Morph's optimistic zkEVM framework allows challengers to detect such malicious behavior and initiate challenges to correct the misconduct.

-

A Layer 2 executor, holding the cross-layer message, interacts with the L2 messenger to execute the message, which may include transferring L2 ETH or ERC20 tokens to the recipient.

-

Finalizing the Deposit Message

-

The completion of the deposit process involves more than just executing the request on Layer 2. There is a possibility that the Layer 2 execution and its corresponding state update could be reverted due to incorrect batch data being identified through the challenge process.

-

Therefore, a deposit request is only considered complete once the corresponding batch of the deposit execution transaction is finalized.

-

Typically, this follows a simple workflow:

-
    -
  • -

    The deposit execution transactions are compiled into a batch and submitted to Layer 1 by batch submitters.

    -
  • -
  • -

    Following the challenge period, valid batches are finalized by subsequent batch submissions using rollup.commitBatch.

    -
  • -
  • -

    During finalization, the L1MessageQueueAndGasPriceOracle removes(pop) the deposit message from the queue, marking the completion of the deposit process.

    -
  • -
-

Withdraw (L2 -> L1 message)

-

Withdraw Process

-

Finalizing a Withdrawal

-

Unlike Deposits, a withdrawal request must undergo 2 processes for execution:

-
    -
  1. -

    Prove that a withdraw request actually happened on Layer 2 by verifying a Merkle tree proof against the withdrawal tree root committed by sequencers.

    -
  2. -
  3. -

    Wait for the challenge period to end and finalize the withdraw tree root, addressing the risk of sequencer submitting incorrect batch data, including the withdraw tree root.

    -
  4. -
-

Typically, these 2 processes happen at the same time. Once the withdraw tree root is finalized, users can call the proveAndRelayMessage method within the L1CrossDomainMessenger contract to execute the withdrawal message.

-
function proveAndRelayMessage(
address _from,
address _to,
uint256 _value,
uint256 _nonce,
bytes memory _message,
bytes32[32] calldata _withdrawalProof,
bytes32 _withdrawalRoot
)

-

This function serves two primary purposes:

-
    -
  1. It checks if the withdraw tree root associated with this message has been finalized through the rollup contract.
  2. -
  3. It verifies whether the withdraw request actually occurred by validating the provided Merkle proof.
  4. -
-

Upon successful completion of both processes, this method will execute the corresponding action, such as releasing the user's ETH on Layer 1 for a standard ETH withdrawal request.

-

Understanding the Withdraw Tree

-

Withdrawal actions involve interacting with L1 assets/contracts as a result of a Layer 2 transaction. Consequently, it’s imperative to verify the existence of a Layer 2 transaction that triggers a withdrawal request, in a manner that is verifiable on Layer 1.

-

To achieve this, we introduce a structure known as a Withdraw Tree, which records every L2 withdrawal transaction within a Merkle tree. Thus, a Merkle tree's properties can be leveraged to confirm a withdrawal request’s occurrence.

-

The term Withdraw Tree refers to an append-only Sparse Merkle Tree (SMT) with leaf nodes that capture information on assets being transferred out of the network. -Each leaf in the Withdraw Tree, known as a Withdraw leaf, falls into two categories: type 0 for recording asset(s) information and type 1 for recording messaging information.

-

A withdraw leaf, in particular, is a Keccak256 hash of the ABI encoded packed structure with cross domain message.

-

The Withdraw Tree is instrumental in cataloging withdrawal transactions and ascertaining the legitimacy of withdrawal requests.

-

Morph has pre-deployed a Simple Merkle Tree contract dedicated to constructing the Layer 2 withdraw tree.

-

This tree incorporates three methods:

-
    -
  1. getTreeroot - Retrieves the current tree's root hash.
  2. -
  3. appendMessageHash - Appends a new leaf node to the tree.
  4. -
  5. verifyMerkleProof - Verifies if a leaf node exists in the tree, indicating the validity of the bridge request it represents.
  6. -
-

Understanding the Challenge Period & Batch Finalization

-

The Optimistic zkEVM architecture mandates that each L2 transaction be submitted to Layer 1 and undergo a challenge period before finalization.

-

This process is vital to validate the Layer 2 state, eventually validating the authenticity of the withdraw request.

-

The withdraw tree root, integral for withdrawal request verification, is also submitted by sequencers once the challenge period, batches, and states have been finalized.

-

Cross-layer (Bridge) Errors

-

With the design of cross-layer bridges, the cross-layer message for deposits needs to be executed and have its Layer 2 states updated. Sending a cross-chain request successfully does not guarantee its successful execution on L2.

-

Prior to this, there is a possibility of the cross-layer message failing during execution on Layer 2. -This section outlines the potential scenarios and solutions for handling failed cross-layer deposit messages.

-

Cross-layer (Bridge) Failure Scenarios:

-

Two primary types of failures can occur in cross-layer (bridge) communications:

-
    -
  1. -

    Gas Failure: Cross-layer messages sent from the L1 to the L2 might fail during execution on the L2 due to limitations in gasLimit or code logic.

    -
  2. -
  3. -

    Skipped Message: Some data executions may trigger overflows in the circuits of L2 nodes, leading to the omission or skipping of cross-layer messages.

    -
  4. -
-

Handling Cross-layer (Bridge) Failures:

-

For Gas Failures:

-
    -
  • -

    When the L1CrossDomainMessenger contract on L1 dispatches a cross-layer message, it records the corresponding message hash but does not incorporate the gasLimit in this record. Post-execution on L2, the L2CrossDomainMessenger performs an equivalent calculation, storing the contract call result in mapping(isL1MessageExecuted). This measure prevents multiple executions of the same message and facilitates the adjustment of gasLimit parameters for replaying failed messages.

    -
  • -
  • -

    Replay Message: If gasLimit is insufficient, causing a failed execution on the L2, a new cross-layer message with a revised gasLimit parameter can be sent by calling L1CrossDomainMessenger.replayMessage.

    -
  • -
-

For Skipped Messages:

-
    -
  • -

    Messages dropped due to potential circuit overflow on the L2 are skipped and not executed. Custom cross-layer calling contracts need to implement the -onDropMessage method to consider such cases.

    -
  • -
  • -

    The gateway contract includes the onDropMessage method, designed to refund the initiator of the cross-layer message.

    -
  • -
  • -

    Calling L1CrossDomainMessenger.dropMessage discards the cross-layer message and triggers the onDropMessage method in the originating contract, passing the transaction's value and message as msg.value and method parameters, accordingly.

    -
  • -
- - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph.htm/index.html b/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph.htm/index.html deleted file mode 100644 index d95c222f3..000000000 --- a/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph.html/index.html b/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph.html/index.html deleted file mode 100644 index d95c222f3..000000000 --- a/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph/index.html b/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph/index.html deleted file mode 100644 index 31baab1c6..000000000 --- a/build/docs/how-morph-works/general-protocol-design/difference-between-ethereum-and-morph/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - -Difference between Morph and Ethereum | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Difference between Morph and Ethereum

There are several technical differences between Ethereum’s EVM and Morph's optimistic zkEVM.

-

We’ve compiled a list to help you understand these distinctions better.

-

For most Solidity developers, these technical details won't significantly impact your development experience.

-

EVM Precompiles Difference

-

The RIPEMD-160 (address 0x3), blake2f (address 0x9), and point evaluation (address 0x0a) precompiles are currently unsupported. Calls to these unsupported precompiled contracts will result in a transaction revert.

-

The modexp precompile is supported, but it only accepts inputs that are 32 bytes or smaller (i.e., u256).

-

The ecPairing precompile is also supported; however, the maximum number of points (sets or pairs) is limited to 4, rather than 6.

-

All other EVM precompiles are fully supported: ecRecover, identity, ecAdd, and ecMul.

-

EVM Opcodes Difference

-
OpcodeSolidity equivalentMorph Behavior
BLOCKHASHblock.blockhashReturns keccak(chain_id || block_number) for the last 256 blocks.
COINBASEblock.coinbaseReturns the pre-deployed fee vault contract address. See Contracts
DIFFICULTY / PREVRANDAOblock.difficultyReturns 0.
SELFDESTRUCTselfdestructDisabled. If the opcode is triggered, the transaction will be reverted.
BLOBHASHtx.blob_versioned_hashes[index]Not supported
BLOBBASEFEEblob_base_fee = BLOBBASEFEE()Not supported
-
Several opcode not available

BLOBHASH and BLOBBASEFEE are not supported on Morph yet.

EIP-4788 for accessing the Beacon Chain block root is not supported too.

-

State Account Structure Difference

-

Additional Fields

-

There are two additional fields in the existing StateAccount object: PoseidonCodehash and CodeSize.

-
type StateAccount struct {
Nonce uint64
Balance *big.Int
Root common.Hash // merkle root of the storage trie
KeccakCodeHash []byte // still the Keccak codehash
// added fields
PoseidonCodeHash []byte // the Poseidon codehash
CodeSize uint64
}
-

CodeHash

-

In this context, we keep two varieties of code hashes for each contract's bytecode: the Keccak hash and the Poseidon hash.

-

The KeccakCodeHash is preserved to ensure compatibility with EXTCODEHASH, while the PoseidonCodeHash is utilized for verifying the accuracy of bytecodes loaded in the zkEVM, as Poseidon hashing offers significantly greater efficiency.

-

Block Time Difference

-
Block Time Subject to Change

Blocks are produced every second, with an empty block generated if there are no transactions for 5 seconds. However, this frequency may change in the future.

-

To compare, Ethereum has a block time of ~12 seconds.

-

Reasons for Faster Block Time in Morph

-

User Experience:

-
    -
  • -

    A faster, consistent block time provides quicker feedback, enhancing the user experience.

    -
  • -
  • -

    Optimization: As we refine the zkEVM circuits in our testnets, we can achieve higher throughput than Ethereum, even with a smaller gas limit per block or batch.

    -
  • -
-

Notice:

-
    -
  • TIMESTAMP will return the timestamp of the block. It will update every second.
  • -
  • BLOCKNUMBER will return an actual block number. It will update every second. The one-to-one mapping between blocks and transactions will no longer apply.
  • -
- - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/rollup.htm/index.html b/build/docs/how-morph-works/general-protocol-design/rollup.htm/index.html deleted file mode 100644 index d070529b9..000000000 --- a/build/docs/how-morph-works/general-protocol-design/rollup.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/rollup.html/index.html b/build/docs/how-morph-works/general-protocol-design/rollup.html/index.html deleted file mode 100644 index d070529b9..000000000 --- a/build/docs/how-morph-works/general-protocol-design/rollup.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/rollup/index.html b/build/docs/how-morph-works/general-protocol-design/rollup/index.html deleted file mode 100644 index 719eabdfb..000000000 --- a/build/docs/how-morph-works/general-protocol-design/rollup/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -Rollup | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Rollup

info

As the foundation of a Layer 2 project, the "Rollup" process refers to the method by which Layer 2 assembles L2 transactions and state into batches and subsequently submits them to L1, along with the L2 state.

Within Morph's architecture, this Rollup process is executed by the Batch Submitter components.

-

An overview of Morph Rollup Design:

-

rollup

-

Constructing the Batch​

-

The L2 Node within the sequencer generates L2 blocks based on consensus results and updates the local state of L2. The batch submitter must query the L2 node to retrieve the latest L2 blocks.

-

The batch submitter then reconstructs L2 blocks, compiling:

-
    -
  • Transactions: All transactions contained within the blocks.
  • -
  • Blockinfo : Essential information from each block.
  • -
-

The batch submitter continues fetching and reconstructing blocks until it processes a block with a BLS signature, indicating the batch point has been reached. The reconstructed block data is used to construct a batch, which contains:

-
    -
  • lastBlocknumber : The number of the final block in the batch.
  • -
  • Transactions : Encoded transactions within the batch.
  • -
  • BlockWitness : Encoded blockinfos, utilized for zkProof.
  • -
  • PreStateRoot : The stateRoot before the batch is applied.
  • -
  • PostStateRoot : The stateRoot after the batch is applied.
  • -
  • WithdrawalRoot : L2 withdrawal Merkle tree root.
  • -
  • Signature : The batch’s BLS signature.
  • -
-
info

Blockinfo (BlockWitness) is needed since Morph employs zk technology to prove the accuracy of submitted batch data. It serves as a witness in the Zero-Knowledge Proof.

-

Putting Multiple Batches into a Single Rollup Transaction​

-

While it's standard for roll-up projects to include only one batch per L1 roll-up transaction, Morph optimizes by inserting as many batches as feasible into a single L1 transaction. -This efficiency-driven approach significantly reduces overall costs, as the L1 fee is a predominant component of the transaction costs associated with the L2. By optimizing the utilization of available space, Morph achieves cost-effectiveness without compromising transaction integrity.

-

Submitting Batch Data to the Rollup Contract​

-

The batch submitter will eventually send an Ethereum transaction from its L1 account to Morph's main contract.

-

The transaction's calldata contains the batch data.

-
info

Based on the development process of ERC-4337, future batch data will likely be incorporated into a new ‘blob’ structure to further decrease costs.

-

Once the transaction is submitted and confirmed on Ethereum, validator nodes can reconstruct and verify the validity of sequencers' submissions using the transactional data within the batch.

-

Finalize the batches

-

If batches are valid according to Morph's responsive validity proof standards, all transactions within the batches will be finalized, including withdrawal transactions.

-

Consequently, withdrawal requests will be fulfilled, and the corresponding locked assets on Layer 1 will be released.

-

Decentralize Batch Submitter

-

What is Batch Submitter?

-

A Batch Submitter plays a crucial role in the "rollup" process, acting as the bridge that connects Layer 2 (L2) data with Ethereum (Layer 1 or L1). Their primary responsibilities include:

-
    -
  • Collecting L2 transactions and block data, assembling them into a cohesive batch.
  • -
  • Embedding this batch data within a Layer 1 transaction.
  • -
  • Executing this transaction by calling the Layer 1 contract to complete the rollup process.
  • -
-

rollup

-

What is the relationship between Sequencers & Batch Submitters?

-

The Batch submitter function is often integrated within the broader 'sequencer' role. In a decentralized sequencer network architecture, each sequencer is equipped with or has access to a batch submitter component. This integration is key to achieving and maintaining the highest levels of decentralization.

-

This structure ensures that the data uploaded to Layer 1 remains decentralized, preventing a single entity from controlling the rollup process.

-

How to decentralize the Batch Submitter?

-

To uphold the aforementioned principles, it is essential to ensure that multiple sequencers can share rollup tasks evenly within the same time frame. Our approach to achieving this involves a rotation system for sequencers to take turns with the responsibility of calling the batch submitter, as detailed below:

-

Submitter Rotation

-
    -
  • Epoch Cycle Role Switching: Sequencers alternate roles as batch submitters within an established Epoch cycle.
  • -
  • Cross-Epoch Execution Capability: Any Sequencer can perform a Rollup for another Sequencer's Epoch.
  • -
  • Timeout Logging: The system records instances when not a single rollup happens during an epoch, the epoch will be marked as “timeout” as well as the responsible sequencer.
  • -
-

Timeout

-
    -
  • -

    Timeout Identification: If an epoch passes without a rollup (batch submission), it's identified as a "timeout." The timing of a rollup is pegged to the confirmation time of the Layer 1 rollup transaction.

    -
  • -
  • -

    Epoch Rotation: The duration of an epoch and the rotation schedule are governed by the sequencer network governance. Sequencers are assigned indexes which determine their responsibility for an epoch. With changes in the sequencer set, indexes are reassigned, and epochs rotate accordingly based on these new assignments.

    -
  • -
-

Penalties for Timeout

-
    -
  • Accumulated Penalties: Sequencers that frequently exhibit timeout behaviors may face penalties that related to their Layer 1 ETH staking, if the timeout records reaches to a certain level, sequencer may/will be slashed from the sequencer network.
  • -
-

Module Design

-

Below you can find the contracts that are responsible for each module and their responsibilities:

-

Layer1

-
    -
  • RollupContract: records the rollup executor and sync with L2
  • -
-

Layer2

-
    -
  • SequencerContract: Sync Sequencers
  • -
  • GovContract: Manage Batch & Epoch Parameters
  • -
  • SubmitterContract: -
      -
    • Record Epoch information
    • -
    • Record Rollup history
    • -
    • Record Submitter Workload
    • -
    • Record Submitter Timeouts
    • -
    -
  • -
  • IncentiveContract: Conducts Incentive and Penalty actions
  • -
- - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle.htm/index.html b/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle.htm/index.html deleted file mode 100644 index 6ed02c6e8..000000000 --- a/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle.html/index.html b/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle.html/index.html deleted file mode 100644 index 6ed02c6e8..000000000 --- a/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle/index.html b/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle/index.html deleted file mode 100644 index 2ee88340a..000000000 --- a/build/docs/how-morph-works/general-protocol-design/transactions-life-cycle/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - -Transactions Life Cycle | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Transactions Life Cycle

How is a L2 transaction processed on Morph

-
    -
  1. Submit Transaction
  2. -
-

User-initiated transactions are first sent to the L2 node's mempool, where they await selection and processing by a sequencer.

-
    -
  1. Transaction Consensus
  2. -
-

Within the sequencer network, transactions undergo a consensus process. A selected sequencer proposes a block containing the transaction and then send the blocks to the consensus layer (consensus client).

-

Other sequencers then validate this block by executing this block, effectively verifying the transaction's legitimacy.

-
    -
  1. Transaction Execution
  2. -
-

Once all the votes on the block are finalized, each sequencer & node will apply this block to update its local state.

-
    -
  1. Transaction Batching
  2. -
-

When batch point is reached, each sequencer will need to construct the batch with all the blocks consensussed for the last epoch, the batch will go through consensus by requiring each sequencer to sign, all of the signature will be aggregated with BLS signature.

-
    -
  1. Batch Sequencing
  2. -
-

The selected sequencer will commit the batches to the Layer 1 Rollup contract for both verification and to ensure data availability.

-
    -
  1. Batch Verification
  2. -
-

A batch (so do the transactions within the batch) will first go through the BLS signature verification by the rollup contract to confirm the L2 consensus results, and then a batch will go through a challenge period to be marked as finalized, solidifying their status within the L1 and L2 state.

-

Morph Transaction Status

-

Processing​

-

Once submitted, a transaction enters the consensus phase managed by sequencers and is placed into a block pre-execution.

-

Confirmed​

-

Post-execution by the Sequencer, the transaction’s updated state is local to L2. It is then batched and sent to L1, where it must undergo a challenge period before finalization.

-

Safe

-

The batch that contains the transaction is submitted to Layer 1 but not finalized yet.

-

Finalized​

-

A transaction is considered finalized after it survives the challenge period or is verified by a Zero-Knowledge Proof (ZK-Proof). Only then is it officially integrated into the final L1 and L2 state.

- - \ No newline at end of file diff --git a/build/docs/how-morph-works/intro.htm/index.html b/build/docs/how-morph-works/intro.htm/index.html deleted file mode 100644 index e9d2fa7b5..000000000 --- a/build/docs/how-morph-works/intro.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/intro.html/index.html b/build/docs/how-morph-works/intro.html/index.html deleted file mode 100644 index e9d2fa7b5..000000000 --- a/build/docs/how-morph-works/intro.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/intro/index.html b/build/docs/how-morph-works/intro/index.html deleted file mode 100644 index 70b0f4e96..000000000 --- a/build/docs/how-morph-works/intro/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -Introduction | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Introduction

This section provides an overview of Morph’s protocol architecture, including:

-
    -
  • The Decentralized Sequencer Network
  • -
  • Optimistic zkEVM & Responsive Validity Proof (RVP)
  • -
  • Morph's Modular Architecture
  • -
  • General Protocol Design
  • -
- - \ No newline at end of file diff --git a/build/docs/how-morph-works/morph-modular-design.htm/index.html b/build/docs/how-morph-works/morph-modular-design.htm/index.html deleted file mode 100644 index 80b5b7b6b..000000000 --- a/build/docs/how-morph-works/morph-modular-design.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/morph-modular-design.html/index.html b/build/docs/how-morph-works/morph-modular-design.html/index.html deleted file mode 100644 index 80b5b7b6b..000000000 --- a/build/docs/how-morph-works/morph-modular-design.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/morph-modular-design/index.html b/build/docs/how-morph-works/morph-modular-design/index.html deleted file mode 100644 index acdf3f6ec..000000000 --- a/build/docs/how-morph-works/morph-modular-design/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -Morph Modular Design | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Morph Modular Design

The modular design of blockchain technology, known for its improved composability, has become a prevalent trend. Morph leverages this design principle to enhance its architecture and functionality.

-

arichitecture

-

Overview

-

A modular design typically divides a Layer 1 blockchain into four core functions:

-
    -
  1. Consensus
  2. -
  3. Execution
  4. -
  5. Data Availability
  6. -
  7. Settlements
  8. -
-

Morph applies this modular approach to its Layer 2 solution by dividing it into three primary modules, each responsible for specific functionalities.

-

3 Major Morph Modules

-

Sequencer Network - Consensus & Execution

-

Sequencer Network

-

Sequencer network responsible for the execution & consensus of the Layer 2 transactions, for more details please refer to Morph's decentralized sequencers.

-

Optimistic zkEVM - Settlement

-

Optimistic zkEVM

-

State verification ensures that state changes on Layer 2 are valid on Layer 1. Morph introduces Optimistic zkEVM, a hybrid solution combining zk-rollups and optimistic rollups for state verification. The process involves a Morph innovation known as Responsive Validity Proof (RVP). This innovative approach finalizes and settles Layer 2 transactions and states efficiently. For more details, refer to the documentation on Responsive Validity Proof.

-

Rollup - Data Availability

-

Rollup

-

The Rollup process involves submitting Layer 2 transactions and states to Layer 1, ensuring data availability. Morph's rollup strategy maximizes efficiency by compressing block content using zk-proofs, which helps manage the cost of Layer 1 data availability.

-

5 Morph Roles

-

Sequencers

-

Sequencers play a crucial role in the network by:

-
    -
  • Receiving Layer 2 user transactions and forming blocks.
  • -
  • Reaching consensus with other sequencers.
  • -
  • Executing blocks and applying state transitions.
  • -
  • Batching blocks and submitting them to Layer 1.
  • -
  • Synchronizing blocks with full nodes.
  • -
  • Generating validity proofs when challenged.
  • -
-

Prover

-

Provers are essential for generating zk proofs when a sequencer is challenged. They synchronize Layer 2 transaction information and produce the necessary zk proofs to validate state changes.

-

Validator

-

Validators can be any user and play a key role in ensuring the correctness of states submitted by sequencers to Layer 1. They maintain an L2 node to synchronize transactions and state changes, triggering challenges when incorrect states are identified.

-

Nodes

-

Nodes facilitate easier access to Layer 2 transactions and states without actively participating in network operations. Running an L2 node is open to anyone and does not require permission.

-

Layer 1

-

Every Layer 2 solution relies on a Layer 1 blockchain for final settlements and data availability. For Morph, this role is fulfilled by Ethereum. Key contracts on Layer 1 ensure the security and finality of Layer 2 transactions and states.

-

6 Morph Components

-

L2 Node​

-

The L2 node is central to Morph's architecture, interacting with various modules and roles. It includes sub-components such as:

-
    -
  • Transactions Manager (Mempool): Manages all Layer 2 transactions, accepting and storing user-initiated transactions.
  • -
  • Executor: Applies state transitions and maintains the real-time status of Layer 2.
  • -
  • Synchronizer: Synchronizes data between L2 nodes to restore network status.
  • -
-

Batch Submitter​

-

The Batch Submitter is part of the sequencer, responsible for continuously obtaining L2 blocks, packaging them into batches, and assembling the batches into Layer 1 transactions, which are then submitted to the Layer 1 contract.

-

Consensus Client​

-

Each sequencer runs a consensus client to reach consensus with other sequencers. The current design uses the Tendermint client to ensure seamless integration and developer friendliness.

-

zkEVM​

-

zkEVM is part of the Prover and is a zk-friendly virtual machine used to generate zk proofs for Ethereum blocks and state changes. These zk proofs are ultimately used to prove the validity of L2 transactions and states.

-

Aggregators​

-

Aggregators work with zkEVM to reduce the cost of verifying zk proofs by aggregating them for block production.

-

Layer 1 Contract​

-

These contracts on Ethereum store Layer 2 transactions, execute global state changes, and bridge assets and information between Layer 2 and Layer 1. They also manage the election and governance of the sequencer set, inheriting the security of Ethereum.

-

Integration of Components, Roles, and Modules

-

modular

-

The components form the foundation of the various roles in Morph. For instance, running an L2 node allows one to become a Node, while adding batch submitter and consensus client functionalities enables the role of Sequencer. These roles collaborate to perform the core functions of Morph, creating a complete and efficient rollup solution.

- - \ No newline at end of file diff --git a/build/docs/how-morph-works/optimistic-zkevm.htm/index.html b/build/docs/how-morph-works/optimistic-zkevm.htm/index.html deleted file mode 100644 index d7c4983f9..000000000 --- a/build/docs/how-morph-works/optimistic-zkevm.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/optimistic-zkevm.html/index.html b/build/docs/how-morph-works/optimistic-zkevm.html/index.html deleted file mode 100644 index d7c4983f9..000000000 --- a/build/docs/how-morph-works/optimistic-zkevm.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/how-morph-works/optimistic-zkevm/index.html b/build/docs/how-morph-works/optimistic-zkevm/index.html deleted file mode 100644 index 0fe7977f7..000000000 --- a/build/docs/how-morph-works/optimistic-zkevm/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Optimistic zkEVM | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Optimistic zkEVM

RVP

-

Introduction to State Verification

-

Layer 2 state verification traditionally falls into two categories: fraud proofs and validity proofs. Morph introduces a new verification method called Responsive Validity Proof (RVP), combining the benefits of both approaches to address their limitations. Fraud proofs, while effective, suffer from capital inefficiency and low security assumptions. Additionally, no Optimistic Rollup (OP-Rollup) has fully implemented a permissionless fraud-proof challenge mechanism. Conversely, validity proofs offer high security but face practical issues with cost and efficiency that hinder Rollup scalability.

-

The Problem with Optimistic Rollups

-

In this model, Layer 2 (L2) optimistically assumes that the state changes submitted by the sequencer are valid without actively verifying their authenticity. Instead, a challenge period is introduced before the state changes are confirmed on Layer 1 (L1). During this period, external challengers verify the sequencer's submissions based on their own synchronized network status. If they find discrepancies, challengers can trigger a challenge process on L1 to prevent incorrect states from being confirmed.

-

Challenge Mechanism: Although all optimistic rollups claim to implement fraud proofs, only very a few had successfully deployed them on the mainnet. Furthermore, the challengers are often limited to several whitelisted addresses. Fraud proofs in current optimistic rollup projects can be categorized into two types:

-

Non-Interactive Fraud Proofs: When a new state submitted by the sequencer is challenged, L1 re-executes all corresponding L2 transactions to generate a valid state for comparison with the state submitted by the sequencer. This process incurs significant gas costs and may lead to discrepancies between L2 and L1, as some transactions might produce different outcomes on L2 compared to L1, or L1 might not be able to execute certain L2 transactions. Optimism (OP) once used this approach but abandoned it due to these issues.

-

Interactive Fraud Proofs: To address the issues of non-interactive fraud proofs, multi-round interactive fraud proofs were introduced. This method involves determining the specific instruction execution that caused the incorrectness through multiple rounds of interaction between the sequencer and the challenger, then confirming fraud by executing the corresponding instructions on L1. This approach reduces computational costs and diminishes the issue of incongruent outcomes between L1 and L2. However, it introduces complexities, such as:

-
    -
  • Higher implementation difficulty
  • -
  • Longer challenge periods (sufficient time must be reserved for complex interactions)
  • -
  • Increased standards, impacting challengers' motivation
  • -
-

Currently, only several OP Rollups have implemented a complete interactive fraud proof mechanism on its mainnet among optimistic rollup projects. In contrast, several ZK-rollup projects have already launched on the mainnet.

-

These complexities highlight the need for improvement in existing optimistic rollup models. Hence, Morph introduces the Responsive Validity Proof (RVP).

-

What is RVP?​

-

RVP

-

Responsive Validity Proof (RVP) integrates ZK-based validity proofs into the optimistic rollup framework. The process is as follows:

-

When challengers detect that the sequencer has submitted incorrect data, they initiate a challenge request to the sequencer on Layer 1 (L1). The sequencer must then generate the corresponding Zero-Knowledge (ZK) proof within a specified time (challenge period) and pass the verification of the L1 contract. If the verification passes, the challenge fails; otherwise, the challenge succeeds. This process combines the benefits of optimistic rollups and ZK-rollups, providing a balanced approach to security and efficiency.

-

Advantages of RVP Compared to Interactive Fraud Proofs

-
    -
  1. Shorter Challenge Period: RVP can reduce the challenge period from the typical 7 days to just 1-3 days, improving overall efficiency and user experience. Right now the Morph mainnet has 48 hrs (2 days) challenge window.
  2. -
  3. Reduced L2 Submission Costs: By using validity proofs, Layer 2 (L2) does not need to include most transaction bytes, significantly lowering submission costs.
  4. -
  5. Improved Challenger Experience: With RVP, challengers only need to initiate the challenge. The sequencer must prove their correctness by generating and verifying the corresponding ZK-proof, simplifying the challenger's responsibilities.
  6. -
  7. Seamless Transition to ZK-Rollup: The architectural design of RVP allows for an easy transition to a complete ZK-rollup. The primary change required is adjusting the sequencer's ZK-proof submission methods from responsive to active.
  8. -
-

RVP enhances the optimistic rollup model by incorporating ZK-proofs, offering a more efficient, cost-effective, and secure solution. It addresses the limitations of traditional fraud proofs and paves the way for a seamless transition to full ZK-rollup implementations in the future.

-

How Can RVP Shorten the Challenge Period of an Optimistic Rollup?

-

The Need for a Challenge Period

-

Optimistic rollups incorporate a challenge period (or withdrawal period) to ensure that any malicious submissions by the sequencer can be identified and contested. This period provides sufficient time for challengers to verify transactions, conduct fraud proofs, and complete the challenge process, thereby ensuring that only valid state changes are confirmed on Layer 1 (L1). -Two main factors influence the length of the challenge period:

-
    -
  1. Completion Time: The time required for both parties to complete the challenge process.
  2. -
  3. Mitigating Malicious Behavior: Ensuring that there is enough time to address any attempts by sequencers to maliciously block the challenger’s transactions on L1.
  4. -
-

Solutions to Shorten the Challenge Period

-

Concise and Direct Challenge Process: For multi-round interactive fraud proofs, the entire challenge process might require several rounds of interaction, each demanding significant time. For example, if the process requires 10 rounds, at least 20 blocks of time are needed to complete the challenge, considering the back-and-forth responses. -In contrast, RVP simplifies the challenge process by requiring only one interaction: the sequencer uploads the ZK-proof of the batch, which is then verified on L1. This streamlined process addresses the main problem of whether challengers have enough time to detect and prove incorrectness, thus significantly reducing the challenge period.

-

Protection Against Malicious Behavior: In interactive fraud-proof systems, the challenged party might attempt to interfere with the challenge progress, such as launching a DoS attack on L1 to prevent challengers from interacting with L1 and submitting proofs. -With RVP, challengers only need to trigger the challenge. Once the challenge is initiated, the sequencer has no opportunity to interfere. The sequencer must then prove the correctness of its submission through the ZK-proof. This ensures that the normal challenge process is not affected by malicious behavior, further shortening the challenge period.

-

Key Benefits of RVP in Reducing the Challenge Period

-
    -
  • Efficiency: The single interaction required for RVP simplifies the challenge process, reducing the time needed for resolution.
  • -
  • Security: By relying on ZK-proofs, RVP provides a robust mechanism to validate state changes without lengthy interactions.
  • -
  • Cost-Effectiveness: The reduction in the number of interactions lowers the gas costs associated with challenge processes on L1.
  • -
-

By addressing these factors, RVP effectively shortens the challenge period from the traditional 7 days to just 1-3 days, offering a more efficient and secure solution for optimistic rollups.

-

Why is the Operating Cost Lower for L2 Based on RVP?

-

Compression of Transactions

-

In ZK-rollups, the validity of each transaction is confirmed through a submitted ZK-proof, which eliminates the need to include extensive transaction details. For example, the length of an Ethereum transaction is approximately 110 bytes, with the signature occupying around 68 bytes. In optimistic rollups, because transactions need to be replayed on L1, these signatures must be included to ensure validity. This increases the cost. -However, ZK-rollups only need to retain basic transaction information because the validity proof covers the entire batch. This compression capability reduces the amount of data that needs to be submitted to L1, significantly lowering costs.

-

Efficient Data Submission

-

RVP utilizes ZK-proofs to validate transactions, adopting the ZK-rollup advantage of transaction compression during batch data submission. This reduces the overall data volume and associated costs. Additionally, when there are no challenges, the sequencer does not incur the cost of generating and submitting ZK-proofs, further lowering operational expenses.

-

Comparison with Existing Solutions

-

The design of RVP ensures that the cost of rollup operations is lower than that of both existing optimistic rollups and traditional ZK-rollups. This efficiency is achieved by:

-
    -
  • Reducing the need for detailed transaction replays on L1.
  • -
  • Leveraging ZK-proofs only when necessary, minimizing unnecessary proof generation costs.
  • -
-

RVP is Friendly to Challengers

-

The core of RVP is the use of validity proofs to ultimately validate challenged data. This benefits challengers in the following ways:

-
    -
  1. Simplified Challenge Process:
  2. -
-
    -
  • In RVP, the sequencer is responsible for generating and verifying proofs. Challengers only need to initiate a challenge through staking, reducing the complexity and burden on challengers.
  • -
  • This contrasts with traditional fraud proofs, where challengers must interact multiple times with the sequencer, making the process cumbersome and complex.
  • -
-
    -
  1. Lower Threshold for Challengers:
  2. -
-
    -
  • In many Layer 2 projects, sequencers have a high incentive to act maliciously due to potential high returns. Conversely, challengers typically see lower direct benefits, leading to a lack of motivation to challenge fraudulent transactions.
  • -
  • RVP lowers the threshold for challengers by shifting the responsibility of proof generation to the sequencers, thus increasing the likelihood of detecting and correcting fraudulent behavior.
  • -
-
    -
  1. Mitigating Malicious Challenges:
  2. -
-
    -
  • While there is a risk of challengers initiating unnecessary challenges to increase costs for sequencers, RVP mitigates this by requiring challengers to compensate sequencers for the costs incurred if a challenge is unsuccessful.
  • -
  • This mechanism discourages frivolous challenges and ensures that only legitimate disputes are raised.
  • -
-

By adopting these strategies, RVP ensures a fairer and more efficient process for validating Layer 2 transactions, ultimately lowering operating costs and enhancing the security and integrity of the network.

-

Why do sequencers have to take on the responsibility of submitting ZK-proofs?​

-

Some proposals have suggested that challengers could demonstrate the falsehood of a sequencer's submission by providing their own submission and corresponding ZK-proof. The two submissions could then be compared to identify any fraudulent activity by the sequencer. However, there are significant concerns with this approach:

-

Challengers would need to generate ZK-proofs using the transactions provided by the sequencer. If the sequencer submits invalid transactions, challengers cannot create ZK-proofs that can be authenticated on Layer 1 (L1). Therefore, it is more effective for sequencers to prove the correctness of their submissions. This approach ensures that the entity responsible for the transactions verifies their accuracy, maintaining the integrity of the system..

-

Why Not Simply Employ ZK-Rollups?

-

While verifying the validity of every state submission by the sequencer through numerous cryptographic calculations, as seen in current ZK-rollups, theoretically offers higher security, this approach presents several challenges:

-

The Cost of ZK-Rollup

-

Currently, projects such as zkSync and Polygon zkEVM have launched on the mainnet, showing that generating and verifying ZK-proofs is no longer the most pressing issue. However, these ZK-proofs still face cost and efficiency constraints. For instance, the average transaction cost on zkSync Era ranges from 0.51toashighas0.51 to as high as 310, depending on L1 gas fees. This is significantly more expensive than the transaction costs of optimistic rollup projects like Arbitrum and Optimism. In contrast, with RVP, the high cost is avoided during normal network operation by only compressing transaction data using ZK-proofs when challenged. Normal operation incurs minimal costs, maintaining efficiency and affordability.

-

Block Finalization Time in ZK-Rollups

-

Theoretically, ZK-rollups should have no withdrawal period because the entire L2 state transition verification process through ZK-proof should be completed in minutes or even seconds. However, the practical reality is different. Due to technical limitations, the time required for final verification of ZK-proofs on L1 is much slower than expected. For example, zkSync Era takes about 20-24 hours for L2 blocks to be finalized, which is not significantly different from the optimized withdrawal periods of optimistic rollups.

-

Seamless Transition with RVP-Based Rollups

-

L2 scaling solutions incorporating RVP technology can be designed using the ZK-rollup framework, allowing for an easy transition from RVP-based L2 to standard ZK-rollup L2 as ZK technology matures. The primary adjustment needed is changing the sequencer's ZK-proof submission methods from responsive to active. Thus, RVP-based systems can seamlessly adopt full ZK-rollup benefits in the future.

-

SP1 on Morph Mainnet

-

Morph’s Responsive Validity Proof (RVP) system morphed into the optimal design with our mainnet launch, enhanced by SP1.

-

Succinct, uniquely enables Morph’s RVP with their blazing fast zkVM and excellent developer experience. It represents a generational shift in how zkEVMs are built, custom circuits are a relic of that past. This upgrade refines RVP's capabilities, pushing the boundaries of scalability and security in blockchain applications.

-

Our RVP system with SP1 is:

-
    -
  • Uses a generic, more developer-friendly Rust-based implementation
  • -
  • Generates proofs orders of magnitudes faster with SP1’s Prover Network
  • -
  • Handles unlimited transactions per block (previously capped at 100)
  • -
-

For users, this means:

-
    -
  • Improved security and smoother user experience (thoroughly audited codes with faster challenge resolution and 2-day settlement)
  • -
  • Lower costs (more efficient proof generation for off-chain computation)
  • -
  • More scalable (no more transaction caps)
  • -
-

Morph Challengers Address List

-

As per our commitment to the decentralization of the challenging process, here is the list of all challenger addresses.

-

These addresses are responsible for monitoring the L2 state changes and responding to any malicious activities from the sequencers.

-

Challenger Address List

-
- - \ No newline at end of file diff --git a/build/docs/index.html b/build/docs/index.html deleted file mode 100644 index 3a74dbfcb..000000000 --- a/build/docs/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/bridge.htm/index.html b/build/docs/quick-start/bridge.htm/index.html deleted file mode 100644 index e3ee4b56b..000000000 --- a/build/docs/quick-start/bridge.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/bridge.html/index.html b/build/docs/quick-start/bridge.html/index.html deleted file mode 100644 index e3ee4b56b..000000000 --- a/build/docs/quick-start/bridge.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/bridge/index.html b/build/docs/quick-start/bridge/index.html deleted file mode 100644 index 1dc87e5db..000000000 --- a/build/docs/quick-start/bridge/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - -Bridge | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Bridge

Deposit from Ethereum to Morph Mainnet

-

Please refer to the Morph Season 2 - Bridge Guide.

-

Deposit from Ethereum Holesky to Morph Testnet

-

Instructions:

- -
    -
  1. Open your MetaMask wallet and switch to the Holesky network.
  2. -
-

image1 -image1

-
    -
  1. Within Morph’s Bridge app, click Connect wallet, select MetaMask, and approve the connection if prompted.
  2. -
-

image2

-
    -
  1. -

    Make sure that Holesky is selected under ‘From’ and Morph L2 under ‘To’. If not, click the "↓" button to switch their positions.

    -
  2. -
  3. -

    Select the token that you want to transfer.

    -
  4. -
  5. -

    Click the Send button to initiate the deposit.

    -
  6. -
-
tip

If this is your first time transferring an ERC20 token, you need to approve the Holesky Bridge contract to access your ERC20 token.

-
    -
  1. A window will pop up asking for confirmation of the transfer transaction, click Deposit.
  2. -
-

image3

-
    -
  1. Click the Confirm button in MetaMask. Once the transfer transaction is finalized, the token will be deducted from your Holesky wallet address.
  2. -
-

image5

-
    -
  1. While you wait, you can check status of your transactions by clicking on the transactions button.
  2. -
-

image6

-

How long does it take for a token to arrive to Morph Testnet ?

-

A token transfer from Holesky to Morph Testnet may take 8 to 14 minutes (time for block to become Safe on Holesky) before it appears in your Morph wallet. To check the progress of your deposit transactions, follow these steps:

-
    -
  1. Click your wallet address at the top-right corner of the Bridge web app.
  2. -
-

image6

-
    -
  1. Click on Transactions. A pop-up panel will display your recent transactions.
  2. -
-
tip

Note: For deposit transactions (L1 -> L2), once your transaction is confirmed as Safe on Holesky (8 to 14 minutes), you will see a Success status. Your funds will then be relayed to L2.

-

image8

-
    -
  1. Click on the most recent Holesky transaction hash.
  2. -
-

image9

-
    -
  1. You will be taken to a Transaction Details page in the Explorer. Verify your transaction status (this transaction is confirmed on Holesky).
  2. -
-

image10

-
    -
  1. Once your transaction status shows success on L2, return to the Bridge app to see a transaction hash and funds in your Morph L2 wallet.
  2. -
-

image11

-

image12

-

Withdraw from Morph Testnet to Holesky

-

To withdraw funds from Morph Testnet, follow these steps:

-
    -
  1. Initiate the withdrawal on Morph Testnet.
  2. -
  3. Wait for the withdrawal root to be published on L1 (Holesky). This usually takes a few minutes, but it may take longer during outages.
  4. -
  5. Prove withdrawal.
  6. -
  7. Wait for the verification challenge period, which lasts seven days from the time the withdrawal is proven on L1 (Holesky).
  8. -
  9. Claim your withdrawal.
  10. -
-

Initiate withdrawal

-
    -
  1. -

    Click Connect Wallet and select MetaMask. If prompted, approve the connection in your wallet.

    -
  2. -
  3. -

    Select Withdraw. Choose the asset and amount you wish to withdraw.

    -
  4. -
-

image13

-
    -
  1. Click Send ETH to Holesky.
  2. -
-

image14

-
    -
  1. Click Initiate withdrawal, wait for a few minutes to confirm. After it is finished, you need to switch the network in your wallet and then prove the withdrawal on Holesky.
  2. -
-

image15

-

image16

-
    -
  1. Waiting for the batch submission to be completed.
  2. -
-

image17

-

image18

-

Waiting for the verification challenge period

-
    -
  1. -

    Click your address in the top right corner.

    -
  2. -
  3. -

    Click Transactions and then Withdrawals. This will display a list of your recent withdrawals and their status. Or you can find a notice in the top area, by clicking the button View Account (see the pic below).

    -
  4. -
-

image19

-

image20

-

image21

-
    -
  1. You can search for the transaction hash on Morph Explorer.
  2. -
-

image22

-

image23

-
    -
  1. Click the L1 State Root Submission Tx to see when the transaction was written to L1 (Holesky).
  2. -
-

image24

-

image25

-

Claim the Withdrawal

-
    -
  1. -

    Once the challenge period is over, the status will change to Claim.

    -
  2. -
  3. -

    Click Claim withdrawal.

    -
  4. -
-

image26

-
    -
  1. Confirm the withdrawal in the wallet.
  2. -
-

image27

-
    -
  1. Wait until the withdrawal is completed.
  2. -
-

image28

- - \ No newline at end of file diff --git a/build/docs/quick-start/faucet.htm/index.html b/build/docs/quick-start/faucet.htm/index.html deleted file mode 100644 index 58272b318..000000000 --- a/build/docs/quick-start/faucet.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/faucet.html/index.html b/build/docs/quick-start/faucet.html/index.html deleted file mode 100644 index 58272b318..000000000 --- a/build/docs/quick-start/faucet.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/faucet/index.html b/build/docs/quick-start/faucet/index.html deleted file mode 100644 index 1f0bbd66f..000000000 --- a/build/docs/quick-start/faucet/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -Faucet | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Faucet

Faucet

-

Morph Holesky Website Faucet

-

website faucet

-

Our website faucet is live!

-

Users can claim Morph ETH & USDT to fund their initial activities.

-

3rd Party Ethereum Holesky ETH Faucet

-

To use Morph's public testnet, obtain testnet ETH on Holesky, then bridge it to the Morph testnet.

-

Here are a few Holesky faucet apps:

-

https://stakely.io/en/faucet/ethereum-holesky-testnet-eth

-

https://faucet.quicknode.com/ethereum/holesky

-

https://holesky-faucet.pk910.de/

-

https://cloud.google.com/application/web3/faucet/ethereum (needs a Google account)

-

Once you receive ETH on Holesky, you should see it in your wallet on the Holesky Network.

-

It may take a few seconds for them to appear, but you can check the status by looking for a transaction to your address on the Holesky Block Explorer.

-

Discord Morph Holesky Faucet

-

Morph Holesky ETH

-

You can obtain the Morph Holesky ETH in our discord too for development purposes.

-

Using the /morph_eth command and type your address will grant you 0.01 Morph Holesky ETH.

-

Once succeed, you will see the following message:

-

success

-

ERC20 USDT

-
tip

Currently, we set the limit that for each discord user, you can only request the tokens once every 24 hours.

-

You can obtain morph's version of USDT on Holesky through our discord faucet, here's how it works:

-
    -
  1. -

    Join our discord server through this link.

    -
  2. -
  3. -

    Find the #| discord-faucet channel.

    -
  4. -
  5. -

    Type /faucet in the channel and add your Holesky address behind it.

    -
  6. -
-

command

-
    -
  1. -

    Wait for a few seconds.

    -
  2. -
  3. -

    Once succeeded, you will see this in the channel.

    -
  4. -
-

success

-
    -
  1. Add the Morph Holesky USDT information to your wallet.
  2. -
-

Ethereum Holesky USDT address: "0xD6e9Cd5ef382b0830653d1b2007D5Ca6987FaA26"

Morph Holesky USDT address: "0x9E12AD42c4E4d2acFBADE01a96446e48e6764B98"

-
    -
  1. Check you wallet for USDT balance and start to bridge!
  2. -
- - \ No newline at end of file diff --git a/build/docs/quick-start/wallet-setup.htm/index.html b/build/docs/quick-start/wallet-setup.htm/index.html deleted file mode 100644 index 755b5c50a..000000000 --- a/build/docs/quick-start/wallet-setup.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/wallet-setup.html/index.html b/build/docs/quick-start/wallet-setup.html/index.html deleted file mode 100644 index 755b5c50a..000000000 --- a/build/docs/quick-start/wallet-setup.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/wallet-setup/index.html b/build/docs/quick-start/wallet-setup/index.html deleted file mode 100644 index 804e48fba..000000000 --- a/build/docs/quick-start/wallet-setup/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -Wallet Setup | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Wallet Setup

Wallet

-

To interact with dApps on Morph, you need a compatible wallet. Below are some example wallets and configuration tips.

-

Bitget Wallet

-

Bitget Wallet

-
    -
  • Installation: Bitget Wallet can be installed from their official website.
  • -
  • Importing Configurations:
  • -
-
    -
  1. To add Morph mainnet within Bitget Wallet, go to Wallet tab
  2. -
  3. Click on the mainnet dropdown, and select Add Mainnet.
  4. -
  5. Search for Morph in the list and select it (to add testnet, select Morph Holesky).
  6. -
-

OKX Walllet

-
    -
  • Installation: You can download OKX wallet extension for desktop usage and use OKX wallet on mobile by downloading OKX app.
  • -
-

MetaMask

-
    -
  • Installation: MetaMask can be installed from their official website.
  • -
  • Importing Configurations: To set up MetaMask for Morph, click the "add to wallet" button on the Morph Holesky block explorer page. This will automatically import the chain ID and RPC URLs for the Morph Mainnet & Testnet.
  • -
  • Using Ethereum Holesky Testnet: Morph Testnet utilizes the Ethereum Holesky testnet as its underlying L1, which is already configured in MetaMask by default. To access it, enable "Show/hide test networks" in the MetaMask network selection dropdown.
  • -
-

Manual network configuration

-

Currently, the Add to wallet links may not be compatible with all wallets yet. If you are having issues using them, you may need to manually add the Morph Mainnet & Testnet by inserting the configuration details from the table below:

-

Network Configuration

-
NameRPC Url(s)Chain IDBlock explorerSymbol
Morph Mainnethttps://rpc-quicknode.morphl2.io2818https://explorer.morphl2.ioETH
Ethereum Mainnethttps://ethereum-rpc.publicnode.com/1https://etherscan.ioETH
Morph Holesky Testnethttps://rpc-quicknode-holesky.morphl2.io2810https://explorer-holesky.morphl2.ioETH
Ethereum Holeskyhttps://ethereum-holesky-rpc.publicnode.com/17000https://holesky.etherscan.ioETH
-

You can also visit chainlist to add Morph.

- - \ No newline at end of file diff --git a/build/docs/quick-start/welcome-to-morph.htm/index.html b/build/docs/quick-start/welcome-to-morph.htm/index.html deleted file mode 100644 index 546d61b5e..000000000 --- a/build/docs/quick-start/welcome-to-morph.htm/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/welcome-to-morph.html/index.html b/build/docs/quick-start/welcome-to-morph.html/index.html deleted file mode 100644 index 546d61b5e..000000000 --- a/build/docs/quick-start/welcome-to-morph.html/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/build/docs/quick-start/welcome-to-morph/index.html b/build/docs/quick-start/welcome-to-morph/index.html deleted file mode 100644 index cb7ba5212..000000000 --- a/build/docs/quick-start/welcome-to-morph/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -Welcome to Morph! | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Welcome to Morph!

Thank you for choosing Morph! We're excited to have you onboard with the first optimistic ZK-EVM scaling solution for Ethereum. Morph is designed to meet a variety of needs, and you can easily navigate to the most relevant information for your interests.

-
tip

Mainnet Beta Stage: Morph is currently in the mainnet beta phase, offering a brand-new platform for exploration. We encourage you to delve into its features and capabilities.

-

Web3 Enthusiasts: If you are a web3 enthusiast who wants to try out the Morph, you can start with how to connect to Morph.

-

Researchers: For those seeking in-depth understanding of Morph's unique offerings compared to other solutions, the how Morph works section is your go-to resource for comprehensive details.

-

Developers: As a skilled developer ready to build on Morph, the developer documentation provides all necessary resources and guides to kickstart your development journey.

-

Looking for help

-

Having issues while developing or exploring? Join our discord channel and talk to us in the right channel. We would love to hear your thoughts or feedback on how we can improve your experience, too.

- - \ No newline at end of file diff --git a/build/fonts/InterDisplay-Black.woff2 b/build/fonts/InterDisplay-Black.woff2 deleted file mode 100644 index 8138123c1..000000000 Binary files a/build/fonts/InterDisplay-Black.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-BlackItalic.woff2 b/build/fonts/InterDisplay-BlackItalic.woff2 deleted file mode 100644 index 735ba21f9..000000000 Binary files a/build/fonts/InterDisplay-BlackItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-Bold.woff2 b/build/fonts/InterDisplay-Bold.woff2 deleted file mode 100644 index 11c67196e..000000000 Binary files a/build/fonts/InterDisplay-Bold.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-BoldItalic.woff2 b/build/fonts/InterDisplay-BoldItalic.woff2 deleted file mode 100644 index 5b6a1fb00..000000000 Binary files a/build/fonts/InterDisplay-BoldItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-ExtraBold.woff2 b/build/fonts/InterDisplay-ExtraBold.woff2 deleted file mode 100644 index 9058e9861..000000000 Binary files a/build/fonts/InterDisplay-ExtraBold.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-ExtraBoldItalic.woff2 b/build/fonts/InterDisplay-ExtraBoldItalic.woff2 deleted file mode 100644 index 4cd61c067..000000000 Binary files a/build/fonts/InterDisplay-ExtraBoldItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-ExtraLight.woff2 b/build/fonts/InterDisplay-ExtraLight.woff2 deleted file mode 100644 index 8621b2995..000000000 Binary files a/build/fonts/InterDisplay-ExtraLight.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-ExtraLightItalic.woff2 b/build/fonts/InterDisplay-ExtraLightItalic.woff2 deleted file mode 100644 index 689c8d9ca..000000000 Binary files a/build/fonts/InterDisplay-ExtraLightItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-Italic.woff2 b/build/fonts/InterDisplay-Italic.woff2 deleted file mode 100644 index 11f20bc82..000000000 Binary files a/build/fonts/InterDisplay-Italic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-Light.woff2 b/build/fonts/InterDisplay-Light.woff2 deleted file mode 100644 index 446301c35..000000000 Binary files a/build/fonts/InterDisplay-Light.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-LightItalic.woff2 b/build/fonts/InterDisplay-LightItalic.woff2 deleted file mode 100644 index f68819610..000000000 Binary files a/build/fonts/InterDisplay-LightItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-Medium.woff2 b/build/fonts/InterDisplay-Medium.woff2 deleted file mode 100644 index 29160b2c5..000000000 Binary files a/build/fonts/InterDisplay-Medium.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-MediumItalic.woff2 b/build/fonts/InterDisplay-MediumItalic.woff2 deleted file mode 100644 index ef1bcbe3c..000000000 Binary files a/build/fonts/InterDisplay-MediumItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-Regular.woff2 b/build/fonts/InterDisplay-Regular.woff2 deleted file mode 100644 index a6c04f68e..000000000 Binary files a/build/fonts/InterDisplay-Regular.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-SemiBold.woff2 b/build/fonts/InterDisplay-SemiBold.woff2 deleted file mode 100644 index 2b4db239b..000000000 Binary files a/build/fonts/InterDisplay-SemiBold.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-SemiBoldItalic.woff2 b/build/fonts/InterDisplay-SemiBoldItalic.woff2 deleted file mode 100644 index 59091db31..000000000 Binary files a/build/fonts/InterDisplay-SemiBoldItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-Thin.woff2 b/build/fonts/InterDisplay-Thin.woff2 deleted file mode 100644 index dc0b94860..000000000 Binary files a/build/fonts/InterDisplay-Thin.woff2 and /dev/null differ diff --git a/build/fonts/InterDisplay-ThinItalic.woff2 b/build/fonts/InterDisplay-ThinItalic.woff2 deleted file mode 100644 index 96439c0c0..000000000 Binary files a/build/fonts/InterDisplay-ThinItalic.woff2 and /dev/null differ diff --git a/build/fonts/InterVariable-Italic.woff2 b/build/fonts/InterVariable-Italic.woff2 deleted file mode 100644 index f22ec2554..000000000 Binary files a/build/fonts/InterVariable-Italic.woff2 and /dev/null differ diff --git a/build/fonts/InterVariable.woff2 b/build/fonts/InterVariable.woff2 deleted file mode 100644 index 22a12b04e..000000000 Binary files a/build/fonts/InterVariable.woff2 and /dev/null differ diff --git a/build/fonts/inter.css b/build/fonts/inter.css deleted file mode 100644 index 8747482a1..000000000 --- a/build/fonts/inter.css +++ /dev/null @@ -1,57 +0,0 @@ -/* Variable fonts usage: -:root { font-family: "Inter", sans-serif; } -@supports (font-variation-settings: normal) { - :root { font-family: ""Inter Variable"", sans-serif; font-optical-sizing: auto; } -} */ -@font-face { - font-family: "Inter Variable"; - font-style: normal; - font-weight: 100 900; - font-display: swap; - src: url("/fonts/Inter Variable.woff2") format("woff2"); -} -@font-face { - font-family: "Inter Variable"; - font-style: italic; - font-weight: 100 900; - font-display: swap; - src: url("/fonts/Inter Variable-Italic.woff2") format("woff2"); -} - -/* static fonts */ -@font-face { font-family: "Inter"; font-style: normal; font-weight: 100; font-display: swap; src: url("/fonts/Inter-Thin.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 100; font-display: swap; src: url("/fonts/Inter-ThinItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 200; font-display: swap; src: url("/fonts/Inter-ExtraLight.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 200; font-display: swap; src: url("/fonts/Inter-ExtraLightItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 300; font-display: swap; src: url("/fonts/Inter-Light.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 300; font-display: swap; src: url("/fonts/Inter-LightItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/Inter-Regular.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 400; font-display: swap; src: url("/fonts/Inter-Italic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("/fonts/Inter-Medium.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 500; font-display: swap; src: url("/fonts/Inter-MediumItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("/fonts/Inter-SemiBold.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 600; font-display: swap; src: url("/fonts/Inter-SemiBoldItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 700; font-display: swap; src: url("/fonts/Inter-Bold.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 700; font-display: swap; src: url("/fonts/Inter-BoldItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 800; font-display: swap; src: url("/fonts/Inter-ExtraBold.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 800; font-display: swap; src: url("/fonts/Inter-ExtraBoldItalic.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: normal; font-weight: 900; font-display: swap; src: url("/fonts/Inter-Black.woff2") format("woff2"); } -@font-face { font-family: "Inter"; font-style: italic; font-weight: 900; font-display: swap; src: url("/fonts/Inter-BlackItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 100; font-display: swap; src: url("InterDisplay-Thin.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 100; font-display: swap; src: url("InterDisplay-ThinItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 200; font-display: swap; src: url("InterDisplay-ExtraLight.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 200; font-display: swap; src: url("InterDisplay-ExtraLightItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 300; font-display: swap; src: url("InterDisplay-Light.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 300; font-display: swap; src: url("InterDisplay-LightItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 400; font-display: swap; src: url("InterDisplay-Regular.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 400; font-display: swap; src: url("InterDisplay-Italic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 500; font-display: swap; src: url("InterDisplay-Medium.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 500; font-display: swap; src: url("InterDisplay-MediumItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 600; font-display: swap; src: url("InterDisplay-SemiBold.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 600; font-display: swap; src: url("InterDisplay-SemiBoldItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 700; font-display: swap; src: url("InterDisplay-Bold.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 700; font-display: swap; src: url("InterDisplay-BoldItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 800; font-display: swap; src: url("InterDisplay-ExtraBold.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 800; font-display: swap; src: url("InterDisplay-ExtraBoldItalic.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 900; font-display: swap; src: url("InterDisplay-Black.woff2") format("woff2"); } -@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 900; font-display: swap; src: url("InterDisplay-BlackItalic.woff2") format("woff2"); } diff --git a/build/img/arrow.svg b/build/img/arrow.svg deleted file mode 100644 index 2b0ae7be8..000000000 --- a/build/img/arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/build/img/banner1.svg b/build/img/banner1.svg deleted file mode 100644 index 9bfd153c0..000000000 --- a/build/img/banner1.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/banner2.svg b/build/img/banner2.svg deleted file mode 100644 index 55c094615..000000000 --- a/build/img/banner2.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/banner3.svg b/build/img/banner3.svg deleted file mode 100644 index c31902f32..000000000 --- a/build/img/banner3.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/banner4.svg b/build/img/banner4.svg deleted file mode 100644 index d97980515..000000000 --- a/build/img/banner4.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/bg.svg b/build/img/bg.svg deleted file mode 100644 index 822229d0e..000000000 --- a/build/img/bg.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/bg1.svg b/build/img/bg1.svg deleted file mode 100644 index c93212e5e..000000000 --- a/build/img/bg1.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/bg2.svg b/build/img/bg2.svg deleted file mode 100644 index 77796f56e..000000000 --- a/build/img/bg2.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/bg3.svg b/build/img/bg3.svg deleted file mode 100644 index 5f653e17d..000000000 --- a/build/img/bg3.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/bg4.svg b/build/img/bg4.svg deleted file mode 100644 index 312821d12..000000000 --- a/build/img/bg4.svg +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/bg5.svg b/build/img/bg5.svg deleted file mode 100644 index 90cdef3f7..000000000 --- a/build/img/bg5.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/build/img/cards/bridge.svg b/build/img/cards/bridge.svg deleted file mode 100644 index 5c99ae831..000000000 --- a/build/img/cards/bridge.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/contract.svg b/build/img/cards/contract.svg deleted file mode 100644 index dc27296be..000000000 --- a/build/img/cards/contract.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/dev.svg b/build/img/cards/dev.svg deleted file mode 100644 index 1bebd669f..000000000 --- a/build/img/cards/dev.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/faucet.svg b/build/img/cards/faucet.svg deleted file mode 100644 index 0a48894bc..000000000 --- a/build/img/cards/faucet.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/build/img/cards/guide.svg b/build/img/cards/guide.svg deleted file mode 100644 index f9d282269..000000000 --- a/build/img/cards/guide.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/logo-dark.svg b/build/img/cards/logo-dark.svg deleted file mode 100644 index b231fa745..000000000 --- a/build/img/cards/logo-dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/logo.svg b/build/img/cards/logo.svg deleted file mode 100644 index c0d560126..000000000 --- a/build/img/cards/logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/node.svg b/build/img/cards/node.svg deleted file mode 100644 index 4411e96be..000000000 --- a/build/img/cards/node.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/research.svg b/build/img/cards/research.svg deleted file mode 100644 index a2e67aa4f..000000000 --- a/build/img/cards/research.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/tools.svg b/build/img/cards/tools.svg deleted file mode 100644 index c880a085d..000000000 --- a/build/img/cards/tools.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/users.svg b/build/img/cards/users.svg deleted file mode 100644 index 7220f0cbb..000000000 --- a/build/img/cards/users.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/cards/wallet.svg b/build/img/cards/wallet.svg deleted file mode 100644 index 41466bfe4..000000000 --- a/build/img/cards/wallet.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/build/img/img1.svg b/build/img/img1.svg deleted file mode 100644 index 9166fec5a..000000000 --- a/build/img/img1.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/build/img/img2.svg b/build/img/img2.svg deleted file mode 100644 index a48e242f3..000000000 --- a/build/img/img2.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/build/img/img3.svg b/build/img/img3.svg deleted file mode 100644 index 836d7c9f9..000000000 --- a/build/img/img3.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/build/img/img4.svg b/build/img/img4.svg deleted file mode 100644 index 25423b392..000000000 --- a/build/img/img4.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/build/img/index/2.png b/build/img/index/2.png deleted file mode 100644 index e20252e25..000000000 Binary files a/build/img/index/2.png and /dev/null differ diff --git a/build/img/index/3.png b/build/img/index/3.png deleted file mode 100644 index 702c470b5..000000000 Binary files a/build/img/index/3.png and /dev/null differ diff --git a/build/img/index/5.png b/build/img/index/5.png deleted file mode 100644 index 513b8faab..000000000 Binary files a/build/img/index/5.png and /dev/null differ diff --git a/build/img/index/about-morph.png b/build/img/index/about-morph.png deleted file mode 100644 index 9b7fa813f..000000000 Binary files a/build/img/index/about-morph.png and /dev/null differ diff --git a/build/img/index/build-on-morph.png b/build/img/index/build-on-morph.png deleted file mode 100644 index f08bc08fd..000000000 Binary files a/build/img/index/build-on-morph.png and /dev/null differ diff --git a/build/img/index/contribute.svg b/build/img/index/contribute.svg deleted file mode 100644 index 26df746ff..000000000 --- a/build/img/index/contribute.svg +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/index/header_dark.svg b/build/img/index/header_dark.svg deleted file mode 100644 index 257ab2392..000000000 --- a/build/img/index/header_dark.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/index/header_light.svg b/build/img/index/header_light.svg deleted file mode 100644 index 2ac29ef59..000000000 --- a/build/img/index/header_light.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/index/how-morph-works.png b/build/img/index/how-morph-works.png deleted file mode 100644 index 7473c119d..000000000 Binary files a/build/img/index/how-morph-works.png and /dev/null differ diff --git a/build/img/index/icon_moon.svg b/build/img/index/icon_moon.svg deleted file mode 100644 index f801ad960..000000000 --- a/build/img/index/icon_moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/index/icon_sun.svg b/build/img/index/icon_sun.svg deleted file mode 100644 index 23504dee2..000000000 --- a/build/img/index/icon_sun.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/img/index/logo_dark.png b/build/img/index/logo_dark.png deleted file mode 100644 index 7c291516f..000000000 Binary files a/build/img/index/logo_dark.png and /dev/null differ diff --git a/build/img/index/logo_dark.svg b/build/img/index/logo_dark.svg deleted file mode 100644 index bad30329b..000000000 --- a/build/img/index/logo_dark.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/index/logo_light.png b/build/img/index/logo_light.png deleted file mode 100644 index f35f0d982..000000000 Binary files a/build/img/index/logo_light.png and /dev/null differ diff --git a/build/img/index/logo_light.svg b/build/img/index/logo_light.svg deleted file mode 100644 index f0067aeed..000000000 --- a/build/img/index/logo_light.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/build/img/index/morphbanner_dark.svg b/build/img/index/morphbanner_dark.svg deleted file mode 100644 index c43212b5a..000000000 --- a/build/img/index/morphbanner_dark.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/index/morphbanner_light.svg b/build/img/index/morphbanner_light.svg deleted file mode 100644 index fc9f405f5..000000000 --- a/build/img/index/morphbanner_light.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/index/quick-start.png b/build/img/index/quick-start.png deleted file mode 100644 index 06d006244..000000000 Binary files a/build/img/index/quick-start.png and /dev/null differ diff --git a/build/img/index/search_logo.svg b/build/img/index/search_logo.svg deleted file mode 100644 index 3648e134c..000000000 --- a/build/img/index/search_logo.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/img/link.svg b/build/img/link.svg deleted file mode 100644 index e7673de50..000000000 --- a/build/img/link.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/build/img/logo-morph.svg b/build/img/logo-morph.svg deleted file mode 100644 index 9e881e886..000000000 --- a/build/img/logo-morph.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/build/index.html b/build/index.html deleted file mode 100644 index 159a7dab3..000000000 --- a/build/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -Morph docs – The Optimistic zkEVM Scaling Solution docs | Morph docs – The Optimistic zkEVM Scaling Solution docs - - - - - - - - -
Skip to main content

Your gateway to the morph ecosystem

MORPH-DOCS

- - \ No newline at end of file diff --git a/build/js/cookbookdev.index.cjs.js b/build/js/cookbookdev.index.cjs.js deleted file mode 100644 index 38ce61f90..000000000 --- a/build/js/cookbookdev.index.cjs.js +++ /dev/null @@ -1,1210 +0,0 @@ -!function(){"use strict";"undefined"!=typeof window&&(window.__cookbook_styles=':host{--ifm-color-scheme: light;--ifm-dark-value: 10%;--ifm-darker-value: 15%;--ifm-darkest-value: 30%;--ifm-light-value: 15%;--ifm-lighter-value: 30%;--ifm-lightest-value: 50%;--ifm-contrast-background-value: 90%;--ifm-contrast-foreground-value: 70%;--ifm-contrast-background-dark-value: 70%;--ifm-contrast-foreground-dark-value: 90%;--ifm-color-primary: #3578e5;--ifm-color-secondary: #ebedf0;--ifm-color-success: #00a400;--ifm-color-info: #54c7ec;--ifm-color-warning: #ffba00;--ifm-color-danger: #fa383e;--ifm-color-primary-dark: #306cce;--ifm-color-primary-darker: #2d66c3;--ifm-color-primary-darkest: #2554a0;--ifm-color-primary-light: #538ce9;--ifm-color-primary-lighter: #72a1ed;--ifm-color-primary-lightest: #9abcf2;--ifm-color-primary-contrast-background: #ebf2fc;--ifm-color-primary-contrast-foreground: #102445;--ifm-color-secondary-dark: #d4d5d8;--ifm-color-secondary-darker: #c8c9cc;--ifm-color-secondary-darkest: #a4a6a8;--ifm-color-secondary-light: #eef0f2;--ifm-color-secondary-lighter: #f1f2f5;--ifm-color-secondary-lightest: #f5f6f8;--ifm-color-secondary-contrast-background: #fdfdfe;--ifm-color-secondary-contrast-foreground: #474748;--ifm-color-success-dark: #009400;--ifm-color-success-darker: #008b00;--ifm-color-success-darkest: #007300;--ifm-color-success-light: #26b226;--ifm-color-success-lighter: #4dbf4d;--ifm-color-success-lightest: #80d280;--ifm-color-success-contrast-background: #e6f6e6;--ifm-color-success-contrast-foreground: #003100;--ifm-color-info-dark: #4cb3d4;--ifm-color-info-darker: #47a9c9;--ifm-color-info-darkest: #3b8ba5;--ifm-color-info-light: #6ecfef;--ifm-color-info-lighter: #87d8f2;--ifm-color-info-lightest: #aae3f6;--ifm-color-info-contrast-background: #eef9fd;--ifm-color-info-contrast-foreground: #193c47;--ifm-color-warning-dark: #e6a700;--ifm-color-warning-darker: #d99e00;--ifm-color-warning-darkest: #b38200;--ifm-color-warning-light: #ffc426;--ifm-color-warning-lighter: #ffcf4d;--ifm-color-warning-lightest: #ffdd80;--ifm-color-warning-contrast-background: #fff8e6;--ifm-color-warning-contrast-foreground: #4d3800;--ifm-color-danger-dark: #e13238;--ifm-color-danger-darker: #d53035;--ifm-color-danger-darkest: #af272b;--ifm-color-danger-light: #fb565b;--ifm-color-danger-lighter: #fb7478;--ifm-color-danger-lightest: #fd9c9f;--ifm-color-danger-contrast-background: #ffebec;--ifm-color-danger-contrast-foreground: #4b1113;--ifm-color-white: #fff;--ifm-color-black: #000;--ifm-color-gray-0: var(--ifm-color-white);--ifm-color-gray-100: #f5f6f7;--ifm-color-gray-200: #ebedf0;--ifm-color-gray-300: #dadde1;--ifm-color-gray-400: #ccd0d5;--ifm-color-gray-500: #bec3c9;--ifm-color-gray-600: #8d949e;--ifm-color-gray-700: #606770;--ifm-color-gray-800: #444950;--ifm-color-gray-900: #1c1e21;--ifm-color-gray-1000: var(--ifm-color-black);--ifm-color-emphasis-0: var(--ifm-color-gray-0);--ifm-color-emphasis-100: var(--ifm-color-gray-100);--ifm-color-emphasis-200: var(--ifm-color-gray-200);--ifm-color-emphasis-300: var(--ifm-color-gray-300);--ifm-color-emphasis-400: var(--ifm-color-gray-400);--ifm-color-emphasis-600: var(--ifm-color-gray-600);--ifm-color-emphasis-700: var(--ifm-color-gray-700);--ifm-color-emphasis-800: var(--ifm-color-gray-800);--ifm-color-emphasis-900: var(--ifm-color-gray-900);--ifm-color-emphasis-1000: var(--ifm-color-gray-1000);--ifm-color-content: var(--ifm-color-emphasis-900);--ifm-color-content-inverse: var(--ifm-color-emphasis-0);--ifm-color-content-secondary: #525860;--ifm-background-color: transparent;--ifm-background-surface-color: var(--ifm-color-content-inverse);--ifm-global-border-width: 1px;--ifm-global-radius: 6.4px;--ifm-hover-overlay: rgba(0, 0, 0, .05);--ifm-font-color-base: var(--ifm-color-content);--ifm-font-color-base-inverse: var(--ifm-color-content-inverse);--ifm-font-color-secondary: var(--ifm-color-content-secondary);--ifm-font-family-base: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--ifm-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ifm-font-size-base: 100%;--ifm-font-weight-light: 300;--ifm-font-weight-normal: 400;--ifm-font-weight-semibold: 500;--ifm-font-weight-bold: 700;--ifm-font-weight-base: var(--ifm-font-weight-normal);--ifm-line-height-base: 1.65;--ifm-global-spacing: 16px;--ifm-spacing-vertical: var(--ifm-global-spacing);--ifm-spacing-horizontal: var(--ifm-global-spacing);--ifm-transition-fast: .2s;--ifm-transition-slow: .4s;--ifm-transition-timing-default: cubic-bezier(.08, .52, .52, 1);--ifm-global-shadow-lw: 0 1px 2px 0 rgba(0, 0, 0, .1);--ifm-global-shadow-md: 0 5px 40px rgba(0, 0, 0, .2);--ifm-global-shadow-tl: 0 12px 28px 0 rgba(0, 0, 0, .2), 0 2px 4px 0 rgba(0, 0, 0, .1);--ifm-z-index-dropdown: 100;--ifm-z-index-fixed: 200;--ifm-z-index-overlay: 400;--ifm-container-width: 1140px;--ifm-container-width-xl: 1320px;--ifm-code-background: #f6f7f8;--ifm-code-border-radius: var(--ifm-global-radius);--ifm-code-font-size: 90%;--ifm-code-padding-horizontal: 1.6px;--ifm-code-padding-vertical: 1.6px;--ifm-pre-background: var(--ifm-code-background);--ifm-pre-border-radius: var(--ifm-code-border-radius);--ifm-pre-color: inherit;--ifm-pre-line-height: 1.45;--ifm-pre-padding: 16px;--ifm-heading-color: inherit;--ifm-heading-margin-top: 0;--ifm-heading-margin-bottom: var(--ifm-spacing-vertical);--ifm-heading-font-family: var(--ifm-font-family-base);--ifm-heading-font-weight: var(--ifm-font-weight-bold);--ifm-heading-line-height: 1.25;--ifm-h1-font-size: 32px;--ifm-h2-font-size: 24px;--ifm-h3-font-size: 20px;--ifm-h4-font-size: 16px;--ifm-h5-font-size: 14px;--ifm-h6-font-size: 13.6px;--ifm-image-alignment-padding: 20px;--ifm-leading-desktop: 1.25;--ifm-leading: calc(var(--ifm-leading-desktop) * 16px);--ifm-list-left-padding: 32px;--ifm-list-margin: 16px;--ifm-list-item-margin: 4px;--ifm-list-paragraph-margin: 16px;--ifm-table-cell-padding: 12px;--ifm-table-background: transparent;--ifm-table-stripe-background: rgba(0, 0, 0, .03);--ifm-table-border-width: 1px;--ifm-table-border-color: var(--ifm-color-emphasis-300);--ifm-table-head-background: inherit;--ifm-table-head-color: inherit;--ifm-table-head-font-weight: var(--ifm-font-weight-bold);--ifm-table-cell-color: inherit;--ifm-link-color: var(--ifm-color-primary);--ifm-link-decoration: underline;--ifm-link-hover-color: var(--ifm-link-color);--ifm-link-hover-decoration: underline;--ifm-paragraph-margin-bottom: var(--ifm-leading);--ifm-blockquote-font-size: var(--ifm-font-size-base);--ifm-blockquote-border-left-width: 2px;--ifm-blockquote-padding-horizontal: var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical: 0;--ifm-blockquote-shadow: none;--ifm-blockquote-color: var(--ifm-color-emphasis-800);--ifm-blockquote-border-color: var(--ifm-color-emphasis-300);--ifm-hr-background-color: var(--ifm-color-emphasis-500);--ifm-hr-height: 1px;--ifm-hr-margin-vertical: 24px;--ifm-scrollbar-size: 7px;--ifm-scrollbar-track-background-color: #f1f1f1;--ifm-scrollbar-thumb-background-color: silver;--ifm-scrollbar-thumb-hover-background-color: #a7a7a7;--ifm-alert-background-color: inherit;--ifm-alert-border-color: inherit;--ifm-alert-border-radius: var(--ifm-global-radius);--ifm-alert-border-width: 0px;--ifm-alert-border-left-width: 5px;--ifm-alert-color: var(--ifm-font-color-base);--ifm-alert-padding-horizontal: var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical: var(--ifm-spacing-vertical);--ifm-alert-shadow: var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin: 16px;--ifm-avatar-intro-alignment: inherit;--ifm-avatar-photo-size: 48px;--ifm-badge-background-color: inherit;--ifm-badge-border-color: inherit;--ifm-badge-border-radius: var(--ifm-global-radius);--ifm-badge-border-width: var(--ifm-global-border-width);--ifm-badge-color: var(--ifm-color-white);--ifm-badge-padding-horizontal: calc(var(--ifm-spacing-horizontal) * .5);--ifm-badge-padding-vertical: calc(var(--ifm-spacing-vertical) * .25);--ifm-breadcrumb-border-radius: 24px;--ifm-breadcrumb-spacing: 8px;--ifm-breadcrumb-color-active: var(--ifm-color-primary);--ifm-breadcrumb-item-background-active: var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal: 12.8px;--ifm-breadcrumb-padding-vertical: 6.4px;--ifm-breadcrumb-size-multiplier: 1;--ifm-breadcrumb-separator: url(\'data:image/svg+xml;utf8,\');--ifm-breadcrumb-separator-filter: none;--ifm-breadcrumb-separator-size: 8px;--ifm-breadcrumb-separator-size-multiplier: 1.25;--ifm-button-background-color: transparent;--ifm-button-border-color: var(--ifm-button-background-color);--ifm-button-border-width: var(--ifm-global-border-width);--ifm-button-font-weight: var(--ifm-font-weight-bold);--ifm-button-padding-horizontal: 24px;--ifm-button-padding-vertical: 6px;--ifm-button-size-multiplier: 1;--ifm-button-transition-duration: var(--ifm-transition-fast);--ifm-button-border-radius: calc(var(--ifm-global-radius) * var(--ifm-button-size-multiplier));--ifm-button-group-spacing: 2px;--ifm-card-background-color: var(--ifm-background-surface-color);--ifm-card-border-radius: calc(var(--ifm-global-radius) * 2);--ifm-card-horizontal-spacing: var(--ifm-global-spacing);--ifm-card-vertical-spacing: var(--ifm-global-spacing);--ifm-toc-border-color: var(--ifm-color-emphasis-300);--ifm-toc-link-color: var(--ifm-color-content-secondary);--ifm-toc-padding-vertical: 8px;--ifm-toc-padding-horizontal: 8px;--ifm-dropdown-background-color: var(--ifm-background-surface-color);--ifm-dropdown-font-weight: var(--ifm-font-weight-semibold);--ifm-dropdown-link-color: var(--ifm-font-color-base);--ifm-dropdown-hover-background-color: var(--ifm-hover-overlay);--ifm-footer-background-color: var(--ifm-color-emphasis-100);--ifm-footer-color: inherit;--ifm-footer-link-color: var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color: var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing: 8px;--ifm-footer-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 2);--ifm-footer-padding-vertical: calc(var(--ifm-spacing-vertical) * 2);--ifm-footer-title-color: inherit;--ifm-footer-logo-max-width: min(480px, 90vw);--ifm-hero-background-color: var(--ifm-background-surface-color);--ifm-hero-text-color: var(--ifm-color-emphasis-800);--ifm-menu-color: var(--ifm-color-emphasis-700);--ifm-menu-color-active: var(--ifm-color-primary);--ifm-menu-color-background-active: var(--ifm-hover-overlay);--ifm-menu-color-background-hover: var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal: 12px;--ifm-menu-link-padding-vertical: 6px;--ifm-menu-link-sublist-icon: url(\'data:image/svg+xml;utf8,\');--ifm-menu-link-sublist-icon-filter: none;--ifm-navbar-background-color: var(--ifm-background-surface-color);--ifm-navbar-height: 60px;--ifm-navbar-item-padding-horizontal: 12px;--ifm-navbar-item-padding-vertical: 4px;--ifm-navbar-link-color: var(--ifm-font-color-base);--ifm-navbar-link-active-color: var(--ifm-link-color);--ifm-navbar-padding-horizontal: var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical: calc(var(--ifm-spacing-vertical) * .5);--ifm-navbar-shadow: var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color: var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color: var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color: var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon: url(\'data:image/svg+xml;utf8,\');--ifm-navbar-sidebar-width: 83vw;--ifm-pagination-border-radius: var(--ifm-global-radius);--ifm-pagination-color-active: var(--ifm-color-primary);--ifm-pagination-font-size: 16px;--ifm-pagination-item-active-background: var(--ifm-hover-overlay);--ifm-pagination-page-spacing: .2em;--ifm-pagination-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 1);--ifm-pagination-padding-vertical: calc(var(--ifm-spacing-vertical) * .25);--ifm-pagination-nav-border-radius: var(--ifm-global-radius);--ifm-pagination-nav-color-hover: var(--ifm-color-primary);--ifm-pills-color-active: var(--ifm-color-primary);--ifm-pills-color-background-active: var(--ifm-hover-overlay);--ifm-pills-spacing: 2px;--ifm-tabs-color: var(--ifm-font-color-secondary);--ifm-tabs-color-active: var(--ifm-color-primary);--ifm-tabs-color-active-border: var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal: 16px;--ifm-tabs-padding-vertical: 16px;--docusaurus-progress-bar-color: var(--ifm-color-primary);--ifm-color-primary: #0396f9;--ifm-color-primary-dark: #21af90;--ifm-color-primary-darker: #1fa588;--ifm-color-primary-darkest: #1a8870;--ifm-color-primary-light: #46cbae;--ifm-color-primary-lighter: #66d4bd;--ifm-color-primary-lightest: #92e0d0;--ifm-code-font-size: 95%;--ifm-link-color: var(--theme-color, var(--ifm-color-primary, #24c6bc));--docusaurus-announcement-bar-height: auto;--aa-search-input-height: 44px;--aa-input-icon-size: 20px;--aa-base-unit: 16;--aa-spacing-factor: 1;--aa-spacing: calc(var(--aa-base-unit) * var(--aa-spacing-factor) * 1px);--aa-spacing-half: calc(var(--aa-spacing) / 2);--aa-panel-max-height: 650px;--aa-base-z-index: 9999;--aa-font-size: calc(var(--aa-base-unit) * 1px);--aa-font-family: inherit;--aa-font-weight-medium: 500;--aa-font-weight-semibold: 600;--aa-font-weight-bold: 700;--aa-icon-size: 20px;--aa-icon-stroke-width: 1.6;--aa-icon-color-alpha: 1;--aa-action-icon-size: 20px;--aa-text-color-rgb: 38, 38, 39;--aa-text-color-alpha: 1;--aa-primary-color-rgb: 62, 52, 211;--aa-primary-color-alpha: .2;--aa-muted-color-rgb: 128, 126, 163;--aa-muted-color-alpha: .6;--aa-panel-border-color-rgb: 128, 126, 163;--aa-panel-border-color-alpha: .3;--aa-input-border-color-rgb: 128, 126, 163;--aa-input-border-color-alpha: .8;--aa-background-color-rgb: 255, 255, 255;--aa-background-color-alpha: 1;--aa-input-background-color-rgb: 255, 255, 255;--aa-input-background-color-alpha: 1;--aa-selected-color-rgb: 179, 173, 214;--aa-selected-color-alpha: .205;--aa-description-highlight-background-color-rgb: 245, 223, 77;--aa-description-highlight-background-color-alpha: .5;--aa-detached-media-query: (max-width: 680px);--aa-detached-modal-media-query: (min-width: 680px);--aa-detached-modal-max-width: 680px;--aa-detached-modal-max-height: 500px;--aa-overlay-color-rgb: 115, 114, 129;--aa-overlay-color-alpha: .4;--aa-panel-shadow: 0 0 0 1px rgba(35, 38, 59, .1), 0 6px 16px -4px rgba(35, 38, 59, .15);--aa-scrollbar-width: 13px;--aa-scrollbar-track-background-color-rgb: 234, 234, 234;--aa-scrollbar-track-background-color-alpha: 1;--aa-scrollbar-thumb-background-color-alpha: 1;--aa-search-input-height: 36px;--docusaurus-tag-list-border: var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg: transparent;--docusaurus-collapse-button-bg-hover: rgba(0, 0, 0, .1);--doc-sidebar-width: 300px;--doc-sidebar-hidden-width: 30px;font-size:16px;text-wrap:wrap}:host code,:host kbd,:host pre,:host samp{display:inline-block;filter:none}:host h1,:host h2,:host h3,:host label{color:hsl(var(--accent-foreground))!important}:host{--ifm-color-scheme: dark;--ifm-color-emphasis-0: var(--ifm-color-gray-1000);--ifm-color-emphasis-100: var(--ifm-color-gray-900);--ifm-color-emphasis-200: var(--ifm-color-gray-800);--ifm-color-emphasis-300: var(--ifm-color-gray-700);--ifm-color-emphasis-400: var(--ifm-color-gray-600);--ifm-color-emphasis-600: var(--ifm-color-gray-400);--ifm-color-emphasis-700: var(--ifm-color-gray-300);--ifm-color-emphasis-800: var(--ifm-color-gray-200);--ifm-color-emphasis-900: var(--ifm-color-gray-100);--ifm-color-emphasis-1000: var(--ifm-color-gray-0);--ifm-background-color: #1b1b1d !important;--ifm-background-surface-color: #242526;--ifm-hover-overlay: hsla(0, 0%, 100%, .05);--ifm-color-content: #e3e3e3;--ifm-color-content-secondary: #fff;--ifm-breadcrumb-separator-filter: invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background: hsla(0, 0%, 100%, .1);--ifm-scrollbar-track-background-color: #444;--ifm-scrollbar-thumb-background-color: #686868;--ifm-scrollbar-thumb-hover-background-color: #7a7a7a;--ifm-table-stripe-background: hsla(0, 0%, 100%, .07);--ifm-toc-border-color: var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background: #102445;--ifm-color-primary-contrast-foreground: #ebf2fc;--ifm-color-secondary-contrast-background: #474748;--ifm-color-secondary-contrast-foreground: #fdfdfe;--ifm-color-success-contrast-background: #003100;--ifm-color-success-contrast-foreground: #e6f6e6;--ifm-color-info-contrast-background: #193c47;--ifm-color-info-contrast-foreground: #eef9fd;--ifm-color-warning-contrast-background: #4d3800;--ifm-color-warning-contrast-foreground: #fff8e6;--ifm-color-danger-contrast-background: #4b1113;--ifm-color-danger-contrast-foreground: #ffebec;--ifm-color-emphasis-500: var(--ifm-color-gray-500)}@font-face{font-family:Geist;src:url(/fonts/GeistVariableVF.ttf) format("truetype-variations");src:url(/fonts/GeistVariableVF.woff2) format("woff2-variations");font-weight:100 900}#ask-cookbook-button{background-color:var(--ask-cb-bg, hsl(var(--secondary-foreground)))}#ask-cookbook-button:hover{background-color:var(--ask-cb-hover, hsl(var(--secondary-foreground)/.7))}#ask-cookbook-button span{color:var(--ask-cb-text, hsl(var(--secondary)))}#ask-cookbook-button-recommendations{background-color:var(--recommendations-bg, hsl(var(--secondary-foreground)/.1));color:var(--recommendations-text, hsl(var(--secondary-foreground)))}#ask-cookbook-button-recommendations:hover{background-color:var(--recommendations-hover, hsl(var(--secondary-foreground)/.7))}:where(html[dir=ltr]),:where([data-sonner-toaster][dir=ltr]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=rtl]),:where([data-sonner-toaster][dir=rtl]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999}:where([data-sonner-toaster][data-x-position=right]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=left]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=center]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=top]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=bottom]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=true]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=top]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=bottom]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=true]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:#00000014}:where([data-sonner-toast][data-theme=dark]) :where([data-cancel]){background:#ffffff4d}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;background:var(--gray1);color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=true]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=true]):before{content:"";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=top][data-swiping=true]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=bottom][data-swiping=true]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=false][data-removed=true]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=true]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=false][data-front=false]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=false][data-front=false][data-styled=true])>*{opacity:0}:where([data-sonner-toast][data-visible=false]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=true][data-expanded=true]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=true][data-front=false]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset: 16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}._openModalButtonActive_u5qne_1{transform:scale(1.1) translateY(-2px)}._openModalButtonFixed_u5qne_6{position:fixed;bottom:40px;right:40px;z-index:calc(var(--ifm-z-index-fixed, 100) + 5);transition:all .3s cubic-bezier(.4,0,.2,1)!important}@media (max-width: 768px){._openModalButtonFixed_u5qne_6{bottom:20px;right:20px}}.monaco-editor{font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif;--monaco-monospace-font: "SF Mono", Monaco, Menlo, Consolas, "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace}.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{position:absolute!important;top:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%)}.monaco-editor,.monaco-diff-editor .synthetic-focus,.monaco-diff-editor [tabindex="0"]:focus,.monaco-diff-editor [tabindex="-1"]:focus,.monaco-diff-editor button:focus,.monaco-diff-editor input[type=button]:focus,.monaco-diff-editor input[type=checkbox]:focus,.monaco-diff-editor input[type=search]:focus,.monaco-diff-editor input[type=text]:focus,.monaco-diff-editor select:focus,.monaco-diff-editor textarea:focus{outline-width:1px;outline-style:solid;outline-offset:-1px;outline-color:var(--vscode-focusBorder);opacity:1}.monaco-aria-container{position:absolute;left:-999em}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);background-color:var(--vscode-editor-background)}.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-rangeHighlightBorder)}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-symbolHighlightBorder)}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .view-overlays>div,.monaco-editor .margin-view-overlays>div{position:absolute;width:100%}.monaco-editor .view-overlays>div>div,.monaco-editor .margin-view-overlays>div>div{bottom:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorError-background)}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorWarning-background)}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorInfo-background)}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground, inherit)}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none!important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent;z-index:-10}.monaco-editor .inputarea.ime-input{z-index:10;caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground)}.monaco-editor .margin-view-overlays .line-numbers{bottom:0;font-variant-numeric:tabular-nums;position:absolute;text-align:right;display:inline-block;vertical-align:middle;box-sizing:border-box;cursor:default}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-mouse-cursor-text{cursor:text}.monaco-editor .blockDecorations-container{position:absolute;top:0;pointer-events:none}.monaco-editor .blockDecorations-block{position:absolute;box-sizing:border-box}.monaco-editor .view-overlays .current-line,.monaco-editor .margin-view-overlays .current-line{display:block;position:absolute;left:0;top:0;box-sizing:border-box;height:100%}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute;height:100%}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{position:absolute;display:flex;align-items:center;justify-content:center}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.monaco-editor .lines-content .core-guide{position:absolute;box-sizing:border-box;height:100%}.mtkcontrol{color:#fff!important;background:#960000!important}.mtkoverflow{background-color:var(--vscode-button-background, var(--vscode-editor-background));color:var(--vscode-button-foreground, var(--vscode-editor-foreground));border-width:1px;border-style:solid;border-color:var(--vscode-contrastBorder);border-radius:2px;padding:4px;cursor:pointer}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:initial;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .lines-content>.view-lines>.view-line>span{top:0;bottom:0;position:absolute}.monaco-editor .mtkw{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block;color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}.monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover:hover .minimap-slider,.monaco-editor .minimap.slider-mouseover .minimap-slider.active{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{position:absolute;left:-1px;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .minimap{z-index:5}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{position:absolute;top:0;box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset}.monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;overflow:hidden;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:transparent!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent!important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent!important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground)!important}.monaco-workbench .workbench-hover{position:relative;font-size:13px;line-height:19px;z-index:40;overflow:hidden;max-width:700px;background:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground);box-shadow:0 2px 8px var(--vscode-widget-shadow)}.monaco-workbench .workbench-hover hr{border-bottom:none}.monaco-workbench .workbench-hover:not(.skip-fade-in){animation:fadein .1s linear}.monaco-workbench .workbench-hover.compact{font-size:12px}.monaco-workbench .workbench-hover.compact .hover-contents{padding:2px 8px}.monaco-workbench .workbench-hover-container.locked .workbench-hover{outline:1px solid var(--vscode-editorHoverWidget-border)}.monaco-workbench .workbench-hover-container.locked .workbench-hover:focus,.monaco-workbench .workbench-hover-lock:focus{outline:1px solid var(--vscode-focusBorder)}.monaco-workbench .workbench-hover-container.locked .workbench-hover-lock:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-workbench .workbench-hover-pointer{position:absolute;z-index:41;pointer-events:none}.monaco-workbench .workbench-hover-pointer:after{content:"";position:absolute;width:5px;height:5px;background-color:var(--vscode-editorHoverWidget-background);border-right:1px solid var(--vscode-editorHoverWidget-border);border-bottom:1px solid var(--vscode-editorHoverWidget-border)}.monaco-workbench .locked .workbench-hover-pointer:after{width:4px;height:4px;border-right-width:2px;border-bottom-width:2px}.monaco-workbench .workbench-hover-pointer.left{left:-3px}.monaco-workbench .workbench-hover-pointer.right{right:3px}.monaco-workbench .workbench-hover-pointer.top{top:-3px}.monaco-workbench .workbench-hover-pointer.bottom{bottom:3px}.monaco-workbench .workbench-hover-pointer.left:after{transform:rotate(135deg)}.monaco-workbench .workbench-hover-pointer.right:after{transform:rotate(315deg)}.monaco-workbench .workbench-hover-pointer.top:after{transform:rotate(225deg)}.monaco-workbench .workbench-hover-pointer.bottom:after{transform:rotate(45deg)}.monaco-workbench .workbench-hover a{color:var(--vscode-textLink-foreground)}.monaco-workbench .workbench-hover a:focus{outline:1px solid;outline-offset:-1px;text-decoration:underline;outline-color:var(--vscode-focusBorder)}.monaco-workbench .workbench-hover a:hover,.monaco-workbench .workbench-hover a:active{color:var(--vscode-textLink-activeForeground)}.monaco-workbench .workbench-hover code{background:var(--vscode-textCodeBlock-background)}.monaco-workbench .workbench-hover .hover-row .actions{background:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-workbench .workbench-hover.right-aligned{left:1px}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions{flex-direction:row-reverse}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions .action-container{margin-right:0;margin-left:16px}.monaco-hover{cursor:default;position:absolute;overflow:hidden;user-select:text;-webkit-user-select:text;box-sizing:border-box;animation:fadein .1s linear;line-height:1.5em;white-space:var(--vscode-hover-whiteSpace, normal)}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth, 500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover p,.monaco-hover .code,.monaco-hover ul,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0px;border-right:0px;margin:4px -8px -4px;height:1px}.monaco-hover p:first-child,.monaco-hover .code:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover p:last-child,.monaco-hover .code:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ul,.monaco-hover ol{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace, pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{margin-right:16px;cursor:pointer}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link:hover,.monaco-hover .hover-contents a.code-link{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground)}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{pointer-events:none;opacity:.4;cursor:default}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);color:var(--vscode-keybindingLabel-foreground);border-style:solid;border-width:1px;border-radius:3px;border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);vertical-align:middle;padding:1px 3px}.rendered-markdown li:has(input[type=checkbox]){list-style-type:none}.context-view{position:absolute}.context-view.fixed{all:initial;font-family:inherit;font-size:13px;position:fixed;color:inherit}.monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list .monaco-scrollable-element>.scrollbar.vertical,.monaco-pane-view>.monaco-split-view2.vertical>.monaco-scrollable-element>.scrollbar.vertical{z-index:14}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-single,.monaco-list.selection-multiple{outline:0!important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute;z-index:1000}.monaco-list-type-filter-message{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em;text-align:center;white-space:normal;opacity:.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-select-box-dropdown-padding{--dropdown-padding-top: 1px;--dropdown-padding-bottom: 1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top: 3px;--dropdown-padding-bottom: 4px}.monaco-select-box-dropdown-container{display:none;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{line-height:15px;font-family:var(--monaco-monospace-font)}.monaco-select-box-dropdown-container.visible{display:flex;flex-direction:column;text-align:left;width:1px;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{flex:0 0 auto;align-self:flex-start;padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;width:100%;overflow:hidden;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left;opacity:.7}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{text-overflow:ellipsis;overflow:hidden;padding-right:10px;white-space:nowrap;float:right}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{flex:1 1 auto;align-self:flex-start;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{overflow:hidden;max-height:0px}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-select-box{width:100%;cursor:pointer;border-radius:2px}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{font-size:11px;border-radius:5px}.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{display:flex;margin:0 auto;padding:0;height:100%;width:100%;align-items:center}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{display:block;align-items:center;justify-content:center;cursor:pointer;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .icon,.monaco-action-bar .action-item .codicon{display:block}.monaco-action-bar .action-item .codicon{display:flex;align-items:center;width:16px;height:16px}.monaco-action-bar .action-label{display:flex;font-size:11px;padding:3px;border-radius:5px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{color:var(--vscode-disabledForeground)}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:.8em;margin-right:.8em}.monaco-action-bar .action-item .action-label.separator{width:1px;height:16px;margin:5px 4px!important;cursor:default;min-width:1px;padding:0;background-color:#bbb}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;flex:1;max-width:170px;min-width:60px;display:flex;align-items:center;justify-content:center;margin-right:10px}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{display:flex;align-items:center;cursor:default}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:center center;background-repeat:no-repeat}.monaco-action-bar .action-item.menu-entry .action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:center center;background-repeat:no-repeat}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:#ddd6;border:solid 1px rgba(204,204,204,.4);border-bottom-color:#bbb6;box-shadow:inset 0 -1px #bbb6;color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:solid 1px rgb(111,195,223);box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:solid 1px #0F4A85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:#8080802b;border:solid 1px rgba(51,51,51,.6);border-bottom-color:#4449;box-shadow:inset 0 -1px #4449;color:#ccc}.monaco-custom-toggle{margin-left:2px;float:left;cursor:pointer;overflow:hidden;width:20px;height:20px;border-radius:3px;border:1px solid transparent;padding:1px;box-sizing:border-box;user-select:none;-webkit-user-select:none}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-light .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px!important}.monaco-action-bar .checkbox-action-item{display:flex;align-items:center}.monaco-action-bar .checkbox-action-item>.monaco-custom-toggle.monaco-checkbox{margin-right:4px}.monaco-action-bar .checkbox-action-item>.checkbox-label{font-size:12px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.quick-input-widget{position:absolute;width:600px;z-index:2550;left:50%;margin-left:-300px;-webkit-app-region:no-drag;border-radius:6px}.quick-input-titlebar{display:flex;align-items:center;border-radius:inherit}.quick-input-left-action-bar{display:flex;margin-left:4px;flex:1}.quick-input-title{padding:3px 0;text-align:center;text-overflow:ellipsis;overflow:hidden}.quick-input-right-action-bar{display:flex;margin-right:4px;flex:1}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:center;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{margin:4px 2px;flex:1}.quick-input-header{display:flex;padding:8px 6px 2px}.quick-input-widget.hidden-input .quick-input-header{padding:0;margin-bottom:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;position:absolute;right:4px;display:flex;align-items:center}.quick-input-count .monaco-count-badge{vertical-align:middle;padding:2px 4px;border-radius:2px;min-height:auto;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{font-size:11px;padding:0 6px;display:flex;height:25px;align-items:center}.quick-input-message{margin-top:-1px;padding:5px;overflow-wrap:break-word}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{overflow:hidden;max-height:440px;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;overflow:hidden;display:flex;height:100%;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-width:1px;border-top-style:solid}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{overflow:hidden;display:flex;height:100%;flex:1}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-size:16px;background-position:left center;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;display:flex;align-items:center;justify-content:center}.quick-input-list .quick-input-list-rows{overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;height:100%;flex:1;margin-left:5px}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{display:flex;align-items:center}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;line-height:normal;text-overflow:ellipsis;overflow:hidden}.quick-input-list .monaco-list .monaco-list-row .monaco-highlighted-label .highlight{font-weight:700;background-color:unset;color:var(--vscode-list-highlightForeground)!important}.quick-input-list .monaco-list .monaco-list-row.focused .monaco-highlighted-label .highlight{color:var(--vscode-list-focusHighlightForeground)!important}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px}.quick-input-list .quick-input-list-entry-action-bar{margin-right:4px}.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry.focus-inside .quick-input-list-entry-action-bar .action-label,.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .monaco-list-row.passive-focused .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.quick-input-list .quick-input-list-separator-as-item{padding:4px 6px;font-size:12px}.quick-input-list .quick-input-list-separator-as-item .label-name{font-weight:600}.quick-input-list .quick-input-list-separator-as-item .label-description{opacity:1!important}.quick-input-list .monaco-tree-sticky-row .quick-input-list-entry.quick-input-list-separator-as-item.quick-input-list-separator-border{border-top-style:none}.quick-input-list .monaco-tree-sticky-row{padding:0 5px}.quick-input-list .monaco-tl-twistie{display:none!important}:root{--vscode-sash-size: 4px;--vscode-sash-hover-size: 4px}.monaco-sash{position:absolute;z-index:35;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;top:0;width:var(--vscode-sash-size);height:100%}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:var(--vscode-sash-size)}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";height:calc(var(--vscode-sash-size) * 2);width:calc(var(--vscode-sash-size) * 2);z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size) * -.5);top:calc(var(--vscode-sash-size) * -1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{left:calc(var(--vscode-sash-size) * -.5);bottom:calc(var(--vscode-sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{top:calc(var(--vscode-sash-size) * -.5);left:calc(var(--vscode-sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{top:calc(var(--vscode-sash-size) * -.5);right:calc(var(--vscode-sash-size) * -1)}.monaco-sash:before{content:"";pointer-events:none;position:absolute;width:100%;height:100%;background:transparent}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.hover:before,.monaco-sash.active:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{width:var(--vscode-sash-hover-size);left:calc(50% - (var(--vscode-sash-hover-size) / 2))}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - (var(--vscode-sash-hover-size) / 2))}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:initial}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{width:100%;height:100%;white-space:nowrap;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:initial;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;position:relative;height:100%;width:100%;white-space:nowrap;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{width:100%;height:100%;font-weight:700;overflow:hidden;text-overflow:ellipsis}.monaco-table-th,.monaco-table-td{box-sizing:border-box;flex-shrink:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:"";position:absolute;left:calc(var(--vscode-sash-size) / 2);width:0;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-inputbox{position:relative;display:block;padding:0;box-sizing:border-box;border-radius:2px;font-size:inherit}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.ibwrapper>.input{display:inline-block;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;scrollbar-width:none;outline:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;box-sizing:border-box;padding:.4em;font-size:12px;line-height:17px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.monaco-findInput.highlight-0 .controls,.hc-light .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.monaco-findInput.highlight-1 .controls,.hc-light .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:transparent}}.monaco-tl-row{display:flex;height:100%;align-items:center;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;position:absolute;top:0;left:16px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;box-sizing:border-box;height:100%;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-twistie,.monaco-tl-contents{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;padding-right:6px;flex-shrink:0;width:16px;display:flex!important;align-items:center;justify-content:center;transform:translate(3px)}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{position:absolute;top:0;display:flex;padding:3px;max-width:200px;z-index:100;margin:0 6px;border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{display:flex!important;align-items:center;justify-content:center;cursor:grab;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container{position:absolute;top:0;left:0;width:100%;height:0;z-index:13;background-color:var(--vscode-sideBar-background)}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row.monaco-list-row{position:absolute;width:100%;opacity:1!important;overflow:hidden;background-color:var(--vscode-sideBar-background)}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row:hover{background-color:var(--vscode-list-hoverBackground)!important;cursor:pointer}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty,.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty .monaco-tree-sticky-container-shadow{display:none}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow{position:absolute;bottom:-3px;left:0;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container[tabindex="0"]:focus{outline:none}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:left center;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;line-height:inherit!important;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;flex-shrink:0}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix{opacity:.7;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;margin-left:.5em;font-size:.9em;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{font-style:italic}.monaco-icon-label.deprecated{text-decoration:line-through;opacity:.66}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;font-size:90%;font-weight:600;margin:auto 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-keybinding{display:flex;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border-style:solid;border-width:1px;border-radius:3px;vertical-align:middle;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-text-button{box-sizing:border-box;display:flex;width:100%;padding:4px;border-radius:2px;text-align:center;cursor:pointer;justify-content:center;align-items:center;border:1px solid var(--vscode-button-border, transparent);line-height:18px}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled:focus,.monaco-button.disabled{opacity:.4!important;cursor:default}.monaco-text-button .codicon{margin:0 .2em;color:inherit!important}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;padding:0 4px;overflow:hidden;height:28px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{display:flex;justify-content:center;align-items:center;font-weight:400;font-style:inherit;padding:4px 0}.monaco-button-dropdown{display:flex;cursor:pointer}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus,.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{padding:4px 0;cursor:default}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border, transparent);border-left-width:0!important;border-radius:0 2px 2px 0;display:flex;align-items:center}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{display:flex;flex-direction:column;align-items:center;margin:4px 5px}.monaco-description-button .monaco-button-description{font-style:italic;font-size:11px;padding:4px 20px}.monaco-description-button .monaco-button-label,.monaco-description-button .monaco-button-description{display:flex;justify-content:center;align-items:center}.monaco-description-button .monaco-button-label>.codicon,.monaco-description-button .monaco-button-description>.codicon{margin:0 .2em;color:inherit!important}.monaco-button.default-colors,.monaco-button-dropdown.default-colors>.monaco-button{color:var(--vscode-button-foreground);background-color:var(--vscode-button-background)}.monaco-button.default-colors:hover,.monaco-button-dropdown.default-colors>.monaco-button:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button.default-colors.secondary,.monaco-button-dropdown.default-colors>.monaco-button.secondary{color:var(--vscode-button-secondaryForeground);background-color:var(--vscode-button-secondaryBackground)}.monaco-button.default-colors.secondary:hover,.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-top:1px solid var(--vscode-button-border);border-bottom:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}.monaco-count-badge{padding:3px 6px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;box-sizing:border-box}.monaco-count-badge.long{padding:2px 3px;border-radius:2px;min-height:auto;line-height:normal}.monaco-progress-container{width:100%;height:2px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:2px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;transform:translateZ(0);animation-timing-function:linear}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translate(0) scaleX(1)}50%{transform:translate(2500%) scaleX(3)}to{transform:translate(4900%) scaleX(1)}}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0px;transform:translateY(-10px);font-size:13px;line-height:14px}.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines .bottom.dragging{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .top,.monaco-editor .diff-hidden-lines .bottom{transition:background-color .1s ease-out;height:4px;background-color:transparent;background-clip:padding-box;border-bottom:2px solid transparent;border-top:4px solid transparent}.monaco-editor.draggingUnchangedRegion.canMoveTop:not(.canMoveBottom) *,.monaco-editor .diff-hidden-lines .top.canMoveTop:not(.canMoveBottom),.monaco-editor .diff-hidden-lines .bottom.canMoveTop:not(.canMoveBottom){cursor:n-resize!important}.monaco-editor.draggingUnchangedRegion:not(.canMoveTop).canMoveBottom *,.monaco-editor .diff-hidden-lines .top:not(.canMoveTop).canMoveBottom,.monaco-editor .diff-hidden-lines .bottom:not(.canMoveTop).canMoveBottom{cursor:s-resize!important}.monaco-editor.draggingUnchangedRegion.canMoveTop.canMoveBottom *,.monaco-editor .diff-hidden-lines .top.canMoveTop.canMoveBottom,.monaco-editor .diff-hidden-lines .bottom.canMoveTop.canMoveBottom{cursor:ns-resize!important}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{z-index:1;background:var(--vscode-editor-background);display:flex;justify-content:center;align-items:center}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap;height:24px;box-shadow:inset 0 -5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow),inset 0 5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow)}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedOriginal,.monaco-editor .movedModified{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedOriginal.currentMove,.monaco-editor .movedModified.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{position:absolute;pointer-events:none}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{margin-left:-1px;border-left:solid var(--vscode-diffEditor-removedTextBackground) 3px}.monaco-editor .char-insert.diff-range-empty{border-left:solid var(--vscode-diffEditor-insertedTextBackground) 3px}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{display:flex;justify-content:flex-end;margin-top:-4px}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar{background:#0000}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-editor .insert-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-diff-editor .delete-sign{font-size:11px!important;opacity:.7!important;display:flex!important;align-items:center}.monaco-editor.hc-black .insert-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .delete-sign,.monaco-editor.hc-light .insert-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .delete-sign{opacity:1}.monaco-editor .inline-deleted-margin-view-zone,.monaco-editor .inline-added-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-editor .char-insert,.monaco-diff-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .line-insert,.monaco-diff-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground, var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .line-insert,.monaco-editor .char-insert{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-insertedTextBorder)}.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .line-insert,.monaco-editor.hc-black .char-insert,.monaco-editor.hc-light .char-insert{border-style:dashed}.monaco-editor .line-delete,.monaco-editor .char-delete{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-removedTextBorder)}.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .line-delete,.monaco-editor.hc-black .char-delete,.monaco-editor.hc-light .char-delete{border-style:dashed}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .gutter-insert,.monaco-diff-editor .gutter-insert{background-color:var(--vscode-diffEditorGutter-insertedLineBackground, var(--vscode-diffEditor-insertedLineBackground), var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-delete,.monaco-diff-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .line-delete,.monaco-diff-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground, var(--vscode-diffEditor-removedTextBackground))}.monaco-editor .inline-deleted-margin-view-zone,.monaco-editor .gutter-delete,.monaco-diff-editor .gutter-delete{background-color:var(--vscode-diffEditorGutter-removedLineBackground, var(--vscode-diffEditor-removedLineBackground), var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow);border-left:1px solid var(--vscode-diffEditor-border)}.monaco-diff-editor.side-by-side .editor.original{box-shadow:6px 0 5px -5px var(--vscode-scrollbar-shadow);border-right:1px solid var(--vscode-diffEditor-border)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .diagonal-fill{background-image:linear-gradient(-45deg,var(--vscode-diffEditor-diagonalFill) 12.5%,#0000 12.5%,#0000 50%,var(--vscode-diffEditor-diagonalFill) 50%,var(--vscode-diffEditor-diagonalFill) 62.5%,#0000 62.5%,#0000 100%);background-size:8px 8px}.monaco-diff-editor .gutter{position:relative;overflow:hidden;flex-shrink:0;flex-grow:0}.monaco-diff-editor .gutter .gutterItem{opacity:0;transition:opacity .7s}.monaco-diff-editor .gutter .gutterItem.showAlways{opacity:1;transition:none}.monaco-diff-editor .gutter .gutterItem.noTransition{transition:none}.monaco-diff-editor .gutter:hover .gutterItem{opacity:1;transition:opacity .1s ease-in-out}.monaco-diff-editor .gutter .gutterItem .background{position:absolute;height:100%;left:50%;width:1px;border-left:2px var(--vscode-menu-border) solid}.monaco-diff-editor .gutter .gutterItem .buttons{position:absolute;width:100%;display:flex;justify-content:center;align-items:center}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar{height:fit-content}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar{line-height:1}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container{width:fit-content;border-radius:4px;border:1px var(--vscode-menu-border) solid;background:var(--vscode-editor-background)}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container .action-item:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container .action-item .action-label{padding:.5px 1px}.monaco-component.diff-review{user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review{position:absolute}.monaco-component.diff-review .diff-review-line-number{text-align:right;display:inline-block;color:var(--vscode-editorLineNumber-foreground)}.monaco-component.diff-review .diff-review-summary{padding-left:10px}.monaco-component.diff-review .diff-review-shadow{position:absolute;box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset}.monaco-component.diff-review .diff-review-row{white-space:pre}.monaco-component.diff-review .diff-review-table{display:table;min-width:100%}.monaco-component.diff-review .diff-review-row{display:table-row;width:100%}.monaco-component.diff-review .diff-review-spacer{display:inline-block;width:10px;vertical-align:middle}.monaco-component.diff-review .diff-review-spacer>.codicon{font-size:9px!important}.monaco-component.diff-review .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-component.diff-review .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}.monaco-component.diff-review .revertButton{cursor:pointer}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-component.multiDiffEditor{background:var(--vscode-multiDiffEditor-background);overflow-y:hidden}.monaco-component.multiDiffEditor .focused{--vscode-multiDiffEditor-border: var(--vscode-focusBorder)}.monaco-component.multiDiffEditor .multiDiffEntry{display:flex;flex-direction:column;flex:1;overflow:hidden}.monaco-component.multiDiffEditor .multiDiffEntry .collapse-button{margin:0 5px;cursor:pointer}.monaco-component.multiDiffEditor .multiDiffEntry .collapse-button a{display:block}.monaco-component.multiDiffEditor .multiDiffEntry .header{z-index:1000;background:var(--vscode-editor-background)}.monaco-component.multiDiffEditor .multiDiffEntry .header:not(.collapsed) .header-content{border-bottom:1px solid var(--vscode-sideBarSectionHeader-border)}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content{margin:8px 8px 0;padding:4px 5px;border-top:1px solid var(--vscode-multiDiffEditor-border);border-right:1px solid var(--vscode-multiDiffEditor-border);border-left:1px solid var(--vscode-multiDiffEditor-border);border-top-left-radius:2px;border-top-right-radius:2px;display:flex;align-items:center;color:var(--vscode-foreground);background:var(--vscode-multiDiffEditor-headerBackground)}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content.shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path{display:flex;flex:1;min-width:0}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .title{font-size:14px;line-height:22px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .title.original{flex:1;min-width:0;text-overflow:ellipsis}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .status{font-weight:600;opacity:.75;margin:0 10px;line-height:22px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .actions{padding:0 8px}.monaco-component.multiDiffEditor .multiDiffEntry .editorParent{flex:1;display:flex;flex-direction:column;margin-right:8px;margin-left:8px;border-right:1px solid var(--vscode-multiDiffEditor-border);border-left:1px solid var(--vscode-multiDiffEditor-border);border-bottom:1px solid var(--vscode-multiDiffEditor-border);border-radius:2px;overflow:hidden}.monaco-component.multiDiffEditor .multiDiffEntry .editorContainer{flex:1}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{box-sizing:border-box;background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border)}.inline-editor-progress-decoration{display:inline-block;width:1em;height:1em}.inline-progress-widget{display:flex!important;justify-content:center;align-items:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{font-size:90%!important;animation:none}.inline-progress-widget:hover .icon:before{content:""}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:2px 4px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0px}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{width:0!important;height:0!important;border-color:transparent;border-style:solid;z-index:1000;border-width:8px;position:absolute;left:2px}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top,.monaco-editor .monaco-editor-overlaymessage.below .anchor.below{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.post-edit-widget{box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:1px solid var(--vscode-widget-border, transparent);border-radius:4px;background-color:var(--vscode-editorWidget-background);overflow:hidden}.post-edit-widget .monaco-button{padding:2px;border:none;border-radius:0}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}@font-face{font-family:codicon;font-display:block;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI3T0tHAAABjAAAAGBjbWFwO462kQAACRgAABq0Z2x5ZkExNwYAACdkAAD1iGhlYWRYl6BTAAAA4AAAADZoaGVhAlsC9gAAALwAAAAkaG10eBi9//oAAAHsAAAHLGxvY2Ebh1ieAAAjzAAAA5htYXhwAuwBgQAAARgAAAAgbmFtZZP3uUsAARzsAAAB+HBvc3RMW9BGAAEe5AAAGP8AAQAAASwAAAAAASz////+AS4AAQAAAAAAAAAAAAAAAAAAAcsAAQAAAAEAANAcvqJfDzz1AAsBLAAAAAB8JbCAAAAAAHwlsID////9AS4BLQAAAAgAAgAAAAAAAAABAAABywF1ABcAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQBKwGQAAUAAADLANIAAAAqAMsA0gAAAJAADgBNAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOpg8QEBLAAAABsBRwADAAAAAQAAAAAAAAAAAAAAAAACAAAAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAAAAABQAAAAMAAAAsAAAABAAABSAAAQAAAAAEGgADAAEAAAAsAAMACgAABSAABAPuAAAAEgAQAAMAAuqI6ozqx+rJ6wnrTuwx8QH//wAA6mDqiuqP6snqzOsL61DxAf//AAAAAAAAAAAAAAAAAAAAAAABABIAYgBmANYA1gFQAdYDmAAAAAMA7wFHAUQAswE0AZIBIgFrAQwBcQBNAcABXQFnAWYAkAA1AS0AhQDNAPwAQAGQAHgAFgG7AJoAhwFAARsBEgETAaUAxwClALsBnQF9AIoBjgF2AYUBgwF3AYYBjQGIAYEAvQF8AYoAAgAEAAUACgALAAwADQAOAA8AEAASABoAHAAdAB4AWwBcAF0AXgBhAGIAIQAiACMAJAAlACgAKgArACwALQAuAC8AMQAyADMANAA7ADgAPAA9AD4APwBBAEIARQBHAEgASgBUAFUAVgBXAGYAaABqAG0AcQBzAHQAdQB2AHcAeQB6AHsAfAB9AH4AgACBAIMAhACGAIgAiwCOAI8AkgCTAJQAlQCWAJcAmACZAJsAnQCeAJ8AoAChAKIApACnAKgAqQCTAKoAqwCtALcAuAC8AL4AwgDDAMYAyADJAMoAywDRANIA0wDUANUA1gDXANgA7QDwAPEA9AD3APgA+QD6AP4A/wEEAQUBBgELAQ0BDgEPAREBFQEWARkBGgEdAR4BJQEpASoBKwEsAS4BLwEwATEBMgEzATgBOQE6ATsBPAE9AT4BPwFBAUMBRQFGAUgBSQFLAUwBTQFOAU8BVgFXAVgBWQFaAVwBYQFiAWMBZQFoAWoBbgFvAXABcgFzAXgBeQF6AXsBfgF/AYABggGEAYcBiQGLAZQBlQGeAZ8BoQGjAaQBpgGnAagBqQGqAa4BsAGxAbIBtQG2AbcBuQG6AcEBwgHDAcQBxQHJAcoA8gDzAPUA9gBfAGAAbwA5AHAAYwGMAG4AcgBsAFoAJgAnAQcAjACRAMQBrwABABcAZADsARwBUgGPAScAuQFgAV8BIAF0ASgBNgBZAbgAQwEIAI0AvwD9ARgBNwApASYBHwA2ADcASQGRAbMBrQGrAawArwFQAVMBFwBrAcYByAHHAZcBmAGZAZoBmwGcAZYAEQBSASEAnAG/AGkAzwDbANoA2QBQAE8ATgAUANAArgCwAFgAZwFVAKMAZQAVAMAAwQEkAB8AIAD7ABMBtAEUAOsA3ADdAOIA4ADhAOQA5QDnAOkA6gDfAN4BkwDMATUAiQAGAAcACAAJAOgA4wDmABsAxQEDAQAAOgAZABgATACxALIBWwBLAV4BbQDOAQoBoAGiAEYBaQCmAbwAMAEjARABCQFCAFEA7gFKAWwAggB/AXUBZAC2ALQAtQG+Ab0ARAFUAVEAUwC6AQIBAQCsAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABWUAAAAAAAAAcsAAOpgAADqYAAAAAMAAOphAADqYQAAAO8AAOpiAADqYgAAAUcAAOpjAADqYwAAAUQAAOpkAADqZAAAALMAAOplAADqZQAAATQAAOpmAADqZgAAAZIAAOpnAADqZwAAASIAAOpoAADqaAAAAWsAAOppAADqaQAAAQwAAOpqAADqagAAAXEAAOprAADqawAAAE0AAOpsAADqbAAAAcAAAOptAADqbQAAAV0AAOpuAADqbgAAAWcAAOpvAADqbwAAAWYAAOpwAADqcAAAAJAAAOpxAADqcQAAADUAAOpyAADqcgAAAS0AAOpzAADqcwAAAIUAAOp0AADqdAAAAM0AAOp1AADqdQAAAPwAAOp2AADqdgAAAEAAAOp3AADqdwAAAZAAAOp4AADqeAAAAHgAAOp5AADqeQAAABYAAOp6AADqegAAAbsAAOp7AADqewAAAJoAAOp8AADqfAAAAIcAAOp9AADqfQAAAUAAAOp+AADqfgAAARsAAOp/AADqfwAAARIAAOqAAADqgAAAARMAAOqBAADqgQAAAaUAAOqCAADqggAAAMcAAOqDAADqgwAAAKUAAOqEAADqhAAAALsAAOqFAADqhQAAAZ0AAOqGAADqhgAAAX0AAOqHAADqhwAAAIoAAOqIAADqiAAAAY4AAOqKAADqigAAAXYAAOqLAADqiwAAAYUAAOqMAADqjAAAAYMAAOqPAADqjwAAAXcAAOqQAADqkAAAAYYAAOqRAADqkQAAAY0AAOqSAADqkgAAAYgAAOqTAADqkwAAAYEAAOqUAADqlAAAAL0AAOqVAADqlQAAAXwAAOqWAADqlgAAAYoAAOqXAADqlwAAAAIAAOqYAADqmAAAAAQAAOqZAADqmQAAAAUAAOqaAADqmgAAAAoAAOqbAADqmwAAAAsAAOqcAADqnAAAAAwAAOqdAADqnQAAAA0AAOqeAADqngAAAA4AAOqfAADqnwAAAA8AAOqgAADqoAAAABAAAOqhAADqoQAAABIAAOqiAADqogAAABoAAOqjAADqowAAABwAAOqkAADqpAAAAB0AAOqlAADqpQAAAB4AAOqmAADqpgAAAFsAAOqnAADqpwAAAFwAAOqoAADqqAAAAF0AAOqpAADqqQAAAF4AAOqqAADqqgAAAGEAAOqrAADqqwAAAGIAAOqsAADqrAAAACEAAOqtAADqrQAAACIAAOquAADqrgAAACMAAOqvAADqrwAAACQAAOqwAADqsAAAACUAAOqxAADqsQAAACgAAOqyAADqsgAAACoAAOqzAADqswAAACsAAOq0AADqtAAAACwAAOq1AADqtQAAAC0AAOq2AADqtgAAAC4AAOq3AADqtwAAAC8AAOq4AADquAAAADEAAOq5AADquQAAADIAAOq6AADqugAAADMAAOq7AADquwAAADQAAOq8AADqvAAAADsAAOq9AADqvQAAADgAAOq+AADqvgAAADwAAOq/AADqvwAAAD0AAOrAAADqwAAAAD4AAOrBAADqwQAAAD8AAOrCAADqwgAAAEEAAOrDAADqwwAAAEIAAOrEAADqxAAAAEUAAOrFAADqxQAAAEcAAOrGAADqxgAAAEgAAOrHAADqxwAAAEoAAOrJAADqyQAAAFQAAOrMAADqzAAAAFUAAOrNAADqzQAAAFYAAOrOAADqzgAAAFcAAOrPAADqzwAAAGYAAOrQAADq0AAAAGgAAOrRAADq0QAAAGoAAOrSAADq0gAAAG0AAOrTAADq0wAAAHEAAOrUAADq1AAAAHMAAOrVAADq1QAAAHQAAOrWAADq1gAAAHUAAOrXAADq1wAAAHYAAOrYAADq2AAAAHcAAOrZAADq2QAAAHkAAOraAADq2gAAAHoAAOrbAADq2wAAAHsAAOrcAADq3AAAAHwAAOrdAADq3QAAAH0AAOreAADq3gAAAH4AAOrfAADq3wAAAIAAAOrgAADq4AAAAIEAAOrhAADq4QAAAIMAAOriAADq4gAAAIQAAOrjAADq4wAAAIYAAOrkAADq5AAAAIgAAOrlAADq5QAAAIsAAOrmAADq5gAAAI4AAOrnAADq5wAAAI8AAOroAADq6AAAAJIAAOrpAADq6QAAAJMAAOrqAADq6gAAAJQAAOrrAADq6wAAAJUAAOrsAADq7AAAAJYAAOrtAADq7QAAAJcAAOruAADq7gAAAJgAAOrvAADq7wAAAJkAAOrwAADq8AAAAJsAAOrxAADq8QAAAJ0AAOryAADq8gAAAJ4AAOrzAADq8wAAAJ8AAOr0AADq9AAAAKAAAOr1AADq9QAAAKEAAOr2AADq9gAAAKIAAOr3AADq9wAAAKQAAOr4AADq+AAAAKcAAOr5AADq+QAAAKgAAOr6AADq+gAAAKkAAOr7AADq+wAAAJMAAOr8AADq/AAAAKoAAOr9AADq/QAAAKsAAOr+AADq/gAAAK0AAOr/AADq/wAAALcAAOsAAADrAAAAALgAAOsBAADrAQAAALwAAOsCAADrAgAAAL4AAOsDAADrAwAAAMIAAOsEAADrBAAAAMMAAOsFAADrBQAAAMYAAOsGAADrBgAAAMgAAOsHAADrBwAAAMkAAOsIAADrCAAAAMoAAOsJAADrCQAAAMsAAOsLAADrCwAAANEAAOsMAADrDAAAANIAAOsNAADrDQAAANMAAOsOAADrDgAAANQAAOsPAADrDwAAANUAAOsQAADrEAAAANYAAOsRAADrEQAAANcAAOsSAADrEgAAANgAAOsTAADrEwAAAO0AAOsUAADrFAAAAPAAAOsVAADrFQAAAPEAAOsWAADrFgAAAPQAAOsXAADrFwAAAPcAAOsYAADrGAAAAPgAAOsZAADrGQAAAPkAAOsaAADrGgAAAPoAAOsbAADrGwAAAP4AAOscAADrHAAAAP8AAOsdAADrHQAAAQQAAOseAADrHgAAAQUAAOsfAADrHwAAAQYAAOsgAADrIAAAAQsAAOshAADrIQAAAQ0AAOsiAADrIgAAAQ4AAOsjAADrIwAAAQ8AAOskAADrJAAAAREAAOslAADrJQAAARUAAOsmAADrJgAAARYAAOsnAADrJwAAARkAAOsoAADrKAAAARoAAOspAADrKQAAAR0AAOsqAADrKgAAAR4AAOsrAADrKwAAASUAAOssAADrLAAAASkAAOstAADrLQAAASoAAOsuAADrLgAAASsAAOsvAADrLwAAASwAAOswAADrMAAAAS4AAOsxAADrMQAAAS8AAOsyAADrMgAAATAAAOszAADrMwAAATEAAOs0AADrNAAAATIAAOs1AADrNQAAATMAAOs2AADrNgAAATgAAOs3AADrNwAAATkAAOs4AADrOAAAAToAAOs5AADrOQAAATsAAOs6AADrOgAAATwAAOs7AADrOwAAAT0AAOs8AADrPAAAAT4AAOs9AADrPQAAAT8AAOs+AADrPgAAAUEAAOs/AADrPwAAAUMAAOtAAADrQAAAAUUAAOtBAADrQQAAAUYAAOtCAADrQgAAAUgAAOtDAADrQwAAAUkAAOtEAADrRAAAAUsAAOtFAADrRQAAAUwAAOtGAADrRgAAAU0AAOtHAADrRwAAAU4AAOtIAADrSAAAAU8AAOtJAADrSQAAAVYAAOtKAADrSgAAAVcAAOtLAADrSwAAAVgAAOtMAADrTAAAAVkAAOtNAADrTQAAAVoAAOtOAADrTgAAAVwAAOtQAADrUAAAAWEAAOtRAADrUQAAAWIAAOtSAADrUgAAAWMAAOtTAADrUwAAAWUAAOtUAADrVAAAAWgAAOtVAADrVQAAAWoAAOtWAADrVgAAAW4AAOtXAADrVwAAAW8AAOtYAADrWAAAAXAAAOtZAADrWQAAAXIAAOtaAADrWgAAAXMAAOtbAADrWwAAAXgAAOtcAADrXAAAAXkAAOtdAADrXQAAAXoAAOteAADrXgAAAXsAAOtfAADrXwAAAX4AAOtgAADrYAAAAX8AAOthAADrYQAAAYAAAOtiAADrYgAAAYIAAOtjAADrYwAAAYQAAOtkAADrZAAAAYcAAOtlAADrZQAAAYkAAOtmAADrZgAAAYsAAOtnAADrZwAAAZQAAOtoAADraAAAAZUAAOtpAADraQAAAZ4AAOtqAADragAAAZ8AAOtrAADrawAAAaEAAOtsAADrbAAAAaMAAOttAADrbQAAAaQAAOtuAADrbgAAAaYAAOtvAADrbwAAAacAAOtwAADrcAAAAagAAOtxAADrcQAAAakAAOtyAADrcgAAAaoAAOtzAADrcwAAAa4AAOt0AADrdAAAAbAAAOt1AADrdQAAAbEAAOt2AADrdgAAAbIAAOt3AADrdwAAAbUAAOt4AADreAAAAbYAAOt5AADreQAAAbcAAOt6AADregAAAbkAAOt7AADrewAAAboAAOt8AADrfAAAAcEAAOt9AADrfQAAAcIAAOt+AADrfgAAAcMAAOt/AADrfwAAAcQAAOuAAADrgAAAAcUAAOuBAADrgQAAAckAAOuCAADrggAAAcoAAOuDAADrgwAAAPIAAOuEAADrhAAAAPMAAOuFAADrhQAAAPUAAOuGAADrhgAAAPYAAOuHAADrhwAAAF8AAOuIAADriAAAAGAAAOuJAADriQAAAG8AAOuKAADrigAAADkAAOuLAADriwAAAHAAAOuMAADrjAAAAGMAAOuNAADrjQAAAYwAAOuOAADrjgAAAG4AAOuPAADrjwAAAHIAAOuQAADrkAAAAGwAAOuRAADrkQAAAFoAAOuSAADrkgAAACYAAOuTAADrkwAAACcAAOuUAADrlAAAAQcAAOuVAADrlQAAAIwAAOuWAADrlgAAAJEAAOuXAADrlwAAAMQAAOuYAADrmAAAAa8AAOuZAADrmQAAAAEAAOuaAADrmgAAABcAAOubAADrmwAAAGQAAOucAADrnAAAAOwAAOudAADrnQAAARwAAOueAADrngAAAVIAAOufAADrnwAAAY8AAOugAADroAAAAScAAOuhAADroQAAALkAAOuiAADrogAAAWAAAOujAADrowAAAV8AAOukAADrpAAAASAAAOulAADrpQAAAXQAAOumAADrpgAAASgAAOunAADrpwAAATYAAOuoAADrqAAAAFkAAOupAADrqQAAAbgAAOuqAADrqgAAAEMAAOurAADrqwAAAQgAAOusAADrrAAAAI0AAOutAADrrQAAAL8AAOuuAADrrgAAAP0AAOuvAADrrwAAARgAAOuwAADrsAAAATcAAOuxAADrsQAAACkAAOuyAADrsgAAASYAAOuzAADrswAAAR8AAOu0AADrtAAAADYAAOu1AADrtQAAADcAAOu2AADrtgAAAEkAAOu3AADrtwAAAZEAAOu4AADruAAAAbMAAOu5AADruQAAAa0AAOu6AADrugAAAasAAOu7AADruwAAAawAAOu8AADrvAAAAK8AAOu9AADrvQAAAVAAAOu+AADrvgAAAVMAAOu/AADrvwAAARcAAOvAAADrwAAAAGsAAOvBAADrwQAAAcYAAOvCAADrwgAAAcgAAOvDAADrwwAAAccAAOvEAADrxAAAAZcAAOvFAADrxQAAAZgAAOvGAADrxgAAAZkAAOvHAADrxwAAAZoAAOvIAADryAAAAZsAAOvJAADryQAAAZwAAOvKAADrygAAAZYAAOvLAADrywAAABEAAOvMAADrzAAAAFIAAOvNAADrzQAAASEAAOvOAADrzgAAAJwAAOvPAADrzwAAAb8AAOvQAADr0AAAAGkAAOvRAADr0QAAAM8AAOvSAADr0gAAANsAAOvTAADr0wAAANoAAOvUAADr1AAAANkAAOvVAADr1QAAAFAAAOvWAADr1gAAAE8AAOvXAADr1wAAAE4AAOvYAADr2AAAABQAAOvZAADr2QAAANAAAOvaAADr2gAAAK4AAOvbAADr2wAAALAAAOvcAADr3AAAAFgAAOvdAADr3QAAAGcAAOveAADr3gAAAVUAAOvfAADr3wAAAKMAAOvgAADr4AAAAGUAAOvhAADr4QAAABUAAOviAADr4gAAAMAAAOvjAADr4wAAAMEAAOvkAADr5AAAASQAAOvlAADr5QAAAB8AAOvmAADr5gAAACAAAOvnAADr5wAAAPsAAOvoAADr6AAAABMAAOvpAADr6QAAAbQAAOvqAADr6gAAARQAAOvrAADr6wAAAOsAAOvsAADr7AAAANwAAOvtAADr7QAAAN0AAOvuAADr7gAAAOIAAOvvAADr7wAAAOAAAOvwAADr8AAAAOEAAOvxAADr8QAAAOQAAOvyAADr8gAAAOUAAOvzAADr8wAAAOcAAOv0AADr9AAAAOkAAOv1AADr9QAAAOoAAOv2AADr9gAAAN8AAOv3AADr9wAAAN4AAOv4AADr+AAAAZMAAOv5AADr+QAAAMwAAOv6AADr+gAAATUAAOv7AADr+wAAAIkAAOv8AADr/AAAAAYAAOv9AADr/QAAAAcAAOv+AADr/gAAAAgAAOv/AADr/wAAAAkAAOwAAADsAAAAAOgAAOwBAADsAQAAAOMAAOwCAADsAgAAAOYAAOwDAADsAwAAABsAAOwEAADsBAAAAMUAAOwFAADsBQAAAQMAAOwGAADsBgAAAQAAAOwHAADsBwAAADoAAOwIAADsCAAAABkAAOwJAADsCQAAABgAAOwKAADsCgAAAEwAAOwLAADsCwAAALEAAOwMAADsDAAAALIAAOwNAADsDQAAAVsAAOwOAADsDgAAAEsAAOwPAADsDwAAAV4AAOwQAADsEAAAAW0AAOwRAADsEQAAAM4AAOwSAADsEgAAAQoAAOwTAADsEwAAAaAAAOwUAADsFAAAAaIAAOwVAADsFQAAAEYAAOwWAADsFgAAAWkAAOwXAADsFwAAAKYAAOwYAADsGAAAAbwAAOwZAADsGQAAADAAAOwaAADsGgAAASMAAOwbAADsGwAAARAAAOwcAADsHAAAAQkAAOwdAADsHQAAAUIAAOweAADsHgAAAFEAAOwfAADsHwAAAO4AAOwgAADsIAAAAUoAAOwhAADsIQAAAWwAAOwiAADsIgAAAIIAAOwjAADsIwAAAH8AAOwkAADsJAAAAXUAAOwlAADsJQAAAWQAAOwmAADsJgAAALYAAOwnAADsJwAAALQAAOwoAADsKAAAALUAAOwpAADsKQAAAb4AAOwqAADsKgAAAb0AAOwrAADsKwAAAEQAAOwsAADsLAAAAVQAAOwtAADsLQAAAVEAAOwuAADsLgAAAFMAAOwvAADsLwAAALoAAOwwAADsMAAAAQIAAOwxAADsMQAAAQEAAPEBAADxAQAAAKwAAAAAAJQA1ADoARQBMgFsAaYB4AIaAi4CQgJWAmoCfgKSAqYCyALeAvwDTgOoA9QEKgSQBOAFLgUuBVwFrgXKBmoHHgdeB+gIBghuCOAJmApMCpIKugrMCxQLJgs4C0oLXAukC74L0AvcC/oMJgxUDLgM7g0CDSoNUg3ADfIOQA56DpQO6g9ED4wPxg/qEHYQohDIESYRYBG0EeoSDhJ8EtoTJBPYE/wUUhR8FIgU+hVOFbgWGBZ6FrAW1BbsFvwXDBcYFywXOhdeF9wX9hgQGF4Yzhj6GQwZRhmQGcAZ2hoCGh4aNBpmGogarBrgGvgbeBuoG84cHBw6HGAcgBykHN4c+h0cHUwdfh2qHcwd9B4gHkgegB7YH1ofjB+mH94gPCB+IOIhPiF2IcgiMCJ4Ir4i/iNkI4YjtCPGI+IkZiSEJKAkvCUKJUglfCWqJhwmjicGJ1InfCf8KCIoqCk8KbgqQCqKKs4rYiuiK9gsDixMLO4taC2MLiYuqC7mLvovQC9kL5Av0C/2MFQwhDDmMSIxUDGWMfYyJjJEMpIyxjLqM1gzrjPqNBo0aDUgNVI1uDYgNnQ2tjbkNvw3FDcyN1o3fjegN7433Df6OBI4MDhIOGY4fjiWONA5DDleOfg6ODpcOr461jryO4g7oDvAO/I8Vjx0PMY88j0gPWY9jD2sPcQ93j4KPjY+XD6MPuw/Bj9cP5I/3kAIQERAfEC8QPBBQEFyQaBB2kH4QjxCZELqQyRDnkPoRMxFBEU2RZxFwEYORnBGyEcER0pHnkgWSGpIvEjSSQJJSEmASZhJwEngSkBKdEr+S1xLvkvwTEBMbEzSTQJNKE2ATZxNqk5kTspO7k9oT+RQKlCaUNJRClFiUZBRwFJQUqpTBlNgU4hTrFPQVChUSFRsVMBVHFVWVZZVvFXwVipWdFbSVwRXIldeV+pYVFjOWTRZlFoKWkJafFrWW0pbkFv8XIRdSl1oXYZedF6mXrxe4l8sX3Jfkl/EYAhgmGC6YPRhNGFYYYRhpmHcYnJipmLSYxhj0GP6ZHpktmUgZUhlgmX4ZjRmeGa6ZvZnPGeIZ+BoBGhOaOZpPms+bPRtIG1EbbBt2G4EbhxuSm6cbspvHG+6b/RwBHAUcCRwNHCUcNRxFHFecaRyFHI+coxzEnOuc950MHRidJ509HU2dYJ1onYUdlh2mnb0dxR3Und+d9h39ni6eSp5zHpEeoh6xAAEAAD//wEsASwAEQAiADQAZAAAJTQuASIOARUUFh8BFjI/AT4BByInNz4EMzIeARcWFwYnJjQ+AjIeAhQOAQcGJy4BFzA9AS4BJyYnNjc2NzYnNi4CIg4CFRQeARcWFwYHDgEHFS4BNTQ+ATIeARUUBgEsKEVSRSgcGQ0mXCYOGByWKSIBAwoOEBUKDx0VBgMCIlgECA0SFhEOCAgOCRMUCA6HBBEMCQsFBAcFCgEBCxQaHRoTCwYICAQFCgkMEQUSFCM8SDwjE5YpRSgoRSkhPBUKGhoKFTxiGAcKEQ4KBQsVDggJGIsJFBINCQgOEhURDgQICAQOWwEBDhgJBwUDBAcIEBQOGhQKChQaDgoTDggEBAQHCRgPARIwGiQ8IyM8JBowAAAAAAIAAAAAARoBGgAaACgAACUWDgEHNCc+ATcuAw4BByYjPgIzMh4CByIOARQeATI+ATQuASMBGQEUIhYDGSIBARAdIx4TAgkKAxglFREfGAyyFycWFicuJxcXJxfFFiUYAgoJAyUaER4SAQ8cEQMVIhQMGB8aFycuJxYWJy4nFgAAAQAAAAABBwEaAAsAACUVIxUjNSM1MzUzFQEHcRNwcBOpE3BwE3BwAAQAAAAAARoBGgANABIAFgAaAAABIwcVFzMVFzM3NTM3NQcjNTMVBzUzFScjFTMBEPQJCQoJzgoJCRzX4c+8JnBwARkJOAqfCQmfCjgvJiaplpZxEwAAAAABAAAAAAESAMwADwAANxcHJzU3FwczJzcXFQcnNzgoDTg4DSi8KA04OA0ogygNOA05DigoDjkNOA0oAAADAAAAAAEHAQcACQAWACMAADcXNTMVNxcHIyc3NC4BIg4BFB4BMj4BJxQOASIuATQ+ATIeAWUoEyYOOA04sB8zPjMeHjM+Mx8TGSwyLBkZLDIsGZQobGomDTc3Dx8zHx8zPjMeHjMfGSwZGSwyLBkZLAAAAAMAAAAAAQcBBwAJABcAJAAANyczNSM3JwcVFzcyHgEUDgIuAj4BFxUiDgEUHgEyPgE0LgGUKGxqJg03Nw8fMx8fMz4zHgEfMx8ZLBkZLDIsGRksZSgTJg44DTiwHzM+Mx4BHzM+Mx8BEhksMiwZGSwyLBkAAwAAAAABBwEHAAkAFgAjAAA3FyMVMwcXNzUnBwYuAj4BMh4BFA4BJzI+ATQuASIOARQeAZgobGomDTc3Dx8zHgEfMz4zHx8zHxksGRksMiwZGSzHKBMmDjgNOK8BHzM+Mx8fMz4zHhIZLDIsGRksMiwZAAADAAAAAAEHAQcACQAWACMAAD8BFTM1FzcnIwcXFA4CLgI+ATIeAQc0LgEiDgEUHgEyPgFlKBMmDjgNOLAfMz4zHgEfMz4zHxMZLDIsGRksMiwZmChsaiYNNzcPHzMeAR8zPjMfHzMfGSwZGSwyLBkZLAAAAAEAAAAAAQQBBwAJAAA3FzM3Jwc1IxUnO14NXg1OE06DXV0OTsTETgABAAAAAAEHAPMACQAANwcVFzcnMzUjN4NdXQ5OxMRO8l4NXg5NE04AAQAAAAABBwDxAAkAAD8BNScHFyMVMwepXl4OTsPDTihdDl0NThJOAAEAAAAAAMkA4QAJAAA3ByMnNxc1MxU3yS8NLw0fEx+KLy8NHmhoHwABAAAAAADRAM8ACQAANyc1NxcHMxUjF3ovLw0faWkfYy8NLw0fEx4AAQAAAAAA0QDPAAkAADcXFQcnNyM1MyeiLy8NHmhoHs4vDS8OHhMfAAEAAAAAAMkA4QAJAAA/ATMXBycVIzUHXi8NLw0fEx+yLy8NH2lpHwACAAAAAAEaARsACQATAAA3JzU3FwczFSMXPwE1JwcXIxUzB088PA0s6eksgTw8DSzp6SwSPA08DSwTLHY8DTwNLBMsAAEAAAAAAQQBBwAJAAAlJyMHFzcVMzUXAQReDV4NThNNqV5eDk7Dw04AAAAAAgAAAAABGgEaAAcADwAAJRUHJxUnFzUXJxUPARUXNQEZQWY6qAFeVhol6KA1JSVLDZABOSUaIUsRYQAAAwAAAAABIgEaABsAJwA2AAAlJy4BByMiBg8BBh4COwEyNj8BFxY7ATI+AgciLwEzNxccAQ4BIzMjNi8BMx4BFRcWDgIjASBLAgoHWAYKAkwCAgUJBTcFCgIMOAUGWAQJBQJrAgJsORQqAgQBV0UCAkxFAgRMAQECAgIs4QUIAQcF4QUJCAMHBiErAwQHCQgBUDR9AQMDAQYH4QECAuEBAwICAAAEAAAAAAEaARoAHQAsADUAPQAANzMmJyM3MzQ3Izc1MxUXNjcnNTM1IxUzFQcGHgI3NjMyHgIVFA4BLgI2FxYXMjcnBhUUNxc2NTQmIyI4XgsISx0bAhMkJgEJCQETcBJJAgEFCHISFw8cFQsZKi0gCRIUERcSD08KGE4LIRgSEwgKOQkJSE5PAwQCAUsTEkuOBQkJBIkNDBUbDxcmEQkgLCpZEAELTg4SGEZPDxIXIQAAAAADAAAAAAEKARoADwAWABoAACUnNTM1IxUzFQcGFjsBMjYnNzUzFRcjBzczFwEESBJwE0oECwq8CguIAiYkbicdgh0ujUsTEkuOChERkAROT0dLOTkAAAAAAwAAAAABGgEbACoAMQA6AAA3BiMVFB8BIzc2PQE0PgIXMzY3JicmDgIdARQPARczFBYyNjUzNycmNQcyNicjFBY3MjY0JiIGFBb0CQoIB7UHCQ0XHw8DBQcGBxQmHRAHCwhCFh8WQgkLB14HDAElC1MXISEuISGYAgQaGRQVGRkpEB4VCgIJBwIBAg0bJBQpFhYhDQ8WFg8NIRYWbQsICAuEIS4hIS4hAAAAAAYAAAAAASoBJgAVACcALgAzADgAQQAAEwYHIgcOAh0BFA8BNzY9ATQ+Ah8BBgcWHwEjBzMUFjI2NTM3JyYHBiImNTMWNyYnNxcPARc3JhcyNjQmIgYUFqIKBwkKDxcNBBwGBxAdJhRVCQoCBgd6EgwWHxZCCQsGUgYPCyUBdQYHCw2ClA2VBzMXISEuISEBGAgKAwUVHhApEREdExYWKRQkGw0CkQMBExIUEw8WFg8NIRFMBgsICN0HBwoNZ5UNlQYBIS4hIS4hAAAAAAQAAAAAASoBJgAVACcALgAyAAATJicmDgIdARQHNzY9ATQ+AhcWFwczJyY9ATcVFB8BByMUBiImJxcyNicjFBYHARcBzxUbFCYdEAcZAQ0XHw8UED1sBwgTBwsJQhYfFQEmBwwBJQt7AQkN/vcBBRAEAg0bJBQpFhUZCQkpEB4VCgIDDKwUGRoWEykWFiENDxYVDxILCAgLCQEJDf73AAADAAAAAAEGARsAGgAhADQAADcmPQE0LgInJg4CHQEUDwEXMxQWMjY1MzcHBiImNTMWJzc2PQE0PgIXFhceAR0BFB8B+wcMGB8SFCYdEAcLCEIWHxZCCWMGDwslAW4HCQ0XHw8eEwkKCAdmFRcmEiEbEQICDRskFCkXFSENDxYWDw0aBgsICBsVGBopEB4VCgIEFgsbDiYaGRQAAAADAAAAAADhAPQADgAWAB4AADc1MzIWFRQGBx4BFRQGIycVMzI2NTQjJzMyNjQmKwFePx8gEA0QEiIeKioSFCUrJxAUEhMmOLwaGA0VBQQYERkdWEQSECIUEB0OAAkAAAAAARoBBwAQABcAHgAiACYAKgAuADIANgAAASMPAS8BIwcVFzMXMzczNzUHLwEjNTMfASMPATU3MwcjFTMVIxUzJzMVIzcjFTMHMxUjFTMVIwEQZwcMDAdnCQljEA4QYwmMBAZdWQ56XgcCDVqWOTk5OTk5Obw4ODg4ODg4AQcDDAwDCrsKEBAKu7gDA6kOmwMCoQ0mEjkSOBM4EhMTExIAAgAAAAAA9AEaAAgADgAAEyMHFRc3Fzc1BycjBzUz6qgKEU1NERNEDkSWARkJ9AZWVgb020tL0gADAAAAAAEaAQcARwBxAH0AADcxIyIOAh0BFA4CBx4DHQEUHgI7ARUjIi4BJzEmJzUmNzU0JzEmJzUmJzEmKwE1MzI+ATcxNj0BJjcxNjcxPgI7ARczNSMiJzEmJzUmJzEmPQE2JzUmJzEuAisBFTMyHgIdARQeAhcjFgciDgEeAj4BNTQmcQIGCgcEAgQHBQUHBAIEBwoGAgIJEA0DAwEBAQICBAMFBQYBAQYKBwICAQEBAwMNEAkClAICBgUFAwQCAgEBAQMDDRAJAQEGCgcEAgQHBQEPFxEcDQYYIh8TIfQECAoGGQYMCwgEBAgLDAYZBgoIBBIGDQgIBwEICBAGBQUDAQMCAxIFBwUFBhAICAgICA0HehIDAgMBAwUFBhAICAEHCAgNBxMECAoGGQYMCwgEAhETHyIYBg0cERchAAQAAAAAARoBBwBHAHEAfgCKAAA3MSMiDgIdARQOAgceAx0BFB4COwEVIyIuAScxJic1Jjc1NCcxJic1JicxJisBNTMyPgE3MTY9ASY3MTY3MT4COwEXMzUjIicxJic1JicxJj0BNic1JicxLgIrARUzMh4CHQEUHgIXIxYHNjMyFhUUDgEuAjYXBycHFwcXNxc3JzdxAgYKBwQCBAcFBQcEAgQHCgYCAgkQDQMDAQEBAgIEAwUFBgEBBgoHAgIBAQEDAw0QCQKUAgIGBQUDBAICAQEBAwMNEAkBAQYKBwQCBAcFAQ82DhEXIRMfIhgGDUIVFQ4WFg4VFQ4WFvQECAoGGQYMCwgEBAgLDAYZBgoIBBIGDQgIBwEICBAGBQUDAQMCAxIFBwUFBhAICAgICA0HehIDAgMBAwUFBhAICAEHCAgNBxMECAoGGQYMCwgEAhoJIRcRHA0GGCIfAhYWDhUVDhYWDhUVAAUAAAAAARoBBwANABEAGwAfACkAACUjNScjBxUjBxUXMzc1JzMVIxcVBzUnIwcVJzUXFSM1BzUXFRczNzU3FQEQQgleCUIJCfQJqEtLlksKOAlLgyZdSwk4CkvhHAoKHAmWCgqWHBMTDioJCgoJKw04ExNLYCsGCQkGKl8AAAAABAAAAAABBwEaACIAPwBbAGQAABM2MzIeARcOAQc1MTY9AT4CJicuAQ4CFhcVFBcVLgI2FwYjFRQGKwEwIzEuAT0BIiY9ATQ2OwEyFh0BFAc3FAcWHQE+AiYnLgEOAhYXNTQ3Jj4CHgEHIxQGIiY0NjIWWBwiHzMeAQEpIQkRFwkHChE2OSgJGhkJHigIG3ICBAUEFAEEBAQFCwgSCAsDGQkGCQsBCwkNJCMaCQsNBgkBFB4eEwEeCxALCxALAQYTHjQeJDoMAQkLAwkgJicQGRUMKzo1DgMMCAELMUA6pwMvBAUBBAQvBQQmCAsLCCYEAlsPDQkKAgkZHBkJDgoKGiQjDQILCQ0fGgkLGRAICwsQCwsAAwAAAAABGgEaAAcACwAPAAATMxcVByMnNRcVMzUnMzUjHPQJCfQJE+Hh4eEBGQnhCQnhQpaWEyYAAAAAAwAAAAABGAEaADEAOQBJAAA3NTQmIgYdASMnBxcHBh0BIxU7ARYfAQcXNxceATI2PwEXNyc1NjcxMzUjNTYvATcnByM1NDYyFh0BFxUWFRQOAiIuAjU0NzXMIC0gEB8LHgEJJigBBA0BJQsjAgwfIh8MASQLJQ4FKScBCgEeCx9tFyAXHQkNFhsdHBYMCNgLFiAgFgsfCx4BGhsMEBsVASULIwEOEA8OASQLJgEWGxAMGxoBHgsfCxAXFxALEAEWGRcnHA8PHCcXGRYBAAAAABEAAAAAARoBGgAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AAAEjNSMVIzUjFSMHFRczNzUHIzUzNSM1MwcjFTMHMxUjFyMVMzczFSMXIxUzBzMVIzcjFTMXMxUjFyMVMwczFSM3IxUzFzMVIxcjFTMnMxUjARAcE5YTHAkJ9AkS4eHh4bwTExMTExMTEyYSEhISEhISEhISEiYTExMTExMTExMTEyUTExMTExMTEwEHEhISEgrhCQnh16gTE14TEhMTE14TEhMTE4QTExMSExMThBMTExITXhMAAAMAAAAAARoBGgA9AHkAggAANy4BDgEPAgYmLwEmJy4CPwI+AjU0Jy4DIyIPAQ4CFRQeBjMyPgE/ATY1NCYvASYvASYHBiciJicmJy4DNSY+AT8BNjMyHwEWHwEWFA8BDgIUFh8BFjMyNzY/AT4BMh8CFh8BFhUUDwEOATcHMxUjNTMVN+sFCwoHAwYFAwgCKQsLBAYBAwQHAwYDCAULDA0IDAgOBQkDChEYHCAiIRAKEQ0GDggDAwcEBA8EDQcIDh4OHxoNFhAJAQQGBQsDBAIEBwoHBgMCCwQFBAQFRQkMBQUJBgYCBgUEBwkFAwYDBAoFCi9XPl4TV30CAQUFBAYEAwEDJwsMBQgFAwUGAwcJBgwJBQwLCAgOBg0RCg8iISAcGREKBAgFDggMBQoECAQEDgRUAgEJBxIaDRweHg8HDgkFCgQDBggJBwQFAwsDBwoLCgVFCQIEBwYDBAMGCAQFCAMCBAMLBAfjVxNePlcAAwAAAAABGgEaAAgARACAAAA/ASM1MxUjNQcXMh8DHgEVFA8BDgIjIi4GNTQ+AT8BNjMyHgIXFhUUDgEPAgYUFhcWHwEeAT8CPgIHMj4BPwE2JzYvASYvAiYiBg8BDgIjIi8BLgE0PgI/ATY0LwQmIyIPAQ4CBx4DFxYXHgGiVz1dElgxDAkPCAcDAwgOBQ4RChAiISAcGBEKAwgGDggMBw4NCgUIAwYDBwQCBgQLCykCCAMFBgMICQYJDAoFCgQBAQMGAwUJBwQFBgIGAwcKBQwJRQUEBAUHAwUCAwYICQcEAgQDCwQHAwEBCRAWDRofDh6vWBJdPVcjCA4ICAQKBQwIDgUIBAoSGBwgISEQCxANBg4ICAsNBAkMBQkIAwYFAwUIBQwLJwMBAwQGBAUFWgMGBQsDBAIDCAUECAYDBAMGBAUECUUECwwJBwYDBQMFBAcJCAYDBAoECw0HDh8eHA0aEQgJAAAABAAAAAABAgDhAAcADwAkAC8AADcjJyMHIzczFycmJyMGDwEXIzUxBiMiJjU0PwE0IyIHNTYzMhUPAQ4BFRQWMzI2NaYTDz0PEjcREBYBAQEBARe2EQsVDxIiHxUSDw8UJBEYDAwLCQwQUSgokFk+AwYGAz43EBMQDh0FBBoMEAomDwQBCAsHChENAAAEAAAAAAElAPQABgAKAAwAEwAAJQcjJzcXNwc3Jw8BFwcXByMnNxcBJZIOOg40i5BSDVASCikLDw46DjTprVMKSaRtYgteFg8VDxFTCkkAAAEAAAAAAQ8A+gAGAAAlBy8BNxc3AQ+fDz8POJfuvAFZC0+yAAgAAAAAARoBBwAGAAoADgASABYAHQAkACsAADcjJzcXNx8BMxUjFTMVIxcjFTMHMxUjJzM3JwcnBxcjJzcXNxcHMzcnBycHRg0TDQ0aDhuWlpaWlpaWlpaWSg0iDhoNDSANEw0NGg4vDSIOGg0N2BQNDRsOBRMlEyYSJhNoIQ0aDQ5MFA0NGw1aIQ0aDQ0AAAEAAAAAAPMAwQAGAAA/ARcHIyc3llEMWAtYDG9SDFdXDAAAAAEAAAAAAMEA9AAGAAA3FwcnNTcXb1IMV1cMllEMWAtYDAAAAAEAAAAAAM8A8wAGAAA3JzcXFQcnvVIMV1cMllEMWAtYDAAAAAEAAAAAAPQAzwAGAAA3Byc3MxcHllEMWAtYDL1SDFdXDAAAAAIAAAAAAQcBGgA3ADsAABMzFTM1MxUzNTMVMxcVMxUjFTMVIxUzFSMVByMVIzUjFSM1IxUjNSMnNSM1MzUjNTM1IzUzNTczBzM1I14TEhMTExITJiYmJiYmExITExMSExMTJSUlJSUlExMTg4MBGSUlJSUlExMSExMTEhMTJSUlJSUlExMSExMTEhMTloMAAAEAAAAAAP0A/QALAAA3Bxc3FzcnNycHJweFVRFVVRFVVRFVVRGWVRFVVRFVVRFVVREAAAACAAAAAAD0APQAAwAHAAA3FTM1ByM1Mzi8E5aW9Ly8qZYAAAABAAAAAAEHAJYAAwAAJRUjNQEHz5YTEwADAAAAAAEHAPQAAwAHABEAADcVMzUHIzUzJzM1MxUjFTM1IzipE4ODcBODEyapzqioloQSE4MTqQAAAAABAAAAAADiAOIAGQAANzIXHgEXFhQHDgEHBiInLgEnJjQ2NzY3PgGWCgoTHAUDAwUcEwoUChMcBQMFBQoRCRPhAwUcEwoUChMcBQMDBRwTChQTCREKBQUAAQAAAAABGgEaABoAABMyFx4BFxYUBgcGBw4BIi4ENDY3Njc+AZYSESExCgQJCREeDyEkIR4YEQkJCREeDyEBGQQKMSERJCEPHhEJCQkRGB4hJCEPHhEJCQAAAAACAAAAAAEaARoAKgBEAAATJiIHMQYHBgcxDgEWFxYXHgI+ATcxNjc2NzE2JicxJicxJicxJicxJicXBgcOASIuBDQ2NzY3PgEyFx4BFxYUBrQPHg8ODRkPCAgBAwgVCxkdHxwNGQ8IAwUBBAMIBwsKDA0OUxEeDyEkIR4YEQkJCREeDyEkESExCgQJAQIFBQMIDxkNHR8OHBYKDwgBBwgPGQ0ODx8ODg0MCgsHCAOuHhEJCQkRGB4hJCEPHhEJCQQKMSERJCEAAAMAAAAAARoBGgAMABYAHwAAEzIeARQOASIuATQ+AQcUFhc3LgEOARUzNCYnBx4BPgGWJDwjIzxIPCMjPEwNDZ8ZQjsk4g4NnxlCOyQBGSM8SDwjIzxIPCODFCUQnxUJHDchFCUQnxUJHDcAAAEAAAAAALwAvAAIAAA3FAYuATQ2Mha8FiAVFSAWlhAWARUgFhYAAAACAAAAAAC8ALwACgAXAAA3DgEuAj4BMhYUFzY1NCYjIg4BHgI2pgQKCwgCBAkOCwwHFhALEwkEERYVjAUEAggLCgcLDg8KCxAWDRUWEQQJAAMAAAAAAOEA4gAMABUAFgAANzI+ATQuASIOARQeATcUBiImNDYyFieWFCMUFCMoIxQUI0UdKB0dKB0xSxQjKCMUFCMoIxRLFB0dKB0dIAAABQAAAAABGgEaAAcANAA9AEYATwAAASMHFRczNzUHIzUzHgEzMjY0JiIGFSMVIzUzFQ4BFRQWMjY1MxQWMjY0JiMiBgcjLgEjNTMHNDYyFhQGIiYnMhYUBiImNDYzMhYUBiImNDYBEPQJCfQJEqkrBBIKDxYWHxY4JSUICxYfFiYWHxYWEAoRBTAFEQqpcQoRCwsRCjgICwsRCgp5CQoKEQoKARkJ9AkJ9OolCAsWHxYWDzjhLAQSCRAWFhAQFhYfFgoJCQomqQgLCxEKCnkKEQoKEQoKEQoKEQoAAAUAAAAAARoA9AALAA8AEwAYABwAADcXNxc3JzcnBycHFychNSEVITUhFzUjFTMVNSMVvA0eHg8gIA8eHg0exwEG/voBBv76lpaWlkANHh4NHh4PICAPHoMTSxNCCRI5ExMAAAAEAAAAAAEWARoAFgAiACwANgAANyM1MxUzNScjNSM0JiIGFSMVIwcVFzM1PgIeARQOAS4CFwc1IxUnBxczNyczFwcnFSM1ByeDOJYTChwSFiAVFBsKCkEBCQsKBwUKCwgFhhQTFA4lDSR8DSUOFBMUDSaoJS8JEw8WFg8TCbwJ5QUJAgQKCgoFAQYKrBRkZBQNJCRbJA0UZGQUDQAEAAAAAAEHAQcACwAZACAAJAAANycHJwcXBxc3FzcvATczFxUHIxUHIyc1NzsCFxUzNSMXIxUzog4aGw0bGw0bGg4bKRODExMmEoQSEiYTSxImg0uEhJQOGxsOGhsNGxsNG3oTE4MTJhIShBISS4M4hAAAAAEAAAAAAOgA6AALAAA3FzcnNycHJwcXBxeWRA5FRQ5ERA5FRQ6JRQ5ERA5FRQ5ERA4AAAACAAAAAAEaAPYALwA5AAA3Mx4BFAYjNTI2NCYnIycuAgYPAScmJyIHDgEeATsBFSMiJicuAT4BNzYXPgEeAQcXNTMVNxcHIyfgARchIRcPFRUPEQICFx8bBgYQBQUUDQoGCxgOCQkOGgkMBwsbEQ4OCSYrH18YExgNKA0ovAEgLyETFh4WARAPFgUQDg4DAQEOChwaEBMLCw0jIhcDAwQUFgYfdhhmZRcNKCgAAgAAAAABGgD2ADIAPAAANzMeARQGKwE1MzI2NCYnIycuAgYPAScmJwYHDgEeATsBFSMiJicuATc+Ahc+AR4BFwcnFSM1Byc3MxfgARchIRclJQ8VFQ8RAgIXHxsGBhAFBRQNCgYLGA4vLw4aCQ8ECwcXHA4JJisfAx8ZEhgNKA0ovAEgLyETFh4WARAPFgUQDg4DAQEBDQocGhATCwsQKxIMEQUEFBYGHxZIGWZlGA4oKAAAAgAAAAABGgD2ABUALgAANzMeARQGKwEiJicuAT4BNzYXPgEeAQczMjY0JisBJy4CBg8BJyYnIgcOAR4BM+ABFyEhF4wOGgkMBwsbEQ4OCSYrH3+DEBYWEBECAhcfGwYGEAUFFA0KBgsYDrwBIC8hCwsNIyIXAwMEFBYGH3MWHxYQDxYFEA4OAwEBDgocGhAABwAAAAABGgEaAAMABwALAA8AEwAXACcAABMzFSM3MxUjFzMVIxUzFSMVMxUjBzMVIycHFTM1MxUjNSMVFzM3NSdeExMlS0smS0tLS0tLJktLXRMT4eETE+ESEgEHz7wTExITExMSExPOEl5ez3FxEhLPEgADAAAAAAEUAPQABgANABEAADcHFwcnNTczBxcHFzc1Bxc3J1gxMQ04OJEOMjIOOLgRXhHDMTINOA05DjEyDTgNYAi7CQAAAAAGAAAAAAEsARoAFQArAEEAUwBdAGUAABMVFBYXMxYXFh0BIzU0Ji8BJicmPQEzFQYWFzMWFxYdASM1NCYnNSYnJj0BMxUUFhcxFhcWHQEjNTQmLwEmJyY9AQc3MzIWFAYrAQ4BKwEiLgE9ARc1IxUUFjsBMjY3FTMWNjQmIzgHCAEKBAgTBwgBCgQITAEHCAEKBAgTBgkKBQdLBgkKBQcSBwgBCgQIcBLFFBsbFAwGKBo4FSIVvKkhFzkXIRMJDBAQDAEZCQYIBwgFCgwKCgYIBgEHBgoMCQkGCAcIBQoMCgoGCAYBBwYKDAkJBggHCAUKDAoKBggGAQcGCgwJcBMcJxsZHxQiFDk4ODgYISFQOAERFxEAAAAABAAAAAABBwEHAAMAEQAYABwAADcjFTMnNzMXFQcjFQcjJzU3OwIXFTM1IxcjFTOpXl5LE4MTEyYShBISJhNLEiaDS4SEgxKDExODEyYSEoQSEkuDOIQAAAIAAAAAARoBGgAMABQAABMiDgEUHgEyPgE0LgEHNTIeARQOAZYkPCMjPEg8IyM8JB8zHx8zARkjPEg8IyM8SDwj8+EfMz4zHgAAAAAKAAAAAAEsARoABwALABMAFwAfACMAKwAvADMAPQAAEwcVFzM3NScHNTMVDwEVFzM3NScHNTMVBzczFxUHIyc3FTM1NwcVFzM3NScHIzUzFSM1MycjFTMHFzc1JwccCQk4CgouJS8JCTgKCi4lOAk4Cgo4CRMlnwkJOQkJCiUlJSVuOjoTDSIiDQEZCTgKCjgJOCYmJQo4CQk4CjkmJi8KCjgJCS8lJYMJcQkJcQk4Jl4lExMSDCINIg0AAAMAAAAAARoBGgASAB4AJwAAPwEVByc1Iyc1NzMXFSM1IxUzHwI3NTM3NScjBxUXNyM1MxUjBxUnSxMWEBwJCeEKE84cCXYjEBwJCZYJCUtChB0JFlgTGxUHLwmWCQlUS4QJQiIGHApdCgpdChNLSwkPFQAACgAAAAABGgEHAAYACgAOABQAGAAjACcALQAxADgAAAEjFTMVMzUnMxUjJzMVIxcdATM3NQc1IxUnIw8BNScjFRc3Mzc1IxUHNSMVFzM9ASMVNxUjNTczFQEQHBMScCUlSyUlqQkJOCUmCQcoCgkQNgWDEuETCQoTExMJHAEGEhMcCRISEoQSEwkcJRMTEwMoIQpCBzZLJSU4EhwJSyUlXhMcCRIAAAAAAgAAAAABGgEHABcAIwAAEzMXFSYnNSMVMxcVPwEzBhUjByc1Iyc1FyIOAR4CPgE1NCYc9AkICuEuCigHCwIFNhAvCc4RHA0GGCIfEyEBBwqACQZolgohKAMJCjYHLwmpehMfIhgGDRwRFyEAAgAAAAABGgEHAAsAFAAAASMHFRczFRc3Mzc1ByMPATUnIzUzARD0CQkvEDZ/CRJ6BygKLuEBBwqpCS8HNgmpnwMoIQqWAAAABQAA//0BLQEaACwAMgA2AEMASgAANwYjNSMVLgInMzUjPgI3FTM1HgIXIxUzBxYXNjU0LgEiDgEUHgEzMjcmNy8BHwEGLwIfATYXMhYVFA4BLgI2FzcnBycHF6sGBhIbLhwCEhICHS0bEhsuHAISEgEJCAMjPEg8IyM8JA4NBA03JkwbBg0SJBJHDxEXIRMfIhgHDS4iDxwQDBgnARISAh0tGxMbLRwCEhICHC4bEgwCBA0OJDwjIzxIPCMDCEobTCY3BA0kEiQmCgEgGBEcDQYZISA/LQslDg8TAAQAAAAAASwBGgAsADIANgA/AAA3BiM1IxUuAiczNSM+AjcVMzUeAhcjFTMHFhc2NTQuASIOARQeATMyNyY3LwEfAQYvAh8BFBYyNjQmIgarBgYSGy4cAhISAh0tGxIbLhwCEhIBCQgDIzxIPCMjPCQODQQNNyZMGwYNEiQSLyAvISEvICcBEhICHS0bExstHAISEgIcLhsSDAIEDQ4kPCMjPEg8IwMIShtMJjcEDSQSJFUXISEvISEAAAAABAAAAAABGgEaAAMABwAjADAAADcXLwEXLwEXMw4CBzUjFS4CJzM1Iz4CNxUzNR4CFyMVBzI+ATQuASIOARQeAakmTCZUEiQSeQIcLhsSGy4cAhISAh0tGxIbLhwCEl4kPCMjPEg8IyM8qUwmTFQkEiQbLhwCEhICHS0bExstHAISEgIcLhsSeiM8SDwjIzxIPCMAAAb//wAAASwBCwAMABgATgBnAHEAewAANzIWHQEUBiImPQE0Nhc0JiIGHQEUFjI2NScWFzc2FxYXFhUUBxczHgEdARQHDgEPAQYHBgcGIicmJyYvAS4BJyY9ATQ2NzM3JjU0NzY3Ng8BFRcWFxYyNzY/ATUnBiMiJyYnBgcGIyI3Jg4BFBYyNjc2NwYXHgEyNjQuAXUGCAgMCAhWCAwICAwIMgIBAxEmIxANBQMBDg8DAgcHCwYHDA0pUikNDAcGCwcHAgMPDgEDBQ0QIyZJAQEKDCRGJAwKAQEMFCESBgQEBhIhFDoIMA8MKhMCAycHAwITKgwPMHEJBhwGCAgGHAYJDwYJCQYcBggIBrIBAgMTBQQTER4TDBAHGQ4YBQYDCQUIBQQHBRISBQcEBQgFCQMGBRgOGQcQDBMeERMEBYICUAEGBQ8PBQYBUAIGEwYICAYTYggFEygOFBQWCAgWFBQOKBMFAAAAAAMAAAAAAQcBGgAHAAwAEwAAPwEzFxUHIyc3JyMVMycHFRc1MydLE2VEE5YTqThelrwSEnkT4RNDixMTgzi78xK8E88SAAAAAAQAAAAAAQcA9AAGABsAKAA2AAA3DwEnNxc3Fz4BNTQuASMiByYjNjMyHgEUBgc2ByIuATQ+Ah4CDgEHMj4BNC4BIg4BFB4BF6cvDhwNFShJCQoSHhINDA0PFx4XJxcZFAVlEh4SEh4kHhEBEh4SFycWFicuJxYWJxeQOAEcDhUwKwkYDRIeEgUFExcnLigLDisSHiQeEQESHiQeEhIWJy4nFhYnLicWAQAAAAAEAAAAAAEaAOIAAwAHABcAGwAAJRUjNRUzFSM3IyIGHQEUFjsBMjY9ATQmBzMVIwEH4eHh4eEICwsI4QcLC0AmJs4SEiVelgsIgwgLCwiDCAtwEwABAAAAAADPAJYAAwAANzMVI15wcJYTAAAGAAAAAAEJARwADAAcACgAMAA6AEgAABM+AR4CDgIuAjYXFjMyPgE1NC4CDgIeATcXBxYOAS4CPgEXBxY2NCYOARY3BxYVFAcXPgEvASYjIg4BFBcHJj4CF0kbQTskBB02QTolBBwmGiAcLxwWJTAuJBMDGIINKAQFERQPAgwUChIFCgcIBAFUDwUJDgwDCjQLDBIeEgkNEAMmOBoBBRIEHTZBOyQEHDdBOqgSHC8cGSoeCQwgLS8qig0pCRQMAg4VEQUEIQMECwUBBwcrDgsNEg8OEy4UFwUSHiQPDhg5KwwNAAADAAAAAAD0ARoAEwAkADUAADc0LgEiDgEVFyMVFx4BMjY/ATUjJzIXHgEUBgcGIicuATQ2NzYXBw4BBwYiJy4BLwE1FjcWN/QZLDIsGQEBAQQ1SDUEAQFdFRMQExMQEyoTEBMTEBNgAQETDxIqEg8TAQEjKCgj6g0WDAwWDQKmBxEXFxEHph4FBA4KDQQFBQQNCg4EBcQDBQwEBQUEDAUDjBQBARUAAAAFAAAAAAEoAQcAJQAsADUAPwBGAAA3By4BIgYHJwcXBxUjFTMVFhcHFzceATI2Nxc3JzY3NTM1IzUnNycyFhUjNDYXDgEHLgEnNTMnBxUzNRcHFTc1BzU3JzUXFYkRBBkgGQQRDRYDExMBBBgNFQcWGBYHFQ0YBAETEwMWSwwQOBAyAhUPDxUBSyoPE44wR0dpj6WDEA8UFA8QDRYCExMBCQkYDRUKCwsKFQ0YCQoBEhMCFg0QDAwQSw8VAQEVDxyzCFZEXyAXLxBkFkZfF24QAAAAAAQAAAAAARYBBwAlACwANQA/AAA3By4BIgYHJwcXBxUjFTMVFhcHFzceATI2Nxc3JzY3NTM1IzUnNycyFhUjNDYXDgEHLgEnNTMnNxcVBzU3JxUjiREEGSAZBBENFgMTEwEEGA0VBxYYFgcVDRgEARMTAxZLDBA4EDICFQ8PFQFLEw6pbFaOE4MQDxQUDxANFgITEwEJCRgNFQoLCwoVDRgJCgESEwIWDRAMDBBLDxUBARUPHKsIcRBIFzlfRAAAAAQAAAAAASkBLAAlACwANQBAAAA3By4BIgYHJwcXBxUjFTMVFhcHFzceATI2Nxc3JzY3NTM1IzUnNycyFhUjNDYXDgEHLgEnNTM3FQc1NycVJic1N4kRBBkgGQQRDRYDExMBBBgNFQcWGBYHFQ0YBAETEwIVSwwQOBAyAhUPDxUBS7iAaqIJCg6DEA8UFA8QDRUDExMBCQkYDRUKCwsKFQ0ZCAoBEhMDFQ0QDAwQSw8VAQEVDxxgEFEWQ2d2BgN+CAAAAAAEAAAAAADjAOMADAAYABwAIAAANz4BHgIOAi4CNhceAT4CJicmDgEWNyMVMxUjFTNsESgkFwISISgkFgMSHQwcGQ8CDQsSKRgISjg4ODjUDAIRIigkFwISISgkXggCDBccGQgLCCMqOxMSEwADAAAAAADhAOIADAAQABQAADciDgEUHgEyPgE0LgEXFSM1NxUjNZYUIxQUIygjFBQjEktLS+EUIygjFBQjKCMUXhISORMTAAACAAAAAADmAOEABQALAAA3IwcXMzcHIyc3Mxe6ViwsViw6Oh4eOh3hS0tLMzMzMwABAAAAAADmAOEABQAANwcjJzcz5StWLCxWlktLSwAAAAIAAAAAAOEA4QACAAUAADczJwczJ0uWSyNGI16DbD0AAQAAAAAA4QDhAAIAADcXI5ZLluGBAAAAAgAAAAAA9AD0AAMABwAAPwEXBzU3Jwc5XV1dNDQ0ll5eXSk0NTUAAAEAAAAAAPQA9AADAAA3Fwcnll5eXvReXl4AAAADAAAAAADjAOMADAAQABQAADc+AS4CDgIeAjYnIxUzJzUzFdQMAhEiKCQXAhEiKCQnFxcXF2wRKCQXAhEiKCQXAhEWEyVLSwAFAAAAAAEcARwAFQAeAEQATABWAAATNzMfAhUPASsBNTQnMzUjFSYjPQEXByYvATcnNxcHNxcHFxUzFSMVBgcXBycOASImJwcnNyYnNSM1MzU3JzcXPgEyFgcuAQ4BFTM0BzY3NSMVHgEXNlgCsQEPAQEPAVwHYKwJCoYjAgIGHC0KNFcRDRUCExMBBBgNFQcWGBYHFQ0YBAETEwMWDREEGSAZFQYREAk4AgoBSgEVDw8BGwEBDwGxAg8CCgesWwJcAWcjAwMFHC4KMzsQDRUDExIBCgkYDRUKCwsKFQ0ZCAkBExMDFQ0QDxQUBwYDBg4JDFQKDxwcDxUBAQADAAAAAAEMAQcAAwAJAAwAABMjFTM3BxUXNzUPATVLExM+Dw+DFmkBB+HVB7wHXRAITJgAAwAAAAABDwEHAAMACQAMAAATMxUjNwcVFzc1DwE1LxwcXBYWhCFdAQfh2Qu8C14WC0KEAAMAAAAAARYBBwAJAC4AOAAAPwEXFQc1NycVIxcOAR0BFA4CKwEiLgI9ATQuAjU0PgQyHgQVFAYHIxUUFjsBMjY1Xg6pbFaOExUFBgIDBQMQAwUDAgYLBwMGCAoMDAwKCAYEBxwWAgEQAQL/CHEQSBc5X0RgBQ0HEAMFAwICAwUDEAcNCxAKBgsLCAYDAwYICwsGChAZFgECAgEAAAQAAAAAAREBGgARAB8ANwBEAAA3Jic3JwcmJyYHBg8BFzc2NzYHBg8BJzc2NzYXHgEXFgc3JwcnNycHJwcOARQWFwcXNx4BMjY/AQcGIi4CNTQ/ARcHBv8DBRkLGgcJFBQLCB1RHQkECBcDBhI6EgYHEBAHCwQGYRwMGyMcDBwLHQkIBQYZCxoHEhUVCB02CBAPDAYMEjoSBuQJBxoLGQYCBwgECR1RHQgLFA4HBhI6EgYDBgYECwcQbh0MHSMdDB0LHQgVFREIGQwZBQYJCB0aBAcLDwgRDBI6EgUAAAAABgAAAAABGgEAAAMABwALAA8AFQAYAAA3NTMVJzMVIzcVIzUdATM1JTcXFQcnNxU3cahdXV1dqKj++g5lZQ4TSnESEksTSxMTqRMTrQdDD0QIdWMxAAAAAAIAAAAAANgA9AADAAcAADczFSM3FSM1VB0dhBz0vLy8vAAAAAIAAP/9ARYBBwAaACQAADcUDgEmJwceAT4CLgEGBzUjFRczNSM+AR4BJzcXFQc1NycVI4YZJyMIEgotMiMHGi8xDxMJLBgKIyUXKA6pWUOOE0sUHwgSEgcXGQclMiwTDRQXMgoTEQ4KHqEIcRA7Fi1fRAAABQAAAAABHAD0AAQACQAOABIALQAANzUzBgc3NjcjFRcmJyMVJRUhNRcyPgEuAQYHMxUjJzUzFT4BHgEOAiYnNx4BE2ECARcJC4lpBQNhAQb++scSGgYRISAJFCUIEA0qJxYGHiolCQ8GF3ESCQk4CggScQkKE7wTE7wWIh4MDA8QCCoTEQsRJCseBxUUBg0PAAAAAAEAAAAAAQwBDQAdAAA3FA4BJicHHgI+AjU0LgEGBzUjFRczNSM+AR4B7yY6NQwaCigyMykXKkRFFhwOQSMONTcjlh4uDRscCxghDQogLxokOxcVHCJLDhwZFg8tAAAAAAMAAAAAAP4BBwADAAkADAAAEyMVMycXFQcnNR8BNf0cHFwWFoQhXQEH4dkLvAteFgtChAADAAAAAAEQAQcACAASABcAADcUBi4BNDYyFjMvASMHFRczPwEHIzUzF7wWIBUVIBZUUBFfGBhfEVBhX19PlhAWARUgFhZZCBiyFwhZSrJZAAIAAAAAARABBwAJAA4AACUvASMHFRczPwEHIzUzFwEQUBFfGBhfEVBhX19PplkIGLIXCFlKslkAAgAAAAAA/AEAAAUACAAAPwEXFQcnNxU3UBaWlhYcbvQLZBdkDK2TSgAAAAACAAAAAAEMAQwAFwAgAAA3NTMVPgEzMh4BHwEjNS4CIgYHMxUjJxciJjQ2MhYUBiEcEDAbHTQgAgEdAhgnLikLNU4SdRAVFSAWFsBLLxMWGy4cBQQUIhQWExwSkBUgFhYgFQAAAgAAAAAA6gEaAAoAEwAANzM3Jwc1IxUnBx8BFAYiJjQ2MhaWCkkUMRwxFEkvFh8WFh8WeUkUMXR0MRRJQRAVFSAWFgACAAAAAADqARoACgATAAATIwcXNxUzNRc3JxcUBiImNDYyFpYKSRQxHDEUSRsWHxYWHxYBGUkUMXR0MRRJ4RAVFSAWFgAAAAACAAAAAAEMAQwAFwAhAAAlNSMVLgEjIg4BDwEzNT4CMhYXIxUzNwcyNjQuAQYUFjMBCxwQMBsdNCACAR0CGCcuKQs1ThJ1EBYWIBUVEMBLLxMWGy4cBQQUIhQWExwSkBUgFQEWIBYAAAIAAAAAAQcBBwAHAAsAABMXFQcjJzU3FyMVM/QTE7wSEreysgEHE7wSErwTGLIAAAUAAAAAASsBLAABAA0AQQBJAFkAADc1Fyc3FzcXBxcHJwcnNxUzNxcHFRYVBzMVIzEGDwEXBycHDgEiJi8BByc3JyYnKwE1MzU0NzUnNxczNTQ+ATIeAQcVMzU0JiIGFzUjBwYVFB4CMj4CNTQrWyYNKCcNJiYNKCcNdBAkDSIMASwuBg8BKw0pAQ4kJiQOASkMKgEPBQEuLAsjDSQSEB0iHRFrWRolGnqbAQkOGR8iHxkPiwEJJgwoKA0mJg0pKA2QDCQNIgEeHw4SHxkBKwwpAg8SEhACKAwqARkeEg4gHAEjDSQMER0RER0RDAwTGhoyAQEaHBktIRERIS0ZHQACAAAAAAEaAQcAFAAeAAA3NTI2NzY1Iyc1NzMXFSc1IxUzBxczNycHNSMVJwcXSxERAgJVCQn0CRLhawkuKC8NHxMeDi8TEwUFAwUKuwoKrRORqQkvLw0feXkfDS8AAAADAAAAAAEaAOEADQARABUAACUHNScjBxUXMzc1Fzc1ByM1MxcnNTcBCz0JqQkJqQk9Dl2Wlks5OdMjKAkJhAkJJiMJa21wXR8KIgAABQAAAAABGgEHAA0AFwAgACkAMgAANzMXFQcjJzU3Mz8BMxcHMzUjLwEjDwEjFyIGFBY+ATQmFzIWFAYuATQ2NyIGFBYyNjQmyUcJCfQJCUcQBzgHk+FCBxAwEAdBHAQGBggFBVAQFhYgFRUQFyEhLiEh9AqoCgqoChADA7mWAxAQAxMFCAYBBQgFEhYgFgEVIBYSIS4hIS4hAAAAAwAAAAAA9AEaAAcACwAPAAATMxcVByMnNRczNSMXMxUjVJYKCpYJE4ODLyUlARkJ9AkJ9OrhvBMAAAAAAwAAAAABBwEaAAcACwAXAAATMxcVByMnNRczNSMXIxUjFTMVMzUzNSMc4QoK4QkTzs5wEzg4Ezg4ARkJ4QkJ4djPJjgTODgTAAAAAAMAAAAAARoBGgAHAAsAEQAAEzMXFQcjJzUXMzUjFzMVByM1HPQJCfQJE+HhliVwJgEZCfQJCfTq4SYlcSYAAAADAAAAAAEaARoABwALABQAABMzFxUHIyc1FxUzNQcyNjQmIgYUFhz0CQn0CRPhcRchIS4hIQEZCfQJCfQJ4eGpIS4hIS4hAAAFAAAAAAEaARoACQAOABoAHgAlAAATHwEVByMnNTczBzM1JyMXIxUzFTM1MzUjNSMHMxUjNx8BFQcvAbY4BhOpExNxcak4cUslJRMmJhMlXl6LKwUSATgBFDgOqBMT4RLzqDlLEyYmEyWDE84rDbsTzjgAAAMAAAAAAQcBGgADAAsADwAANxUjNSczFxUHIyc1FzM1I7xeQuEKCuEJE87OqRMTcAnhCQnh2M8AAwAAAAABGgEaAAcACwASAAATMxcVByMnNRczNSMXMxU3JxUjHPQJCfQJE+HhJTheXjgBGQn0CQn06uGEOEtLOAAAAAAEAAAAAAEHARoACQAOABoAHgAAEx8BFQcjJzU3MwczNScjFyMVMxUzNTM1IzUjBzMVI8k4BRKpExNwcKk5cEslJRMlJRMlXV0BFDgOqBMT4RLzqDlLEyYmEyWDEwAAAAAGAAAAAAEaAPQABwALAA8AFwAbAB8AAD8BMxcVByMnNzM1IzUzNSM3MxcVByMnNRczNSM1MzUjJgleCQleCRJLS0tLel4JCV4JE0tLS0vqCgqoCgoJcRITEwqoCgqonyYlSwAAAQAAAAAA9wEKABkAABMVFzM1Izc+AR4CBg8BFzc+AS4CBg8BNUIJQjASDSIjGQoKDWENYhAMDCEsLBAOAQdCCRISDQkJGSMjDGINYREsLCELCxENJwAAAAMAAAAAARoBGgAJAAwAEAAAEyMPAhc/AjUHNxc3JzcX+BubAywaTQWa7B0bECGWIQEZmgVNGiwDmxvLOBsKIZYhAAAAAwAAAAABGgEaAA0AEQAYAAAlJyM1JyMHFRczFRczNyc1MxUXIzUzNzUzARkJjQleCQkvCbwJ80uWqRwJhLIKVAkJlwhVCQlncXFdSwgdAAADAAAAAAEHAKkACAARABoAADcUBiImNDYyFhcUBiImNDYyFhcUBiImNDYyFksLEAoKEAteCxALCxALXgsQCwsQC5YICwsQCwsICAsLEAsLCAgLCxALCwAAAgAAAAABGgEaAAsAHAAANzMVIxUjNSM1MzUzBzUzFTM1IzUzNSM1MxcVByNLODgTODgTOBPhcXFxegkJ9OETODgTOP1nXYMTJRMKzgkAAAADAAAAAADiAOEACwAYACEAADcnByc3JzcXNxcHFzcUDgEiLgE0PgEyHgEHNCYiBhQWMjasFhYRFhYRFhYRFhYkFCMoIxQUIygjFBMhLiEhLiFvFhYRFhYRFhYRFhYWFCMUFCMoIxQUIxQXISEuISEAAwAAAAABFgEbABUAKAA0AAATHgEXFhUUBw4BBwYnLgM3Njc+ARc2NzYnNCYnJicmBgcOARYXHgEnNxcHFwcnByc3JzehFikQJh4PJhYwJxQeEAMHDyYSKyEmGRkCEQ8dJhMmDyAXISIQJgQtDS0tDS0tDS0tDQEZARQQKTcrJxIXBAkWCyIqLhUuGQwM9AkfIiUXKhAdAwEJCxhOSBMKBnwvDS8vDS8vDS8vDQAAAAAEAAAAAAEdARoALwBDAFAAVAAAEyMHJwcXBxUXBxc3FzMmJyMvAQcnNy8BNT8BJzcXPwEzHwE3FwcfARUWFzUnNycPATIWFwYHLgEOAhYXBgcuAT4BHwE+AR4CDgIuAjYXFTM1sDQKJiYaLS0aJiYKJwoIBgkOJg8ZBiwsBhkPJg4JFgkOJg8ZBiwLCC0aJiYkDBMECQgBCw4KAQgHBgMNDQQVDhgOIyEXBQ0cIiAWBgwIXgEZLRomJgo0CiYmGi0ICywGGQ8mDgkWCQ4mDxkGLCwGGQ8mDgkGCAonCiYmGjAOCwMGBwgBCg4LAQgJBRcbEgE0DAYMHCMhFgUMGyIhHhMTAAUAAAAAAQcBBwADAAcAFQAcACAAADcjFTMHNSMVJzczFxUHIxUHIyc1NzsCFxUzNSMXIxUzqV5eJhITE4MTEyYShBISJhNLEiaDS4SEgxImXl6pExODEyYSEoQSEkuDOIQAAAACAAAAAAEaAOMACAAMAAA3JzcXByc3IzUnMxUj9SwNQ0MNLL0lExOpLQ1EQw0tEziDAAAABgAAAAABLAEsAAcACwAXABsAHwAjAAATNzMXFQcjJzcVMzUFNTczFxUzFxUHIyc3NSMVFyMVOwI1I6kTXRMTXRMTXf7nE14SXhMTzhNxXl5eXhJeXgEZExNdExNdXV2ocBMTXhJeExNwXl4SXl4AAAQAAAAAARQBFAAgACYANwA7AAATBhQfAQ4BBwYeATY3PgE3FwYUFjI3FxYyNjQvATEnJiIfAQYiJjQ3IgcXNjMyFhceAT4BJy4CBxcuARwDAjMSGgUBBAcHAQUXERYOHSkPSgMIBQKAaAMIYiwJGhIfExEPCwolOQkBBwcEAQcjMxowARsBEAIHAzMNJRYEBwIEBBQgCxcOKR4PSgMFBwOAaAN0LAkTGVEFEAMuIwQEAgcEGysYLC8TGwAAAwAAAAABEQDoAAgAEQAoAAA3MhYUBiImNDYXIgYUFjI2NCYnMh4BFxYOASYnLgEiBgcOAS4BNz4ClhUdHSodHRUNEhIaEhINHDMjBwEEBwcBCTlKOQkBBwcEAQcjM7sdKR4eKR0SExoSEhoTPhgrGwQHAgQEIy0tIwQEAgcEGysYAAAAA///AAABGgEaABUAOwBEAAATBxU3FzUzFSMHNSMXBzMVFzczNzUnBz4BNC4BIg4BFBYXDgEHBg8BMzU0PgI7ATIeAh0BMycmJy4BJyImNDYyFhQGVAkJCqkhGCYBARQQIiIJCZgOEBIeIx8REA0NFgcEAQETChIYDQENGBIKEwEBBQYWMhMbGycbGwEZCR0BARReGBgKCRwHIwlxCbEJHSMeEhIeIx0JBhYQCwwSCg0XEwoKExcNChMLCxAWDxsnGxsnGwAAAAAIAAAAAAEHARoACQAOABgAHQAnADEAOwBAAAATHwEVByMnNTczBxUzNScHFDMyNjU0IyIGFzQyFCIXMzUjNQcVNxUjByM1MzUHNTcVMzcUMzI2NTQjIgYXNDIUIsY+AwrOCQmRiLw4aBkNDhkNDhAUFDwtDx8QDxotDxAgDhQaDQ0ZDQ4QFBQBFz4HtgkJ9AkS4ag5TCUUEiUUEhoyCww9Bg0DLWoMLQMNBj0YJBMTJRQTGjIAAAAABQAAAAABBwEaAAkADAATABoAIQAAEx8BFQcjJzU3MwczJyMVMzUjJzUHNycHFRc/AhcVByc3xj4DCs4JCZEEODiEvEIJSiINKSkNJA0pKQ0iARc+B7YJCfQJSznhlglCjiMNKQ0pDUQOKQ0pDSIAAAcAAAAAARoBGgARABQAHAAlACkALQA2AAATMxUXMxUzNS8CIwcVFzM1IzcXIxcjBxUXMzc1BxUnIwcnIwc1FzcXKwE1Nxc3MjY0JiIGFBYmcAlCEwM+BpEJCUI4gzg4Z5YJCZYJEh8NFigNDU8PHR5dEy8lBAYGCAUFAQdCCRMpBz4CCfQJE+E5OAlxCQlxCkseFigMJ1APHBsTLkEGBwYGBwYACQAAAAABBwEaAA4AEQAZAB4AKAAuADcAPwBJAAAlLwEjBxUzNTMVFzMVMzUHNRcPARUXMzc1JwcVIzUzByMVIzUzMhUUBicjFTMyNBc2JzQHIxUzMic1MzYWFAYnNyMVIzUzFSMVMwEEPgaRCRJxCUITSzjFCQnOCgoJvLyWBg0UFQ0KBQUKQgkBHhQUDRQGBwsKCE0SDSEUEtk+AglnXkIJEykEOTk4CXEJCXEJXhJdOBM5EwgLGxERJgkMHAE4CyMBCw8LAQsWOQsOAAAAAAQAAAAAARoBBwADACEAKwAyAAA3MzUjNzU3Mx8BMxcVByMnNSMnNTczHwEzFxUjNSMvASMVFycjFTM/ATM1IwcjFTM1IwcmEhISClMICGsJCc4KHAkJUwgIawoTZwgIRHEIRDsICHFoE0G8awheSxMJCQQOCpYJCS8JqQoFDgouJQUOOA8POQ4FEzhLXQ4AAAQAAAAAARoBBwAKABIAHAAsAAA3MxcVByMnNTczHwE1NyMPASMVNzM3Iy8BIxUzNxcnNxcVByc3Iw4BFyM0NjeRfwkJ9AkJXgeFAXcQBlRmegF6BxBQUBAxGQ4pKw0bGg8VARMeF/QKuwkJzgoDzB1nEANxlhMDEDkQSRoNKg0qDhkBFQ4WIAEAAAAABQAAAAABBwEaABEAFAAcACAAKgAAEx8BFQcjNTM1Iyc1IxUjNTczBzMnByMHFRczNzUHIzUzBxUjNQcnNyM1M8Y+AwpBOEIJcRIJkQQ4OB2DCQmDChNwcBMSMg0xITgBFz4HtgkTlglCS1QJSzleCoMJCYN5cBw4ITENMhIAAAALAAAAAAEHARoACgAOACMAJwArAC8AMwA3ADsAPwBJAAATMxcVDwEVByMnNRcjFTMVMzUvATUjFQcjFSM1Iyc1IxUzNTM1FTM1JxUjNTczFSM1FSM1NzMVIzUVIzU7ATUjFzc1IxUfARUzNS/OCgMQCrsJSxMTSxADJgkJEwoJEyYTEhITExISExMSEhMTEhJzEDgPAxMBGQleBhF/CQn0CSa7dhAHVC8KEhIKL+ESExMTExMTExMlEhITEyYTExMWEFFRDwd6eQAAAAADAAAAAAEHARoACQAPABIAACUvASMHFRczNzUHIzUzFTMnNRcBATgNcRMTqRMTqV5LODjcOAUS4RMTqKjhSxI5OQAAAAQAAAAAARMBLAANABAAFwAdAAATIwcVIwcVFzM3NTM3NScXIwcjNTMVFzM3IzUzFTPbcRI5EhKXEjsQOB4eJpY5EktLll44ASwTOBO8EhI5EpceHuG7cRITuzgAAQAAAAABGgEHAAcAAAEVBxUjNSc1ARldS14BByBZaGhZIAAAAgAAAAABGgEHAAcADwAAARUHFSM1JzUXFTM1NzUjFQEZXUtecCZe4QEHIFloaFkgcV5eWQUFAAACAAAAAAD7ARoALQBTAAA3JzYmJyYnBgcGFxYXBy4CNzU2NzY3Nj8BNjc2NzYnNx4BBzY/ARUWFxYHDgEnFwYWFx4BBz4BNzYmJw4BLwE2JicGBwYPAQYHBhUxBhYXJjc2N6sKCQMLEgQOAgMGAwoLFB8RAQEDBAkKEAgJBwoDBAYNHxsJBgQRCgYLCwklOxABCQkNCgQMEgUFBAgGEwoGDAkUAhEJDwIXCQQBEA8KBQYcEw4LHAkPFhMRDg0IDg4EGCUUBwkJDQ0PDggKCw8MEQwMFkclBwgCARATJRsUGn8HDRkJCRwPBBELESMQCQkCDRs7FhYaDQ8CFBcMChIfChcVHB8AAAACAAAAAAELARoABgANAAABJwcnBxczNycHJwcXMwEKDXBxDXcNdw1wcQ13DQEMDXBwDXcGDnFxDncAAAACAAAAAAEOARoABgANAAA3FzcXNycjBxc3FzcnIxMNcHENdg14DXBxDXYNoQ1xcQ146A1wcA14AAIAAAAAAO4BAAAGAA0AADcHJwcXMzcHNxc3JyMH4EpLDFELUaNNTAxTC1L/SkoLUVHOTEwLUlIABAAA//8BLgEHABQAHgArADIAADczFxUmJzUjDwEjFTMWFyMnNTczHwEzNyMvASMVMzcXPgEeAg4CLgI2FzcnBycHF5F/CQgLdhAGVWACBG8JCV4HC3oBegcQUFAQMREoJBcCEiEoJBYDEjgtDycYDCD0ClQHBBsQA3EJCQnOCgM2EwMQORBCDAIRIigkFwISISgkUjsMNBMOGgAABQAAAAABGgEHABIAHAAgACQAKAAANzMXFSM1Iw8BIxUzFSMnNTczHwEzNyMvASMVMzcXMxUjNzMVIz8BFweRfwkSdxAHVF5nCQleBwt6AXoHEFBQEBATEyYSEiUSJhH0CkETEANxEgnOCgM2EwMQORA1cHBwaQdqBgAAAAMAAAAAASUBBwANABkAIAAANzM/AScjNScjLwEjBxU3Mx8BMxUjDwEjDwEXIzczPwEzHM4JMgkVCmwRBl4JE1AQB2dVBhBHCRO9uh9FBhBtJgaEDC4KEAMKzsUQAyUDEAc5MV4DEAAAAwAAAAABGgEHAAoAEgAcAAAlIy8BIwcVFzM3NQcVIzUzPwEzJyMPASM1Mx8BMwEQfxAHXgkJ9AkT4VUGEHcBegYQUFAQB3r0EAMKzgkJu5UdcQMQEgMQORADAAAFAAAAAAEsAPQAEwAjAEAASQBTAAA3MzIeAR0BFA4BKwEiLgE9ATQ+ARciBh0BFBY7ATI2PQE0JiMHIgYdASMiBhQWOwEVFBYyNj0BMzI2NCYrATU0JhcUBiImNDYeAQcUBiImPgEyFhVLlhQjFBQjFJYUIxQUIxQXISEXlhchIRd6BAUcBAYGBBwFCAYcBAUFBBwGiQsQCwsQCxMLEAsBChAL9BQjFDgVIhQUIhQ5FCMUEyEXOBghIRg4FyElBgQcBQgGHAQFBQQcBggFHAQGEwgLCxALAQpACAsLDwsLCAAAAAAEAAAAAAEaARoAHwA3AEAASQAANycjDwEnBxcPARUfAQcXNx8BMz8BFzcnPwE1LwE3JwcnFzcXBxcVBxcHJwcjJwcnNyc1Nyc3FzcXFAYiJjQ2MhYHMjY0JiIGFBarChYKDSURGAMtLQUYDyUPCBYKDyUPGAUsLQYYDyUICicmGy0tGyYnCjQKJyUaLS0ZJicIQBceFhYeFyYICwsQCwvaLS0GGA8lDQoWCg8lDxgFKy0FGA8lDwgWCg8lDxhDLRkmJwg0CiclGi0tGSYnCDQKJyYbLYMPFhYeFxciCxALCxALAAAFAAAAAAEHARoAIgAmADkATABQAAA3IzY1JicmLwEmIgYHBgcmJyYjIgcGBwYPARQXIwcVFzM3NQcjNTM1IzUmNTc2NzY3NjIXFhcWFxYVMzQ3Njc2NzYyFhcWHwEUBxUHIxcjNTP9HgIEAwYIBQgJCAMRDQ0RDAUJCAcGAwQBAh4JCeEKhF1dOAIBAgMCBwIPBAkGBAECEwICBAUKAw8IBQEBAgICNl5eXuEIDwsFCQMCAwECBRQUBQMFAwkDCwMOCAmpCQmpoJYTBAUKAwUBBAQCAgQIBQMFBQUFAwUIBAIEBgEDBQoFAgKplgAAAAAFAAAAAAEaARoAEwAWACYAMAA0AAA3MxUXIyc1NzMfAhUmJzUjJzUjFycVFxUzFxUHIyc1NzM1NDYyFgcGHQEzNTQuAQYHFTM1OEsCVgkJkQY+AwgLQglxvDhBEwkJcQkJExYfFjMFJQYKDCVeJhIBCfQJAj4HMAsHCAlCOTk5SxIKSwkJSwoSEBYWAgYIEhIGCQUCNzg4AAIAAAAAAOEBLAAPABgAABMzFR4BFAYHFSM1LgE0NjcXMjY0JiIGFBaNEhwmJhwSHCYmHAkUHR0oHR0BLEwDKjoqA0xMAyo6KgN7HSgdHSgdAAAAAAQAAP/+ARwBGgAfACoASQBVAAA3JzcXFQcnNyMGJj0BLgI+ATMyFxYXFhUUBgcVFBYzJxY+Ai4BDgIWFxYXHgEHDgEuAjY3Njc1NCYrARcHJzU3FwczMhYPAT4CLgIOAh4BixgMKCgNGCMTHA4UBQsXDwkJEggDFRAQDDUIFA4CChAQDQMHyA4KDAMJCBocFAYLDAgJEQsjGA4oKA4YIxMcAQYHDAcBCRARDAMHEDgYDSgNKA4YARwTaAMUHBoQAwgSCQkRGgNnDBGbBQIOFA8HAw0QEHsDCgwhDgwLBhQcGggFAmgMEBgNKA0oDRgbFLIBCA4ODgYDDBEQCgAAAAAEAAAAAAEEAQcAAwANABEAFQAAEyMVMwcnNxc1MxU3FwcnMxUjFyMVM6kTExBeDU4TTQ5eEBMTExMTAQcTzl0OThsbTg5dqBImEwAABAAAAAABCAEtADQAPwBKAFcAADcuAQcGBwYHLgEnMjc+ATU0JyYnJiMiDgEeARcVBgcOAR4CPgE1Ni4BJzUWFxYXHgE+ATQHHgEOAi4BPgInIi4BPgIeAQ4BFw4BLgI+Ah4CBvkMIQ4MBgEBHioDBAQNEAQHEgkKDhcLBRQOCQgLCwUUHBsPAQkSCw8WExQEHSQYqAgKAg4UDwcDDRADCA4HAw0QEQoED40FDg4LBgQMEQ4JAwSbDAMJCA0EBAMqHgIGFw4KCRIHBBAaHBQDXwIFCBsbFAYLFw8JFA8CLRULCgESFQMbJTIEDxQOAgoQEA0DggoPEQwDBxEUDXsFBAMJDhEMAwYLDQ4AAAYAAP/+ARoBGgAhAC0AOQBKAFUAYQAANwYPARUWFx4BFRQOAiMiLgE+ATc1LgI+ATMyHgIVFAcuASIOAR4CPgInFjI+AS4CDgIWFxYXFhUUDgEuAjY3Njc1Mxc+AS4BDgIeATYnBxc3FzcnNycHJwdpCA0IBAQNEAcNEgkPFwsFFA4OFAULFw8JEg0HFgQNEA4HAw0QEAkBLAcQDQgBCRARDAMHyA4KDhAaHBQGCwwHChILBwIKEBEMAwYQFB0fDR8gDR8fDSAfDdAMBgJeAQIFGA4KEQ4HEBocFANfAxQcGhAHDRIJD58HCAoPEQwDBg4PngUIDhANBwQMEBB7AwoOEw4YCwYUHBoIBQJDhQcUEAYDDBEPCwLYHw4gIA4fIA0fHw0AAAAABQAAAAABLAEaAB0AKgA2AEoAVgAANwYPARUWFxYVFAcOASIuAT4BNzUuAj4BMzYWBxQHLgEjIgYXHgI+AicWMj4BLgIOAhYXIzU0JisBFwcnNTcXBzMyFhcWBxUjNSM1MzUzFTMVI2kIDQgTCggDBhgdFwsFFA4OFAULFw8THQEWBA0IDREDAQ0QEAkBLAcQDQgBCRARDAMHyBIRCyMYDigoDhgjDhgFBAETODgTODjQDAYCXgQQDA4KCQ0QEBocFANfAxQcGhABHBQPnwcIFQ0IDAMGDg+eBQgOEA0HBAwQEC8cDBAYDSgNKA0YEA0JCcU4Ezg4EwAHAAAAAAEbARoAIAAsADgAQQBKAFMAXAAANz4BNTQuAiMiDgEeARcVDgIeATMyPgI1NCYnJic1Fx4BDgIuAj4BMiciLgE+Ah4CDgEXFAYiJjQ2MhYHMjY0JiIGFBYnFBYyNjQmIgY1FBYyNjQmIgZUDRAHDRIJDxcLBRQODhQFCxcPCRINBxANBAQFBggBCRAQDQMHDhAICA4HAwwREAkBCA3QGycbGycbLwwRERcREQcLDwsLDwsLDwsLDwu+BhcPCRINBxAaHBQDXwMUHBoQBw4RCg4YBQIBXnUEDg8OBgMMEQ8KgwoQEAwEBw0QDgifFBsbJxwcLxAYEBAYEIgICwsPCwtIBwsLDwsLAAAAAAT//wAAAQcBGgAPABsAHwA1AAA3FRczNzUvAiMVMxcVIzU3IzUjFSMVMxUzNTMHMxUjNwcnNyMiBhQWOwEVIyImNDY7ASc3FzgTqRIFOA4lJTmpgyUTJSUTJV1dXRMoDRg4DBAQDAkJFBsbFDgYDShxSxMTqA44BRI5qEtLJSUTJiZLE5koDRgQGBATGyccGA0oAAAEAAAAAAEaARoAEQAWACIALgAAJS8BIwcVFzMmJyM1MxcVFhc1ByMVMzQnMzUzFTMVIxUjNSMXIg4BHgI+ATU0JgEBOA5wExNkCQZVcDkKCG4nJSUlEyUlEyVwERwNBhgiHxMh3DgFEuETCAriOToDBUJwEwpnJSUTJiYmEx8iGAYNHBEXIQAABQAA//4BGgEaAB0AKgA2AFcAYwAANwYPARUWFxYVFAcOASIuAT4BNzUuAj4BMzYWBxQHLgEjIgYXHgI+AicWMj4BLgIOAhYXFhcWFRQOAS4CNjc2NzU0JisBFwcnNTcXBzMyFhcWBxc+AS4BDgIeAjZpCA0IEwoIAwYYHRcLBRQODhQFCxcPEx0BFgQNCA0RAwENEBAJASwHEA0IAQkQEQwDB8gOCg4QGhwUBgsMCAkRCyMYDigoDhgjDhgFBAELBwIKEBEMAwYLDQ7QDAYCXgQQDA4KCQ0QEBocFANfAxQcGhABHBQPnwcIFQ0IDAMGDg+eBQgOEA0HBAwQEHsDCg4TDhgLBhQcGggFAmgMEBgNKA0oDRgQDQkJqgcUEAYDDBEOCQMEAAAFAAAAAAEHAQ4ACQAXACEAJQApAAA3FTM1FzcnIwcXDwEVFzM3NScjDgEiJicXMxUjNTMeATI2JzMVIxUzFSODEzINQg1CDjYJCeEKCkIEGiEaA2kszisIICcgPRMTExPwIiIyDkFBDjsJXgkJXgkQFRUQEktLERUVXBMTEwAAAAMAAAAAAQcBDgAJABcAIQAANxUzNRc3JyMHFw8BFRczNzUnIw4BIiYnFzMVIzUzHgEyNoMTMg1CDUIONgkJ4QoKQgQaIRoDaSzOKwggJyDwbW0yDkFBDjsJXgkJXgkQFRUQEktLERUVAAAAAAMAAAAAAQcBGgAJABcAIQAANzUzFTcXByMnNw8BFRczNzUnIw4BIiYnFzMVIzUzHgEyNoMTMg1CDUIONgkJ4QoKQgQaIRoDaSzOKwggJyCtbGwxDUJCDVsJXgkJXgkQFRUQEktLERUVAAAAAAUAAAAAARoBGgAMABgAHwAjACcAADczFyMnNTczFxUnNSMXBzM3JyM3JyMPARc3MwczBzcjJyM1MwcjNTM5MA1GCgrhCRPOaBsqaQ0fDw82ESsRKzYjQmwfMwo2PxolLnETCakJCVohMKlBbCAbHQteGnA4bUg4EzkTAAABAAAAAAEYASEAbAAAJRYVFAcGBxYdARQGIiY9ATYmJzc2NzY3NjU0LwE2JwYPASYHJyYjBhcHDgEVFBcWFxYfAQYXFRYGIiY9AQYnJicmLwEuAScuAT4BFxYXFh8BFhcWNzUmNyYnJjU0NyY/ATYXFhc2FzY3Nh8BFgEHERcSIAYFBwUBBQUFFg0RCQsQAgcGERMHKSkHGgsGBwMICQsIEg0WBQsBAQYHBhENCwkFCAEFBwMCAwIGAwcHAwcBCggNFQIHIBEZEQUJBgQKEBUpKhQQCwQGCeoUGy0YEQUKES4EBQUELggNBg4DBgcPEh0WEQoQEgQNAgsLAhATEAkIFQodEQ8IBgMPCg8vBAYGBBoEBAMIBAsBBgYBAQYGBAIBBQMIAg0EBwUEDg0GERgrHBQaFQQCAQMNCgoNBAICBRkAAAAB//8AAAEtASwAVAAAEyIOARUUHgEXMjY9AQYnJicmLwEuAS8BJjc2MzEeAR8BFhcWNzY3JicmNTQ3MSY3MzIXFhc2MzIXNjc2FzEWDwEWFRQHBgceAR0BFBYzPgI1NC4BlilFKBouHgUFDgsJBwQDAwIIAwMJBAIEBgsDAwkOCgoBCB4QFhAHCQQGCAoNDxcRFBINBwMIBQEQFg8fBAYFBR4vGSlFASwoRSkgOioKBAQZAwMCBQQFBAgKAwEGAwEBBwQEDwEBBAwIBA0TJxcRExQDBAkFBQwDAgETFAERFycSDQQDDgopBAQKKzofKUUoAAAAAwAAAAABBwEHAAsAEwAXAAA3MzUzNSM1IxUjFTMnMxcVByMnNRczNSNxEnFxEjk5Qs4KCs4JEry8OHESOTkSXgrOCQnOxbwAAgAAAAABLQEsAAwAagAAEyIOARQeATI+ATQuAQMjIiY9ATQmJz4CNzY1NCYnPgE0JicjIgYPAiYHLwEuASsBDgEUFhcOARUUFx4CFw4BBw4BJi8CLgEjBwYUHwEWHwEeATczNxUUBisBLgI+AjIeAg4BB5YpRSgoRVJFKChFAQICBAQFDRcQAwQHBgEBAgICBQgECQcgIAcJBAkEAwECAQEGBwQDEBYNAwQBBw8LBAQEAwYDBQECCAICBgMRCgYHBAMBHSwTCiQ3PjckChMsHQEsKEVSRSgoRVJFKP7wAwMjBw0EAQkQCw0OCRIHBAcJCQUCAgUECQkEBQICBQkJBwQHEgkODQsQCQEDCQUDAQgHBAUBAwEBAgIGAgILCQoBARYDAwksOj4yHBwyPjosCQAAAAAKAAAAAAEaARoADAASAB4AKgAxADcAQQBIAE0AUwAAEzIeARQOASIuATQ+ARcuAScWHwE2NSYnIxYVFAczNic1NjQnIwYVFBczNicmJysBBgcjNjcOAQ8BBhQXMyY1NDcjFyMeARcmJxc2NyMWNwYHPgE3nyE4ISE4QjghITh9CR4SDAYyAQEDLAEELwJBAQJIAQRDAgMHEAoJEQYUBQ0THQkIBAQvBAEsNCwKJhcSCS8SCjcJQgkSFyULARkhOEI4ICA4QjghSxIaBhcbOAUEDw0KCBMTCQoBCRIJCQkTEwpBHhoaHhsYBxoSEg4dDhMTCApKFhwFGR0xFhsbHB4ZBRwWAAMAAAAAASwBGgAWACcAKgAAPwE1JwcXIyIGFBY7ATUjIi4BNjsBBxc3IyczHwIVByMnNRcVMzUjNxUzcSYoDRg4FBsbFAkJDBABEQw4GA1fMhNYDTkFE6gTE6hLEzi9Jw0oDRgcJxsTEBgQGA1LEgU4DqgTE4wQfJZLOQACAAAAAAEaALwAAwAHAAAlIRUhFSEVIQEZ/voBBv76AQa8EyYSAAAABwAAAAABGgEPAAkAEQAVAB0AIQApAC0AADcXByc1NxcHMxUHNTczFxUHIzc1IxU3NTczFxUHIzc1IxU3FRczNzUnIxcVIzUoEAsgIAsP8M4JJgkJJh0TOAkmCQkmHRM4CSYJCSYdE+ERCx8MHwwPE8arCAirCBGZmR2FCAiFCRF1dX1gCAhgCBBQUAACAAAAAAEgASwABgATAAAlFSMnNTMVNwcjJwcnNzMXNzMXBwEZ/QkTzmENH0QOSw4fYA0mDTgSCf30uGEfRA1LH2EmDQAAAAAGAAAAAAEaASwABgAKAA4AEgAWABoAACUVIyc1MxU3MxUjNzMVIwczFSMHMxUjNzMVIwEZ/QkTOCUlgyYmSyYmOCUlgyYmOBIJ/fTPJjglJiUmJTglAAAABwAAAAABGgEsAAYADgASABoAHgAmACoAADczNSM1IxU3NTczFxUHIzc1IxU3FRczNzUnIxcVIzUHNTczFxUHIzc1IxUc/fMTJQolCgolHBODCiUKCiUcE14KJQoKJRwTJhL0/SWWCgqWCRODg7K8CQm8CRKpqbNxCQlxCRNeXgAGAAAAAADPAPQAAwAHAAsADwATABcAADczFSMVMxUjFTMVIzczFSMVMxUjFTMVI14lJSUlJSVLJSUlJSUl9CYlJiUmvCYlJiUmAAAACwAAAAABBwEaAAkAEQAVAB0AIQApAC0ANQA5AD0AQQAAEzMVIxUzFSMnNRcjJzU3MxcVJzM1IxcjJzU3MxcVJzM1IwcjJzU3MxcVJzM1IxcjJzU3MxcVJzM1KwIVMzUjFTMcJhwcJgl6JgkJJgklEhKMOAkJOAo5JiZBJgkJJgklEhKMOAkJOAo5JiYSJiYmJgEZEuETCfRnCSYJCSYKEiUJOAoKOAollgkmCQkmChM5CjgJCTgJJhNwEgABAAAAAAEaAQcAHAAAJS4BJy4BIgYPAScuASIGBw4CFB4BHwE3PgI0ARcCCQcKGhsZCg0NChkbGgoHCQQECQdvbwcJBNIJEQYKCgoJDQ0JCgoKBxASEhIQB25uBxASEgACAAAAAAEaAQcAHQA9AAAlLgEnLgEiBg8BJy4BIgYHBgcGFB4BHwE3Njc2NTQHBg8BJy4CND4BNzY3NhcWHwE3Njc2FxYXFhcWFRQHARcCCQcKGhsZCg0NChkbGgoNBQIECQdvbwcECRUDCmFiBQcDAwcFBwoTFAkHGhkHChMUCQcFAwcB0gkRBgoLCwkNDQkLCwoNEwkSEhAGb28GCBATCRUNCmFhBQwMDg0LBQcECAgDCBkZBwQICAQHBQYLDgcGAAAAAgAAAAABHQEbAB4AJQAANz4BJicuAQ4BBzUjFRczNSM+AR4BDgImJwceAjYnNyc1IxUX/RINDBITPEE4EBMJQikTSEouAjFLRhIQDzhCPisONhMDRRc5ORcaHAQhHC1CCRIiHRU+TTwSISIJHSYGGywNNkdLBwAAAgAAAAABFAETABEAHAAAExcHJxUHIyc1IxUHIyc1Byc3BxUzNTczFxUzNSeddw0TCjgJJgk4ChIOd0QmCTgKJUsBEmwOEXoJCUJCCQl6EQ5sWIJCCQlCgkQAAAAEAAAAAAD0AOIACwAgACwAMAAANzM1IxUjNSMVMzUzFzMnNjc2NzY0LgEnJicmKwEVMzUzNwYrATUzMhYVFAcGFyMVM3kPDzEQEDFqERgDBAgDAgMFBAYHBAMuDxwJAwIgIAYKAQMXvLxxcDExcDAwMQEDBgkFCwoHAwUCAXAuEAEkCggFAwdmEwAAAAUAAAAAAQcBGgAkAC4AOwA/AEMAADczFxUzFxUHIxUHIwcnNSMnNSMnNTczNTczNS4BNTQ2MhYVBgcXNSMVFzMVPwEzJwYHMQYmJwceATI2NycjFTM3MxUjn0sJCgoKCgk6LxAvCgkJCQkKSwQGCxALAQlCli8JIgc1KAsODRgJDQoZHBkJTBMTOBMT4QkmChIJOQk0By0MNgkSCigHFQMIBgcLCwcLBWE4bgIpJgMuCgMDCAkOCQsLCTMTExMAAAMAAAAAARoBGgAJABMAHQAANzM3NS8BIw8BFTcjNTMfATM/ATMnIw8BIy8BIzczHPQJNAiNCTT04S8OCFYIDTEBNQkMSw4INTF/JglUkAYGi1kJOBcFBRcTBRcXBYQAAAEAAAAAAPQAzwARAAA3FRQWOwEnNxcVByc3IyImPQFLBQSBHg0wMA0egQsRziUEBR4OMAsvDR4QDCUAAAQAAAAAARkBGwATACcAKwAvAAATHgEXHgEGBw4BJicuAz4DFz4BNz4BJicuAQYHDgEeARceATcnMzUjFxUjNaEWKQ8YEgwVEzc8GxQeEQINGiYrIBIhDBILEBQSMTMVGRoDHxoRJhIfGBgYGAEZAxMQGD5AGhgZAg4LIiotLCQaC/MEFA8WNzUVEhEHDhE1OzIOCQYElBIlS0sAAAUAAAAAARoBGgAHAAsAEwAXAB0AAAEXFQcjJzU3FyMVMxUXFQcjJzU3FyMVMycXBxc3JwEHEhKWExOWlpYSEpYTE5aWlvQeHg0rKwEZEksTE0sSEks5EksTE0sSEkuOHh4NKysAAAAAAwAAAAABJwEHAAwAEAAUAAA/ATMXFSM1IxUzFSMnBScVNwc1FyMTE+ESEuFdXRMBFH4zID0l9BMTcXGWExMgfrEzBlY+AAAACQAAAAABBwEaAAcADQAVABsAJAAqADIAOABBAAA3FzY0JwcWFCc3JicHFic3JiIHFzYyBycGBxc2BzQ3FwYWFwcmFwcWFzcmFwceATcnBiI3FzY3JwYnMjY0JiIGFBbvEgYGEgULEBIjCR4sBRInEgYPIT8JIxIRDy0GEgYBBRIGHhESIwkeLQYSJxIFECE/CSMSEBBMBwsLDwsLfwUSJxIGDyE/CSMSEQ8VEgYGEgYMERIjCR5NFBIGDyEQBRIbCSMSEBAWEgUBBhIFCxASIwkeOgsPCwsPCwAAAAMAAAAAASMBGwAVADAAOQAANwcvATcXPgMeAxcjLgIGBzcfAQcnDgMuAyczNRQeAz4CNwcnNycUFjI2NCYiBmM9DRkRDwgbJCgpJRwQARIEMkg+DCytGREPCBskKSkkHBACEwwYHyQjIBcHKwc9fwsQCwsQC8IZBTwHJBMfFAgGFB4mFCQ0CSciEkM9CCUTHxQIBxQeJhUJEiIcEgYGEhwREhIZCggLCw8LCwADAAAAAAEHARoADQAbACQAABMiDgEeAj4BJzYuAgciLgE+Ah4BFRQOAicUFjI2NCYiBo0lPhwONUhEKgEBEyItGCA0GA0sPTojEB0mJwsPCwsPCwEZKURJNA4cPSUZLCMS4SM6PSwNGDQgFCYdEGcHCwsPCwsAAAABAAAAAADgAQcAHAAANwcjNzI3Njc2PwE2NTQuASM3MwcmDgEPAQYUHgGpAlwCDgUHAwYGJgUECQwCVgIKDQgGJgYECS0GBgIDBQgUhxAJBAcCBwcBBgwVhxMJBgMAAAACAAAAAAEaAQcAGwAxAAA3Iyc1Iy8BPwEXHgEXFhcWNzY/Ax8BDwEjFSczNTczNycHBgcOASImJyYvAQcXMxffkwkbCQwGUAwBBQIFBg4NBgUFBAxQBgwJG5OACR0IPwMDAwgUFRMHBAMDQAkcCiEKfQcyCxsGBQcCBQMFBgIFBQkGGwsyB30JfQkjFQQFAwgICAgDBQQVIwkAAAACAAAAAAEHAQcARgCNAAA3NSMiDgEHMQYHMQYXFRQHMQYHBisBFTMyFxUWFxUWFzEWHQEGFxUWFzEeAhczNSMiLgI9ATQmJyYnNjc+AT0BNDY3NjMXFTMyPgE3MTY3MTYnNTQ3MTY3NjsBNSMiJzUmJzUmJzEmPQE2JzUmJzEuAgcjFTMyHgIdARQWFxYXBgcOAR0BFAYHBiNxAgkRDAMDAQEBAgQKBQYBAQYFBQMEAgIBAQEDAw0QCQICBgoHBAICBQkJBQICCQcFBk0BCRANAwMBAQECBAoFBgICBgUFAwQCAgEBAQMDDRAJAQEGCgcEAgIFCQkFAgIJBwUG9BMHDQgICAgIEAYFCgUCEgIBAgMBAwUFBhAICAEHCAgNBgETBAgKBhkGDAULBwcLBQwGGQkNBAK8EgYNCAcJCAgQBgUKBQISAgECAwEDBQUGEAgIAQcICA0HARIECAoGGQYMBQsHBwsFDAYZCQ0EAgAAAAMAAAAAAKoBBwALABQAHQAANx4BPgImJyYOARY3IiY0NjIWFAYnIiY0NjIWFAaMBAoJBQEEBQYPCAIRCAsLEAsLCAgLCxALCykDAQUICgkDBAMND1YLEAsLEAteCxALCxALAAADAAAAAAEcARwAHAA5AEUAABMeAgcOASMiJw8BIxUHIxUHIyc1PwEmNTQ+Ahc2NzE2LgIHDgEVBhcPARUzNTczNTczPwEWMzI3PgEuAgYHBh4BNtUXIwwEBi8eDQsPBxMJHAo4CQJeBBEdJSwSBQMJGCARFh4BBQJeJQkdCRcRCgwMFwMDAQUICwkCBAMNDgEYBSArFh0mBBIDHAocCQkrB10NDhIjFwmKDhcRIBgJAwUkFw0MCl8eHQkcCRMDBEIECgkGAQUEBw8IAwAGAAAAAAEaARoALwA2ADkAPQBAAEcAACUnMzUjNSMVIxUzByMVMx4BMjY3MzUjJzMVIw8BFzM3LwEjNTMHIxUzHgEyNjczNQcGIiYnMwYnIzcfASM/ARcjFwYiJiczBgESHhNeE14THgcCBRgeGQUCCB86JQglB6kHJQglOh8IAgUYHxgFArcGDwwELwQBJhN2F4MXdhMmIAYPDAQvBKlLExISE0sTDhISDhNLlgQvDw8vBJZLEw4SEg4THQMHBgYZLYscHIotHAQIBgYAAAAABgAA//0BLQEYAAcACwAXAB8ALAAzAAATIwcVFzM3NQc3Fw8BJzMXNzMHIyIGDwEXBycjFzM3Jjc2FzIWFRQOAS4CNhc3JwcnBxeZCm9vCnPWXmFhBW0hUVQiDwcZJwgTEBVRIW0KFAQrDxEXIRMfIhgHDS4iDxwQDBgBGEwQSkoQCEFBP0JKNzcKHRYNDg43Sg0JPQoBIBgRHA0GGSEgPy0LJQ4PEwAABQAAAAABLAEYAAcACwAXAB8AKAAAEyMHFRczNzUHNxcPASczFzczByMiBg8BFwcnIxczNyY3FBYyNjQmIgaZCm9vCnPWXmFhBW0hUVQiDwcZJwgTEBVRIW0KFAQTIC8hIS8gARhMEEpKEAhBQT9CSjc3Ch0WDQ4ON0oNCQ4XISEvISEABAAAAAABDAEYAAcACwASABkAABMzFxUHIyc1NwcXNwcXMzcjBycXJzMXNzMHjwpzcwpvdF5eYdNtCnEiVFFMbSFRVCJxARhMEEpKEDlBPz83Sko3N3lKNzdKAAACAAAAAAEaARoABwALAAATBxUXMzc1JxUjNTMmExPhEhK8vAEZEuETE+ES8+EAAAACAAAAAAEaARoABwALAAATBxUXMzc1Jwc1MxUmExPhEhLhuwEZEuETE+ES8+HhAAADAAAAAAEaARoABwALAA8AABMHFRczNzUnBzUzFTM1MxUmExPhEhLhS0tLARkS4RMT4RLz4eHh4QAAAAAFAAAAAAEaARoABwALAA8AEwAXAAATNzMXFQcjJzcVMzUHMxUjNzMVIzcjFTMTE+ESEuETE+HPJiY5JSVdJSUBBhMT4RIS4eHhEhMTExMTAAQAAAAAARoBGgAHAAsADwATAAATBxUXMzc1Jwc1MxU3NTMVNzMVIyYTE+ESEuElE3ATJiYBGRLhExPhEvPh4UuWlpbhAAAAAAQAAAAAARoBGgAHAAsADwATAAATBxUXMzc1Jwc1MxUzNTMVMzUzFSYTE+ESEuElE3ATJgEZEuETE+ESqJaWlpaWlgAAAwAAAAABGgEaAAcACwAPAAATNzMXFQcjJzcVMzUzFTM1ExPhEhLhExOWEjkBBxIS4RMT4ZaW4eEAAAAAAwAAAAABGgEaAAcACwAPAAATBxUXMzc1Jwc1MxUHMxUjJhMT4RIS4eHh4eEBGRPhEhLhE6mWlhI5AAAAAwAAAAABGgEaAAcACwAPAAATNzMXFQcjJzcVMzUzFTM1ExPhEhLhExM4E5YBBxIS4RMT4eHhlpYAAAAAAgAAAAABGgEaAAcACwAAEwcVFzM3NScHNTMVJhMT4RIS4eEBGRLhExPhEqiWlgAAAwAAAAABGgEaAAcACwAPAAATBxUXMzc1Jwc1MxUzNTMVJhMT4RIS4UsShAEZE+ESEuET9OHh4eEAAAAAAgAAAAABGgEaAAcACwAAEwcVFzM3NScVIzUzJhMT4RIShIQBGRLhExPhEvPhAAAAAwAAAAABGgEaAAcACwAPAAATBxUXMzc1Jwc1MxUzNTMVJhMT4RIS4YMTSwEZE+ESEuET9OHh4eEAAAAAAgAAAAABGgEaAAcACwAAEwcVFzM3NScHNTMVJhMT4RIS4YMBGRLhExPhEvPh4QAAAgAAAAABGgEaAAcACwAAEwcVFzM3NScHNTMVJhMT4RIS4eEBGRPhEhLhE+HOzgAABgAAAAABGgEHAAcACwATABcAHwAjAAATBxUXMzc1Jwc1MxU/ATMXFQcjJzcVMzUHNzMXFQcjJzcVMzU4EhJLExNLSzkSORISORISOUsSORISORISOQEHE7wSErwTz7y8vBMTOBMTODg4gxISORISOTk5AAAGAAAAAAEoAQcABwALABMAFwAfACMAAD8BMxcVByMnNxUzNRc/AR8BDwEvARc3LwE3MxcVByMnNxUzNV4JJgkJJgkTEikGIwxGBSMMMkASQb8JJgkJJgkTEv0KCs4JCcW8vAcMDQXCDA0FwLAGsAwKCs4JCcW8vAADAAAAAAEaARoACAASADcAADciBhQWMjY0JhcnBzcnMzcXMwcnDgEHIxUUFjsBFhcjBiY9ATQmJy4BNTQ3PgMzMh4BFRQHBuEXISEuISECGRgJFhsKChwXHxIdByMDAxoDBSIKDwoJDA4MBRATFQwXJxcHBIMhLiEhLiFdEhIcEB8fEFIDGBIpAgQKCAEPCh4NGAkLHxEXEwoPCwYWJxcSDgkAAAMAAAAAAR0BGgA7AFgAbAAANzY3Nj8BNjc2NTQuBCIOBAceARceAR0BFB4COwEyPgI1JyMmJxUUBisBIiY9ATM+ATM3Mhc2NzY3NjMwMScmJyYnJicGBwYHBg8BFxYXFhcWFzY3NjIXFhcWFAcGBwYiJyYnJjSoBQgGBAICBwUGCxATFRgVEw8LBgEBDQwKCgMHCQUeBQkHBAECCQcDAx4CBCUDCwcCBDMGDgsNBwUHCAgLCAoEBQoICwcJBwcJBwsICh8JBgIHAgYJAgIJBgIHAgYJAngKCAUGBwgFDQ8MFRMPCwYGCw8TFQwSHQwKFw0eBQkHAwMHCQUIAQYPAgQEAikGCAFQGA8KBQIBAQUGCg4TEw4KBgUBAQECBAYLDQUGCQICCQYCBgIGCQMDCQYCBgAAAgAAAAAA9QEaACEAKwAANw4BHQEUBgcGJyMGJj0BNCYnLgE1NDc+AzMyHgEVFAYHIxUUFjsBMjY12wkLCAcEBR4LDgoJDA4MBQ8TFgwXJxYNMykDAx4CA4oJGA0eBw0DAgEBDwoeDRgJCx8RFxMKDwsGFicXEh4uKQIEAwMAAAACAAAAAAEaARoADAAWAAATMxUjFTM1MxUHIyc1IRUjNQcnNyM1MxxVS+ESCfQJAQYSfw1+Y3oBGRLhS1UJCfR6Y34NfxIAAAACAAAAAAEaAPQAJABJAAA3MzIeAR0BFA4BKwE1MzI2PQE0JisBIgYdAR4BFxUuAT0BND4BFzUeAR0BFA4BKwEiLgE9ATQ+ATsBFSMiBh0BFBY7ATI2NzUuAVM5Eh0RER0SCQkTGhoTORMbARUQGCARHaAYIBEdEToSHRERHRIJCRMaGhM6EhoBARX0ER4RBBEdEhMbEgQTGhoTBBAZAxMDJBgEER4RTBMDJBgEER4RER4RBBEdERIbEgQTGhoTBBAZAAAAAwAAAAABBwD0AAMABwALAAA3NTMVJzMVIzcVIzVxS3GWlrzhSxMTXhNeExMAAAAABAAAAAABBwD0AAMABwALAA8AADczFSMVMxUjNTMVIzUzFSMmqKiWluHhzs6DEiYThBNLEwAAAAAGAAAAAAEaAQcABgAKAA4AEgAzAGsAABM3MxUjNQc3MxUjFTMVIxcjFTMnPwE2NCcmJyYiBwYHBgcVMzU0PwEyMxcVFg8CFTM1IxcyFxYVFAcGBwYiLgEvASYnMTMVFxYzPwIvASsBNTczPwEnNCYPAQYdASM1NDc+AjIeAhQHKwcNDQczu7u7u7u7u9MBAQMBAgcFCAUGAgEBEAEBAQIBAQECEyURCwIBAwECBwUIBQQCAgEBEAECAQEBAQEBAQQEAQEBAQMBAQEPAwEEBgcGBgQDAQAHOSoGAhM4EzgTUgEBBQgEBwICAgIHAwMBAQECAQIBAwMDFQsNOgIEBgMDBwICAgMCBAMEAgIBAQICAwIMAQEDAgEBAQEBAgEBBgUCAwICAwcJBAAAAAADAAAAAAEaAPQAAwAHAAsAADc1MxUnIRUhNxUjNROpqQEG/vrOzksTE14TXhMTAAAFAAAAAAEHAPQAAwAHAAsADwATAAA3MxUjFTMVIzUzFSMnMxUjOwEVI0upqYODvLw4zs44ExODEiYThBNLE6kACAAAAAABGgD0AAMABwALAA8AEwAXABsAHwAANyMVMxUjFTMHMxUjFyMVMzczFSMXIxUzBzMVIxcjFTMmExMTExMTExMTEyXOzs7Ozs7Ozs7OzvQTJRMmEiYTvBMlEyYSJhMAAAQAAAAAASMBIAAWACcAMwA/AAATNxcVByc1IyIHBgcGBycmNz4DFzMXFTcnFSMmBgcGBzY3Njc2Mwc+AR4CBgcGLgE2Fx4BPgImJyYOARasEmRkEggfDxYUFRcTAQQEGSgwGg0WR0YkGC4RFQkUFBIWDxxCDB0aEAINDBMrGQkeBxEQCQIIBwwaDwYBFwlQEUwJIwMEDQ8eBg4OGSwgEQFBIzY4IQERERYdEwoIAwJKCQINGB0bBwwJJCw7BQIIDxEQBAgGFhoAAQAAAAABGAEaAA8AACUuAiIOAQcjPgIyHgEXAQUFHzA2MB8FEwUlOEA4JQWpGisYGCsaIDMdHTMgAAAABAAAAAAA4gEQABAAHgAnADMAADcuASMxIg4CHwEzNzYnNCYnOwEeARcUDwEnJjU+ARcmDgEeAT4BJic+AR4CBgcGLgE2ywocDxUiFAEMOwo7DAELQQECFiABCTAwCQEgIgYQCAMNDwkDJggVEgsBCQkMHhEF+goMFSIqEnd3EhYPGw4BIRcQDWFhDRAXISgFAw0PCQMNDxQGAgkRFRIFCAYZHgADAAAAAAD0AQcABwALABsAAD8BMxcVByMnNxUzNSc1NCYiBh0BMzU0NjIWHQE4E5YTE5YTE5YTIS4hExUgFZYTE14SEl5eXhMlGCEhGCUlEBYWECUAAAAAAwAAAAABBwEaABEAGQAdAAA3IzU0LgEiDgEdASMHFRczNzUnND4BFh0BIxcjNTP0ExQjKCMUExISvBOpIS4hcJa8vKklFSIUFCIVJRNwExNwOBggASEYJYNwAAAEAAAAAAEaARAAFgAaAB4AMAAAEyIOAR0BFzM3NTQ2MhYdARczNzU0LgEHIzUzFyM1Myc1NCYiBgcVIzU0PgEyHgEdAZYkPCMTOBMWHhcSORIjPFw4OKk5OTkgLiEBOB40PDQfARAjPCReExNeDxYWD14TE14kPCPhODg4ExMYIB8WFhMeNB4eNB4TAAMAAAAAARoBDwAHAAwAFAAAEyMHFRczNzUnFwcjJxcjNR8BMz8Bmwp+CfQJg2oaoBjZ4RQIqAgVAQ9LlQkJlTg/HR2FchoDAxoAAAADAAAAAAEaAPQABwANABAAAD8BMxcVByMnNxUzNQcjNyMXEwn0CQn0CRPhawxkvF7qCgqoCgqVjIxSXEkAAAAAAwAAAAABBwD0AAMABwALAAA3FTc1FzUnFRc1NxUmQUs4S0LFjSmNsI0jjSONKY0AAwAAAAAA9AEHAAMABwALAAATMwcjFyMnMxcjBzNnjSmNsI0jjSONKY0BB0JLOEtBAAAAAAQAAAAAAPwBEAADAAcAFQAZAAA3MwcjFTMXIz8BJyMPARUXBxczPwE1BzMHI2x3I3d3I3dkLAiNCC8sLAiNCC+QdyN3/TgTOEJGDgVLCUZHDgVLCQ44AAAEAAAAAAEQAPwAAwAHABUAGQAANxU3NTMVFzUPASc1PwEzFzcXFQ8BIzcVNzUvOBM4QUcOBUsJR0YOBUsJDjjAdyN3dyN3ZCwIjQgvLCwIjQgvkHcjdwAAAgAAAAABGgDPABAAFwAANzMVIzcHIycUFRcjNTMXFhc3NSMVIxc3dycbASEXIQEZKA8OAZwlJDc2znpjY2MHLy16KysEFkJCNjYAAAMAAAAAARoA7gAPABcAGwAAPwEXFQcnDgIuAjcvATUXBhUUHgE2NycXNQcm5wwMcgMPFRYPBgMmCEABCxAOAljX161ACqEKHgsPBgUQFQsKCiQ9AgIJDAIICCw5ij0AAAIAAAAAAO4A9QA4AEIAADcGJwYuAjc0PgIzMhcWFRQGIyI1DgEjIiY0PgEzNhYXNzMHBhYzMjY1NCYjIg4BFQYeAjcWNycUMzI2NzYjIgbEGh8RIRkMAQ4dJhQkFhkfFxUGEQoOEQ0XDQkPAwQRDwMDBg4VJR8YJRUBCRQbDhwZTBELEAQJGQ4SRA8BAQwZIBIUJx0QExUjHicSCQkTIh0SAQoIDzwNCh8WHSAYKRgPGhQKAQENOBcSESQeAAAAAAMAAAAAASwA4QADAAcACwAAJSE1IRUhNSE1ITUhASz+1AEs/tQBLP7UASzOE6kTOBMAAAACAAAAAADrAP4AJgA7AAA3JyMHFzcVMRUxFRQfARYXHgEfAR4CHQEzNTQuAi8BLgI3JxcHNjcmLwEGDwEOAx0BMzU0PgE3xSgOKA0VAQICAgQNBw4HDAcaBQsMBw0GCwYBARU0AwMHBAIFBg0HDAsFGgcMB9UoKA0UEwkGBQULBgYLEQgPBxETDRERDRgSEAcOBhAUCx0UUwQDCgwFBwYOBw8TGA0REQ0TEQcAAwAAAAAA/gEQAAsADwAjAAA3NDYyFh0BFAYiJjUXNTMVJwYuATUzFB4BOwEyPgE1MxQOASNeIS4hIS4hLxISGisZExQiFRIVIhQTGSsa2BchIRdLGCEhGI0mJiYBGisZFCMUFCMUGSsZAAAABAAAAAAA/gEaAAsAHAAgADQAADc1NDYyFh0BFAYiJjciDgEdARQeATI+AT0BNC4BAzUzFScGLgE1MxQeATsBMj4BNTMUDgEjZxwmHBwmHC8SHhISHiQeEhIeGxISGisZExQiFRIVIhQTGSsajUsTHBwTSxQbG6ARHxFLEh4SEh4SSxEfEf7nJiYmARorGRQjFBQjFBkrGQADAAAAAAEaARoAEQAWABoAABMjFSMHFRczFTM1Mz8BNS8BIxcjNTMXJzMVI5YTZwkJZxNUBygoB1RQwMAfp15eARklCksJg4MCJg4lA0s4HAkSAAADAAAAAAEaARoACgAVACUAABMfARUHJwcnNT8BHwE1JxUjNQcVNzE/ARcVByc3IxcHJzU3FwczoXQEDnV1DgR0FWdnE2dnIw4uLg0ecR4NLi4NH3IBGUsHrAhLSwisB0urQpZCNjZClkJaDS8NLg0eHg0uDS8NHwADAAAAAAEaAPQAEwAeACIAACUnIwcVMzUXBh0BHwEzPwE1NCc3BxUHJzU2NxczNxYvATcXARmABoATKw8FSwhJBg8/QkFCAQ0xBzANQWdnZ8IyMndeERUaCAciIggIGRUZRwEeHgEWEhMTEhEoKCgABAAAAAABEAEaAAkAEwAdACcAADcHNSMVJwcXMzcnFzcVMzUXNycjDwEzFSMXByc1NxczJzcXFQcnNyPAIRIhDTAOMG4NIRIhDTAONSFBQSENMTFlQSENMTENIUFjIEBAIA0wMJMNIEBAIA0wUCATIA4xDTAtIA0wDTEOIAAAAAAFAAAAAAEaARoADAAQABgAHAAgAAATNzMXFQcjNTM1IxUjNxUzNQ8BFRczNzUnBzUzFQczFSNxCZYJCS8mhBIShOsJCZYKCoyDg4ODARAJCYMKE0sTORMTXgqDCQmDCiYTExJLAAAAAAUAAAAAAQcBBwAMABUAJwArADQAACUjFSYjIgYUFj4BPQEHMhYUBiImPgE3DwEVJiMOARQWMjY9ATcVMzUHFQc1BzIWFAYiJjQ2AQcTDQ8UGxsnGy4LEREXEQEQMZYJDQ8UGxsnG4QTE4MvCxERFxAQqS8JGyccARsTVTgRFxERFxGVCQmNCgEbJxsbFHEIElQKJQkmjREXEBAXEQAAAAADAAAAAAEZARcACQARAB0AADczNxcVBycjJzUfATUPASMVMzcXBxcHJwcnNyc3Fxw0SRAQSTQJSDs7By4utw0gIA0hIA0gIA0gzkgG9AZICV5YO8c7AktJDSAhDSAgDSEgDSAAAwAAAAABLAEaABAAEwAfAAATHwEVIzUjNSMVMxUjJzU3MwcVMxcjNSM1MzUzFTMVI7JAAhNLXktUCQl+BDYVEzg4Ezg4ARdBCCUTS88SCeEJEjnOOBM4OBMAAAADAAAAAAEsARoAEgAcACgAAAEjLwEjBxUXMzUjNTM/ATMHMzUHIw8BIzUzHwEzByM1IzUzNTMVMxUjARB/EAdeCQlnXlUGEHcBExN6BhBQUBAHehMTODgTODgBBw8DCc4KE3ECECVUHAMQOBAC9DgTODgTAAEAAAAAAPQAxQARAAA3FRQGKwE3JwcVFzcnMzI2PQHhBQSBHg0wMA0egQsRxSUEBh8NMAowDR8QDCUAAAQAAAAAARoA0gAIAA8AFgAoAAA3Nh4BDgEuATYXLgEOARYfAR4BPgEmJzcVFAYrATcnBxUXNyczMjY9ASwTLhoJJy4aCUYJFBIKAQUNCRQSCgEFnAYETR4NMDANHk0MEMUNCScuGgknLgIFAQoSFAkNBQEKEhQJJSUEBR4OMAsvDR4QDCUAAAAFAAAAAAEaAQcABwALAA8AEwAXAAATMxcVByMnNRcVMzUHMxUjFyMVMwczFSMc9AkJ9AkT4byWlnFxcXFLSwEHCrsKCrsJqakmEhMTExIAABcAAAAAASwBLAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMASwBPAFMAVwBbAF8AADcjNTMVIzUzFSM1MxUjNTMVIzUzHQEjNRczFSM3MxUjAyM1MxcjNTsCFSMzIzUzFyM1MxcjNTMVNTMdASM1MysBNTMXNzMXFQcjJzcVMzUXMxUjFTMVIxUzFSMnMxUjExMTExMTExMTExMTExMTJRMTJRMTJRISExMTOBISJhMTJRISExMTzhMTSxODExODExODJRMTExMTE5ZeXs4TOBM5EzgTORMlExMTExMTARkTExMTExMTExMlEhImExNLEhKpExOpqakTJhImEyWDEwAAAAAHAAAAAAEaARoABwALABMAFwAbAB8AIwAAEzczFxUHIyc3FTM1BzczFxUHIyc3FTM1FyMVMwczFSMXIxUzJhKpExOpEhKplhNeEhJeExNeXRISEhISEhISAQcSEuETE+Hh4SYTExMSEhMTExMlEyUTJgAAAAQAAAAAARoA+gAlAEAASQBSAAAlNjc2JyMmBwYHBgcmIgcmJyYHMQYXFhcGFRQXFhcWMjc2NzY1NAciJyYnJjU0NzY3MhcWMjc2MxYXFhUUBwYHBiciBhQWMjY0JjMiBhQWMjY0JgEEAwEBBwQEBggJDA4SQhIZEgkFBwEBAxURDx8aUxsfDxGDIRAYDA0RCA8KFhESEhUKDwgRDQwYEEoIDAwQDAxKCAwMEAwMwggKEhIBAgEFBQkFBRAEAgESEgoIFyApGBUKCAgKFRgpIHgDBAsMGRMPCAIBAQEBAggPExgNCwQDUhEYEREYEREYEREYEQAEAAAAAAEtARoADAAQACIALgAAEzMXFSYnNSMVByMnNRczNSMXIgcjDgEXBxc3HgE+Ai4CBwYuAT4CHgIOATjPEgkKXRVcEhJeXsMMCgERCQssDSwJFxUPBwQNFQgKDwcEDBAQCQEGDAEZEmQEAl7MFRLPz89xBwonESwNLAYDCBAVFhIKSwELDxEMAwYNDw4IAAAACgAAAAABGgEcAAsAFwAkAC0ASABiAHcAkgCeAKcAADcOAS4CNjc2HgEGJy4BDgIWFxY+ASY3NhYXHgEOAiYnJjYXFjI2NCYiBhQHMxUjIiY9ASImPQE0NjsBBgcjIgYdATMVFBY3JisBIgYdARQWMxUGFxYXMz4BPQEyNj0BNAcjFRQGKwEiJj0BIzUmNjsBMh4BFRcjNTMyNj0BMzU0JisBJiczMhYdARQGIxUUBiciDgEeAj4BNTQmByImNDYyFhQGqwkUEgsCCggNHhIGGAQKCQYBBQUGDwgDKwkUBwUEAwkOEQYJAhQDCAUFCAWcIiIJDgcLEw4iBwMYBgkTAosKDi4OEwsIAQcFByYICwcLEhMCAh4CAhIBCQYuBQcDNCIiAQMTCQYYAwciDhMLBw6uCQ4GAwwREAkQDAQFBQgFBdUGAgkRFBIGCAYZHyYDAQQJCgkDBAQMDwQFAgcFDQ4LBgMGChoWAwUIBgYIpRMNCiIMCCkNFAgLCQUqNQICegoUDjsIDCwJBwUBAgwILAwIPA1KPwECAgE/PQUJBQcCdhMCAjUqBQkLCBQNKQgMIgoN2QoQEQwDBg8IDBEmBQgGBggFAAAABQAAAAABBwEsABUAGQAdACEAJQAAExUXFQcjJzU3NTMVMzUzFTM1MxUzNQMzNSMXMxUjFyMVMwczFSP0ExO8EhITJhImEyWpvLwmcHBwcHBwcHABLBMS9BMT9BITExMTExMT/uf0JhM4EzgTAAAAAAQAAAAAARoA9AAKABAAFAAcAAA3HwEVDwEvATU/ARcHHwE/AQcXNScXFTc1BxUHNaFsDAdzcwYLawRLCkA5EbFeXnFeJhP0HQl+CSAgCX4JHRMTAxEPBXcabBkZbBprCjAFMAADAAAAAAESARoAIwAtAEIAACUnNSc1NCcmJyYjIgYdAQcGFB8BFhcWNzY/AQcUHgIyPgInJj4CHgEdAQcXDgEmLwEmND8BFQYUHgE+ASYnNRcBERZcAgQLBgUMEDkJCUQEBQsKBQRdDQEGBwoIBgKWAQEDBAYEEhMBBQYBRAMDUgUGCgkEAwRITzoBXBcGBQsEAhAMPTgIFwlEBAIEBAIEXSoECQcEBAcIswIEAwEBBQQXE6oCAgICRAIIA1E1BAsJAwUJCgM1SQAAAAACAAAAAAEaARoADAATAAA3Mj4BNC4BIg4BFB4BNyMnNxc3F5YkPCMjPEg8IyM8EQ0rDSRPDRMjPEg8IyM8SDwjTSsNJE8NAAADAAAAAAEWARsABgAcAC8AADczNycHJwc3HgEXFhUUBw4BBwYnLgM3Njc+ARc2NzYnNCYnJicmBgcOARYXHgF2DVUNTyQNVhYpECYeDyYWMCcUHhADBw8mEishJhkZAhEPHSYTJg8gFyEiECZgVg1PJA2OARQQKTcrJxIXBAkWCyIqLhUuGQwM9AkfIiUXKhAdAwEJCxhOSBMKBgAEAAAAAAEaARsACwAXACMARQAANyMVIxUzFTM1MzUjJy4BDgIWFxY+ASYnPgEeAgYHBi4BNhczMhYdASM1NCYrASIGHQEzFRQWOwEVIyImNzUiJjc1NDb0EyUlEyUlVAQKCQUBBAUGDwkDJgkUEgsCCggNHhEGCi4OExIJBi4GCRMCAg8PCQ4BCQsBE3EmEyUlE7gDAQUICgkDBAMNDxQGAQkRFBIFCQcZHkUTDg4OBggIBjM/AQITDQksDAgyDhMAAAAABAAAAAAAzwEaAAgAEQApAD0AABMyFhQGIiY0NjciBh4BMjY0JhcjIgYdAQYWMxUGFjsBMjY9ATI2JzU0Jgc1JjY7ATIWBxUjFRQGKwEiJj0BlggLCxALCwgQFgEVIBYWBy4OEwELCQEOCR4KDQgLARNKAQkGLgYJARICAh4CAgEHCxALCxALEhYfFhYfFlQTDjIIDCwJDQ0KKwwIMg4TVDMGCAgGMz8BAgIBPwAAAAABAAAAAAEsAQcALQAAEwcVMzUzFRczNzUzFRczNzUzFRczNzUzFSM1IxUjNSMVIzUjFSM1IxUXITc1JxMTEyUKEgolChIKJQoSCiU4Ey8SLxM4ExMBBhMTAQcTcXFnCgpnZwoKZ2cKCme8OTk5OTk5S0sSErwTAAAEAAAAAAEaARoABQAOABsALQAANzMuAScVNx4BFxYVIzUyBxczDgEjIi4BNTQ2NxcyPgE3NjUjNSIHDgIXFB4BvEkGKBwBIzMGAXAJLxNcBzMiGSwZKyATGzAgBAJxCQoaKxkBHjO8GygGSVwGMyMKCXCDEyArGSwZIjMHzBgrGgoJcQIEIDAbHzMeAAIAAAAAAQcA4QAcADcAACUVIyImJyMOAysBNSMnNzM1MzIWFxYXMz4BMwcGBwYPASMnJicuAScVPgE3Nj8BMxcWHwEWFwEHBgsTBzYEDA8SCgk8ExM8CQoRCBAINgcTCwkDAwUDBE0CBAkEDwYGDwQJBAJNBAECBQIEzoMKCQkOCgVLCglLBQUKEgkKFAECAwYFBgwIAwcBgwEHBAgLBwYDAgQCAQAAAAIAAAAAAS0BBwA2AFAAABMzFRQGBxUeARcGBzEmLwE1NzY/ATY3IxYXFh8BFQcGBw4BBzMGByMVByc1IzU0Njc2NzUuATUXPgIXHgEXFhQHDgEHBiInLgEnJjY3Njc2S4MJCgkNBAkICQwGBQMCBAIBWwIBBAUGBwsIBAcBXgUECgkKSwYEChIJCowHDg8IDhUEAgIEFQ4IDwcOFgQCAQEFDAQBBwYLEwc2BAsGAwUKBAJNBAECBQMDBAIFAwRNAgQJBA8GBwg8ExM8CQoRCBAINgcTC5gEAwEDAxUPBw8IDhUEAgIEFQ4IDwcQCwQAAAIAAAAAAOEBBwAcADcAABMzFRQGBxUeAx0BIxUHJzUjNTQ2NzY3NS4BNRcWFxYfARUHBgcOAQczLgEnJi8BNTc2PwE2N0uDCQoJDgoFSwkKSwYEChIJChQCAQQFBgcLCAQHAYMBBgQIDAYFAwIEAgEBBwYLEwc2BAwPEgoJPBMTPAkKEQgQCDYHEwsJBAIFAwRNAgQJBA8GBg8ECQQCTQQBAgUDAwAAAAQAAAAAARYBGwAVACgALgAxAAATHgEXFhUUBw4BBwYnLgM3Njc+ARc2NzYnNCYnJicmBgcOARYXHgEnNxcVByc3FTehFikQJh4PJhYwJxQeEAMHDyYSKyEmGRkCEQ8dJhMmDyAXISIQJicOVFQOEjoBGQEUECk3KycSFwQJFgsiKi4VLhkMDPQJHyIlFyoQHQMBCQsYTkgTCgarCDgQOAhfTicAAgAAAAAA8AEHAAUACAAAEwcVFzc1BzUXRw8PqaWPAQcI4QhwEGe+XwAAAAACAAAAAADiARoAFQAfAAATIxUjBxUUFhcVMzU+AT0BJyM1IxUjFw4BLgE9ATMVFIMSHQklHRIdJQkcEyY7DCIfE3ABGTgJQhwrAzk5AyscQgk4OHMMBg0cETg4FwAAAAAFAAAAAAENAO8ABwAPAB8AJwAvAAA3IycjByM3MxcnJicxBg8BFzUzMhYVFAYHFR4BFRQGIycVMzI2NTQjBxUzMjY1NCOgEw8+DhM4ERAXAQEBAhZuKRMWDgsOEhsUGREOEBwTFw8QI14oKJBZPgMHBwM+N5ASDwwSBAEBEw8SF4EvDgwVPjQODBoAAAgAAAAAARoBBwAHAAsADwATABcAGwAfACMAABMzFxUHIyc1FzM1IxcjFTMnIzUzBzM1IxczFSMnIxUzBzMVIybhEhLhExPh4c68vBOWljhLSxMlJTlLS0tLSwEHE7wSEry8vBM4ExKDSxMlOBMlEwACAAAAAADrAOsABwALAAA/ATMXFQcjJzcVMzVCCZYJCZYJEoThCQmWCQmNhIQAAAAFAAAAAAEaARoABwALAA8AEwAXAAATMxcVByMnNRczNSMXMxUjNyMVMzczFSMc9AkJ9AkT4eESJiZxJiYlJiYBGQn0CQn06uETvLxxcZYAAAEAAAAAARoA9AASAAA3JyMHJyMHIxUzPwEXMzcfATM13SETIxYSFjU8Cg0WEyMbCUODcX1dURIHMl+EWAYSAAAEAAAAAAEHARoADAAZADwAQAAAEyIOARQeATI+ATQuAQciLgE+AjIeARQOATcuASIOAgczND4BMh4CFAYPAQ4BFxUzNTQ2PwE+AjQmBzMVI40hOCEhOEI4ISE4IRwwHAEbMDgvHBwvAQUPEQ8KBAEXBQcGBQQCBAMOAwQBFgQDBwQGBAQuFRUBGSE4QjggIDhCOCHhHC84MBwcMDgvHJ4FBgYLDQcFBwMBAwUICQQQBAkFDAkECAQIBAoLDQxeFgACAAAAAAEKAQ0AEAAiAAA3DgEVMjMyFhQGIyImNTQ2NxcOARUyMzIWFAYjIiY1NDY3F4YjIAMFExwaFRsdLy+ZJCADBRMcGhUbHTAuFuoWMyQYKxsqJjVOGyMWMyQYKxsqJjVOGyMAAAgAAAAAARkBGgAMABkAJQAxAEMATgBSAFYAADc0NjcnDgEUFhc3LgE3FBYXNy4BNDY3Jw4BFyc+ATQmJzceARQGNwceARQGBxc+ATQmBxYPARcHJyMHJzcuAT4CHgEHDgIeATI2NC4BFyMHMxcnIwc4EA8OERMTEQ4PEBQNDA0JCgoJDQwNkA4KCgoKDgsNDQ4NDhAQDg0RExNLAQUFQBEOaA8RQAUEBw0PDQkeAgQBAgUGBgQFAgURJhkRNhDDFSYODREsMSwRDQ4mFBAfDA0JGBoYCQ4MH00OCRgaGAkNDB8hH4YNDiYpJg4NESwxLEIKCASRCCEhCJEGEBAJAQYMAQEEBQUDBQcEAickOCUlAAAAAAUAAAAAARoBCwAVAB4AKgAzAD8AADcUBzM2LgEOAh4BNzUGLgE+Ah4BBzI2NCYiBhQWFzI3Fw4BIiYnNx4BNzI2NCYiBhQWFzMVMxUjFSM1IzUz4QETAyA7QC4MHDkgGi4YBiMzMR56CAsLEAsLLhQODQkZGxkJDQcSLwgLCxALCzcTJSUTJSWfBAUgORwMLkA7IAMTAxgvNCcNEysRCw8LCw8LLw4NCQsLCg0HCC8LDwsLDws4JhMlJRMADgAAAAABGgD0AA8AEwAXABsAHwAjACcAKwAvADMANwA7AD8AQwAAJSMiBh0BFBY7ATI2PQE0JgcjNTMHIxUzByMVMzczFSMXIxUzJzMVIzcjFTMnMxUjFSMVMwczFSM1MxUjNyMVMwczFSMBB88ICgoIzwcLCwfPzzkSEhITEyUTExMTE4NdXYMmJl4TExMTSxMTExM4EhI4Jib0CwiDCAsLCIMIC5aDExITEzgSORISEjgTOBITExMSXRISEhMTAAAAAAMAAAAAAOIA4QAIABUAHgAANzI2NCYiBhQWNxQOASIuATQ+ATIeAQc0JiIGFBYyNpYICwsQCwtTFCMoIxQUIygjFBMhLiEhLiGDCxALCxALExQjFBQjKCMUFCMUFyEhLiEhAAADAAAAAAEWARsACAAeADEAADcyNjQmIgYeATceARcWFRQHDgEHBicuAzc2Nz4BFzY3Nic0JicmJyYGBw4BFhceAZYQFhYgFgEVGxYpECYeDyYWMCcUHhADBw8mEishJhkZAhEPHSYTJg8gFyEiECZxFSAWFiAVqAEUECk3KycSFwQJFgsiKi4VLhkMDPQJHyIlFyoQHQMBCQsYTkgTCgYAAQAAAAAA6wEKABkAABMVByM1MycuAQ4CFh8BBycuAT4CFh8BNeoJQjASDSIjGQoKDWENYhAMDCEsLBENAQdCCRISDQkJGSMjDGINYREsLCELCxENJwAAAAoAAAAAASoBLAAVAB0AIQAuADIANgA6AD4AQgBHAAA3Byc3IyIGFBY7ARUjLgE0NjczJzcXEyMnNTczFxUnMzUjNzMXFQcjNTM1IxUjNRcjFTMHMxUjFyMVMzczFSMXIxUzJzEzFSOLKw4aPA0REQ0LCxQcHBQ8Gg4rRXgKCngKeGRkRngKCjIoZBQUPDw8PDw8PDwUPDw8FBQqKhbzKw4aERkSFAEdKB0BGg4r/v8KoAoKoAqMeAqgChSMPEaCFBQUFBTIFDwUPBQAAAEAAAAAAQkBBwAdAAA3IzUzFxUjNQ4BHgE+AiYnNx4CDgMuAj4BWDJBChMaERo5QCsFJB8FGSUSBBorMzElEgQa9BMKQSUTPzwfCzBBNQoSCCMwMywdBxAjMDMsAAAAAAIAAAAAAQgBBwARABUAABMzFTcXBxcHJxUjNQcnNyc3FwczFSO8EjAJMDAJMBIwCTAwCTCWS0sBBzsdEB0eEB06Oh0QHh0QHVtLAAAFAAAAAAEtARIAEgAfACwAMgA4AAATMxcVJic1IxUzFBcjNTM1Iyc1FyIOARQeATI+ATQuAQciLgE0PgEyHgEUDgE3JzcXBxcnFwcXNycR/gkJCuphFE46awrXFSQVFSQqJBUVJBUQGxAQGyAbDw8bEBoaCRMTSxISCBsbAREJbAcFVrAgGhMUCcRsFSQqJBUVJCokFYgPGyAbEBAbIBsPJxsbCRITERITCBsbAAAAAAIAAAAAAPIBGgAGAA0AADcnNycHFRcnFwcXNzUn8ktLDFBQrk1NDFJSeUpLC1AMUFZNTAxTC1IAAQAAAAABGgCpAAMAACUhNSEBGf76AQaWEwAAAAsAAAAAARoBGgALABUAJgA6AEQAWABhAHMAewB/AIYAADc2MhYUBiInByM1MxUUFjI2NCYiBhUHJzcXNTQ2OwEVIyIGHQE3FzczNTQjIgYHFTYyDwEGFRQWMzI/ARUUBiImNTQ/AQcjNQYjIiY1ND8BNCIHNT4BNzIVBzUHBhUUFjI2FzI3NQYiJjQ2Mhc1JiciBhQWJzczFxUHIyc3FTM1JzczFxUHNdoEDggJDgMBCwsEBwQDBwWMJwwTDwssLAQFEgw7DRIECQMHDwELDgcGCAQBBQYDBgcsDAQIBgcOCw4HAwkEEQwHBgMGBDcJBQUMBwgLBAMIDA4NfRKpExOpEhKpcBKEEhL6CQ4YDwcGSjQEBwgOBwgFTigMEx0KEBEGAx0SDA0gFwMCDAUJAQMQBwkJEgQEBwQCBwEBrwcJCQcQAwEJBQwCAgEXCwQBAQcCBAYSAw4ECA4JBA4CARAaD0sTE10TE11dXSYTE14TcQAAAAYAAAAAAOIBGgAQAB0AJwA6AEIARgAANxc3Jwc1NDY7ATUjIgYdAScXMxY+ATQmIgcnIxUzPQE0NjIWFAYiJgcGIyImNSY2MzIXFSYiBhQWMjcnBxUXMzc1JwczFSM8KykNEwYDHRwMEBRvAQUVDQsWBgEQEAYLBgYLBhAHDhATARYRDAYHEQsKEQheExODExODg4PmKyoNEx4EBhIQDB4ULwkBEh4RCydcGwcHCAkRCgmWBRQQEhUDEwULEwsFWxNwExNwExNwAAAAAAEAAAAAAQcBBAAVAAATBxUXNyczMhYXFh0BMzU0LgIrATd2S0sOPSQnNBAeExEmPCkiOwEETA1LDTwQEB9HBgYnOSYTOgAAAAkAAAAAARoBGgAoACwAMAA0ADsASwBTAFcAWwAANyM1MzUjIg4CHQEGFhcWFzM1IyInJic0PQE0NTY3NjsBFSMVMzc1IycjFTMHMxUjFTMVIxcjNTMVIyc3MxcVByMVIzUjIiY9ATQ2FzM1IyIGHgE7ATUjJzM1I/SpS1AGDQkEAQsKBgYFBQMCBgICBgIDrktUChODExMTExMTEwUFOAUXQlQJCS8TEggLCxEJCQQGAQUgJiYTOTlxlhIFCgwGsgoQBAIBEwEDBQMCCgIDBQMBJhMKVHETExITE4M4OBzqCXEJExMLCF4HC3ATBggFExI5AAAHAAAAAAEaASwADwAfAC8APwBHAFcAYAAANzEyFhUxFAYjMSImNTE0NhcxMhYVMRQGIzEiJjUxNDY3MTIWFTEUBiMxIiY1MTQ2NzEyFhUxFAYjMSImNTE0NgczNxcHIyc3FyMVMx4BMjY3MzUjLgEiBhcUBiIuAT4BFp8EBgYEBAUFBAQGBgQEBQUEBAYGBAQFBQQEBgYEBAUFBRNEDVQNVQ4MODgEJTElAzk5AyUxJWwbJxsBHCcb4QUEBAYGBAQFJQYEBAUFBAQGSwYEBAUFBAQGJQUEBAYGBAQFeUUOVFQOrRMYICAYExggICEUGxsnGwEcAAAAAAQAAAAAARoBGgAJABMAIwAsAAA3FTM1FzcnIwcXNxUzNRc3JyMHHwEjFTMeATI2NzM1Iy4BIgYXFAYiLgE+ARaWE0QNVA1VDkQTRA1UDVUODDg4BCUxJQM5OQMlMSVsGycbARwnG/wSEkQNVFQNDC4uRQ5UVA40ExggIBgTGCAgIRQbGycbARwAAAAABAAAAAABBwEIAC8AOABBAEoAACU0LgEOARYXFRQPAScmPQE+AS4BIg4BFhcVFBYfARUOAR4BMj4BJic1Nz4BPQE+ASc0NjIWFAYiJhcUBiImNDYyFjciJjQ2MhYUBgEHFB4XBBAOBTQ0BQ4QBBUcFQQQDggHMw4QBBUdFQMQDTIICAwPuwsQCgoQC2cLEAsLEAsvCAsLEAsL4Q8VAxMcGQMUBgMaGgMGFAMYHBISHBgDFAgOAxsYBBccExMcFwQYGgQOCBQDFA0ICwsQCwuhCAoKEAsLjgsQCwsQCwAAAAADAAAAAAEaASwADwAYACIAADcjFTMeATI2NzM1Iy4BIgYXFAYiLgE+ARYnNTMVNxcHIyc3Xjg4BCUxJQM5OQMlMSVsGycbARwnGzgTRA1UDVUOSxMYICAYExggICEUGxsnGwEcXnl5RQ5UVA4AAAAAAwAAAAABGgEaAAkAGQAiAAA3FTM1FzcnIwcfASMVMx4BMjY3MzUjLgEiBhcUBiIuAT4BFpYTRA1UDVUODDg4BCUxJQM5OQMlMSVsGycbARwnG/xmZkQNVFQNbRMYICAYExggICEUGxsnGwEcAAAAAAYAAAAAAQcBGgAmACoALgAyADYAPQAAJTUnIyIHBgcGBxUUFxYXFjsBNSMiJyYnJj0BNDc2NzY7ARUjFTM3JzUzFSczFSMVMxUjFyMVMxcHIzUzFSMBBwq3BgYNBQIBAwUNBgYFBQMCBgIBAQIGAgOuS1QKvKmWExMTExMTEwkXBTgFcZ8JAgYNBgayBgYNBQISAQMFAwIKAgMFAwEmEglClpaDExMSExNnHDg4AAAABAAAAAABGgEaAAsAFAAYABwAABMzFxUHIwcnNSMnNRczNSMVMxcVPwEzFSMVMzUjHPQJCX82EC8JenrhLgooBxISEhIBGQm8CTYHLwm8sqmpCiEomV4lEgAAAAAEAAAAAAEHARoACQAOABoAHgAAEx8BFQcjJzU3MwczNScjFyMVMxUzNTM1IzUjBzMVI8k4BRKpExNwcKk5cEslJRMlJRMlXV0BFDgOqBMT4RLzqDlLEyYmEyWDEwAAAAAHAAAAAAEaASwACAARABoAIwAwAFYAZgAANxQGIiY0NjIWBxQWMjY0JiIGFxQWMjY0JiIGFxQGIiY0NjIWBzY3Fw4BIiYnNx4BPwEUBgcVMzIWHQEXFQcVFAYrASImPQEnNTc1NDY7ATUuATU0NjIWByIGHQEUFjsBPgE9ATQmI5YWHxYWHxY4Cw8LCw8LOBYfFhYfFjgLDwsLDwsuDgsNCRkcGQoNCRgNEgoJLxggExIhGHAYIBMTIBgvCQoQGBBUEBYWEHAQFhYQlhAVFSAVFRAICwsQCwsIEBUVIBUVEAgLCxALC0UDCw0KCgoKDQkHArcJDwMBIRcTEyUTExchIRcTEyUTExchAQMPCQwQEDsWD3EQFgEVEHEPFgAAAAAGAAAAAAEaARoAEQAWABsAKAAuADcAAAEiBwYHIwcVHwIzNzU2NzY1BzMGBycXJzY3FS8BNjc2NzY3BgcGBwYHNSM1IxU3Ni4BDgEeATYBEC8uJSROCQNwBzgJIRMX8zEXEwdqBxsXQEAQFSMkMC8DHhckF0glE7cGBRMXDQUTFwEZFxMhCTgHcQIJTiQlLi9UGBsHagcTFzEVQBgXJBceAy8wJCMVOBMlOJAJFw0FExcNBQAEAAAAAAElAQcAHgAoADUAPgAANzU3Mx8BMxcVMxcPASM2NzM3IyYnPwEzNSMvASMVBhcUBiImNDYyFhUzFA4BIi4BND4BMh4BBzI2NCYiBhQWEwleBhFsChUJMglGBwUzLWwGCAMGVWcHEFAKVREXEREXECYSHiMfEREfIx4SQhQbGycbG7dGCgMQCi4MhAYICnEHBgMDJQMQMQVXDBAQGBAQDBIeEREeJB4SEh5BHCcbGyccAAAABAAAAAABGgEHABwAJgAzADwAADczFxUHIzY3MzcjFSYnPwEzNyMvASMVBgc1NzMXBxQGIiY0NjIWFTMUDgEiLgE0PgEyHgEHMjY0JiIGFBaRfwkJbAcFVgF3CAkHBnoBegcQUAoJCV4HEBEXEREXECYSHiMfEREfIx4SQhQbGycbG/QKuwkICoQBBgQGAxMDEDEFB0YKA50MEBAYEBAMEh4RER4kHhISHkEcJxsbJxwAAAAAAwAAAAAA9AD0AAQADgAYAAA3IzUyFicVMh4BFTM0LgEHFTIeARUzNC4BXiYQFiYuTi0TM1YzGisZEx8zOCYWrBMtTi4zVjNLExkrGh8zHwADAAAAAAEaAPQACQAOABIAADcXMzc1LwEjDwEXJzczFyczFwcTfA58Pgd8Bz6DbzV0NW8yIlSlfHwOPgMDPnZvNTUiIlMAAAADAAAAAAEgARoABQAIABIAABMHFRc3NQc1HwEzFwcnFSM1BychDg6ppI4wDS8NHxMfDQEZCOEHcBBnvl8LLw0fZmYfDQAAAAAFAAAAAAEXAPgABgAQACAAMgA5AAA/ATUnFRcHJzcXFQc1NycVIxcmDgEeATY3MTY1NCcxLgEHNhcxFhceARUxFg4BLgE3MTYXByMnNxc3n3eahmNqDp9DLoYSIRgmDhEpLhAPEwgVLQ0TEQ0GCAEWIx4PBgVKIw0RDAwdL1AOZxVZQqwHag4tFR9ZQA4BGS0sFwgTFBYbFQgKGAoBAg0GEwsQHQgSIBIREyMRDQwdAAMAAAAAARYBBwAFAAgADwAAEwcVFzc1BzUXBzc1JxUXBzQODqmlj1akpI6OAQcI4QhwEGe+X3VtEG4XX18AAAADAAAAAAEgARoABQAIABIAABMHFRc3NQc1HwEjJzcXNTMVNxciDw+ppY49DS8NHxMfDQEZCOEHcBBnvl+OLw0fZmYfDgAAAAAEAAAAAAEWAQcACQAcAC4ANQAAPwEXFQc1NycVIwcmBgcGFhceATY3MTY1NCc1LgEHNhcxFhceARUxFg4BLgE3MTYXByMnNxc3Xg6pbFaOEwMZKAgEAgQJKzEREBQJFjAOFBIOBwgBGCQgEAYFTyUOEg0MH/8IcRBIFzlfRA8BGhkMGAwWGQoTFRceFQEICxkKAQINCBQLER8IEyETExUlEw0MHwAAAAAEAAAAAAEWAQcACQAcAC4AOgAAPwEXFQc1NycVIwcmBgcGFhceATY3MTY1NCc1LgEHNhcxFhceARUxFg4BLgE3MTYXJwcXBxc3FzcnNydeDqlsVo4TAxkoCAQCBAkrMREQFAkWMA4UEg4HCAEYJCAQBgUsFgwXFwwWFwwXFwz/CHEQSBc5X0QPARoZDBgMFhkKExUXHhUBCAsZCgECDQgUCxEfCBMhExMXFwwYFwwXFwwXGAwAAAAABAAAAAABGgEaAA8AGAAcACYAACUvASMHFSMHFRczNzUzNzUHIzUzFTM1MxcHNTMVFyM1LwIjNTMXARYcBqAJLwkJvAkvCUuoEnEPFl0lcSYDHAZekhf6HAMJLwm8CQkvCaDOqDk5Fg8lJUteBhwDJhcAAAAFAAAAAAEaARkAFAAYACAAIwAnAAATHwEVIwc1JyMVIzUjFTMHIyc1NzMHMzUjHwEVDwEnPwEPAT8BFzcnzx8GCgkfBnElOAouExOcPyYmehxyOQwccmcKEwMPYQ8BEx8OBgkPIEtLvBISvBNLOTkcDXIcDThyhxMJHQ9hDgAAAAMAAAAAARoBGgAJABIAFgAAEx8BFQcjJzU3MwcVMzUnIxUjNTMVMzX6HAMJ9AkJ2M7hFyKDSyYBFx0G2AkJ9AkS4coXS0s5OQAAAAAGAAAAAAEaAQcAAwAHAA4AFQAcACMAADczNSMXMxUjJyM1NzMVIzcVIzUjNTMHMxUHIzUzIzMVIyc1Mzi8vCZwcDgTCUI48xI5QgkSCUI54ThCCRNLliVLS0EKEwlBOBOWQgkSEglCAAYAAAAAARoBGgAGAA0AFAAbACMAJwAANyM1MzUzFTc1IxUXMzUHFTM1MzUrARUzFTM1JzcHIyc1NzMXByMVM0IvJROpEwkvOBMlL9clEwmfCYQJCYQJJUtL4RMlLwolLwkTsi8lExMlLwkcCQleCQkcJgAAAwAA//8BLAEQABIAHwAvAAATIg4BFRQWFwcXNxYzMj4BNC4BBzQ+ATIeARQOASIuARcHIyc3FzczFzczFxUnByOWFycWDAtFDUYVGhcnFhYnWRIeJB4SEh4kHhJVKA4cDRYoDSkoDR8lKQ0BEBcnFhEeDEUNRg4XJy0nF1QRHhISHiMeEhIegigcDRUoKCgfGiUoAAQAAAAAARsBHwAcACkAMgA6AAA3DgEXFhcGFxUnByc3LgE+AR4BFRQHJic1NC4BBhc+AR4CDgIuAjYXFjcWNycGFRQ3FzYnNiYjImwTCQsIDwIBCUcORxcFJEFCKQEICR0vMicQKSQWAxIiKCQWAhESERcSD08KGE4LAQEhGBLuEzUYEgwJCQMGRQ1FGUU6GRM3IwcIBwYCGioUCmQLAxIhKCQXAhEiKCRbEQEBC04OEhhGTw8SFyEAAAAAAgAAAAABLAEtAA8AHQAAEyIOARYXBxc3HgE+AS4BIxUiLgE0PgEyHgEUDgEjvx8zGQkUZA5kG0M4FhQ3IRcnFxcnLiYXFyYXASwhODwWcwxyFQImQEEouxYnLicWFicuJxcAAAIAAAAAARoBEAAGAA0AABM3FxUHJzcXBzcnHwEVEw74+A4dFBjR0RhlAQgIcBFwCG8JV2JfVgISAAAAAAYAAAAAARwBGgADAAcACwAdACEAKQAANzMVIxUzFSMVMxUjFyE3MzU0PgI7ATIeAh0BMwczNSMXJyMVIzUjB3FLS0tLS0ur/vQYIwMFBwRwBAcFAyOmcHCmDhWWFQ70E14SExNLXqkDBwUDAwUHBKgmz/Q4JSU4AAYAAAAAARoBBwAMABAALgA3AFUAXgAAEzMXFSM1IxUzFSMnNRczNSMXNSYnByc3JjcnNxc2NzUzFRYXNxcHFgcXBycGBxUnFBYyNjQmIgYXNSYnByc3JjcnNxc2NzUzFRYXNxcHFgcXBycGBxUnFBYyNjQmIgYc9AkS4YONCRPh4V0FBBEKEgEBEgoRBQQTBQQSCRIBARIJEgQFFwgLCQkLCWUFBBIJEQEBEQkSBAUSBQQSCREBAREJEgQFFwgMCAgMCAEHCno5hBIJzi8mqRUBAwoRCgUFChAKBAEVFQEEChAKBQUKEQsEARUvBggIDAgIbRQCAwoQCwUFChAKAwIVFQIDChAKBQULEAoDAhQvBgkJCwkJAAAGAAAAAAEHARoABwAbACMANwA/AFMAADcnNTczFxUHJyMVIzUjFSM1IxUjNSMVMzUjFSMHJzU3MxcVBycjFSM1IxUzNSMVIzUjFSM1IxUjFzc1JyMHFRc3NTMVMzUzFTM1MxUzNTMVMzUzFS8JCc4KCkETExMSExMTvCYSjQkJzgoKjBMTE7wmEhMTExKMCgrOCQkJExMTEhMTExImzgo4CQk4CjkTExMTExMmJhODCTgKCjgJOBMTJiYTExMTE4MJOAoKOAkTJRMTExMTExMTJQAAAAQAAAAAASwBLAAXADcAQwBOAAA3FxUHFwcnByMnByc3JzU3JzcXNzMXNxcHNzUvATcnBy8BIw8BJwcXDwEVHwEHFzcfATM/ARc3LwE2MzIWFRQOAS4BNhcWMzI2NC4BDgEW+DQ0HissCzwLLCodNDQdKiwLPAssKzEyMgccESsRChkKECsSHQcyMgcdEisQChkKESsRHGALDRIZFB4bCwgZBgYJDAkPDgYFvws8CywqHTQ0HissCzwLLCseNDQeK2wKGQsQKxIdBzIyBx0SKxALGQoQKxIdBzIyBx0SK0sHGRIPGAYOHR0tAwwRCwMHDg8AAAAEAAAAAAEHAP4AGQAjADwARgAANzIWFzMyFhQGByMOASImJyMiJj4BNzM+ATMXIgYUFjI2NCYjNzIWFzMyFhQGByMOASImJyMiJjQ2NzM+ARciBhQWMjY0JiNxDBUDaAQGBQNqAxUZFQMdBAYBBAMfAxUMAQgLCw8LCwhMDBUDHQQGBQMfAxUZFQNoBAUEA2oDFQ0ICwsPCwsIehAMBgcFAQwQEAwFCAUBDBATCw8LCw8LlhAMBQgFAQwQEAwGBwUBDBATCw8LCw8LAAAFAAAAAAEZARoADAAlAD0AQABCAAA3IwcVFzM3NSMVIzUzFyM1NDY3NTQ2Mh8BFQcGIiY9AQYHBg8BIzciDgEPATM2NzY3NjMXFBYyPwEnLgEGFQcyMCMxXkIJCc4KE7s4ExMqIQ8VB0VFBxUPFQoEAgETTBQhFQEBBAUKDxcJCQEDBgJERAIGAzkBAeEJvAkJOC+pcC8hNAYYCg8ISRlJCA8KFAURBwoGehMgEyEPCw8EASgDAwJJSAIBBAOiAAADAAAAAAEaARwAJABFAFEAADcuBTc1NzI+Ajc2NzYXFhcWFx4DMxcVFA4EBycVFB4DHwE2Nz4EPQEjJicmLwEmJyYHDgMHFz4BLgEiDgEWFwczmw8cGhYRCgEJChARDwcLDBITDAsGBQgPERAKCQkRFxkcD2wIDxUYDRYMCw0YFQ4JCwkKFBEJCAoODwkRExMKaAkKBBAUDwQJCgglGAkTFhkeIxI8CQIDBgUHBAUDAQYDAwUGAwIJPBIjHhkWEwnRMxAdGxcVCA8HCAkUFxsdEDMBAgQLBQQCAgQDCwgEAVEEEhMNDRMSBDEAAAMAAAAAARsBBwAVABkAIwAANzUXNScjBxUfATc1Mzc1BxUjNS8BMwcnNR8BMxUjFwcnNTcXzxIJqQkGXgxCCRI5BkSDTEtLOl1cHg4uLw3lARMqCgrKCSAJEwkqEw6cCBjUGa0ZLhMeDS4NLw0AAAADAAAAAAEbAQcAFwAbACUAADcVNzUnIwcVMRUfATc1Mzc1JxUjNS8BMwcnNR8BIzUzJzcXFQcnzxIJqQkGXgxCCRI5BkSDTEtLe15dHg0uLg3lHRMiCgoJwQkgCRMJIhMsnAgY1BmtGUATHg0uDi4NAAAAAAUAAAAAAR0BHQAMABkAIgArADgAABM+AR4CDgIuAjYXHgE+Ai4CDgIWNxQGIiY0NjIWFxQGIiY0NjIWByImJwceAT4BNycOAU0dRz8oBCA7RT8oBB4pGTw2IgQbMzs2IgQaPAsQCwsQC14LEAsLEAtCEBoIEAolKiMJEAccAQMUBR87RkAnBB48RT+3EAUbMj02IQQbMjw1XwgLCxALCwgICwsQCwtTEA0JEhUBFhMIDhEAAAMAAAAAARoBGgAIADEAWAAANxQGIiY0NjIWJyIGFRQXByMVMxUzNTcWFzMVIyIGFSIGHgE7AT4BNCYjNCYjNTQuASMHNDY7ATIWHQEXMzIWHQEzMhYUBisBIiY0NjsBNTQ2OwE3NScjIiaWBQgGBggFLxMcCBUiHRIVDA4cEhAWEBYBFRCpDxYWDxYQER8RQhAMJhMbCgkICxMICwsIqQgLCwgTCwgcCQkmDBDqBAUFCAYGKxsUDgsVExwhFQcBJRYPFiAWARUgFg8WQhEfES8MERwTSwoLCBILEAsLEAsTBwsKOAkRAAAHAAAAAAEaAQcACgAOABIAGgAeACIALAAAEwcVMzUzFTcXNScHMxUjByMVMycHFRczNzUnBzUzFScjFTM3IxUnBxczNycHgxIShAMPEnEmJjgmJjgTE4MTE4ODEyUlXhMWDSYNJg0WAQcTODguAw86EyYlOSVLE14SEl4TcV5eOSaWSBYOJiYOFgAAAAQAAP//AQcBLAAsADUAPgBHAAAlNC4BDgIeARcOASsBIgc1PgEuASIOARYXFQ4BHgI+ASYnPgE7ATI2Nz4BJzQ2MhYUBiImFxQGIiY0NjIWNyImNDYyFhQGAQcOGBoWCQQSDQUSCyUWEBIVAxskGwMVEhIWAxkkHAYSEgUSCyUSHQYRGM4QGBAQGBA4EBgQEBgQZwwQEBcREcUNFwwCEBkaEwQKCw9bAx0kGBgkHQNyBBwkGQIWJB4FCgsVEQIbSQwQEBcREcIMEBAXERFuERcQEBcRAAAAAAIAAAAAARoBGgAsAFcAADcWMjY/AT4BPwE+Ai4BLwEuAS8BLgIOAQ8BDgEPAQ4CHgEfARYXFh8BFhcWMjY/AT4BPwE+Ai4BLwEuAS8BLgIOAQ8BDgEPAQ4BFBYfAR4BHwEWZQUNCgIIBA4KGgUGAwIGBxkKDwMJAgkJCQYCCAMPCRoFBgMCBgYaDAkEAwgCeAQKCAEFAQcFDgUFAQMFAw8EBwEFAgYIBgUCBAIGBQ4FBQUFDgUHAQUBYQMHBhoKDgQIAgYJCQkCCQMOChoGBgIDBwQaCg4DCQEHCQkJAggECwYHGgZPAwUFDgUHAQUBBwcHBQEFAQcFDgUFAQMFAw4FBwEFAQgKCAEFAQcFDgUABAAAAAABGgEaACwAQABrAH8AADcWMjY/AT4BPwE+Ai4BLwEuAS8BLgIOAQ8BDgEPAQ4CHgEfARYXFh8BFj8BFx4BHwEHDgEPAScuAS8BNz4BFxYyNj8BPgE/AT4CLgEvAS4BLwEuAg4BDwEOAQ8BDgEUFh8BHgEfARYvATc+AT8BFx4BHwEHDgEPAScuAWUFDQoCCAQOChoFBgMCBgcZCg8DCQIJCQkGAggDDwkaBQYDAgYGGgwJBAMIAgcKCAUVDhoaDhUFCQkEFQ4aGg4UdgQKCAEFAQcFDgUFAQMFAw8EBwEFAgYIBgUCBAIGBQ4FBQUFDgUHAQUBDQMDCQ0DAQEDDQkDAwkNAwEBAw1hAwcGGgoOBAgCBgkJCQIJAw4KGgYGAgMHBBoKDgMJAQcJCQkCCAQLBgcaBocaGg4VBAoJBBUOGhoOFQUJCQUUyAMFBQ4FBwEFAQcHBwUBBQEHBQ4FBQEDBQMOBQYCBQEICggBBQEHBQ4FMgEBAw0JAwMJDQMBAQMNCQMDCQ0AAwAAAAABGgEaAAcACwAPAAABIwcVFzM3NQcjNTMXIzUzAQfPEhLPEoNeXnFeXgEZEs8SEs/Pz8/PAAAAAwAAAAABGgEaAAcACwAPAAABIwcVFzM3NQcjNTM1IzUzAQfPEhLPEhLPz8/PARkSzxISz89eE14AAAAAAwAAAAABGgESAE0AnACmAAA3JiMuASMVDgEHFRYXFhcyMQYHBgcGHQEUFjI3MwYHIw4BFQYWOwEWPgInJi8BLgE2PwEzMhcWFxY2NzY1NCcmJyYHBgcGByYnNTQmJxcWBwYHBisBNDY7ATUmNjcnBgcjIgcGJj4BOwEyNj8BBiYnPgE3MzIXFhcWHwEzNSY2Nz4BNzYXHgEXFRQOASYnJgcOAQcGFh8BHgEHJi8BIgYUFj4BNCYjaAEBAg8KFh4EBREICgEQCggEAwsPBycFAgYRFwEEBH0QHBYJAQENAgcFAwMCAwMDBgcKEgUCDQwRGBoSDQoFBQcPDGQCAgMOCAluCggYARIODAgDPAMCBQUECgcTBAUBBg8cCgQhFQIIBwoQCAYBAwECAQQTDhMQDRECBQcIBAoLBwkCAwcIAgoBBgEHgwQGBgcGBgT6AQkMGQkjFwgKBgQCAgcGCAYHBgcKAwkKAhsSBAUBCxcdEBYRAwgLCQIBAQQCAQkJBgcRFhILDQUDDgsOBwcDCxABuQ8JDggDBwsKDRQBEQMCAQIDCwgFAxgCCQoVHAEDBRULCgEBBxcGDBMCBAkIGwwCBwUCAgIGAwIKBwsXCAMMHg0NDHAFCAYBBQgFAAAFAAAAAAEaARoACQANAA8AEQAbAAA3JwcjFwc3Fyc3BzM3DwI3IwczNxczBxcnBze0Hh5lUh9QUB9S7VIYGBAYqlJSLA4OLCQOJCQOt2JiQGQ+PmRACU9PNFCEES0tHC0cHC0AAQAAAAABGgEaAAkAADcnByMXBzcXJze0Hh5lUh9QUB9St2JiQGQ+PmRAAAAEAAAAAAEaARoACQAPABAAEgAAPwEXMwcXJwc3Jx8BJzcjJzUXI3geHmVSH1BQH1KDJA4kLA5qUrdiYkBkPj5kQEccLRwtM08AAAAAAwAAAAABFgEbAAMAGQAsAAA3MxUjNx4BFxYVFAcOAQcGJy4DNzY3PgEXNjc2JzQmJyYnJgYHDgEWFx4BcUtLMBYpECYeDyYWMCcUHhADBw8mEishJhkZAhEPHSYTJg8gFyEiECa8S6gBFBApNysnEhcECRYLIiouFS4ZDAz0CR8iJRcqEB0DAQkLGE5IEwoGAAAAAAUAAAAAARoA9AAJABMAHAAlAC4AADczNSMHFRczNSM3IxUzFSMVMzc1BzI2NCYiBhQWNxQGIiY0NjIWFzI2NCYiBh4BJhIcCQkcEuocExMcCbsICwsQCwtTCxALCxALJQgLCxALAQrhEwqoChOpE5YTCqhnCxALCxALEwgLCxALCxsLEAsLEAsAAAAAAgAAAAABGgEHAAkAEwAAEwcVFzM1IzUzNRc3NScjFTMVIxUcCQkvJSXFCQkvJiYBBwrOCRK8E+EJzgoTvBIAAAIAAAAAARoA9AAHAB8AAD8BMxcVByMnNyMVIzcnBxUXNyczNTMnNxcVByc3IxUzEwn0CQn0CfRxTCcNODgNKE1JJw03Nw0nSXHqCgqoCgqfQScNNw43DSgSKA03DjcNJ0EAAAAEAAAAAAEUARoAIAAkACgALAAANzM3NScjByM1NzUnIwcVFzM3FRczFRczNzUnIwcjNTMVNxcHJx8BBy8CNxfVDTIZDSJeIyYNSyUOFQlYGA4yGQ0jXk84DCUMJQwlDJAYPRl2Mg0ZIhgiDiVLDSYWbQkKGTIOGSNLCSoLJgw4DCYMeBk9GAAABwAAAAABGgEaABkANQA+AEcAUABZAGIAABMiDgIdAR4BPgEeAg4BFhczMj4BNC4BIwcjLgE1Jjc2NCYiBwYnIiY9ATQ+ATIeARQOASM3FAYiJjQ2MhYXFAYiJj4BMhYnMjYuASIGFBY3FAYiJj4BMhYXFAYiJjQ2MhaWGjAlFAETGhQcFAEUAw4PCyM9IyM9IwEKBAUCCA8fLBAHCgIEHzM9NB4eNB4SCxALCxALOAsQCwEKEAuDCAsBChALC4sLEAsBChALEwsQCwsQCwEZFCUwGggODQQTARQbFRwVASQ8Rzwk9QEEBAwIECsgEAgCBAMHHzMfHzM9NB68CAsLEAsLiwgLCw8LC1YLEAsLEAsTCAsLEAsLQAgLCxALCwAABAAAAAABGgD0AAMABwAPABMAADczFSMXIxUzJzczFxUHIyc3FTM1S5aWlpaWzhPhEhLhExPhvBMmEnATE5YTE5aWlgAGAAAAAAEaAQcADAAVABkAHgAiACYAAD8BMxcVByM1MzUjFSMXNScjBxUXMzcnFSM1Nyc1MxUnMxUjByMVM4MTcRISS0txEyYTcBMTcBMTcIsIS0tLSyZLS/QTE14TE144ORMTE14SEl5eXhMICxM4E10TAAcAAAAAARoBBwAMABEAGgAeACIAJgAqAAABIwcVMzUzFSMVMzc1BzMVIycHIwcVFzM3NScVIzUzBzMVIxUzFSM3MxUjAQdxExNxS0sScEtEByZdExNwExNwcF5LS0tLcUtLAQcTODheExNeOBMHBxNeEhJeE3FeExITE5YTAAAAAgAAAAAA7wEaAAsAEgAAEzczFwczFwcnNyMnFwc3IzcjB4sRPg8pIQ6GHigXEUc2hUU+PkABDwodQCCJFkgbCWOJXoQAAAAABAAAAAABGgEHAAsADwATABcAACUnIw8BFR8BMz8BNQcnNRc3JzcfAQc1NwEPXhGDCgpeEYMKoFRUCVd9Vwd6etgvQhFUES9CEVSRKkYmECc/LFc9STkAAAMAAAAAAQcBGgAJAAwAEwAAJS8BIwcVFzM3NQcjNQc1MxUXMxUBBD4GkQkJzgoTOIRxCULZPgIJ9AkJtgQ54eFCCZYAAgAAAAABGwDiABcAIQAANyIGByMuAQ4BFB4BNjczHgI+Ai4CByImNDYyFhQGI9gZJQM6BBcdEhIdFwQ6AhUfIhwPAhIdERQbGycbGxPhIBgNEAMVHRUEEA4RGw4EEx4jHBFwGycbGyccAAAABQAAAAABGgDrABIAJQA/AEoAZQAANxY+ATc2JzYnLgEjIgc1IxUzNTc2FzYXFhUWBw4BJwYmNzUmNzYnDgEPARU3NjcyFhUHDgEUFjMyPwEVMzU2JhcUBiMiJjQ3Nj8BFxY3Fj8BNQcGIiY0NhcyHwE1JyYiBgcGFBcWhwoUEgYNAQEMBhAJEAwTExAFBgsGBwEJAwkGCw8BAQgEUAkRBwIICw8HCRcOFRMOCwkGEQETAQ8LBgkECAoTnAgKDgwDCQkXEBINCggIAwoWEwcPDgZfBgEICBEWFA8HBws0jwZMAwEBCQoNDw0EBgEBEQsLDAoEFgEFBQEXBwoBDAgEARIaEgYFCT8QFzkNEQgMBAUBAy8EAQEIARYGBxQcFgEFBRYBBQgHESoQBwAACAAAAAABGgEHAAMABwALAA8AEwAXABsAHwAAJSM1MwcjFTMnIxUzFyMVMycjFTM3IxUzJxUjNRcjFTMBGV1dEiYmS6mpJc7OXnBwll1dg4NwXV3hE0sTExNeEksTExOpOTkTEwAAAAAEAAAAAAEHARoACwAPABMAFwAANycjDwEVHwEzPwE1Byc1Fyc3FwcXBzU3/V0TXgkJXhNdCnpVVVBZWVleVFThODgQcRA4OBBxozJhLkE1NTFDMmUuAAAABQAAAAABHAEaAAgADAAQAB0AKQAAEzMVFhc1IxU3FycHMyc/ARc3PgEeAg4CLgI2Fx4BPgImJyYOARZLlgoJvBMoFUuWdiALKyoPIyAUAhAeIh8UAg8ZChkXDgIMChAmFggBB0sBBGKfISolgxM4E0t4CgIPHiMgEwIQHSIgVAcCCxUaFgcLCCAmAAACAAAAAAEHAQcARgCNAAA3NSMiDgEHMQYHMQYXFRQHMQYHBisBFTMyFxUWFxUWFzEWHQEGFxUWFzEeAhczNSMiLgI9ATQmJyYnNjc+AT0BNDY3NjMXFTMyPgE3MTY3MTYnNTQ3MTY3NjsBNSMiJzUmJzUmJzEmPQE2JzUmJzEuAgcjFTMyHgIdARQWFxYXBgcOAR0BFAcOASNxAgkRDAMDAQEBAgQKBQYBAQYFBQMEAgIBAQEDAw0QCQICBgoHBAICBQkJBQICCQcFBk0BCRANAwMBAQECBAoFBgICBgUFAwQCAgEBAQMDDBEJAQEGCgcEAgIFCQkFAgIIAwoG9BMHDQgICAgIEAYFCgUCEgIBAgMBAwUFBhAICAEHCAgNBgETBAgKBhkGDAULBwcLBQwGGQkNBAK8EgYNCAcJCAgQBgUKBQISAgECAwEDBQUGEAgIAQcICA0HARIECAoGGQYMBQsHBwsFDAYZDAgEBAAAAAIAAAAAARoBGgAbAB8AABMVMxUjFTMVIxUjNSMVIzUjNTM1IzUzNTMVMzUHFTM1zktLS0sSSxNLS0tLE0tLSwEZSxJLE0tLS0sTSxJLS0tdS0sAAAgAAAAAARoBHAAOABkAHQApADUAQgBPAFMAABMWFxYUDgEjIiY1NDY3Nhc2NzQuAQ4BFB4BNwcXNxczFTMVIxUjNSM1MycXBxcHJwcnNyc3FzcuASIOAR4DPgIHBgcGJy4BPgIWFxY3IxUzNgoEAgYMCAoPCAcKBAYBBQYGBAUGTGQNY1MSLy8SLy9sDSEhDSEhDSEhDSE6AwwQDQUBBwsNDAcBEQEEBgUCAgEFBgUBBY1LSwEXBAkFDAsIDwsHDQMEJQMHAwYCAwUHBQIiZAxjhy8SLy8SJQ0hIQ0hIQ0hIQ0hcAcJCQ0NCgYBBwoNCAQBAwUBBQYFAQICBTQTAAADAAAAAAEZAOEAGwAiACkAADcjNTQmKwEVFBY7ARUjNTMyNj0BIyIGBxUjNTMXJzcXFQcnIyc3JwcVF84SBgQTBQQKOQoEBRIEBQEScDccDiIhDqccGw4hIrwJBAVnBAUTEwUEZwUECSVMHA0iDiEOGxsNIQ4iAAACAAAAAAEaARsAHwBDAAA3Ii4BNzY3JjQ3Njc+AR8BBxc3FxYUBgcGBw4BJwYHBjciBwYHDgEfAQcGBwYeAjI3Nj8BFxY2NzY3PgE1NCcHJzcmNQ4TAggjQAUGChURKRIMNhc4BQYMCwYIECUSRCAJiRIQBgUOBwgDBEQjAwEHBggDHkkFBQ8gDgYFCQkBMTAwBhMTGQomPg4eDhgNCwQIBTgXNgwPIB4LBgULBAdFHgj1CwMFDiYSBgRCJQULBwIDG0sEAgcDCQMFCRcNBgYwMDEBAAIAAAAAAPQBGgAHABsAABMHFRczNzUnBzUzFSM1MzUjNTM1IzUzNSM1MzVLExOWExOWlpYmJktLJiZLARkS4RMT4RIlE+ESEyYSJhMlEwAACAAAAAABGgEaAAkADQARABUAGQAdACEAJQAAEwcVMzUzFTM1JwM1MxU3IxUzNzMVIzcjFTM3MxUjMzUjFSczFSMvCRLPEgnqEiYTExMSEjgTExMSEl0SJhMTARkJ2M/P2An++hMTExMTExMTExMTExMTAAAHAAAAAAEaAQcABwALAB8AKQA2AEAAUgAAEwcVFzM3NScHNTMVJzM1NCMiBgcVNjIVBwYVFBYzMj8BFRQGIiY1ND8BFyMVIzUzFzYyFhQGIicVFBYyNjQmIgYXMjc1BiImNDYyFzUmByYGFBYmExPhEhLh4aMNEgQJAwcPDA4HBggEAQUGAwYHKwELCwEEDggJDgQEBwQDBwVFCQUFCwcHDAQECAsODQEHE6kTE6kTvKmpOiAXAwIMBQkBAxAHCQkSBAQHBAIHAQEUBkofCQ4YDxwFBAcIDgcIIQMOBAgOCQQOAwEBEBoPAAAAAAYAAAAAARoBBwAHAAsAEwAYACAAJQAAEwcVFzM3NScHMxUjBzczFxUHIyc3IxUzNTM3MxcVByMnNyMVMzUmExPhEhLh4eETEzgTEzgTJRI4XhI5EhI5EiUTOQEHEzgTEzgTEzhLEhI5EhI5OTkSEjkSEjk5OQAAAAYAAAAAARoA4QAJABMAHwAjACcAKwAANzM1IwcVFzM1IzcjFTMVIxUzNzUHFxUPASMvATU/ATMHFzUnNxc3Jwc3NQcmJS8JCS8l6i8mJi8JPAQGVAkuBQZUCVAcHAsbPxsbQkLOEwmWChOWE4MTCpYnCC8JJRwILwgmVxEZEQ8QHBBXHRodAAADAAAAAAErAQgAEQAjACcAADcnPgEeARc3FwcjJzcXLgIGHwEGLgInByc3MxcHJx4DJzcXB2cPGj02IAEXDicPJw8XARosMUAPGjoyHgEXDycOKA8WAhgnLpIN3w3nDREDHDMfFg4nKA4XGCoYAbMNDgEdMR0XDicoDhYXJxcDvg3QDgACAAAAAAErAQ0AEQAjAAA3Byc3MxcHJx4CNjcXDgEuATcnBxczNycHLgIGBxc+AR4BJhcPJw4oDxYDKT05Dw8TRUkwzRcPJw8nDhcBLkhFFA8QOjwnkRcOJygOFh8vDRocCyEeETovFw4oJw4WJToTGyALGxgQMAALAAAAAAEHAQcABwALAA8AEwAXABsAHwAjACcAKwAvAAATIwcVFzM3NQczFSMXIzUzHQEjNSczFSMVMxUjFTUzFTM1MxUzIzUzNSM1Myc1MxX94QkJ4Qrhzs6DODg4Szg4ODg4EzhLODg4ODg4AQcKzgkJzgkTOCU4JSU4JRMlOSYmJiYmEyUTJSUAAAMAAAAAAScBBwARACMAMAAAEyMPARUXMzcWMj4BPwE0Jic1ByYjIgYUFjMyFxUHBg8BJzczFx4BFQYVDgMnPwH4YgZ9YQ0qEiolFwIBFBETDg4EBQUEDw1JAwIlVHNUEwkKAQIRGx4ORQMBBwN9DWIqChQiFQoVJQwqIQUFCAYGKEoBAyZUdDkKFw0FBQ8ZDwIGRQcAAAAABQAAAAABGgEaAAgAFQAeACsAOAAANzI2NCYiBhQWNxQOASIuATQ+ATIeAQcyNjQmIgYUFjcUDgEiLgE0PgEyHgEHMj4BNC4BIg4BFB4BlggLCxALC1MUIygjFBQjKCMUSxchIS4hIZojPEg8IyM8SDwjgx8zHx8zPjMeHjODCxALCxALExQjFBQjKCMUFCNMIS4hIS4hOCQ8IyM8SDwjIzyUHjM+Mx8fMz4zHgAAAAAEAAAAAAEaARoABgAKAA4AEgAAPwEnBycHFzcjNzMHMxUjFyMVM0NrDWQcDiLkmStuqKioqKiorl0OViIMKh8mSyYlJgAAAAAFAAAAAAEGARoAEwAXABsAIAAqAAATHwEPAS8BBy8BBy8BPwEnPwEnNwcXNyc3FzcnNxc3Jw8BFyMnFSM1ByM30wsnBD4LA0MKAzALDgUvAwRDAwVnBioHChU4FAojKyEuBTkWIxMjFSABGQRdCxoECBwEBxQFHwsUCAodCAtiEBEQFy4YLRhNE00Tc1s4S2FOSQAABAAAAAABEgEjABcARwBRAG4AACUnJiIPAQ4BHQEUFh8BFjI/AT4BPQE0JgcVFA8BBj0BBiciNTc0NzMWNzY0IiY1NDc1ND8BMh0BNhcyDwEUBzEmBhUUFjMyFDcUIwcjNTQ/ATE3Bw4BHQEUFyMiLwEuAT0BNDY/ATYyHwEWFy4BBwEAWQgSCFkICQkIWQgSCFkICQlNAQUBBQUBAgEBBQQHDQYKAQUBBAQCAQIBBQoEBAwkARYBARYQVAkJCAUHB1kGCAgGWQcPBlkLAgIJBuk1BQU1BRAJagkQBTUFBTUFEAlqCRCfCAEBAwECCAMCAQcBAQECAw0EBw0ICAEBAwEIAgECBgEBAQUHAgIaBAEOBgEBDXw0BQwJZwsDAzUEDgdqBw4ENQMDNQcNBAIDAAcAAAAAASwBGgADACAAJAAoADAANAA4AAA3FyMnByIOAhQeAjI3FwYjBiIuAjQ+AjIWFwcuARczFSMVMxUjNyEHFRchNzUHITUhNSE1IcwmDiVTCAwKBQUJDBIJAgQFBxAQDAcHDBISCgICBAklExMTE43+5gkJARoJE/76AQb++gEGqV5eCwUJDxANCQUDCQICBgwRFBEMBwICCQICCBMSE7sJ9AkJ9OqoEyYAAAAAD///AAAA8gEtAAQBFwEaAS0BNQE7AUoBUAFSAVcBXgFjAWQBbgF0AAATIisBNxc2NQc2PQEjLgEnLgEHPgEnDgEHBgcGMzcwByMOAQcUNjEHJgcGBzMGBzEGFQcGFRQXBxcjHgMXJicUFhcHFh8BJhcWHwE3BhczHgEzBxYXMxYXJxceAhcjJicuAjcmNzQnNTY3NTEWPwE2NzM2NzY3MTY3FTY3Nj8BBjM3BzYXMTIzBwYxFjcxNhcnFxYXMjcxNhcVFhcyJzEeARcmMRUWIxYXNSYnFCMxJgYXFjcxNDEXFh8BIicxJhUeARUxIhUUFjczBwYXJxQVMRYHNjQHFgcxBhUnBhYHNjUxNDciDwEOASc0JyYnJjc2NzY3PgIWFy4BDgEXNzI1FB4BNxU2PwEHBjY/ATY1MSY/AQcwOQEUFhcWNwYuAScyFzEWFyYnFhc3IiMyFiMwJxc0IgcXFAcGBzQmNjcUBzEGFD8BNgcuATcWNycPAhcWFycWHwEnJic3BwYHNicVMDMxMhQPATU2BxQHNTQ3hQQDAg5IAwICAQEbEA0jCQEGAQcIAwYGAQEGAwUFCAUEAggPDQUDAgQFAQIEAQMBAgQFBQQEAgUDAgIDAQQDAgYDAgEIBQEIAwMFAgEDBgMGBQ0OBQQUBxwyHAIBAQEHBwIDAwMBAgEFBAcHAgcMBw0IAQEPBwUEBAUFAgUFBgYBCwoKAgIEBQEIAQUPGgUDAQEEAgYGAwIBAgEBAgEBAQEBAgEDAQIBAQIDAQMBAgECAQUEAwQBAwEBAQUHECYUAhIGCQMCAgMFBBIWEgUJGhgOAQEBFR8OBQMJAQMFDgMBAQIEVAYDCxIJGxgGAQUIBAQGCQsDAQEGAgIENgIBAgMCBAQBBAICBAEDGQUGBAcFGgEnAQMEAwUCAgEBAwGMAQIGB+ACAQEEAgYCAwErAZAIBgUIEAoTJgcGAgQBAQEBAgIEAgEBAgEDBgECAwEPDAkFBwkEDBEIDQUHBwkEAQUJAQQCCQUCAwIBAgYDCAQCBQkDBwQBAgMCBAUGBQICAQIILUAhBgwPAgIWDgECBQUHBAQGBAcGAgMGBwMGAwECBAEBAQEBAgECAwQDBQEBAgEDBAUIHhEEBAULCgEUCQIBAwUCAQEEAgYFAgMBBAYBAwUDAQQJBwgDBAUGBgkDBwoIAwQHBQQCAQECBQcNBQcBAg4LDxcBBgsDBwwBCgcIBAsZDgECERsLBwEBAggCAwENAwICAgMDKQEEAgQBBAYQCgUKAQMICgW7AQF6BgQDAQsHBgEBBAUCAgQBAgEEEwECAQEBmQGfBAQGAxcEAgUCBgMYAg8NDlcBAQMDAQMVBAQCBAQAAAUAAAAAARIBLQBaALEAzwEZAT4AADceAR8BFh8BHgEUDgEPAQ4CBw4BIyImJyYvAiIPASIPAQ4BIiYnJi8BLgI0NjUnNDY3Nj8DJzQ+Ajc+ATUnNDU0PgIzMh4CHQEWFxYfAR4CFRQnMhYfARUPAQYPAQYUFxYfAR4BOwEyPwM0LwIuAS8BPQE0PgEzMhYUBhQXMzI2NScuAiMiBgcXJyYHIyI9AS4CIg4BFQcUHwEWMjY1IyIvASY2BzI+AyYvAi4CBg8BDgIVFxQGFBYfAhYXNzI3Njc2NzU/ATQ+ATc1ND8BNj8BLwEmLwEmNScmLwImIg8BBiImLwEmIh0BBwYHFxQXBw4BHQIyHwEWHwEWHwEUBgceAxcyPgE3Nj8CNj0BLwImIyIPAQYiJi8BBwYHBhUHBg8CFBb5BAUBAgEDAwIDAwYEBwYJCgYEBwQICwQCAQQdBwYNAQEEAwgLCgUJCRkDBQMDAQcHAwIFBwEBBwoMBggJAQULEg0OEgkDAQMDBA4HDAh+AgMBAQEEAQIGAgIDAQQBBgYBBgUOCwEBAgUDBwMBAgMCBQQCAQIDAwEBAwYECAYBAQUCAgICAQIEBgMDAQIBAQICAQEBAgEEHQQGBgMBAgINCgIEBQYDCgMIBQECBQQQCAMFQwQFCQkEBAIFAwYDAQIBAgMFAgICBwEBAgMDAwIFBRQFCQcDBQMCCAMBAQEFBgQDAwcEBAYEAQIFAwIICApAAwcIAwgKCgMBBQMFAwYDAgoDBQUBBAICAQICAQMBAQlbAgcFBgQFBAIGBwUEAQQDBwoEAgMGCAIBAQEBAgIFAgQCAwQCBAEDBggIBQ0HBwIBAgQJAgcKFBMSCAoYDgsGBgwSDgcMExcMDQoJBAYSCRQWDQqPAgEEBAIFAQEFAgMBAgQGAwUDCAgEAgECAQEEAQECBwIDAgcFBAIBAwMHBAgEBwgJAQEBAQYDBgUDBAMFBAMFAQIBAQUEBuQCAwYHBQISEAQGBAECCgMDBAQMBAcHAwEDAQEDDgECBAIDAQgfBAYFAgEBAgMBAQIXBgQCCgICBAcHBwUDAw0CBQQGAwIHDQcIBAICBwgTCQoEAgQDBAgDBAYEBQEEBgQCFQIFBAkFBQICAgIIBQ8EAQYBAwIKAwICBQURCAgFBQcKAAAAAAQAAAAAASsBGgAHAAsADwAVAAATHwEPAS8BNwcXNycXBxc3LwEHFwcXL/QIIgv0CCIO4SDhTQNeAj1FDTI9CQEZAwnyCQMK8egD3wKdEgITLzcPJycPAAAEAAAAAAEHARoABwAMABAAFAAAEyMHFRczNzUHFSM1MxcjNTM1IzUz/eEJCeEKhF1dcV5eXl4BGQn0CQn0cWfPz14TXgAAAAAG//8AAAEcARoACAARAB4AJwA0AEQAADcUBiImNDYyFgcUBiImNDYyFhcuAScGJx4BFxYzJjU3FAYiJjQ2MhYXNjc2JicGBxYHBgcWJyIxPgEXBg8BDgEHJicmI/YXIRcXIRemGCEXFyEYMhYiChESDTEgDg4LYRchGBghFxATBgYKDwYQEQgDCQ7SARJEJgkCARgpDggKBgbzERYWIRYWZREWFiEWFnQEGhMIBB4oBwIOEgEQFhYhFhYCFx0ZMhYRCR8iEA4LfCAjAwoNCAEVEwUCAQAAAAAEAAAAAAEaARoABwALABIAFgAAEzczFxUHIyc3FTM1DwEXBxc3NRUzFSMTE+ESEuETE+GvDTU1DT5LSwEHEhLhExPh4eE5DTU1DT0KMxMAAAQAAAAAARoA4QAHAAoAEgAYAAA3BzM3MxczJwc3FzcjBzM3MxczJzc2Nx8BPywZCSsKGSwbDw6FHj0eDj8OHWQWAgECF6lxHBxxQigoeqkrK0JDBgULQwADAAAAAAEHAPQAAwAHAAsAACUjNTMVIzUzBzM1IwEH4eHh4eHh4c4mcSZxJgAAAAABAAAAAAEaAQcAGwAANyIuAT8BIwYuAjc2Nz4BNzMeAR0BFAYrAQcGZggOBQQSNAcMBwEDIwgDDQinCw8PCxluCCMLEQkpAQYLDgZKFwcJAQEPC0IKD2cHAAAAAAIAAAAAARoBBwAbADYAADciLgE/ASMGLgI3Njc+ATczHgEdARQGKwEHBiciBwYHBhY3MxcVBwYeATI/AjMyNj0BNCYjZggOBQQSNAcMBwEDIwgDDQinCw8PCxluCBgFAgsgAgQFPgkUAQEEBQJyCRkDBQUDIwsRCSkBBgsOBkoXBwkBAQ8LQgoPZwfRBR9DBAcBDAkuAgUDAmgDBANCAwUAAAAAAQAAAAABGgEHABsAABMeAg8BMzYeAgcGBw4BKwEuAT0BNDY7ATc2xggOBQQSNAcMBwEDIwgDDQinCw8PCxptCAEHAQoRCSkBBwsNBkoXBwoBDwtCCg9nBgAAAAACAAAAAAEaAQcAGwA2AAATHgIPATM2HgIHBgcOASsBLgE9ATQ2OwE3NhcyNzY3NiYHIyc1NzYuASIPAiMiBhcVBhYzxggOBQQSNAcMBwEDIwgDDQinCw8PCxptCBgFAgshAQQFPQoUAQEEBQJyCRkDBQEBBQMBBwEKEQkpAQcLDQZKFwcKAQ8LQgoPZwbQBR9DBAcBDAkuAgUDAmgDBANCAwUAAAYAAAAAARkBGgAgAC8AQQBNAFIAaAAAJScHJzcnJiIOAhQXBgcGFhceATMyNzY3NjcWMj4CNAcGKwEiLgI3NjceARcGNxYGIicuATc+AjsBBxUXMzcHMxc3JzcvAQ8CFycXFSMnFzcXFhQHDgEnJi8BNxceAT4CNCYnARUPJxcnAw0bGhQLBTo5BgEIBAkFCQcVJCIaDRwaFAviAQICAgIDAgEqRgMGBEmpASAsDwwGBgQPFAoFIiMNIsocDgwMAQQ2Cw8CIworFByKDToICAYPCAUDOw06AgUFAgEBAesDJxcoDwQLFBsdDTo7CBUHBAUHEyUhGwYLFRoctwEBBAYCLEYEBwNLhRcfDwwgDwoQCCMNIyInDg0NHwgkAg8MNkAdFSx9DTwIFggGAwMCBDwNPAICAgMDBAMBAAAGAAAAAAD0ARoAEwAXABsAHwAjACcAADczFSMVByMnNSM1MzU0NjsBMhYVKwEVMwczNSMXIxUzNzMVIzczFSO8OBMTgxMSOAsIOAgLEzg4XoODJhMTEhMTJhMT9BOpEhKpExMHCwsHE7ypE4ODg4ODAAAAAAEAAAAAAQcAzwAFAAA/ATMXByMmB9IIahDECgpmAAAAAQAAAAAAzwEHAAUAABMXFQcnNcQKCmYBBwjSCGoQAAABAAAAAADPAQcABQAANyc1NxcVaAoKZiYH0ghqEAAAAAEAAAAAAQcAzwAFAAAlByMnNzMBBwjSB2kQaAoKZgAAAQAAAAABGgD/AD4AACUOAQcXFAYHDgMiJicWNjciJicmJxcWNy4BJyY1MRYzJicmJyY3NjcWFxYXFhcnNTQ3Njc2MhYXNjcGBzYBGQUOCAEHBwkdJCstKhIVKhAMFwcFAwUKCQkQBgwMDQsHAwIDBAEECg0ZHxAQAQQIFQoWFAgSEAYSEOUIDgYHEB8PFSIYDAwMAgsODAoHCAEBAwIJCA4UBgcMBgYODQcGDAoVCAQBBgYMCRUIBAkIBAkTCgEABAAAAAABBwEaAB4AIgAmACoAADcjJzM3NScjBxUXMwcjBxUXMzc1JyM3FyMHFRczNzUnNTMVBxUjNRcjNTP9ID8UCgpLCQkUPiEJCTgKCgE6OQEJCTgKljheJc4mJl5eCUsJCUsJXgo4CQk4ClZWCjgJCTh6OTmDJSUlJQAAAAAEAAAAAAEHARoAHgAiACYAKgAAEyMHFRczByczNzUnIwcVFzMXIwcVFzM3NScjNzM3NQc1MxUXFSM1NyM1M/04CQkBOToBCgo4CQkhPhQJCUsKChQ/IArhJV44gyYmARkJOApWVgo4CQk4Cl0KSwkJSwpdCjgvJiaDODiDJgAAAAUAAAAAAQcBGgAjACcAKwAvADMAADcjJzUnIzUzNzUnIwcVFzMVIwcVByMHFRczNzU3MxcVFzM3NSczFSMHMxUjByM1MxcjNTP9ISAKHAkKCiUJCQkcCSAiCQkmCSBDIAolCoQTExI4ODkSErwTE0sgRwolCSYJCSYJJQpHIAkmCQkiICAiCQkmxRNLOEsSEhIAAAADAAAAAAEHARoACQATAC0AADc1Byc3MxcHJxUHFScHFzM3Jwc1NxcHFwcjNTMnIwczFSMnNyc3MxUjFzM3IzWNEw0iDiINExITDSIOIg0TYgZFRQZOODg4OjlPBUVFBU85ODg6OLJLEw4hIg0TSzhLEw0iIg0TS2cTNzkTEy0tExM3ORMTLS0TAAAAAAwAAAAAARoBGgAJABMAGwAfACcAKwAzADcAPwBDAEcASwAAExcHJxUjNQcnNxc1IxUnBxczNyc3Iyc1NzMXFSczNSMXIyc1NzMXFSczNSMHIyc1NzMXFSczNSMXIyc1NzMXFSczNSsCFTM1IxUzNigPFxIXDScPEhcNJw0oDU4lCQklCiYTE404Cgo4CTgmJkIlCQklCiYTE404Cgo4CTgmJhMlJSUlARknDRZSVBgNJ+hSUhYNJycNYgkmCQkmChIlCTgKCjgKJZYJJgkJJgoTOQo4CQk4CSYTcBIAAAAAAgAAAAABBwEdABUAGgAANzU0PgEWFzMuAQ4BHQEjBxUXMzc1JwczFSM1XhopIwcUCC44JhMSErwTEyYmvKklFR8HFRMbIAcqHSUTcBMTcBMTcHAABQAAAAABGgEaAAkAEQAeACcALwAANzM3FxUHJyMnNR8BNQ8BIxUzNxQGByc+ASc2JzceAQcUByc2NCc3FgcUByc2JzcWHDRJEBBJNAlIOzsHLi7FDw4ODA0BARkODg8lEw0NDQ0TJggOBwcOCNFIBvQGSAleVzvGOgNLJRcqEg0PJBMnHw0RKxcfGQ0ULxMNGR8QDQ4PEA0NAAAABAAAAAABFQEUABcALwBbAF8AADczNzM3NTc1JzUnIycjByMHFQcVFxUXMzcjNS8BPwE1Mz8BHwEzFR8BDwEVIw8BJzcGDwEjNTY3PgMzMh4CFA4BDwEOAR0BIzU0Nj8BPgE0JzEuAScxJiIGFyM1M5ANIC0KICAJLiANHy8KHx8KLwMpAh0cAykGHB0GKAMdHQMoBxwcFQIBAREBAwIEBwkFCAsIAwQFAwYCBBEEAwsDAwEBAwIDBgYPEBAYIAotIA4gLgkgIAotIA4gLQoTKAccHAcoAxwcAygHHBwHKAMcHHEDAwYBCQcDBgQDBQgLDAkIBAcDBgMJCgUIAw4DCAcDAgQBAgRdEAAAAAYAAAAAASwBGgBCAE4AWgBiAGYAagAANzQ2HwEWMjY/AicuAiIHNTcWHwE3PgMWFRQjIiYiBgcGBxcWHwEWMjc2PwEXDgMiLgEvASYnDwEOAiImFz4BNCYnMxYVFAYHIy4BNTQ3Mw4BFRQXNyEHFRchNzUHITUhNSE1IWUHBAUBAwUDCwYHAQUGBwMbBgMFBQMJCQkGCAMFBgYDBQQIAQECAQQBBQMDAwEGBwgGBQMBBAEBCQYDCAcIBnMHCQkHDRIJCZ4JCRINCAgQz/7mCQkBGgkT/voBBv76AQZUBAUCBAEFAxANGwMFAwEEBQYIEAgGCQYBBAQIAwYEBggiBAMDAQEEBQQCAwgHBgQGAxQEAw8JBQYFBQUKGBoYChUaDhcKCRkNGhUKGQwbFM4J9AkJ9OqoEyYAAAIAAAAAARUBFAAXAB4AADcjJyMnNSc1NzU3MzczFzMXFRcVBxUHIyczNycHJwedDR8vCh8fCi8fDSAuCSAgCi0/DkYNQBoNGCAKLSAOIC0KICAJLiAOIC0KMEYOQRoNAAMAAAAAARUBFAAXAC8ANgAANzM3Mzc1NzUnNScjJyMHIwcVBxUXFRczNyM1LwE/ATUzPwEfATMVHwEPARUjDwEnNzM3JwcnB5ANIC0KICAJLiANHy8KHx8KLwMpAh0cAykGHB0GKAMdHQMoBxwcBA5GDUAaDRggCi0gDiAuCSAgCi0gDiAtChMoBxwcBygDHBwDKAccHAcoAxwcIEYOQRoNAAAABAAAAAABGgD0AAcACwAWACEAADcHFRczNzUnFSM1Mwc1MzUjBxUXMzUjJzUzNSMHFRczNSOWExNxEhJxcakTHQkJHRM4EhwJCRwS9BOWExOWE6mWXksTCYQJEzgmEgleCRMAAAMAAP//AS4BBwASAB8AJgAAEzMXFSYnNSMVMxQXIzUzNSMnNRc+AR4CDgIuAjYXNycHJwcXHPQJCAvgXRNLOGcJpBEoJBcCEiEoJBYDEjgtDycYDCABBwpnBwRTqR8ZExIKu3QMAhEiKCQXAhIhKCRSOww0Ew4aAAUAAAAAASwBBwASAB8AKwAxADcAABMzFxUmJzUjFTMUFyM1MzUjJzUXIg4BFB4BMj4BNC4BByIuATQ+ATMyFhQGJxc3JzcnByc3FwcnHPQJCAvgXRNLOGcJzhQjFBQjKCMUFCMUDxoPDxoPFyEhFRsJExMJMBIIGxsIAQcKZwcEU6kfGRMSCrtnFCMoIxQUIygjFIMPGh4aDyEuIUMbCBMSCC4SCBobCAAAAAADAAAAAAEsAQcAEgAfACsAABMzFxUmJzUjFTMUFyM1MzUjJzUXIg4BFB4BMj4BNC4BByIuATQ+ATMyFhQGHPQJCAvgXRNLOGcJzhQjFBQjKCMUFCMUDxoPDxoPFyEhAQcKZwcEU6kfGRMSCrtnFCMoIxQUIygjFIMPGh4aDyEuIQAAAAADAAD//gEuAQcAEgAuADEAABMzFxUmJzUjFTMUFyM1MzUjJzUXMh4CFx4BBw4CBw4BJy4CJy4BNz4CNzYXJxUc9AkIC+BdE0s4ZwnOChMRDgUHBAQCCg4IDR4PCREOBQcEBAIKDggSOjkBBwpnBwRTqR8ZExIKu2cFCg4IDR4PCREOBQcEBAIKDggNHg8JEQ4FCksmSwAAAAIAAAAAARoBBwAPABMAAAEjBxUXMxUjFTM1IzUzNzUHIzUzARD0CQlnOJY4ZwkS4eEBBwq7ChITExIKu7KpAAAGAAAAAAEsAPQAGQAzADcAOwBHAFMAADczMhYdARQGKwEiLwEmIg8BBisBIiY9ATQ2FyIGHQEeATsBMj8BNjIfARY7ATI2PQE0JiMHMxUjJTMVIycyFhQGKwEiJjQ2OwEyFhQGKwEiJjQ2M0uWFyEhFwcRDw8KFgoPDxEHFyEhFxAWARUQBwwJEA4iDhAJDAcQFhYQ4RMTARkTE58EBQUELwQFBQSWBAUFBC8EBQUE9CEXSxghCgoGBgoKIRhLFyETFg9LEBYGCwkJCwYWEEsPFjg4ODglBQgGBggFBQgGBggFAAAEAAAAAAEHARkABQARAB8AKQAAEwcXNzU0FScmIg8BDgEfATY1NxYdARQHNz4BPQE2JicHNxcHBiIvASY0t08oLIwCCAMNAwEEoQUOBAQ0BAQBBQToFh8bAggDDQMBEkgfITsGmmoCAwwDCQOUBQbhCQnPCQkZAggEpQQIAYEVHBUCAwwDCQAAAQAAAAABBwEaACoAADcGJyYvAQcGIi8BJjQ/AScmND8BNjIfATc+AR8BHgEdASM1Bxc1MxUUBgfMBgYDA2AqAggDDQMDJCQDAw0DCAIqYgQIBDIEBDxJST0FBCcDAwECWCACAwwDCQMhIgMJAwwDAiBZAwECGQEIBFxBODcuSQQIAgAABgAAAAABGgEaAAsAFwAjADAAOABAAAA3MzUzNSM1IxUjFTMXIxUjFTMVMzUzNSM3NSMVIxUzFTM1MzUHJiIPAQYUFjI/ATY0BwYiJjQ/ARc3Byc3NjIWFFITExMTExOWExISExMTHxMTExMSSggXCYwIEBgIjAiiAggGA3kOEwYNBgIIBs4TExMTE14SExMTE5YSEhMTExMuCAiNCBcRCYwIF54DBgcDeQ0TBg4GAgUIAAAABAAAAAABGQEaAAUACAAMABAAABMzFwcjJzcHMyc1IxU9ATMVjhB7CPYIg2vWXxgYARnmDQ3OyRMTEyZLSwAAAAMAAAAAAPQBGgAGABoAJwAANzM1IzUjFScOARQWFxUXMzc1PgE0Jic1JyMHFxQOASIuATQ+ATIeAY0lHBMcFhkZFgpLCRYZGRYJSwp6FCMoIxQUIygjFIMTLzhaDCwyLAwpCQkpDCwyLAwpCQl6FCMUFCMoIxQUIwAAAAADAAAAAADhARoAEQAZAB0AABM1IyIOARQeATsBFSMVMzUjNQcjIiY0NjsBFyM1M+FnEh4SEh4SHBNeEzgcFBsbFBwmExMBBxIRHyMeEl4SEs9eGyccz88ABQAAAAABLAD3AAcAHAAnADcAQwAANTMVITUzFSE3IzUjBiMiJjU0PwE0IyIHNTYzMhUPAQ4BFRQWMzI2NRcxFSM1MxUxNjMyFhUUBiInFRQWMzI2NTQmIgYTAQYT/tSAEAEKFRARIh8WEg8PFCQQGQwLCgkNED8REQwYFBYZKgsQDQ8REBwRXiYmODgQExENHQUEGgwRCSYPBAEICwcKEQ4bD5hDFBsYGh87Dg0SFxURExQAAwAAAAABGgEHAAcACwAPAAABIwcVFzM3NQcjNTM1IzUzARD0CQn0CRLh4eHhAQcKzgkJzsWEEiYAAAAABgAAAAABGgEaAB8ALwBFAFoAegCKAAA3JicmBwYPARU3PgEyFhcHDgIHBhYXFjMyNxUzNTQmBxUUBw4BJy4CPQE0PgEzNy4CIgcGBzUjFTM1FhcWMzI+AjQHFA4BBwYnLgI9AT4DFzYXHgEHPgEyFh8BNScmDgMUHgIyNj8BNQ8BBicuAjQ2NyM1MxcVByMXByc1NxcHM0kEBQkLBwYGBAQLCwUBEgcJBgEDBgkFBQsHEwMPAQIKBQICAQMEA2sBBgsOBQMCEhIDBgIEBwsHBBICBAIGBQIEAgECAwUDBgQBAl4DBggGAwcCCBIOCgUFCQ0OCgQCBgoGBgMFAwTcS1QJCXwnDjY2DiZy6wUCAwIBAwMUAwMFBgYCAQUHBAoSBAIJBzEHCx8FAwMGBQIBAgMCBAEDAhYGCwcEAgMudAUFAQEGDBAQBwcKBgEDAgIEBgQKBAgFAwEBBgIJYAMDAgIFFQEFAQYMDxEOCgYDAgERAgQBAgIGCAsJTRIJcQknDTYNNw4lAAADAAAAAAElAS0AJAA/AEwAABMyHgIXFhcWFxYzFRQOBA8BJy4FPQEyPgI3PgEXLgEnLgEiBgcOAQcVFB4EFz4FNS8BDwEvAQ8BHwI/AZcIDQ0MBwoLFRcMCwsTGR8hEQQFESIeGhMKCxgWFQoMGogVKRIJFhYVCRIpFgoRGBoeDxAdGxcSCTQICFEcCAgCJAQJBFsBLAIEBgQGBQgCAUoWJiMeGxcKAwMKFxseIycUTAEFCQYICDgBDAwGBgYGDAwBORIiIBsYFQkJFBkbICISGQcBYCcCBwczAgECawAAAAQAAAAAASUBLQAkAD8AaQBxAAATMh4CFxYXFhcyFxUUDgQPAScuBT0BFj4CNz4BFy4BJy4BIgYHDgEHFRQeBBc+BTUnHgEUDgEPAQ4BHQEHIyc1ND4BPwE+ATQmJyYiBw4BFQcjJzQ+ATc2FxYHNzMXFQcjJ5cIDQ0MBwoLFRYNCwsTGR8hEQUEESIeGhMKCxgWFQoMGogVKRIJFhYVCRIpFgoRGBoeDxAdGxcRCmAFBgUGBAYDAwMNAwUGBAYDAwMCBQ8FAgMDDQMGCgYODwYeAw0DAw0DASwCBAYEBgUIAgFKFiYjHhsXCgMDChcbHiMnFEwBAgUJBggIOAEMDAYGBgYMDAE5EiIgGxgVCQkUGRsgIhIZBgwOCwgDBgMGBAYDAwYHCwcDBgQGBwYDBQUDBgQCAggNCgIGBgNhAwMNAwMAAAMAAAAAASUBLQAkAD8AUwAAEzIeAhcWFxYXMhcVFA4EDwEnLgU9ARY+Ajc+ARcuAScuASIGBw4BBxUUHgQXPgU1LwEjBycjBxUXBxUXMzcXMzc1JzeXCA0NDAcKCxUWDQsLExkfIREFBBEiHhoTCgsYFhUKDBqIFSkSCRYWFQkSKRYKERgaHg8QHRsXEQpHBwQlJQQIJSUIBCUlBAclJQEsAgQGBAYFCAIBShYmIx4bFwoDAwoXGx4jJxRMAQIFCQYICDgBDAwGBgYGDAwBORIiIBsYFQkJFBkbICISCwgmJggEJSUECCYmCAQlJQAAAAMAAAAAARoBHgAOAB8AKwAANxYGBxcHJw4BLgE+AR4BBzI2Nwc+ATU0LgEiDgEUHgE3NSM1IxUjFTMVMzXiAQ0MUA5PHEg5Exw/RzBkER8MAQwOFycuJhcXJkUlEyYmE7kUJhBPDlAXAitFQiMMNYANDAEMHxEXJxcXJy0nF0sTJSUTJSUAAAADAAAAAAEaAR4ADgAfACMAADcWBgcXBycOAS4BPgEeAQcyNjcHPgE1NC4BIg4BFB4BJzMVI+IBDQxQDk8cSDkTHD9HMGQRHwwBDA4XJy4mFxcmGF1duRQmEE8OUBcCK0VCIww1gA0MAQwfERcnFxcnLScXXRIAAAAAABAAxgABAAAAAAABAAcAAAABAAAAAAACAAcABwABAAAAAAADAAcADgABAAAAAAAEAAcAFQABAAAAAAAFAAwAHAABAAAAAAAGAAcAKAABAAAAAAAKACQALwABAAAAAAALABMAUwADAAEECQABAA4AZgADAAEECQACAA4AdAADAAEECQADAA4AggADAAEECQAEAA4AkAADAAEECQAFABgAngADAAEECQAGAA4AtgADAAEECQAKAEgAxAADAAEECQALACYBDGNvZGljb25SZWd1bGFyY29kaWNvbmNvZGljb25WZXJzaW9uIDEuMTFjb2RpY29uVGhlIGljb24gZm9udCBmb3IgVmlzdWFsIFN0dWRpbyBDb2RlaHR0cDovL2ZvbnRlbGxvLmNvbQBjAG8AZABpAGMAbwBuAFIAZQBnAHUAbABhAHIAYwBvAGQAaQBjAG8AbgBjAG8AZABpAGMAbwBuAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAxAGMAbwBkAGkAYwBvAG4AVABoAGUAIABpAGMAbwBuACAAZgBvAG4AdAAgAGYAbwByACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwAgAEMAbwBkAGUAaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcsBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswAB2FjY291bnQUYWN0aXZhdGUtYnJlYWtwb2ludHMDYWRkB2FyY2hpdmUKYXJyb3ctYm90aBFhcnJvdy1jaXJjbGUtZG93bhFhcnJvdy1jaXJjbGUtbGVmdBJhcnJvdy1jaXJjbGUtcmlnaHQPYXJyb3ctY2lyY2xlLXVwCmFycm93LWRvd24KYXJyb3ctbGVmdAthcnJvdy1yaWdodBBhcnJvdy1zbWFsbC1kb3duEGFycm93LXNtYWxsLWxlZnQRYXJyb3ctc21hbGwtcmlnaHQOYXJyb3ctc21hbGwtdXAKYXJyb3ctc3dhcAhhcnJvdy11cAxhenVyZS1kZXZvcHMFYXp1cmULYmVha2VyLXN0b3AGYmVha2VyCGJlbGwtZG90DmJlbGwtc2xhc2gtZG90CmJlbGwtc2xhc2gEYmVsbAVibGFuawRib2xkBGJvb2sIYm9va21hcmsLYnJhY2tldC1kb3QNYnJhY2tldC1lcnJvcglicmllZmNhc2UJYnJvYWRjYXN0B2Jyb3dzZXIDYnVnCGNhbGVuZGFyDWNhbGwtaW5jb21pbmcNY2FsbC1vdXRnb2luZw5jYXNlLXNlbnNpdGl2ZQljaGVjay1hbGwFY2hlY2sJY2hlY2tsaXN0DGNoZXZyb24tZG93bgxjaGV2cm9uLWxlZnQNY2hldnJvbi1yaWdodApjaGV2cm9uLXVwBGNoaXAMY2hyb21lLWNsb3NlD2Nocm9tZS1tYXhpbWl6ZQ9jaHJvbWUtbWluaW1pemUOY2hyb21lLXJlc3RvcmUNY2lyY2xlLWZpbGxlZBNjaXJjbGUtbGFyZ2UtZmlsbGVkDGNpcmNsZS1sYXJnZQxjaXJjbGUtc2xhc2gTY2lyY2xlLXNtYWxsLWZpbGxlZAxjaXJjbGUtc21hbGwGY2lyY2xlDWNpcmN1aXQtYm9hcmQJY2xlYXItYWxsBmNsaXBweQljbG9zZS1hbGwFY2xvc2UOY2xvdWQtZG93bmxvYWQMY2xvdWQtdXBsb2FkBWNsb3VkCGNvZGUtb3NzBGNvZGUGY29mZmVlDGNvbGxhcHNlLWFsbApjb2xvci1tb2RlB2NvbWJpbmUSY29tbWVudC1kaXNjdXNzaW9uDWNvbW1lbnQtZHJhZnQSY29tbWVudC11bnJlc29sdmVkB2NvbW1lbnQOY29tcGFzcy1hY3RpdmULY29tcGFzcy1kb3QHY29tcGFzcwdjb3BpbG90BGNvcHkIY292ZXJhZ2ULY3JlZGl0LWNhcmQEZGFzaAlkYXNoYm9hcmQIZGF0YWJhc2UJZGVidWctYWxsD2RlYnVnLWFsdC1zbWFsbAlkZWJ1Zy1hbHQnZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkHGRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwgZGVidWctYnJlYWtwb2ludC1kYXRhLXVudmVyaWZpZWQVZGVidWctYnJlYWtwb2ludC1kYXRhJGRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZBlkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uH2RlYnVnLWJyZWFrcG9pbnQtbG9nLXVudmVyaWZpZWQUZGVidWctYnJlYWtwb2ludC1sb2ccZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZA1kZWJ1Zy1jb25zb2xlFGRlYnVnLWNvbnRpbnVlLXNtYWxsDmRlYnVnLWNvbnRpbnVlDmRlYnVnLWNvdmVyYWdlEGRlYnVnLWRpc2Nvbm5lY3QSZGVidWctbGluZS1ieS1saW5lC2RlYnVnLXBhdXNlC2RlYnVnLXJlcnVuE2RlYnVnLXJlc3RhcnQtZnJhbWUNZGVidWctcmVzdGFydBZkZWJ1Zy1yZXZlcnNlLWNvbnRpbnVlF2RlYnVnLXN0YWNrZnJhbWUtYWN0aXZlEGRlYnVnLXN0YWNrZnJhbWULZGVidWctc3RhcnQPZGVidWctc3RlcC1iYWNrD2RlYnVnLXN0ZXAtaW50bw5kZWJ1Zy1zdGVwLW91dA9kZWJ1Zy1zdGVwLW92ZXIKZGVidWctc3RvcAVkZWJ1ZxBkZXNrdG9wLWRvd25sb2FkE2RldmljZS1jYW1lcmEtdmlkZW8NZGV2aWNlLWNhbWVyYQ1kZXZpY2UtbW9iaWxlCmRpZmYtYWRkZWQMZGlmZi1pZ25vcmVkDWRpZmYtbW9kaWZpZWQNZGlmZi1tdWx0aXBsZQxkaWZmLXJlbW92ZWQMZGlmZi1yZW5hbWVkC2RpZmYtc2luZ2xlBGRpZmYHZGlzY2FyZARlZGl0DWVkaXRvci1sYXlvdXQIZWxsaXBzaXMMZW1wdHktd2luZG93C2Vycm9yLXNtYWxsBWVycm9yB2V4Y2x1ZGUKZXhwYW5kLWFsbAZleHBvcnQKZXh0ZW5zaW9ucwpleWUtY2xvc2VkA2V5ZQhmZWVkYmFjawtmaWxlLWJpbmFyeQlmaWxlLWNvZGUKZmlsZS1tZWRpYQhmaWxlLXBkZg5maWxlLXN1Ym1vZHVsZRZmaWxlLXN5bWxpbmstZGlyZWN0b3J5EWZpbGUtc3ltbGluay1maWxlCGZpbGUtemlwBGZpbGUFZmlsZXMNZmlsdGVyLWZpbGxlZAZmaWx0ZXIFZmxhbWUJZm9sZC1kb3duB2ZvbGQtdXAEZm9sZA1mb2xkZXItYWN0aXZlDmZvbGRlci1saWJyYXJ5DWZvbGRlci1vcGVuZWQGZm9sZGVyBGdhbWUEZ2VhcgRnaWZ0C2dpc3Qtc2VjcmV0CmdpdC1jb21taXQLZ2l0LWNvbXBhcmUJZ2l0LWZldGNoCWdpdC1tZXJnZRdnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZBdnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZRZnaXQtcHVsbC1yZXF1ZXN0LWRyYWZ0HmdpdC1wdWxsLXJlcXVlc3QtZ28tdG8tY2hhbmdlcxxnaXQtcHVsbC1yZXF1ZXN0LW5ldy1jaGFuZ2VzEGdpdC1wdWxsLXJlcXVlc3QPZ2l0LXN0YXNoLWFwcGx5DWdpdC1zdGFzaC1wb3AJZ2l0LXN0YXNoDWdpdGh1Yi1hY3Rpb24KZ2l0aHViLWFsdA9naXRodWItaW52ZXJ0ZWQOZ2l0aHViLXByb2plY3QGZ2l0aHViBWdsb2JlCmdvLXRvLWZpbGUHZ3JhYmJlcgpncmFwaC1sZWZ0CmdyYXBoLWxpbmUNZ3JhcGgtc2NhdHRlcgVncmFwaAdncmlwcGVyEWdyb3VwLWJ5LXJlZi10eXBlDGhlYXJ0LWZpbGxlZAVoZWFydAdoaXN0b3J5BGhvbWUPaG9yaXpvbnRhbC1ydWxlBWh1Ym90BWluYm94BmluZGVudARpbmZvBmluc2VydAdpbnNwZWN0C2lzc3VlLWRyYWZ0Dmlzc3VlLXJlb3BlbmVkBmlzc3VlcwZpdGFsaWMGamVyc2V5BGpzb24Oa2ViYWItdmVydGljYWwDa2V5A2xhdw1sYXllcnMtYWN0aXZlCmxheWVycy1kb3QGbGF5ZXJzF2xheW91dC1hY3Rpdml0eWJhci1sZWZ0GGxheW91dC1hY3Rpdml0eWJhci1yaWdodA9sYXlvdXQtY2VudGVyZWQObGF5b3V0LW1lbnViYXITbGF5b3V0LXBhbmVsLWNlbnRlchRsYXlvdXQtcGFuZWwtanVzdGlmeRFsYXlvdXQtcGFuZWwtbGVmdBBsYXlvdXQtcGFuZWwtb2ZmEmxheW91dC1wYW5lbC1yaWdodAxsYXlvdXQtcGFuZWwXbGF5b3V0LXNpZGViYXItbGVmdC1vZmYTbGF5b3V0LXNpZGViYXItbGVmdBhsYXlvdXQtc2lkZWJhci1yaWdodC1vZmYUbGF5b3V0LXNpZGViYXItcmlnaHQQbGF5b3V0LXN0YXR1c2JhcgZsYXlvdXQHbGlicmFyeRFsaWdodGJ1bGItYXV0b2ZpeBFsaWdodGJ1bGItc3BhcmtsZQlsaWdodGJ1bGINbGluay1leHRlcm5hbARsaW5rC2xpc3QtZmlsdGVyCWxpc3QtZmxhdAxsaXN0LW9yZGVyZWQObGlzdC1zZWxlY3Rpb24JbGlzdC10cmVlDmxpc3QtdW5vcmRlcmVkCmxpdmUtc2hhcmUHbG9hZGluZwhsb2NhdGlvbgpsb2NrLXNtYWxsBGxvY2sGbWFnbmV0CW1haWwtcmVhZARtYWlsCm1hcC1maWxsZWQTbWFwLXZlcnRpY2FsLWZpbGxlZAxtYXAtdmVydGljYWwDbWFwCG1hcmtkb3duCW1lZ2FwaG9uZQdtZW50aW9uBG1lbnUFbWVyZ2UKbWljLWZpbGxlZANtaWMJbWlsZXN0b25lBm1pcnJvcgxtb3J0YXItYm9hcmQEbW92ZRBtdWx0aXBsZS13aW5kb3dzBW11c2ljBG11dGUIbmV3LWZpbGUKbmV3LWZvbGRlcgduZXdsaW5lCm5vLW5ld2xpbmUEbm90ZRFub3RlYm9vay10ZW1wbGF0ZQhub3RlYm9vawhvY3RvZmFjZQxvcGVuLXByZXZpZXcMb3JnYW5pemF0aW9uBm91dHB1dAdwYWNrYWdlCHBhaW50Y2FuC3Bhc3MtZmlsbGVkBHBhc3MKcGVyc29uLWFkZAZwZXJzb24FcGlhbm8JcGllLWNoYXJ0A3BpbgxwaW5uZWQtZGlydHkGcGlubmVkC3BsYXktY2lyY2xlBHBsYXkEcGx1Zw1wcmVzZXJ2ZS1jYXNlB3ByZXZpZXcQcHJpbWl0aXZlLXNxdWFyZQdwcm9qZWN0BXB1bHNlCHF1ZXN0aW9uBXF1b3RlC3JhZGlvLXRvd2VyCXJlYWN0aW9ucwtyZWNvcmQta2V5cwxyZWNvcmQtc21hbGwGcmVjb3JkBHJlZG8KcmVmZXJlbmNlcwdyZWZyZXNoBXJlZ2V4D3JlbW90ZS1leHBsb3JlcgZyZW1vdGUGcmVtb3ZlC3JlcGxhY2UtYWxsB3JlcGxhY2UFcmVwbHkKcmVwby1jbG9uZQpyZXBvLWZldGNoD3JlcG8tZm9yY2UtcHVzaAtyZXBvLWZvcmtlZAlyZXBvLXB1bGwJcmVwby1wdXNoBHJlcG8GcmVwb3J0D3JlcXVlc3QtY2hhbmdlcwVyb2JvdAZyb2NrZXQScm9vdC1mb2xkZXItb3BlbmVkC3Jvb3QtZm9sZGVyA3JzcwRydWJ5CXJ1bi1hYm92ZRBydW4tYWxsLWNvdmVyYWdlB3J1bi1hbGwJcnVuLWJlbG93DHJ1bi1jb3ZlcmFnZQpydW4tZXJyb3JzCHNhdmUtYWxsB3NhdmUtYXMEc2F2ZQtzY3JlZW4tZnVsbA1zY3JlZW4tbm9ybWFsDHNlYXJjaC1mdXp6eQtzZWFyY2gtc3RvcAZzZWFyY2gEc2VuZBJzZXJ2ZXItZW52aXJvbm1lbnQOc2VydmVyLXByb2Nlc3MGc2VydmVyDXNldHRpbmdzLWdlYXIIc2V0dGluZ3MFc2hhcmUGc2hpZWxkB3NpZ24taW4Ic2lnbi1vdXQGc21pbGV5BXNuYWtlD3NvcnQtcHJlY2VkZW5jZQ5zb3VyY2UtY29udHJvbA5zcGFya2xlLWZpbGxlZAdzcGFya2xlEHNwbGl0LWhvcml6b250YWwOc3BsaXQtdmVydGljYWwIc3F1aXJyZWwKc3Rhci1lbXB0eQlzdGFyLWZ1bGwJc3Rhci1oYWxmC3N0b3AtY2lyY2xlDXN1cnJvdW5kLXdpdGgMc3ltYm9sLWFycmF5DnN5bWJvbC1ib29sZWFuDHN5bWJvbC1jbGFzcwxzeW1ib2wtY29sb3IPc3ltYm9sLWNvbnN0YW50EnN5bWJvbC1lbnVtLW1lbWJlcgtzeW1ib2wtZW51bQxzeW1ib2wtZXZlbnQMc3ltYm9sLWZpZWxkC3N5bWJvbC1maWxlEHN5bWJvbC1pbnRlcmZhY2UKc3ltYm9sLWtleQ5zeW1ib2wta2V5d29yZA1zeW1ib2wtbWV0aG9kC3N5bWJvbC1taXNjEHN5bWJvbC1uYW1lc3BhY2UOc3ltYm9sLW51bWVyaWMPc3ltYm9sLW9wZXJhdG9yEHN5bWJvbC1wYXJhbWV0ZXIPc3ltYm9sLXByb3BlcnR5DHN5bWJvbC1ydWxlcg5zeW1ib2wtc25pcHBldA1zeW1ib2wtc3RyaW5nEHN5bWJvbC1zdHJ1Y3R1cmUPc3ltYm9sLXZhcmlhYmxlDHN5bmMtaWdub3JlZARzeW5jBXRhYmxlA3RhZwZ0YXJnZXQIdGFza2xpc3QJdGVsZXNjb3BlDXRlcm1pbmFsLWJhc2gMdGVybWluYWwtY21kD3Rlcm1pbmFsLWRlYmlhbg50ZXJtaW5hbC1saW51eBN0ZXJtaW5hbC1wb3dlcnNoZWxsDXRlcm1pbmFsLXRtdXgPdGVybWluYWwtdWJ1bnR1CHRlcm1pbmFsCXRleHQtc2l6ZQp0aHJlZS1iYXJzEXRodW1ic2Rvd24tZmlsbGVkCnRodW1ic2Rvd24PdGh1bWJzdXAtZmlsbGVkCHRodW1ic3VwBXRvb2xzBXRyYXNoDXRyaWFuZ2xlLWRvd24NdHJpYW5nbGUtbGVmdA50cmlhbmdsZS1yaWdodAt0cmlhbmdsZS11cAd0d2l0dGVyEnR5cGUtaGllcmFyY2h5LXN1YhR0eXBlLWhpZXJhcmNoeS1zdXBlcg50eXBlLWhpZXJhcmNoeQZ1bmZvbGQTdW5ncm91cC1ieS1yZWYtdHlwZQZ1bmxvY2sGdW5tdXRlCnVudmVyaWZpZWQOdmFyaWFibGUtZ3JvdXAPdmVyaWZpZWQtZmlsbGVkCHZlcmlmaWVkCHZlcnNpb25zCXZtLWFjdGl2ZQp2bS1jb25uZWN0CnZtLW91dGxpbmUKdm0tcnVubmluZwJ2bQJ2cg92c2NvZGUtaW5zaWRlcnMGdnNjb2RlBHdhbmQHd2FybmluZwV3YXRjaAp3aGl0ZXNwYWNlCndob2xlLXdvcmQGd2luZG93CXdvcmQtd3JhcBF3b3Jrc3BhY2UtdHJ1c3RlZBF3b3Jrc3BhY2UtdW5rbm93bhN3b3Jrc3BhY2UtdW50cnVzdGVkB3pvb20taW4Iem9vbS1vdXQAAAA=) format("truetype")}.codicon[class*=codicon-]{font: 16px/1 codicon;display:inline-block;text-decoration:none;text-rendering:auto;text-align:center;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(360deg)}}.codicon-sync.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-gear.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-value,.monaco-editor .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-enum{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.monaco-editor .lightBulbWidget{display:flex;align-items:center;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground, var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget.codicon-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground, var(--vscode-icon-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{position:absolute;top:0;left:0;content:"";display:block;width:100%;height:100%;opacity:.3;background-color:var(--vscode-editor-background);z-index:1}.action-widget{font-size:13px;min-width:160px;max-width:80vw;z-index:40;display:block;width:100%;border:1px solid var(--vscode-editorWidget-border)!important;border-radius:2px;background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground)}.context-view-block{position:fixed;cursor:initial;left:0;top:0;width:100%;height:100%;z-index:-1}.context-view-pointerBlock{position:fixed;cursor:initial;left:0;top:0;width:100%;height:100%;z-index:2}.action-widget .monaco-list{user-select:none;-webkit-user-select:none;border:none!important;border-width:0!important}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{padding:0 10px;white-space:nowrap;cursor:pointer;touch-action:none;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder, transparent);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-descriptionForeground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled:before,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before{cursor:default!important;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background-color:transparent!important;outline:0 solid!important}.action-widget .monaco-list-row.action{display:flex;gap:6px;align-items:center}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .monaco-list-row.action .monaco-keybinding>.monaco-keybinding-key{background-color:var(--vscode-keybindingLabel-background);color:var(--vscode-keybindingLabel-foreground);border-style:solid;border-width:1px;border-radius:3px;border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow)}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{display:block;content:"";width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:transparent!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-editor .codelens-decoration{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize);padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault)}.monaco-editor .codelens-decoration>span,.monaco-editor .codelens-decoration>a{user-select:none;-webkit-user-select:none;white-space:nowrap;vertical-align:sub}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{vertical-align:middle;color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize)}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{border:solid .1em #000;box-sizing:border-box;margin:.1em .2em 0;width:.8em;height:.8em;line-height:.8em;display:inline-block;cursor:pointer}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:solid .1em #eee}.colorpicker-header{display:flex;height:24px;position:relative;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-header .picked-color{width:240px;display:flex;align-items:center;justify-content:center;line-height:24px;cursor:pointer;color:#fff;flex:1;white-space:nowrap;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{width:74px;z-index:inherit;cursor:pointer}.standalone-colorpicker{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{cursor:pointer;background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header .close-button-inner-div{width:100%;height:100%;text-align:center}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{overflow:hidden;height:150px;position:relative;min-width:220px;flex:1}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid rgb(255,255,255);border-radius:100%;box-shadow:0 0 2px #000c;position:absolute}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{position:relative;margin-left:8px;cursor:grab;background:linear-gradient(to bottom,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.colorpicker-body .opacity-strip{position:relative;margin-left:8px;cursor:grab;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{position:absolute;top:0;left:-2px;width:calc(100% + 4px);height:4px;box-sizing:border-box;border:1px solid rgba(255,255,255,.71);box-shadow:0 0 1px #000000d9}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.colorpicker-body .standalone-strip .standalone-overlay{height:122px;pointer-events:none}.standalone-colorpicker-body{display:block;border:1px solid transparent;border-bottom:1px solid var(--vscode-editorHoverWidget-border);overflow:hidden}.colorpicker-body .insert-button{position:absolute;height:20px;width:58px;padding:0;right:8px;bottom:8px;background:var(--vscode-button-background);color:var(--vscode-button-foreground);border-radius:2px;border:none;cursor:pointer}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor .goto-definition-link{text-decoration:underline;cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;justify-content:space-between;flex-wrap:nowrap}.monaco-editor .peekview-widget .head .peekview-title{display:flex;align-items:baseline;font-size:13px;margin-left:20px;min-width:0;text-overflow:ellipsis;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;text-align:right;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{margin-right:4px;align-self:center}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-bottom-style:solid;border-top-width:0;border-bottom-width:0;position:relative}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;width:100%;text-align:center;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px;background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground)}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:inline-flex;width:100%;height:100%;color:var(--vscode-peekViewResult-fileForeground)}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-right:12px;margin-left:auto}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder, transparent);box-sizing:border-box}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;vertical-align:text-top;margin-right:4px}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{position:absolute;white-space:pre;user-select:text;-webkit-user-select:text;padding:8px 12px 0 20px}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{opacity:.6;color:inherit}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-activeForeground)}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer;color:var(--vscode-textLink-activeForeground)}.monaco-editor .zone-widget .codicon.codicon-error,.markers-panel .marker-icon.error,.markers-panel .marker-icon .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.extension-editor .codicon.codicon-error,.preferences-editor .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.monaco-editor .zone-widget .codicon.codicon-warning,.markers-panel .marker-icon.warning,.markers-panel .marker-icon .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.extension-editor .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.monaco-editor .zone-widget .codicon.codicon-info,.markers-panel .marker-icon.info,.markers-panel .marker-icon .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.extension-editor .codicon.codicon-info,.preferences-editor .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}.monaco-editor .inlineSuggestionsHints.withBorder{z-index:39;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{display:flex;min-width:19px;justify-content:center}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .dnd-target,.monaco-editor.hc-light .dnd-target{border-right:2px dotted black;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #AEAFAD;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines,.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines{cursor:default}.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines,.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines{cursor:copy}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget{position:absolute;z-index:35;height:33px;overflow:hidden;line-height:19px;transition:transform .2s linear;padding:0 4px;box-sizing:border-box;transform:translateY(calc(-100% - 10px));box-shadow:0 0 8px 2px var(--vscode-widget-shadow);color:var(--vscode-editorWidget-foreground);border-left:1px solid var(--vscode-widget-border);border-right:1px solid var(--vscode-widget-border);border-bottom:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;background-color:var(--vscode-editorWidget-background)}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px;outline-color:var(--vscode-focusBorder)}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:flex;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{display:flex;flex:initial;margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button{width:16px;height:16px;padding:3px;border-radius:5px;flex:initial;margin-left:3px;background-position:center center;background-repeat:no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center}.monaco-editor .find-widget .codicon-find-selection{width:22px;height:22px;padding:3px;border-radius:5px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:3px;width:18px;height:100%;border-radius:0;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:flex;vertical-align:middle;flex:auto;flex-grow:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .find-widget.no-results .matchesCount{color:var(--vscode-errorForeground)}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important;background-color:var(--vscode-editor-findMatchHighlightBackground)}.monaco-editor .currentFindMatch{background-color:var(--vscode-editor-findMatchBackground);border:2px solid var(--vscode-editor-findMatchBorder);padding:1px;box-sizing:border-box}.monaco-editor .findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor .find-widget .monaco-sash{left:0!important;background-color:var(--vscode-editorWidget-resizeBorder, var(--vscode-editorWidget-border))}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget .button:not(.disabled):hover,.monaco-editor .find-widget .codicon-find-selection:hover{background-color:var(--vscode-toolbar-hoverBackground)!important}.monaco-editor.findMatch{background-color:var(--vscode-editor-findMatchHighlightBackground)}.monaco-editor.currentFindMatch{background-color:var(--vscode-editor-findMatchBackground)}.monaco-editor.findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor.findMatch{background-color:var(--vscode-editorWidget-background)}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-collapsed{cursor:pointer;opacity:0;transition:opacity .5s;display:flex;align-items:center;justify-content:center;font-size:140%;margin-left:2px}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed{transition:initial}.monaco-editor .margin-view-overlays:hover .codicon,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons{opacity:1}.monaco-editor .inline-folded:after{color:gray;margin:.1em .2em 0;content:"⋯";display:inline;line-height:1em;cursor:pointer}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:transparent;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{display:inline-block;cursor:pointer;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{color:var(--vscode-editorGhostText-foreground)!important;background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border)}.monaco-editor .snippet-placeholder{min-width:2px;outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetTabstopHighlightBackground, transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder, transparent)}.monaco-editor .finish-snippet-placeholder{outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground, transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder, transparent)}.monaco-editor .suggest-widget{width:430px;z-index:40;display:flex;flex-direction:column;border-radius:3px}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-widget,.monaco-editor .suggest-details{flex:0 1 auto;width:100%;border-style:solid;border-width:1px;border-color:var(--vscode-editorSuggestWidget-border);background-color:var(--vscode-editorSuggestWidget-background)}.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-light .suggest-widget,.monaco-editor.hc-light .suggest-details{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{box-sizing:border-box;display:none;flex-flow:row nowrap;justify-content:space-between;width:100%;font-size:80%;padding:0 4px;border-top:1px solid var(--vscode-editorSuggestWidget-border);overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{display:flex;-mox-box-sizing:border-box;box-sizing:border-box;padding-right:10px;background-repeat:no-repeat;background-position:2px 2px;white-space:nowrap;cursor:pointer;touch-action:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:pre;justify-content:space-between}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;opacity:1;font-size:14px;cursor:pointer}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{overflow:hidden;text-overflow:ellipsis;opacity:.6}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{margin-left:12px;opacity:.4;font-size:85%;line-height:initial;text-overflow:ellipsis;overflow:hidden;align-self:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-shrink:1;flex-grow:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{overflow:hidden;flex-shrink:4;max-width:70%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;position:absolute;right:10px;width:18px;height:18px;visibility:hidden}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{display:block;height:16px;width:16px;margin-left:2px;background-repeat:no-repeat;background-size:80%;background-position:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{display:flex;align-items:center;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{margin:0 0 0 .3em;border:.1em solid #000;width:.7em;height:.7em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{display:flex;flex-direction:column;cursor:default;color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;overflow:hidden;text-overflow:ellipsis;opacity:.7;white-space:pre;margin:0 24px 0 0;padding:4px 0 12px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{padding:0;white-space:initial;min-height:calc(1rem + 8px)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ul,.monaco-editor .suggest-details ol{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-selectionHighlightBorder)}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightBorder)}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightStrongBorder)}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightTextBorder)}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .inline-edit-remove{background-color:var(--vscode-editorGhostText-background);font-style:italic;text-decoration:line-through}.monaco-editor .inline-edit-remove.backgroundColoring{background-color:var(--vscode-diffEditor-removedLineBackground)}.monaco-editor .inline-edit-hidden{opacity:0;font-size:0}.monaco-editor .inline-edit-decoration,.monaco-editor .suggest-preview-text .inline-edit{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .inline-edit-decoration,.monaco-editor .inline-edit-decoration-preview,.monaco-editor .suggest-preview-text .inline-edit{color:var(--vscode-editorGhostText-foreground)!important;background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border)}.monaco-editor .inlineEditHints.withBorder{z-index:39;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .inlineEditHints a,.monaco-editor .inlineEditHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineEditHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineEditHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineEditStatusBarItemLabel{margin-right:2px}.monaco-editor .parameter-hints-widget{z-index:39;display:flex;flex-direction:column;line-height:1.5em;cursor:default;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{max-width:440px;display:flex;flex-direction:row}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{content:"";display:block;height:100%;position:absolute;opacity:.5;border-left:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .monaco-scrollable-element,.monaco-editor .parameter-hints-widget .body{display:flex;flex:1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{content:"";display:block;position:absolute;left:0;width:100%;padding-top:4px;opacity:.5;border-bottom:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:initial}.monaco-editor .parameter-hints-widget .docs code{font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 .4em;background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source,.monaco-editor .parameter-hints-widget .docs .code{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{display:none;flex-direction:column;align-items:center;min-width:22px;justify-content:flex-end}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{width:16px;height:16px;background-repeat:no-repeat;cursor:pointer}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{text-align:center;height:12px;line-height:12px;font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .rename-box{z-index:100;color:inherit;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input{padding:3px;border-radius:2px;width:calc(100% - 8px)}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{float:left;background-color:inherit}.monaco-editor .sticky-widget-lines-scrollable{display:inline-block;position:absolute;overflow:hidden;width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit}.monaco-editor .sticky-widget-lines{position:absolute;background-color:inherit}.monaco-editor .sticky-line-number,.monaco-editor .sticky-line-content{color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute;background-color:inherit}.monaco-editor .sticky-line-number .codicon-folding-expanded,.monaco-editor .sticky-line-number .codicon-folding-collapsed{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit;white-space:nowrap}.monaco-editor .sticky-line-number-inner{display:inline-block;text-align:right}.monaco-editor .sticky-widget{border-bottom:1px solid var(--vscode-editorStickyScroll-border)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{width:100%;box-shadow:var(--vscode-editorStickyScroll-shadow) 0 3px 2px -2px;z-index:4;background-color:var(--vscode-editorStickyScroll-background)}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .unicode-highlight{border:1px solid var(--vscode-editorUnicodeHighlight-border);background-color:var(--vscode-editorUnicodeHighlight-background);box-sizing:border-box}.editor-banner{box-sizing:border-box;cursor:default;width:100%;font-size:12px;display:flex;overflow:visible;height:26px;background:var(--vscode-banner-background)}.editor-banner .icon-container{display:flex;flex-shrink:0;align-items:center;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-repeat:no-repeat;background-position:center center;background-size:16px;width:16px;padding:0;margin:0 6px 0 10px}.editor-banner .message-container{display:flex;align-items:center;line-height:26px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.editor-banner .message-container p{margin-block-start:0;margin-block-end:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{padding:3px;margin-left:12px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .iPadShowKeyboard{width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;resize:none;overflow:hidden;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjNDI0MjQyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) center center no-repeat;border:4px solid #F6F6F6;border-radius:4px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjQzVDNUM1Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) center center no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{z-index:50;user-select:text;-webkit-user-select:text;padding:10px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{height:1px;border:0;background-color:var(--vscode-editorHoverWidget-border)}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{font-weight:400;font-size:60%;float:right}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.markdown-body code{max-width:100%}.markdown-body pre{padding:0}.markdown-body code>div{margin-bottom:0!important}.markdown-body{max-width:100%;--prism-color: #bfc7d5;--prism-background-color: #292d3e}.cb-pre{overflow:hidden;width:100%;max-width:none;margin:0!important}.cb-pre,.cb-pre *{color:#abb2bf;font-family:Fira Code,Fira Mono,ui-monospace,monospace,Menlo,Consolas,DejaVu Sans Mono!important;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;tab-size:2;hyphens:none}.copy-button-group{column-gap:3.2px;display:flex;position:absolute;right:calc(var(--ifm-pre-padding) / 2);top:calc(var(--ifm-pre-padding) / 2)}.copy-button-group button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:6.4px;transition:opacity .2s ease-in-out;background:var(--prism-background-color)}.markdown-body .copy-btn>svg{width:18px;height:18px;position:relative}.markdown-body .copy-btn>svg path{fill:var(--prism-color)}.markdown-body .copy-btn--container{position:relative}.markdown-body .copy-btn--container:hover .copy-button-group button{opacity:.4}.markdown-body .copy-btn--container:hover .copy-button-group button:hover{opacity:1}._messageContainer_1ks3y_1{width:100%;box-sizing:border-box;overflow-wrap:break-word;color:var(--ifm-color-content);padding:20px;font-size:inherit;line-height:inherit;display:flex;flex-direction:column;align-items:flex-start;gap:10px}._messageContainer_1ks3y_1>*{max-width:100%}._messageText_1ks3y_19{overflow-wrap:wrap;max-width:100%!important}._messageText_1ks3y_19 a{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration);transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}._messageText_1ks3y_19 li{margin-bottom:var(--ifm-leading)}._messageText_1ks3y_19 p{margin:var(--ifm-leading) 0}._messageActions_1ks3y_37{display:flex;flex-direction:row;align-items:center;gap:10px;color:var(--cookbook-muted-color);font-weight:500;font-size:14px}._messageButton_1ks3y_47{cursor:pointer;opacity:.6}._messageButton_1ks3y_47:hover{opacity:1}._messageRating_1ks3y_56{cursor:pointer;opacity:1}._markdownBody_1ks3y_61{max-width:100%;overflow:scroll}._typingAnimationContainer_1ks3y_66{display:flex;align-items:center;gap:4px}@keyframes _typingAnimation_1ks3y_66{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-6px)}}._typingDot_1ks3y_85{display:inline-block;font-size:24px;line-height:1.5;color:var(--ifm-color-emphasis-600);animation:_typingAnimation_1ks3y_66 1s infinite}._typingDot_1ks3y_85:nth-child(1){animation-delay:0s}._typingDot_1ks3y_85:nth-child(2){animation-delay:.2s}._typingDot_1ks3y_85:nth-child(3){animation-delay:.4s}._flex_1ks3y_103{display:flex}._suggestedQuestionContainer_lwl8p_1{position:relative;display:flex;flex-wrap:wrap;padding-top:20px;padding-bottom:12px;gap:8px}._openModalButton_lwl8p_10{background-color:#1098fc}._suggestedQuestionBox_lwl8p_14{height:max-content;padding-top:12px;padding-bottom:12px}._maximizeButton_lwl8p_20{position:absolute;top:20px;right:20px;color:#fff;cursor:pointer;z-index:20}._column_lwl8p_29{display:flex;flex-direction:column}._readSection__container_lwl8p_34{height:calc(100% - 100px);overflow:scroll}._readSection_lwl8p_34{--padding-top: 0px;--padding-bottom: 75px;flex-grow:1;display:flex;flex-direction:column;justify-content:end;padding-bottom:var(--padding-bottom);padding-top:var(--padding-top);overflow-y:scroll;gap:10px;height:100%;mask-image:linear-gradient(to bottom,transparent,rgba(0,0,0,1) calc(var(--padding-top) + 40px),rgba(0,0,0,1) calc(100% - var(--padding-bottom) - 40px),transparent calc(100% - var(--padding-bottom) + 20px));text-align:left}._readSection_lwl8p_34::-webkit-scrollbar{display:none}._readSection_lwl8p_34{scrollbar-width:none}._writeSection_lwl8p_75{position:relative;display:flex;flex-shrink:0;align-items:center;width:100%;height:max-content;gap:4px;padding-left:20px;padding-right:20px;border-radius:10px}._writeSection_lwl8p_75 textarea::placeholder{color:var(--cookbook-muted-color)!important}._writeSection_lwl8p_75 textarea{font-size:16px}._sendButton_lwl8p_96{border-radius:10px;background-color:var(--cookbook-modal-background);position:absolute;display:flex;justify-content:center;align-items:center;padding:0;height:35px;width:35px;bottom:10px;right:30px;color:var(--cookbook-muted-color)}._sendButton_lwl8p_96:hover{color:unset}._sendButton_lwl8p_96>svg{margin-top:4px;color:var(--ifm-color-emphasis-600);transition:color .2s ease-in-out}._sendButton_lwl8p_96>svg:hover{color:var(--ifm-color-emphasis-700)}._container_lwl8p_163{position:relative;display:flex;flex-direction:column;overflow:hidden;color:#646464;padding:0;animation:.2s _fadeinfall_lwl8p_1;text-align:left!important;background:var(--cookbook-modal-background);border-radius:10px;transform:translateZ(0);width:100%;height:100%;max-width:var(--cookbook-modal-width);max-height:var(--cookbook-modal-height)}._row_lwl8p_185{display:flex;flex-direction:row;flex-grow:1;overflow:hidden}._sidebarWrapper_lwl8p_192{box-sizing:border-box;display:flex;flex-shrink:0;overflow:hidden;transition-duration:.3s;transition-timing-function:cubic-bezier(.87,0,.13,1);background-color:var(--ifm-background-color);width:0px}._sidebarWrapper__open_lwl8p_204{width:260px}._sidebarContent_lwl8p_208{position:relative;box-sizing:border-box;display:flex;width:260px;flex-shrink:0;flex-direction:column;border-right-width:1px;border-right-style:solid;--tw-border-opacity: 1;border-right-color:var(--ifm-color-emphasis-200);overflow:hidden;text-align:left}._container__expanded_lwl8p_223{height:100%;box-sizing:border-box;margin-top:-300px}._inputField_lwl8p_229{appearance:none;background:var( --cookbook-searchbox-background, var(--ifm-color-emphasis-100) );border:0;border-radius:10px;color:var(--cookbook-text-color);flex:1;font-size:14.4px;height:100%;outline:0;width:80%;padding-left:16px;padding-right:16px}._suggestionsContainer_lwl8p_248{display:flex;flex-direction:column;position:relative;z-index:10;width:100%;height:max-content;padding-left:20px;padding-right:20px;padding-bottom:20px}._suggestionsContainer_lwl8p_248>*{height:max-content}._tags_lwl8p_265{position:relative;flex-direction:column;display:flex;flex-wrap:wrap;align-items:start;width:100%;row-gap:8px;column-gap:4px;font-weight:500!important}@media (max-width: 768px){._tags_lwl8p_265{padding:unset}}._tags_lwl8p_265::-webkit-scrollbar{display:none}._tags_lwl8p_265{scrollbar-width:none}._tags_lwl8p_265>*{width:max-content}._modalOuterContainer_lwl8p_300{--cookbook-text-color: var(--ifm-color-emphasis-1000);--cookbook-muted-color: var(--ifm-color-secondary-darkest);--cookbook-container-background: rgba(47, 55, 69, .7);--cookbook-modal-background: var(--ifm-background-color);--cookbook-searchbox-background: var(--ifm-color-emphasis-100);--cookbook-searchbox-focus-background: var(--ifm-color-black);--cookbook-hit-background: var(--ifm-color-emphasis-100);--cookbook-footer-background: var(--ifm-background-surface-color);--cookbook-key-gradient: linear-gradient( -26.5deg, var(--ifm-color-emphasis-200) 0%, var(--ifm-color-emphasis-100) 100% );--cookbook-modal-width: 1000px;--cookbook-modal-height: 800px;--cookbook-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--cookbook-mobile-trigger: 768px;background:var(--cookbook-container-background);left:0;position:fixed;top:0;z-index:calc(var(--ifm-z-index-fixed) + 9998);display:flex;align-items:center;justify-content:center;cursor:unset;padding-bottom:calc(env(safe-area-inset-bottom) + 90px);padding-top:20px;padding-left:20px;padding-right:20px}._modalOuterContainer_lwl8p_300{height:100vh;padding-bottom:calc(env(safe-area-inset-bottom) + 90px);width:100vw}@media (max-width: 768px){._modalOuterContainer_lwl8p_300{padding:unset}}@supports (height: 100dvh){._modalOuterContainer_lwl8p_300{padding-bottom:20px;height:100dvh;width:100dvw}}._header_lwl8p_356{display:flex;border-bottom:1px solid var(--ifm-color-emphasis-200);background-color:var(--ifm-background-color);box-shadow:var(--ifm-navbar-shadow);padding-left:20px;padding-right:20px;width:100%}._poweredByContainer_lwl8p_369>*{color:var(--ifm-font-color-base)}._poweredByCookbook_lwl8p_373{display:flex!important;align-items:center!important;padding-left:0!important;font-weight:800!important}._poweredByCookbookLogo_lwl8p_380{width:calc(16px * var(--ifm-breadcrumb-size-multiplier) * 1.5);height:calc(16px * var(--ifm-breadcrumb-size-multiplier) * 1.5);margin-right:6px;margin-bottom:3px}._notActive_lwl8p_387{pointer-events:none}._closeBtn_lwl8p_391{position:absolute;width:35px;height:35px;top:10px;right:10px;color:var(--cookbook-muted-color);transition:all .2s ease-in-out;border-radius:10px;display:flex;justify-content:center;align-items:center;padding:0}._closeBtn_lwl8p_391:hover{background-color:var(--cookbook-modal-background)!important;color:var(--cookbook-text-color)!important}._buttonIcon_lwl8p_411{cursor:pointer}._buttonIcon_lwl8p_411:hover>*{color:var(--ifm-link-color)}._buttonIcon_lwl8p_411>*{transform:scale(1.1);transform-origin:bottom;transition:color .15s ease-in;color:var(--cookbook-text-color)}._sidebarToggleContainer_lwl8p_426{position:absolute;width:32px;height:max-content;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;left:-18px;top:0}._sidebarToggleButton_lwl8p_440{margin-left:4px;display:flex;height:50px;width:32px;flex-shrink:0;display:flex!important;flex-direction:column;align-items:center;justify-content:center;align-self:center;cursor:pointer;border-radius:10px;background:var(--ifm-background-surface-color);border-color:var(--ifm-color-emphasis-200);--color: var(--ifm-color-emphasis-300);--hover-color: var(--ifm-color-emphasis-200)}._sidebarToggleButton_lwl8p_440:before,._sidebarToggleButton_lwl8p_440:after{height:12px;width:4px;border-radius:9999px;--tw-bg-opacity: 1;background-color:var(--color);transition-property:all;transition-timing-function:cubic-bezier(.87,0,.13,1);transition-duration:.3s;--tw-content: "";content:var(--tw-content);display:block}._sidebarToggleButton_lwl8p_440:before{content:var(--tw-content);transform-origin:bottom;--tw-rotate: 0deg;--tw-translate-x: 0px;--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate))}._sidebarToggleButton_lwl8p_440:after{content:var(--tw-content);transform-origin:top;--tw-rotate: 0deg;--tw-translate-x: 0px;--tw-translate-y: -2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate))}@media (hover: hover) and (pointer: fine){._sidebarToggleButton_lwl8p_440:hover:before{background-color:var(--hover-color)}._sidebarToggleButton_lwl8p_440:hover:after{background-color:var(--hover-color)}}@media (hover: hover) and (pointer: fine){._sidebarToggleButton__open_lwl8p_506:hover:before{--tw-rotate: 15deg;--tw-translate-x: -2px}._sidebarToggleButton__open_lwl8p_506:hover:after{--tw-rotate: -15deg;--tw-translate-x: -2px}}._sidebarToggleButton_lwl8p_440:not(._sidebarToggleButton__open_lwl8p_506):before{--tw-rotate: -15deg}._sidebarToggleButton_lwl8p_440:not(._sidebarToggleButton__open_lwl8p_506):after{--tw-rotate: 15deg}._sidebarToggleButton_lwl8p_440{transition:all .3s cubic-bezier(.87,0,.13,1)!important;transform:translate(0)}._sidebarToggleButton_lwl8p_440:not(._sidebarToggleButton__open_lwl8p_506){transform:translate(10px);padding-left:16px!important}._sidebarToggleButton__open_lwl8p_506{transform:translate(-13px);border-top-right-radius:0;border-bottom-right-radius:0}._option_lwl8p_548{--bg-color: transparent;--active-color: #363a3f;--border-color: #30a46c;--icon-color: #edeef0;--padding-for-icons: 80px;position:relative;padding:15px 0 15px 16px;display:flex;align-items:center;justify-content:space-between;width:100%;border-left-width:2px;border-left-color:transparent;border-left-style:solid;background-color:var(--bg-color);transition:all ease-out .15s;cursor:pointer}._optionLabel_lwl8p_572{transition:all ease-out .15s;font-size:16px;font-weight:400;--tw-text-opacity: 1;color:var(--ifm-color-content);width:100%;height:22px;line-height:1.25;overflow:hidden;word-break:break-all;--tw-text-opacity: 1 !important;mask-image:linear-gradient(to right,rgba(0,0,0,1) calc(100% - var(--padding-for-icons) - 32px),transparent calc(100% - var(--padding-for-icons) + 16px));mask-size:calc(100% + var(--padding-for-icons) * .6) 100%}@media (hover: hover) and (pointer: fine){._option_lwl8p_548:hover>*{opacity:1}._option_lwl8p_548:hover ._optionLabel_lwl8p_572{mask-size:100% 100%}._option_lwl8p_548:hover{--tw-bg-opacity: 1;backdrop-filter:invert(10%);-webkit-backdrop-filter:invert(10%);transform:translateZ(0)}}._option__active_lwl8p_611>*{opacity:1}._option__active_lwl8p_611 ._optionLabel_lwl8p_572{mask-size:100% 100%}._option__active_lwl8p_611{--tw-bg-opacity: 1;backdrop-filter:invert(10%);-webkit-backdrop-filter:invert(10%);transform:translateZ(0)}._optionIcons_lwl8p_626{position:absolute;right:10px;margin-top:auto;margin-bottom:auto;z-index:10;display:flex;width:max-content;align-items:center;justify-content:center;gap:8px;transition-property:opacity;transition-timing-function:ease-in-out;transition-duration:.15s;opacity:0}._sidebarBottomContainer_lwl8p_645{margin-top:auto;bottom:0;box-sizing:border-box;width:100%;overflow:visible;border-top-width:1px;--tw-border-opacity: 1;border-top-style:solid;border-top-color:var(--ifm-color-emphasis-200);padding:20px 14px;background:var(--cookbook-modal-background);flex-shrink:0}._mainContentContainer_lwl8p_663{position:relative;display:flex;flex-grow:1;flex-direction:column;padding-bottom:20px}@keyframes _fadein_lwl8p_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeinfall_lwl8p_1{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}.react-scroll-to-bottom__panel{width:100%;max-height:100%;height:max-content;overflow-y:auto}.react-scroll-to-bottom__BasicScrollToBottom{position:absolute;width:100%;height:100%}.react-scroll-to-bottom__AutoHideFollowButton{background-color:#0003;border-radius:10px;border-width:0;bottom:5px;cursor:pointer;height:20px;outline:0;position:absolute;right:20px;width:20px;padding-top:50px}.react-scroll-to-bottom__AutoHideFollowButton:hover{background-color:#0006}.react-scroll-to-bottom__AutoHideFollowButton:active{background-color:#0009}._container_lh73c_1{position:relative;display:inline-flex;height:20px;width:44px;align-items:center;border-radius:9999px;background:var(--ifm-background-surface-color)!important;transition:background-color .2s ease;border:1px solid var(--ifm-color-emphasis-300)!important}._containerActive_lh73c_13{background:var(--ifm-color-info)!important}._containerActive_lh73c_13 ._toggle_lh73c_16{background:var(--ifm-color-emphasis-900, #000000)}._srLabel_lh73c_20{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}._toggle_lh73c_16{--position: 4px;display:inline-block;height:12px;width:12px;transform:translate(var(--position));border-radius:9999px;transition:transform .2s ease,background-color .2s ease;background:var(--ifm-color-emphasis-900, #ffffff)}._toggleActive_lh73c_45{--position: 27.2px}._modeContainer_1cc2j_2{position:relative;display:flex;flex-direction:row;align-items:center;justify-content:left;gap:10px;margin-bottom:15px;margin-top:-5px}._modeText_1cc2j_25{font-weight:700;color:var(--ifm-color-content);font-size:13px}')}(); -!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";function e(e,t){for(var n=0;ni[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var i={exports:{}},a={},o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;var c=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 i={};return"abcdefghijklmnopqrst".split("").forEach((function(e){i[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(a){return!1}}()?Object.assign:function(e,t){for(var n,i,a=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),c=1;c=f},a=function(){},e.unstable_forceFrameRate=function(e){0>e||125>>1,a=e[i];if(!(void 0!==a&&0x(r,n))void 0!==c&&0>x(c,r)?(e[i]=c,e[s]=n,i=s):(e[i]=r,e[o]=n,i=o);else{if(!(void 0!==c&&0>x(c,n)))break e;e[i]=c,e[s]=n,i=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var _=[],E=[],I=1,S=null,B=3,D=!1,L=!1,N=!1;function T(e){for(var t=k(E);null!==t;){if(null===t.callback)C(E);else{if(!(t.startTime<=e))break;C(E),t.sortIndex=t.expirationTime,v(_,t)}t=k(E)}}function Z(e){if(N=!1,T(e),!L)if(null!==k(_))L=!0,t(M);else{var i=k(E);null!==i&&n(Z,i.startTime-e)}}function M(t,a){L=!1,N&&(N=!1,i()),D=!0;var o=B;try{for(T(a),S=k(_);null!==S&&(!(S.expirationTime>a)||t&&!e.unstable_shouldYield());){var r=S.callback;if("function"==typeof r){S.callback=null,B=S.priorityLevel;var s=r(S.expirationTime<=a);a=e.unstable_now(),"function"==typeof s?S.callback=s:S===k(_)&&C(_),T(a)}else C(_);S=k(_)}if(null!==S)var c=!0;else{var l=k(E);null!==l&&n(Z,l.startTime-a),c=!1}return c}finally{S=null,B=o,D=!1}}var Q=a;e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_continueExecution=function(){L||D||(L=!0,t(M))},e.unstable_getCurrentPriorityLevel=function(){return B},e.unstable_getFirstCallbackNode=function(){return k(_)},e.unstable_next=function(e){switch(B){case 1:case 2:case 3:var t=3;break;default:t=B}var n=B;B=t;try{return e()}finally{B=n}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=Q,e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=B;B=e;try{return t()}finally{B=n}},e.unstable_scheduleCallback=function(a,o,r){var s=e.unstable_now();switch("object"==typeof r&&null!==r?r="number"==typeof(r=r.delay)&&0s?(a.sortIndex=r,v(E,a),null===k(_)&&a===k(E)&&(N?i():N=!0,n(Z,r-s))):(a.sortIndex=c,v(_,a),L||D||(L=!0,t(M))),a},e.unstable_wrapCallback=function(e){var t=B;return function(){var n=B;B=t;try{return e.apply(this,arguments)}finally{B=n}}}}(te),ee.exports=te;var ne=ee.exports,ie=P,ae=c,oe=ne; -/** @license React v17.0.2 - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */function re(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n