Giter Site home page Giter Site logo

hyperlane-xyz / hyperlane-warp-ui-template Goto Github PK

View Code? Open in Web Editor NEW
126.0 126.0 89.0 5.43 MB

A web app template for building Hyperlane Warp Route UIs

Home Page: https://hyperlane-warp-template.vercel.app

License: Other

JavaScript 4.48% TypeScript 91.64% CSS 3.88%
hyperlane interchain route template warp

hyperlane-warp-ui-template's People

Contributors

alexbharley avatar ameten avatar avious00 avatar dependabot[bot] avatar iamdanylo avatar jmrossy avatar nambrot avatar tkporter avatar yorhodes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hyperlane-warp-ui-template's Issues

Update to latest Wagmi + Rainbowkit

We're stuck on older versions for Ethers V5 support.
We'd need to adapt the SDK txs for Viem, as that's what newer Wagmi versions require.

Improves Warp UI wallet connection experience

Upgrade Wagmi, Viem, Cosmos-kit, and Solana libs

  • Replace Wagmi, Viem, and RainbowKit with v2 versions
  • Upgrade cosmos-kit to latest for bug fixes
  • Consider upgrading other cosmos libs such as cosmjs (may cause issues for injective patch)
  • Upgrade @solana/* libs for bug fixes

Preferably, these upgrades are made in unison with upgrades for the SDK's libs to avoid duplicate versions getting bundled.

Related, see discussion here: #153 (comment)

Handle USDT approval quirks

From USDT's contract code in etherscan:

    function approve(address _spender, uint _value) public onlyPayloadSize(2 * 32) {

        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require(!((_value != 0) && (allowed[msg.sender][_spender] != 0)));

        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
    }

Due to this quirk, there's an edge case we aren't currently covering. If a user does the approve tx and then following transfer tx isn't successful, the lingering approval amount can cause problems (unless the user retries the transfer with the exact same amount right away, in which case the previous approval will get used).

Epic: Reduce Warp UI tech debt

Patterns
5 points of complexity with lots of branching:

  • Balance checking
  • IGP quoting
  • Input validation
  • Transfer crafting
  • Adapter Factory

Rossy's Questions:

  • VMs: Are there new protocols that will not fit in the EVM, Solana, Cosmos buckets? e.g. adjacent to EVM like zkSync or Move or Fuel
  • ISM: Changes to gas: native chain token(s), token(s) for IGP, token you're transferring, token you're receiving (wrapping)
  • Warp Ui needs to understand which token is collateral vs synthetic in the context of multi-collateral

Architecture & Design
Schedule meeting with Nam, Rossy, Yorke, Avi, Paul to discuss

  • Make warp UI resilient to RPC failures during init (whole app fails)
  • Refactor balance checking to be more flexible
  • Refactor AdapterFactory to be smarter
  • Handle IBC nuances at Adapter layer
  • Handle Cosmos naked vs wasm divide better
  • Migrate logic from 4 pain points above in to adapters
  • Consider moving some IGP determination logic into the adapters
  • Consider removing NFT support (it's evm-only and maybe broken anyway)
  • Consider refactor of Route model

Diagram:
https://docs.google.com/drawings/d/1eeOlLwfHQtcJ1b2gSYkyWvXf3vZz6QmrJxOVa5nrC1Q/edit?usp=sharing

Completed

  • Refactor IGP related code: #98
  • Add support for async form validation

Tasks

  1. warp-UI
    jmrossy
  2. warp-UI
    jmrossy
  3. CLI dx warp-route
    paulbalaji

Warp UI: More recipient address validation

Prevent users from sending to recipient addresses that don't match the expected address format of the destination chain (e.g. an evm address to neutron, different cosmos chains with same address but different prefix)

Add Warp UI Testing Guide to Runbook

Tasks

Deprioritized

  • E2E (keyfunding, fork)

Message signed on the wrong chain

Context

A user ended up signing a warp route transfer intended from inEVM on zkSync ⁠[discord]

Investigation

As per zksync and etherscan this happened a few times on other chains as well.

@jmrossy suspects imperfect wallet switching behavior within https://github.com/wevm/wagmi for this.

Potential Solutions

Some workarounds are:

  1. adding more explicit wallet chain checks after switching (possibly hacky)
  2. upgrading to wagmi 2
  3. Possibly more user prompts to make sure that they are signing on the right chain (unfortunately wallets don't indicate the presence of calldata for a call to a non-existing contract)

Research UX approach for address confirmation

Context

We've seen tx where the address is sent to an address the user hasn't intended
Examples:

  • Wallets intercepting each other and ends up in another wallet, e.g. #85 Trust Wallet, Pontem
  • WalletConnect multiple accounts + wagmi choosing not the one
  • wagmi bug to not switch chains (zksync to arbitrum) #148

Solution Design

Rossy to explore different UX/IxD approaches and review other interchain defi apps. Considering removing self and/or adding more explicit confirmations around addresses.

Add direct Ledger wallet support, including for Injective

This was originally included in the wallet list but disabled during the big Ledger hack a few months ago.
Recommend doing this task first: #173
And then adding Ledger to the wallet lists (see CosmosWalletContext and EvmWalletContext).

As for Injective support, that needs more investigation. The custom tx format patch applied to cosmjs may interfere with Ledger integration via cosmos-kit.

Related discussion:
https://discord.com/channels/935678348330434570/1008821009731829810/1250598928777482332

Sentry error sampling rate doesn't seem to work

Despite very low sentry sample rates, the monthly error quotas are burned through quickly. Typically after 5-10 days in a month.

We should reach out to Sentry support to confirm and hopefully resolve the filter issue

Chain and Token fields should be smarter

Current behavior:

Chain fields: When a user selects a from/to chain, the other field still allows them to select any other chain, even if there's no warp route with that combination.

Token field: The token field shows only the tokens for the selected chains.

Desired behavior:

Chain fields: When one chain field set, the other field shows still shows all chains but invalid options are disabled (greyed out).

Token field: The token field always shows all tokens but invalid options (based on to/from chains) are disabled (greyed out)

Warp Route UI NFT support

The WarpRoute UI currently only works with HypERC20 and HypErc20Collateral. This ticket encapsulates the work neccessary to support the NFT versions of these contracts

Bug report: next build for Warp UI

Bug report from community dev:

Vercel deploy doesn't work when attempting to run ‘next build’ on a fresh Warp ui template, seems like a known bug with next.js where that version of @types/react package doesn't register and it keeps telling you to reinstall.

Downgrading to 18.0.1 resolved it, but still got ‘unknown error’ when attempting deploy to Vercel.

Max button seamlessly accounts for gas

  • Calculate both local and interchain gas
  • Subtract gas from max amount - dynamic updating when quotes change
  • Communicating to users the breakdown of their total amount minus gas
  • Storing in the tx history

False Positive Tick Mark for Failed Transactions in Bridge History

Issue Description
After a transaction fails on the bridge, the transaction history still shows a tick mark indicating a successful transaction.

Steps to Reproduce:

  1. Initiate a transaction on the bridge.
  2. Ensure the transaction fails ( beacause I selected the max TIAN token of Neutron Chain I forget to left some token to use as gas fee).
  3. Check the bridge history and observe the tick mark.

Expected Behavior:
The history should accurately reflect the status of the transaction. If a transaction fails, it should show a failure status (e.g., a cross mark or an error symbol) instead of a tick mark.

Screenshot 2024-06-21 150449
Screenshot 2024-06-21 150525

Link ( https://www.mintscan.io/neutron/tx/EEADD7ADD119461913B2A82E30BCEC68A4024DEC9BDC5C24C1CE85C61674B403 )

Additional Information:

  • Browser: Chrome 114.0.5735.199
  • Network: Neturon to Celestia
  • Other Context: Any other information that might be relevant, such as any recent updates or changes to the system before the issue occurred.

Suggestion:

To address this issue, I think it would be beneficial to:

-Double-check the transaction status from the backend or blockchain before updating the UI to make sure it reflects the actual outcome.
-Improve error handling so that failed transactions show a clear failure status (maybe a cross mark or an error icon) instead of a tick mark.
-Update the UI to make it easier to differentiate between successful and failed transactions with different colors or icons.
-Provide users with more detailed notifications when a transaction fails, explaining what went wrong and how they can fix it.
-Ensure thorough testing to confirm that the issue is resolved and the transaction history is accurate.
ThankYou

Support OKX wallet / explicitly surface Keplr errors

Someone in Discord was having intermittent issues with Keplr wallet. They also had the OKX wallet installed. Sometimes when trying to connect to Keplr, the OKX wallet would silently take precedence. The addresses in the side panel would relate to the OKX wallet addresses despite saying "Keplr" on them. We should:

  • Either explicitly support the OKX wallets / show them on the right side as "OKX" and surface to the user there was an error with Keplr
  • Just surface errors connecting to Keplr and have the user try again

Context

Persist transfer history to local storage

Current behavior:

The tx history data stored in the zustand store is not persisted.

Desired behavior:

Persist and rehydrate the transfer state to browser local storage for a semi-durable history of the user's transfers from the UI. We must also expand the transfer data in the zustand store (and storage) to include the following (which will be required for #31):

  1. The form values (chains, token, amount, recipient)
  2. The the origin chain tx hash
  3. The time + date

Create new wallet flyout menu

Current behavior:

The transfer history is somewhat accessible from the transfer modal (TransfersStatusModal)
The WalletControlBar and TransfersStatusBar are two separate dropdown components in the Header.
The WalletControlBar is always visible but the TransfersStatusBar shows once a transfer has been initiated.

Desired behavior:

Merge TransfersStatusBar and WalletControlBar into a new flyout menu similar to the wallet menu on app.uniswap.org

See mockups below or the Figma file here.

Note: Ignore the fonts in the Figma/mockups, just a bug. Use the existing fonts in the tailwind theme.

Wallet flyout

Tx modal

IGP fees displayed in UI

  • Atm, there's no indication in the UI what the IGP fees will be / what they are
  • Originally, if IGP fees exceeded the user balance, then it would just say that some error occurred when signing. As a hack in #60, I put a check when submitting a tx that would show a very ugly toast with some basic info
  • We should add a section in the IGP in the review tx details card
  • This is most important for the EVM. We should still have the ability to support Sealevel ofc via adapters, but for now we can consider just hardcoding an estimated amount

Enable deeplinking to transfers

#30 and #31 are prerequisites

Current behavior:

No way to access transfer details directly via a link

Desired behavior:

Transfer data is encoded into a URL and deep-links auto-display the transfer details modal. This must work for both the user that initiated the transfer and users that did not.

Improve visibility into transactions processing

State of Transaction

  • Current state of tx
  • Estimated time to completion, e.g. Stargate

Timeline Widget

Current behavior:
For most chains, the TransfersStatusModal shows a Timeline widget

Screenshot 2023-07-14 at 1 20 11 PM

Desired behavior:

Two improvements are needed:

  1. The individual segments of the timeline should clickable external links to the corresponding transaction on the target chain's block explorer (example tx page.
  2. The results from the useMessageTimeline hook (see Timeline in TransfersStatusModal) should be cached when the message is confirmed to be delivered so we don't re-request that data each time.

Item 1 will require changes to the timeline widget, which is in a separate repo here:
https://github.com/hyperlane-xyz/hyperlane-widgets - we may want to move this into monorepo

Use the multiProvider's method to get the explorer tx link.

Error loading site

image

There is an error with loading the site. The following message is displayed:

inue-button" class="outline-button">{continue-button}<div id="continue-always-wrapper"><label for="continue-always" id="continue-always-text" class="checkbox-container"><span id="block-continue-always" style="margin-left: 10px;">{continue-always} <input type="checkbox" id="continue-always" name="continue-always"/> <span class="checkmark"><div class="divider"><section class="rounded-card" id="upgrade-protection" style="display: none;"><div id="upgrade-protection-details"><h3 id="block-level-up">{block-level-up}

<span id="block-level-up-info">{block-level-up-info}
<a href="https://malwarebytes.com/premium?guard=1&utm_source=BGreco&utm_medium=block_page\" target="_blank" id="block-level-up-info-link" class="link">{block-level-up-info-link} <span id="block-level-up-info-contd">{block-level-up-info-contd}

<a href="https://malwarebytes.com/premium?guard=1&utm_source=BGreco&utm_medium=block_page\" target="_blank" id="block-get-started" class="outline-button">{block-get-started}<picture id="upgrade-protection-image"><source srcset="../assets/level-up-illustration-dark.svg" media="(prefers-color-scheme: dark)"><img src="../assets/level-up-illustration.svg" alt="Level up illustration"/><section id="learn-more"><img src="../assets/tooltip-black.svg" alt="Learn more icon"/>

<span id="block-learn-more">{block-learn-more} <a target="_blank" id="block-learn-more-link" href="https://www.malwarebytes.com/cybersecurity\" class="link">{block-learn-more-link}

<link rel="stylesheet" href="block.css"/><link rel="stylesheet" href="block-dark.css" media="(prefers-color-scheme: dark)"/>","error":{"reason":"invalid JSON","code":"SERVER_ERROR","body":{"0":60,"1":104,"2":116,"3":109,"4":108,"5":62,"6":60,"7":104,"8":101,"9":97,"10":100,"11":62,"12":60,"13":116,"14":105,"15":116,"16":108,"17":101,"18":32,"19":105,"20":100,"21":61,"22":34,"23":98,"24":108,"25":111,"26":99,"27":107,"28":101,"29":100,"30":45,"31":98,"32":121,"33":45,"34":116,"35":105,"36":116,"37":108,"38":101,"39":34,"40":62,"41":60,"42":47,"43":116,"44":105,"45":116,"46":108,"47":101,"48":62,"49":60,"50":109,"51":101,"52":116,"53":97,"54":32,"55":99,"56":104,"57":97,"58":114,"59":115,"60":101,"61":116,"62":61,"63":34,"64":117,"65":116,"66":102,"67":45,"68":56,"69":34,"70":47,"71":62,"72":60,"73":109,"74":101,"75":116,"76":97,"77":32,"78":110,"79":97,"80":109,"81":101,"82":61,"83":34,"84":118,"85":105,"86":101,"87":119,"88":112,"89":111,"90":114,"91":116,"92":34,"93":32,"94":99,"95":111,"96":110,"97":116,"98":101,"99":110,"100":116,"101":61,"102":34,"103":119,"104":105,"105":100,"106":116,"107":104,"108":61,"109":100,"110":101,"111":118,"112":105,"113":99,"114":101,"115":45,"116":119,"117":105,"118":100,"119":116,"120":104,"121":44,"122":105,"123":110,"124":105,"125":116,"126":105,"127":97,"128":108,"129":45,"130":115,"131":99,"132":97,"133":108,"134":101,"135":61,"136":49,"137":34,"138":47,"139":62,"140":60,"141":115,"142":99,"143":114,"144":105,"145":112,"146":116,"147":32,"148":100,"149":101,"150":102,"151":101,"152":114,"153":61,"154":34,"155":100,"156":101,"157":102,"158":101,"159":114,"160":34,"161":32,"162":115,"163":114,"164":99,"165":61,"166":34,"167":47,"168":118,"169":101,"170":110,"171":100,"172":111,"173":114,"174":47,"175":118,"176":101,"177":110,"178":100,"179":111,"180":114,"181":46,"182":106,"183":115,"184":34,"185":62,"186":60,"187":47,"188":115,"189":99,"190":114,"191":105,"192":112,"193":116,"194":62,"195":60,"196":115,"197":99,"198":114,"199":105,"200":112,"201":116,"202":32,"203":100,"204":101,"205":102,"206":101,"207":114,"208":61,"209":34,"210":100,"211":101,"212":102,"213":101,"214":114,"215":34,"216":32,"217":115,"218":114,"219":99,"220":61,"221":34,"222":47,"223":98,"224":108,"225":111,"226":99,"227":107,"228":46,"229":106,"230":115,"231":34,"232":62,"233":60,"234":47,"235":115,"236":99,"237":114,"238":105,"239":112,"240":116,"241":62,"242":60,"243":47,"244":104,"245":101,"246":97,"247":100,"248":62,"249":60,"250":98,"251":111,"252":100,"253":121,"254":62,"255":60,"256":109,"257":97,"258":105,"259":110,"260":32,"261":99,"262":108,"263":97,"264":115,"265":115,"266":61,"267":34,"268":99,"269":111,"270":110,"271":116,"272":97,"273":105,"274":110,"275":101,"276":114,"277":34,"278":62,"279":60,"280":104,"281":101,"282":97,"283":100,"284":101,"285":114,"286":32,"287":99,"288":108,"289":97,"290":115,"291":115,"292":61,"293":34,"294":98,"295":103,"296":45,"297":104,"298":101,"299":97,"300":100,"301":101,"302":114,"303":34,"304":32,"305":105,"306":100,"307":61,"308":34,"309":98,"310":108,"311":111,"312":99,"313":107,"314":45,"315":104,"316":101,"317":97,"318":100,"319":101,"320":114,"321":34,"322":62,"323":60,"324":100,"325":105,"326":118,"327":62,"328":60,"329":112,"330":105,"331":99,"332":116,"333":117,"334":114,"335":101,"336":62,"337":60,"338":115,"339":111,"340":117,"341":114,"342":99,"343":101,"344":32,"345":115,"346":114,"347":99,"348":115,"349":101,"350":116,"351":61,"352":34,"353":46,"354":46,"355":47,"356":97,"357":115,"358":115,"359":101,"360":116,"361":115,"362":47,"363":98,"364":114,"365":111,"366":119,"367":115,"368":101,"369":114,"370":45,"371":103,"372":117,"373":97,"374":114,"375":100,"376":45,"377":108,"378":111,"379":103,"380":111,"381":45,"382":119,"383":104,"384":105,"385":116,"386":101,"387":46,"388":115,"389":118,"390":103,"391":34,"392":32,"393":109,"394":101,"395":100,"396":105,"397":97,"398":61,"399":34,"400":40,"401":112,"402":114,"403":101,"404":102,"405":101,"406":114,"407":115,"408":45,"409":99,"410":111,"411":108,"412":111,"413":114,"414":45,"415":115,"416":99,"417":104,"418":101,"419":109,"420":101,"421":58,"422":32,"423":100,"424":97,"425":114,"426":107,"427":41,"428":34,"429":62,"430":60,"431":105,"432":109,"433":103,"434":32,"435":115,"436":114,"437":99,"438":61,"439":34,"440":46,"441":46,"442":47,"443":97,"444":115,"445":115,"446":101,"447":116,"448":115,"449":47,"450":98,"451":114,"452":111,"453":119,"454":115,"455":101,"456":114,"457":45,"458":103,"459":117,"460":97,"461":114,"462":100,"463":45,"464":108,"465":111,"466":103,"467":111,"468":46,"469":115,"470":118,"471":103,"472":34,"473":32,"474":97,"475":108,"476":116,"477":61,"478":34,"479":77,"480":97,"481":108,"482":119,"483":97,"484":114,"485":101,"486":98,"487":121,"488":116,"489":101,"490":115,"491":32,"492":66,"493":114,"494":111,"495":119,"496":115,"497":101,"498":114,"499":32,"500":71,"501":117,"502":97,"503":114,"504":100,"505":32,"506":76,"507":111,"508":103,"509":111,"510":34,"511":47,"512":62,"513":60,"514":47,"515":112,"516":105,"517":99,"518":116,"519":117,"520":114,"521":101,"522":62,"523":60,"524":47,"525":100,"526":105,"527":118,"528":62,"529":60,"530":47,"531":104,"532":101,"533":97,"534":100,"535":101,"536":114,"537":62,"538":60,"539":100,"540":105,"541":118,"542":32,"543":99,"544":108,"545":97,"546":115,"547":115,"548":61,"549":34,"550":99,"551":111,"552":110,"553":116,"554":101,"555":110,"556":116,"557":34,"558":62,"559":60,"560":115,"561":101,"562":99,"563":116,"564":105,"565":111,"566":110,"567":32,"568":105,"569":100,"570":61,"571":34,"572":119,"573":101,"574":98,"575":115,"576":105,"577":116,"578":101,"579":45,"580":98,"581":108,"582":111,"583":99,"584":107,"585":101,"586":100,"587":34,"588":62,"589":60,"590":104,"591":51,"592":62,"593":60,"594":115,"595":112,"596":97,"597":110,"598":32,"599":105,"600":100,"601":61,"602":34,"603":98,"604":108,"605":111,"606":99,"607":107,"608":45,"609":114,"610":101,"611":97,"612":115,"613":111,"614":110,"615":34,"616":62,"617":123,"618":98,"619":108,"620":111,"621":99,"622":107,"623":45,"624":114,"625":101,"626":97,"627":115,"628":111,"629":110,"630":125,"631":60,"632":47,"633":115,"634":112,"635":97,"636":110,"637":62,"638":60,"639":47,"640":104,"641":51,"642":62,"643":60,"644":100,"645":105,"646":118,"647":32,"648":105,"649":100,"650":61,"651":34,"652":98,"653":108,"654":111,"655":99,"656":107,"657":45,"658":117,"659":114,"660":108,"661":45,"662":101,"663":120,"664":112,"665":108,"666":97,"667":110,"668":97,"669":116,"670":105,"671":111,"672":110,"673":34,"674":62,"675":60,"676":115,"677":112,"678":97,"679":110,"680":62,"681":60,"682":115,"683":112,"684":97,"685":110,"686":62,"687":87,"688":101,"689":98,"690":115,"691":105,"692":116,"693":101,"694":32,"695":66,"696":108,"697":111,"698":99,"699":107,"700":101,"701":100,"702":58,"703":60,"704":47,"705":115,"706":112,"707":97,"708":110,"709":62,"710":38,"711":110,"712":98,"713":115,"714":112,"715":59,"716":60,"717":115,"718":116,"719":114,"720":111,"721":110,"722":103,"723":32,"724":105,"725":100,"726":61,"727":34,"728":98,"729":108,"730":111,"731":99,"732":107,"733":45,"734":117,"735":114,"736":108,"737":34,"738":62,"739":123,"740":98,"741":108,"742":111,"743":99,"744":107,"745":45,"746":117,"747":114,"748":108,"749":125,"750":60,"751":47,"752":115,"753":116,"754":114,"755":111,"756":110,"757":103,"758":62,"759":60,"760":112,"761":32,"762":105,"763":100,"764":61,"765":34,"766":97,"767":112,"768":112,"769":45,"770":100,"771":98,"772":45,"773":118,"774":101,"775":114,"776":115,"777":105,"778":111,"779":110,"780":34,"781":62,"782":60,"783":47,"784":112,"785":62,"786":60,"787":47,"788":115,"789":112,"790":97,"791":110,"792":62,"793":60,"794":115,"795":112,"796":97,"797":110,"798":32,"799":105,"800":100,"801":61,"802":34,"803":98,"804":108,"805":111,"806":99,"807":107,"808":45,"809":101,"810":120,"811":112,"812":108,"813":97,"814":110,"815":97,"816":116,"817":105,"818":111,"819":110,"820":34,"821":62,"822":123,"823":98,"824":108,"825":111,"826":99,"827":107,"828":45,"829":101,"830":120,"831":112,"832":108,"833":97,"834":110,"835":97,"836":116,"837":105,"838":111,"839":110,"840":125,"841":60,"842":47,"843":115,"844":112,"845":97,"846":110,"847":62,"848":60,"849":47,"850":100,"851":105,"852":118,"853":62,"854":60,"855":100,"856":105,"857":118,"858":32,"859":105,"860":100,"861":61,"862":34,"863":97,"864":108,"865":101,"866":114,"867":116,"868":34,"869":62,"870":60,"871":105,"872":109,"873":103,"874":32,"875":115,"876":114,"877":99,"878":61,"879":34,"880":46,"881":46,"882":47,"883":97,"884":115,"885":115,"886":101,"887":116,"888":115,"889":47,"890":119,"891":97,"892":114,"893":110,"894":105,"895":110,"896":103,"897":45,"898":115,"899":101,"900":118,"901":101,"902":114,"903":105,"904":116,"905":121,"906":45,"907":109,"908":101,"909":100,"910":105,"911":117,"912":109,"913":46,"914":115,"915":118,"916":103,"917":34,"918":32,"919":97,"920":108,"921":116,"922":61,"923":34,"924":87,"925":97,"926":114,"927":110,"928":105,"929":110,"930":103,"931":32,"932":105,"933":99,"934":111,"935":110,"936":34,"937":47,"938":62,"939":60,"940":112,"941":62,"942":60,"943":115,"944":112,"945":97,"946":110,"947":32,"948":105,"949":100,"950":61,"951":34,"952":98,"953":108,"954":111,"955":99,"956":107,"957":45,"958":97,"959":108,"960":101,"961":114,"962":116,"963":45,"964":116,"965":101,"966":120,"967":116,"968":34,"969":62,"970":123,"971":98,"972":108,"973":111,"974":99,"975":107,"976":45,"977":97,"978":108,"979":101,"980":114,"981":116,"982":45,"983":116,"984":101,"985":120,"986":116,"987":125,"988":60,"989":47,"990":115,"991":112,"992":97,"993":110,"994":62,"995":38,"996":110,"997":98,"998":115,"999":112,"1000":59,"1001":60,"1002":97,"1003":32,"1004":116,"1005":97,"1006":114,"1007":103,"1008":101,"1009":116,"1010":61,"1011":34,"1012":95,"1013":98,"1014":108,"1015":97,"1016":110,"1017":107,"1018":34,"1019":32,"1020":104,"1021":114,"1022":101,"1023":102,"1024":61,"1025":34,"1026":104,"1027":116,"1028":116,"1029":112,"1030":115,"1031":58,"1032":47,"1033":47,"1034":108,"1035":105,"1036":110,"1037":107,"1038":115,"1039":46,"1040":109,"1041":97,"1042":108,"1043":119,"1044":97,"1045":114,"1046":101,"1047":98,"1048":121,"1049":116,"1050":101,"1051":115,"1052":46,"1053":99,"1054":111,"1055":109,"1056":47,"1057":115,"1058":117,"1059":112,"1060":112,"1061":111,"1062":114,"1063":116,"1064":47,"1065":98,"1066":114,"1067":111,"1068":119,"1069":115,"1070":101,"1071":114,"1072":103,"1073":117,"1074":97,"1075":114,"1076":100,"1077":47,"1078":63,"1079":103,"1080":117,"1081":97,"1082":114,"1083":100,"1084":61,"1085":49,"1086":38,"1087":120,"1088":45,"1089":115,"1090":111,"1091":117,"1092":114,"1093":99,"1094":101,"1095":61,"1096":115,"1097":117,"1098":112,"1099":112,"1100":111,"1101":114,"1102":116,"1103":34,"1104":32,"1105":105,"1106":100,"1107":61,"1108":34,"1109":98,"1110":108,"1111":111,"1112":99,"1113":107,"1114":45,"1115":97,"1116":108,"1117":101,"1118":114,"1119":116,"1120":45,"1121":108,"1122":105,"1123":110,"1124":107,"1125":34,"1126":32,"1127":99,"1128":108,"1129":97,"1130":115,"1131":115,"1132":61,"1133":34,"1134":108,"1135":105,"1136":110,"1137":107,"1138":34,"1139":62,"1140":123,"1141":98,"1142":108,"1143":111,"1144":99,"1145":107,"1146":45,"1147":97,"1148":108,"1149":101,"1150":114,"1151":116,"1152":45,"1153":108,"1154":105,"1155":110,"1156":107,"1157":125,"1158":60,"1159":47,"1160":97,"1161":62,"1162":60,"1163":47,"1164":112,"1165":62,"1166":60,"1167":47,"1168":100,"1169":105,"1170":118,"1171":62,"1172":60,"1173":100,"1174":105,"1175":118,"1176":32,"1177":105,"1178":100,"1179":61,"1180":34,"1181":97,"1182":99,"1183":116,"1184":105,"1185":111,"1186":110,"1187":115,"1188":34,"1189":62,"1190":60,"1191":98,"1192":117,"1193":116,"1194":116,"1195":111,"1196":110,"1197":32,"1198":105,"1199":100,"1200":61,"1201":34,"1202":103,"1203":111,"1204":45,"1205":98,"1206":97,"1207":99,"1208":107,"1209":34,"1210":32,"1211":99,"1212":108,"1213":97,"1214":115,"1215":115,"1216":61,"1217":34,"1218":112,"1219":114,"1220":105,"1221":109,"1222":97,"1223":114,"1224":121,"1225":45,"1226":98,"1227":117,"1228":116,"1229":116,"1230":111,"1231":110,"1232":34,"1233":62,"1234":60,"1235":105,"1236":109,"1237":103,"1238":32,"1239":115,"1240":114,"1241":99,"1242":61,"1243":34,"1244":46,"1245":46,"1246":47,"1247":97,"1248":115,"1249":115,"1250":101,"1251":116,"1252":115,"1253":47,"1254":97,"1255":114,"1256":114,"1257":111,"1258":119,"1259":45,"1260":98,"1261":97,"1262":99,"1263":107,"1264":45,"1265":108,"1266":105,"1267":103,"1268":104,"1269":116,"1270":46,"1271":115,"1272":118,"1273":103,"1274":34,"1275":32,"1276":99,"1277":108,"1278":97,"1279":115,"1280":115,"1281":61,"1282":34,"1283":98,"1284":97,"1285":99,"1286":107,"1287":45,"1288":115,"1289":112,"1290":97,"1291":110,"1292":34,"1293":32,"1294":97,"1295":108,"1296":116,"1297":61,"1298":34,"1299":87,"1300":97,"1301":114,"1302":110,"1303":105,"1304":110,"1305":103,"1306":32,"1307":105,"1308":99,"1309":111,"1310":110,"1311":34,"1312":47,"1313":62,"1314":32,"1315":60,"1316":115,"1317":112,"1318":97,"1319":110,"1320":32,"1321":105,"1322":100,"1323":61,"1324":34,"1325":98,"1326":108,"1327":111,"1328":99,"1329":107,"1330":45,"1331":103,"1332":111,"1333":45,"1334":98,"1335":97,"1336":99,"1337":107,"1338":34,"1339":62,"1340":123,"1341":103,"1342":111,"1343":45,"1344":98,"1345":97,"1346":99,"1347":107,"1348":125,"1349":60,"1350":47,"1351":115,"1352":112,"1353":97,"1354":110,"1355":62,"1356":60,"1357":47,"1358":98,"1359":117,"1360":116,"1361":116,"1362":111,"1363":110,"1364":62,"1365":60,"1366":100,"1367":105,"1368":118,"1369":32,"1370":105,"1371":100,"1372":61,"1373":34,"1374":99,"1375":111,"1376":110,"1377":116,"1378":105,"1379":110,"1380":117,"1381":101,"1382":45,"1383":119,"1384":114,"1385":97,"1386":112,"1387":112,"1388":101,"1389":114,"1390":34,"1391":62,"1392":60,"1393":98,"1394":117,"1395":116,"1396":116,"1397":111,"1398":110,"1399":32,"1400":105,"1401":100,"1402":61,"1403":34,"1404":99,"1405":111,"1406":110,"1407":116,"1408":105,"1409":110,"1410":117,"1411":101,"1412":45,"1413":98,"1414":117,"1415":116,"1416":116,"1417":111,"1418":110,"1419":34,"1420":32,"1421":99,"1422":108,"1423":97,"1424":115,"1425":115,"1426":61,"1427":34,"1428":111,"1429":117,"1430":116,"1431":108,"1432":105,"1433":110,"1434":101,"1435":45,"1436":98,"1437":117,"1438":116,"1439":116,"1440":111,"1441":110,"1442":34,"1443":62,"1444":123,"1445":99,"1446":111,"1447":110,"1448":116,"1449":105,"1450":110,"1451":117,"1452":101,"1453":45,"1454":98,"1455":117,"1456":116,"1457":116,"1458":111,"1459":110,"1460":125,"1461":60,"1462":47,"1463":98,"1464":117,"1465":116,"1466":116,"1467":111,"1468":110,"1469":62,"1470":60,"1471":100,"1472":105,"1473":118,"1474":32,"1475":105,"1476":100,"1477":61,"1478":34,"1479":99,"1480":111,"1481":110,"1482":116,"1483":105,"1484":110,"1485":117,"1486":101,"1487":45,"1488":97,"1489":108,"1490":119,"1491":97,"1492":121,"1493":115,"1494":45,"1495":119,"1496":114,"1497":97,"1498":112,"1499":112,"1500":101,"1501":114,"1502":34,"1503":62,"1504":60,"1505":108,"1506":97,"1507":98,"1508":101,"1509":108,"1510":32,"1511":102,"1512":111,"1513":114,"1514":61,"1515":34,"1516":99,"1517":111,"1518":110,"1519":116,"1520":105,"1521":110,"1522":117,"1523":101,"1524":45,"1525":97,"1526":108,"1527":119,"1528":97,"1529":121,"1530":115,"1531":34,"1532":32,"1533":105,"1534":100,"1535":61,"1536":34,"1537":99,"1538":111,"1539":110,"1540":116,"1541":105,"1542":110,"1543":117,"1544":101,"1545":45,"1546":97,"1547":108,"1548":119,"1549":97,"1550":121,"1551":115,"1552":45,"1553":116,"1554":101,"1555":120,"1556":116,"1557":34,"1558":32,"1559":99,"1560":108,"1561":97,"1562":115,"1563":115,"1564":61,"1565":34,"1566":99,"1567":104,"1568":101,"1569":99,"1570":107,"1571":98,"1572":111,"1573":120,"1574":45,"1575":99,"1576":111,"1577":110,"1578":116,"1579":97,"1580":105,"1581":110,"1582":101,"1583":114,"1584":34,"1585":62,"1586":60,"1587":115,"1588":112,"1589":97,"1590":110,"1591":32,"1592":105,"1593":100,"1594":61,"1595":34,"1596":98,"1597":108,"1598":111,"1599":99,"1600":107,"1601":45,"1602":99,"1603":111,"1604":110,"1605":116,"1606":105,"1607":110,"1608":117,"1609":101,"1610":45,"1611":97,"1612":108,"1613":119,"1614":97,"1615":121,"1616":115,"1617":34,"1618":32,"1619":115,"1620":116,"1621":121,"1622":108,"1623":101,"1624":61,"1625":34,"1626":109,"1627":97,"1628":114,"1629":103,"1630":105,"1631":110,"1632":45,"1633":108,"1634":101,"1635":102,"1636":116,"1637":58,"1638":32,"1639":49,"1640":48,"1641":112,"1642":120,"1643":59,"1644":34,"1645":62,"1646":123,"1647":99,"1648":111,"1649":110,"1650":116,"1651":105,"1652":110,"1653":117,"1654":101,"1655":45,"1656":97,"1657":108,"1658":119,"1659":97,"1660":121,"1661":115,"1662":125,"1663":60,"1664":47,"1665":115,"1666":112,"1667":97,"1668":110,"1669":62,"1670":32,"1671":60,"1672":105,"1673":110,"1674":112,"1675":117,"1676":116,"1677":32,"1678":116,"1679":121,"1680":112,"1681":101,"1682":61,"1683":34,"1684":99,"1685":104,"1686":101,"1687":99,"1688":107,"1689":98,"1690":111,"1691":120,"1692":34,"1693":32,"1694":105,"1695":100,"1696":61,"1697":34,"1698":99,"1699":111,"1700":110,"1701":116,"1702":105,"1703":110,"1704":117,"1705":101,"1706":45,"1707":97,"1708":108,"1709":119,"1710":97,"1711":121,"1712":115,"1713":34,"1714":32,"1715":110,"1716":97,"1717":109,"1718":101,"1719":61,"1720":34,"1721":99,"1722":111,"1723":110,"1724":116,"1725":105,"1726":110,"1727":117,"1728":101,"1729":45,"1730":97,"1731":108,"1732":119,"1733":97,"1734":121,"1735":115,"1736":34,"1737":47,"1738":62,"1739":32,"1740":60,"1741":115,"1742":112,"1743":97,"1744":110,"1745":32,"1746":99,"1747":108,"1748":97,"1749":115,"1750":115,"1751":61,"1752":34,"1753":99,"1754":104,"1755":101,"1756":99,"1757":107,"1758":109,"1759":97,"1760":114,"1761":107,"1762":34,"1763":62,"1764":60,"1765":47,"1766":115,"1767":112,"1768":97,"1769":110,"1770":62,"1771":60,"1772":47,"1773":108,"1774":97,"1775":98,"1776":101,"1777":108,"1778":62,"1779":60,"1780":47,"1781":100,"1782":105,"1783":118,"1784":62,"1785":60,"1786":47,"1787":100,"1788":105,"1789":118,"1790":62,"1791":60,"1792":47,"1793":100,"1794":105,"1795":118,"1796":62,"1797":60,"1798":47,"1799":115,"1800":101,"1801":99,"1802":116,"1803":105,"1804":111,"1805":110,"1806":62,"1807":60,"1808":100,"1809":105,"1810":118,"1811":32,"1812":99,"1813":108,"1814":97,"1815":115,"1816":115,"1817":61,"1818":34,"1819":100,"1820":105,"1821":118,"1822":105,"1823":100,"1824":101,"1825":114,"1826":34,"1827":62,"1828":60,"1829":47,"1830":100,"1831":105,"1832":118,"1833":62,"1834":60,"1835":115,"1836":101,"1837":99,"1838":116,"1839":105,"1840":111,"1841":110,"1842":32,"1843":99,"1844":108,"1845":97,"1846":115,"1847":115,"1848":61,"1849":34,"1850":114,"1851":111,"1852":117,"1853":110,"1854":100,"1855":101,"1856":100,"1857":45,"1858":99,"1859":97,"1860":114,"1861":100,"1862":34,"1863":32,"1864":105,"1865":100,"1866":61,"1867":34,"1868":117,"1869":112,"1870":103,"1871":114,"1872":97,"1873":100,"1874":101,"1875":45,"1876":112,"1877":114,"1878":111,"1879":116,"1880":101,"1881":99,"1882":116,"1883":105,"1884":111,"1885":110,"1886":34,"1887":32,"1888":115,"1889":116,"1890":121,"1891":108,"1892":101,"1893":61,"1894":34,"1895":100,"1896":105,"1897":115,"1898":112,"1899":108,"1900":97,"1901":121,"1902":58,"1903":32,"1904":110,"1905":111,"1906":110,"1907":101,"1908":59,"1909":34,"1910":62,"1911":60,"1912":100,"1913":105,"1914":118,"1915":32,"1916":105,"1917":100,"1918":61,"1919":34,"1920":117,"1921":112,"1922":103,"1923":114,"1924":97,"1925":100,"1926":101,"1927":45,"1928":112,"1929":114,"1930":111,"1931":116,"1932":101,"1933":99,"1934":116,"1935":105,"1936":111,"1937":110,"1938":45,"1939":100,"1940":101,"1941":116,"1942":97,"1943":105,"1944":108,"1945":115,"1946":34,"1947":62,"1948":60,"1949":104,"1950":51,"1951":32,"1952":105,"1953":100,"1954":61,"1955":34,"1956":98,"1957":108,"1958":111,"1959":99,"1960":107,"1961":45,"1962":108,"1963":101,"1964":118,"1965":101,"1966":108,"1967":45,"1968":117,"1969":112,"1970":34,"1971":62,"1972":123,"1973":98,"1974":108,"1975":111,"1976":99,"1977":107,"1978":45,"1979":108,"1980":101,"1981":118,"1982":101,"1983":108,"1984":45,"1985":117,"1986":112,"1987":125,"1988":60,"1989":47,"1990":104,"1991":51,"1992":62,"1993":60,"1994":112,"1995":62,"1996":60,"1997":115,"1998":112,"1999":97,"2000":110,"2001":32,"2002":105,"2003":100,"2004":61,"2005":34,"2006":98,"2007":108,"2008":111,"2009":99,"2010":107,"2011":45,"2012":108,"2013":101,"2014":118,"2015":101,"2016":108,"2017":45,"2018":117,"2019":112,"2020":45,"2021":105,"2022":110,"2023":102,"2024":111,"2025":34,"2026":62,"2027":123,"2028":98,"2029":108,"2030":111,"2031":99,"2032":107,"2033":45,"2034":108,"2035":101,"2036":118,"2037":101,"2038":108,"2039":45,"2040":117,"2041":112,"2042":45,"2043":105,"2044":110,"2045":102,"2046":111,"2047":125,"2048":60,"2049":47,"2050":115,"2051":112,"2052":97,"2053":110,"2054":62,"2055":60,"2056":98,"2057":114,"2058":47,"2059":62,"2060":60,"2061":97,"2062":32,"2063":104,"2064":114,"2065":101,"2066":102,"2067":61,"2068":34,"2069":104,"2070":116,"2071":116,"2072":112,"2073":115,"2074":58,"2075":47,"2076":47,"2077":109,"2078":97,"2079":108,"2080":119,"2081":97,"2082":114,"2083":101,"2084":98,"2085":121,"2086":116,"2087":101,"2088":115,"2089":46,"2090":99,"2091":111,"2092":109,"2093":47,"2094":112,"2095":114,"2096":101,"2097":109,"2098":105,"2099":117,"2100":109,"2101":63,"2102":103,"2103":117,"2104":97,"2105":114,"2106":100,"2107":61,"2108":49,"2109":38,"2110":117,"2111":116,"2112":109,"2113":95,"2114":115,"2115":111,"2116":117,"2117":114,"2118":99,"2119":101,"2120":61,"2121":66,"2122":71,"2123":114,"2124":101,"2125":99,"2126":111,"2127":38,"2128":117,"2129":116,"2130":109,"2131":95,"2132":109,"2133":101,"2134":100,"2135":105,"2136":117,"2137":109,"2138":61,"2139":98,"2140":108,"2141":111,"2142":99,"2143":107,"2144":95,"2145":112,"2146":97,"2147":103,"2148":101,"2149":34,"2150":32,"2151":116,"2152":97,"2153":114,"2154":103,"2155":101,"2156":116,"2157":61,"2158":34,"2159":95,"2160":98,"2161":108,"2162":97,"2163":110,"2164":107,"2165":34,"2166":32,"2167":105,"2168":100,"2169":61,"2170":34,"2171":98,"2172":108,"2173":111,"2174":99,"2175":107,"2176":45,"2177":108,"2178":101,"2179":118,"2180":101,"2181":108,"2182":45,"2183":117,"2184":112,"2185":45,"2186":105,"2187":110,"2188":102,"2189":111,"2190":45,"2191":108,"2192":105,"2193":110,"2194":107,"2195":34,"2196":32,"2197":99,"2198":108,"2199":97,"2200":115,"2201":115,"2202":61,"2203":34,"2204":108,"2205":105,"2206":110,"2207":107,"2208":34,"2209":62,"2210":123,"2211":98,"2212":108,"2213":111,"2214":99,"2215":107,"2216":45,"2217":108,"2218":101,"2219":118,"2220":101,"2221":108,"2222":45,"2223":117,"2224":112,"2225":45,"2226":105,"2227":110,"2228":102,"2229":111,"2230":45,"2231":108,"2232":105,"2233":110,"2234":107,"2235":125,"2236":60,"2237":47,"2238":97,"2239":62,"2240":38,"2241":110,"2242":98,"2243":115,"2244":112,"2245":59,"2246":60,"2247":115,"2248":112,"2249":97,"2250":110,"2251":32,"2252":105,"2253":100,"2254":61,"2255":34,"2256":98,"2257":108,"2258":111,"2259":99,"2260":107,"2261":45,"2262":108,"2263":101,"2264":118,"2265":101,"2266":108,"2267":45,"2268":117,"2269":112,"2270":45,"2271":105,"2272":110,"2273":102,"2274":111,"2275":45,"2276":99,"2277":111,"2278":110,"2279":116,"2280":100,"2281":34,"2282":62,"2283":123,"2284":98,"2285":108,"2286":111,"2287":99,"2288":107,"2289":45,"2290":108,"2291":101,"2292":118,"2293":101,"2294":108,"2295":45,"2296":117,"2297":112,"2298":45,"2299":105,"2300":110,"2301":102,"2302":111,"2303":45,"2304":99,"2305":111,"2306":110,"2307":116,"2308":100,"2309":125,"2310":60,"2311":47,"2312":115,"2313":112,"2314":97,"2315":110,"2316":62,"2317":60,"2318":47,"2319":112,"2320":62,"2321":60,"2322":97,"2323":32,"2324":104,"2325":114,"2326":101,"2327":102,"2328":61,"2329":34,"2330":104,"2331":116,"2332":116,"2333":112,"2334":115,"2335":58,"2336":47,"2337":47,"2338":109,"2339":97,"2340":108,"2341":119,"2342":97,"2343":114,"2344":101,"2345":98,"2346":121,"2347":116,"2348":101,"2349":115,"2350":46,"2351":99,"2352":111,"2353":109,"2354":47,"2355":112,"2356":114,"2357":101,"2358":109,"2359":105,"2360":117,"2361":109,"2362":63,"2363":103,"2364":117,"2365":97,"2366":114,"2367":100,"2368":61,"2369":49,"2370":38,"2371":117,"2372":116,"2373":109,"2374":95,"2375":115,"2376":111,"2377":117,"2378":114,"2379":99,"2380":101,"2381":61,"2382":66,"2383":71,"2384":114,"2385":101,"2386":99,"2387":111,"2388":38,"2389":117,"2390":116,"2391":109,"2392":95,"2393":109,"2394":101,"2395":100,"2396":105,"2397":117,"2398":109,"2399":61,"2400":98,"2401":108,"2402":111,"2403":99,"2404":107,"2405":95,"2406":112,"2407":97,"2408":103,"2409":101,"2410":34,"2411":32,"2412":116,"2413":97,"2414":114,"2415":103,"2416":101,"2417":116,"2418":61,"2419":34,"2420":95,"2421":98,"2422":108,"2423":97,"2424":110,"2425":107,"2426":34,"2427":32,"2428":105,"2429":100,"2430":61,"2431":34,"2432":98,"2433":108,"2434":111,"2435":99,"2436":107,"2437":45,"2438":103,"2439":101,"2440":116,"2441":45,"2442":115,"2443":116,"2444":97,"2445":114,"2446":116,"2447":101,"2448":100,"2449":34,"2450":32,"2451":99,"2452":108,"2453":97,"2454":115,"2455":115,"2456":61,"2457":34,"2458":111,"2459":117,"2460":116,"2461":108,"2462":105,"2463":110,"2464":101,"2465":45,"2466":98,"2467":117,"2468":116,"2469":116,"2470":111,"2471":110,"2472":34,"2473":62,"2474":123,"2475":98,"2476":108,"2477":111,"2478":99,"2479":107,"2480":45,"2481":103,"2482":101,"2483":116,"2484":45,"2485":115,"2486":116,"2487":97,"2488":114,"2489":116,"2490":101,"2491":100,"2492":125,"2493":60,"2494":47,"2495":97,"2496":62,"2497":60,"2498":47,"2499":100,"2500":105,"2501":118,"2502":62,"2503":60,"2504":112,"2505":105,"2506":99,"2507":116,"2508":117,"2509":114,"2510":101,"2511":32,"2512":105,"2513":100,"2514":61,"2515":34,"2516":117,"2517":112,"2518":103,"2519":114,"2520":97,"2521":100,"2522":101,"2523":45,"2524":112,"2525":114,"2526":111,"2527":116,"2528":101,"2529":99,"2530":116,"2531":105,"2532":111,"2533":110,"2534":45,"2535":105,"2536":109,"2537":97,"2538":103,"2539":101,"2540":34,"2541":62,"2542":60,"2543":115,"2544":111,"2545":117,"2546":114,"2547":99,"2548":101,"2549":32,"2550":115,"2551":114,"2552":99,"2553":115,"2554":101,"2555":116,"2556":61,"2557":34,"2558":46,"2559":46,"2560":47,"2561":97,"2562":115,"2563":115,"2564":101,"2565":116,"2566":115,"2567":47,"2568":108,"2569":101,"2570":118,"2571":101,"2572":108,"2573":45,"2574":117,"2575":112,"2576":45,"2577":105,"2578":108,"2579":108,"2580":117,"2581":115,"2582":116,"2583":114,"2584":97,"2585":116,"2586":105,"2587":111,"2588":110,"2589":45,"2590":100,"2591":97,"2592":114,"2593":107,"2594":46,"2595":115,"2596":118,"2597":103,"2598":34,"2599":32,"2600":109,"2601":101,"2602":100,"2603":105,"2604":97,"2605":61,"2606":34,"2607":40,"2608":112,"2609":114,"2610":101,"2611":102,"2612":101,"2613":114,"2614":115,"2615":45,"2616":99,"2617":111,"2618":108,"2619":111,"2620":114,"2621":45,"2622":115,"2623":99,"2624":104,"2625":101,"2626":109,"2627":101,"2628":58,"2629":32,"2630":100,"2631":97,"2632":114,"2633":107,"2634":41,"2635":34,"2636":62,"2637":60,"2638":105,"2639":109,"2640":103,"2641":32,"2642":115,"2643":114,"2644":99,"2645":61,"2646":34,"2647":46,"2648":46,"2649":47,"2650":97,"2651":115,"2652":115,"2653":101,"2654":116,"2655":115,"2656":47,"2657":108,"2658":101,"2659":118,"2660":101,"2661":108,"2662":45,"2663":117,"2664":112,"2665":45,"2666":105,"2667":108,"2668":108,"2669":117,"2670":115,"2671":116,"2672":114,"2673":97,"2674":116,"2675":105,"2676":111,"2677":110,"2678":46,"2679":115,"2680":118,"2681":103,"2682":34,"2683":32,"2684":97,"2685":108,"2686":116,"2687":61,"2688":34,"2689":76,"2690":101,"2691":118,"2692":101,"2693":108,"2694":32,"2695":117,"2696":112,"2697":32,"2698":105,"2699":108,"2700":108,"2701":117,"2702":115,"2703":116,"2704":114,"2705":97,"2706":116,"2707":105,"2708":111,"2709":110,"2710":34,"2711":47,"2712":62,"2713":60,"2714":47,"2715":112,"2716":105,"2717":99,"2718":116,"2719":117,"2720":114,"2721":101,"2722":62,"2723":60,"2724":47,"2725":115,"2726":101,"2727":99,"2728":116,"2729":105,"2730":111,"2731":110,"2732":62,"2733":60,"2734":115,"2735":101,"2736":99,"2737":116,"2738":105,"2739":111,"2740":110,"2741":32,"2742":105,"2743":100,"2744":61,"2745":34,"2746":108,"2747":101,"2748":97,"2749":114,"2750":110,"2751":45,"2752":109,"2753":111,"2754":114,"2755":101,"2756":34,"2757":62,"2758":60,"2759":105,"2760":109,"2761":103,"2762":32,"2763":115,"2764":114,"2765":99,"2766":61,"2767":34,"2768":46,"2769":46,"2770":47,"2771":97,"2772":115,"2773":115,"2774":101,"2775":116,"2776":115,"2777":47,"2778":116,"2779":111,"2780":111,"2781":108,"2782":116,"2783":105,"2784":112,"2785":45,"2786":98,"2787":108,"2788":97,"2789":99,"2790":107,"2791":46,"2792":115,"2793":118,"2794":103,"2795":34,"2796":32,"2797":97,"2798":108,"2799":116,"2800":61,"2801":34,"2802":76,"2803":101,"2804":97,"2805":114,"2806":110,"2807":32,"2808":109,"2809":111,"2810":114,"2811":101,"2812":32,"2813":105,"2814":99,"2815":111,"2816":110,"2817":34,"2818":47,"2819":62,"2820":60,"2821":112,"2822":62,"2823":60,"2824":115,"2825":112,"2826":97,"2827":110,"2828":32,"2829":105,"2830":100,"2831":61,"2832":34,"2833":98,"2834":108,"2835":111,"2836":99,"2837":107,"2838":45,"2839":108,"2840":101,"2841":97,"2842":114,"2843":110,"2844":45,"2845":109,"2846":111,"2847":114,"2848":101,"2849":34,"2850":62,"2851":123,"2852":98,"2853":108,"2854":111,"2855":99,"2856":107,"2857":45,"2858":108,"2859":101,"2860":97,"2861":114,"2862":110,"2863":45,"2864":109,"2865":111,"2866":114,"2867":101,"2868":125,"2869":60,"2870":47,"2871":115,"2872":112,"2873":97,"2874":110,"2875":62,"2876":38,"2877":110,"2878":98,"2879":115,"2880":112,"2881":59,"2882":60,"2883":97,"2884":32,"2885":116,"2886":97,"2887":114,"2888":103,"2889":101,"2890":116,"2891":61,"2892":34,"2893":95,"2894":98,"2895":108,"2896":97,"2897":110,"2898":107,"2899":34,"2900":32,"2901":105,"2902":100,"2903":61,"2904":34,"2905":98,"2906":108,"2907":111,"2908":99,"2909":107,"2910":45,"2911":108,"2912":101,"2913":97,"2914":114,"2915":110,"2916":45,"2917":109,"2918":111,"2919":114,"2920":101,"2921":45,"2922":108,"2923":105,"2924":110,"2925":107,"2926":34,"2927":32,"2928":104,"2929":114,"2930":101,"2931":102,"2932":61,"2933":34,"2934":104,"2935":116,"2936":116,"2937":112,"2938":115,"2939":58,"2940":47,"2941":47,"2942":119,"2943":119,"2944":119,"2945":46,"2946":109,"2947":97,"2948":108,"2949":119,"2950":97,"2951":114,"2952":101,"2953":98,"2954":121,"2955":116,"2956":101,"2957":115,"2958":46,"2959":99,"2960":111,"2961":109,"2962":47,"2963":99,"2964":121,"2965":98,"2966":101,"2967":114,"2968":115,"2969":101,"2970":99,"2971":117,"2972":114,"2973":105,"2974":116,"2975":121,"2976":34,"2977":32,"2978":99,"2979":108,"2980":97,"2981":115,"2982":115,"2983":61,"2984":34,"2985":108,"2986":105,"2987":110,"2988":107,"2989":34,"2990":62,"2991":123,"2992":98,"2993":108,"2994":111,"2995":99,"2996":107,"2997":45,"2998":108,"2999":101,"3000":97,"3001":114,"3002":110,"3003":45,"3004":109,"3005":111,"3006":114,"3007":101,"3008":45,"3009":108,"3010":105,"3011":110,"3012":107,"3013":125,"3014":60,"3015":47,"3016":97,"3017":62,"3018":60,"3019":47,"3020":112,"3021":62,"3022":60,"3023":47,"3024":115,"3025":101,"3026":99,"3027":116,"3028":105,"3029":111,"3030":110,"3031":62,"3032":60,"3033":47,"3034":100,"3035":105,"3036":118,"3037":62,"3038":60,"3039":108,"3040":105,"3041":110,"3042":107,"3043":32,"3044":114,"3045":101,"3046":108,"3047":61,"3048":34,"3049":115,"3050":116,"3051":121,"3052":108,"3053":101,"3054":115,"3055":104,"3056":101,"3057":101,"3058":116,"3059":34,"3060":32,"3061":104,"3062":114,"3063":101,"3064":102,"3065":61,"3066":34,"3067":98,"3068":108,"3069":111,"3070":99,"3071":107,"3072":46,"3073":99,"3074":115,"3075":115,"3076":34,"3077":47,"3078":62,"3079":60,"3080":108,"3081":105,"3082":110,"3083":107,"3084":32,"3085":114,"3086":101,"3087":108,"3088":61,"3089":34,"3090":115,"3091":116,"3092":121,"3093":108,"3094":101,"3095":115,"3096":104,"3097":101,"3098":101,"3099":116,"3100":34,"3101":32,"3102":104,"3103":114,"3104":101,"3105":102,"3106":61,"3107":34,"3108":98,"3109":108,"3110":111,"3111":99,"3112":107,"3113":45,"3114":100,"3115":97,"3116":114,"3117":107,"3118":46,"3119":99,"3120":115,"3121":115,"3122":34,"3123":32,"3124":109,"3125":101,"3126":100,"3127":105,"3128":97,"3129":61,"3130":34,"3131":40,"3132":112,"3133":114,"3134":101,"3135":102,"3136":101,"3137":114,"3138":115,"3139":45,"3140":99,"3141":111,"3142":108,"3143":111,"3144":114,"3145":45,"3146":115,"3147":99,"3148":104,"3149":101,"3150":109,"3151":101,"3152":58,"3153":32,"3154":100,"3155":97,"3156":114,"3157":107,"3158":41,"3159":34,"3160":47,"3161":62,"3162":60,"3163":47,"3164":109,"3165":97,"3166":105,"3167":110,"3168":62,"3169":60,"3170":47,"3171":98,"3172":111,"3173":100,"3174":121,"3175":62,"3176":60,"3177":47,"3178":104,"3179":116,"3180":109,"3181":108,"3182":62},"error":{}},"requestBody":"{"method":"eth_call","params":[{"to":"0x4501bbe6e731a4bc5c60c03a77435b2f6d5e9fe7","data":"0x440df4f4"},"latest"],"id":42,"jsonrpc":"2.0"}","requestMethod":"POST","url":"https://api.nautilus.nautchain.xyz"}, code=CALL_EXCEPTION, version=providers/5.7.2)

"Self" address should not fall back to using the `cosmos` prefix

There can sometimes be an issue e.g. getting the Neutron address, which then results in the Cosmos-prefixed address being used instead. This could happen because:

Some suggestions:

  • Maybe just outright give an error and tell them to refresh? or retry if we get errors?
  • If we're confident that simply converting an address with a bech32 prefix like "cosmos" into one with the correct bech32 prefix is 100% safe, we could consider doing this

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.