{"version":3,"sources":["jsdelivr-header.js","/npm/socket-bridge-widget@0.1.3/dist/cjs/index.js"],"names":[],"mappings":"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","file":"/npm/socket-bridge-widget@0.1.3/dist/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/socket-bridge-widget@0.1.3/dist/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar reactQuery = require('react-query');\nvar axios = require('axios');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nfunction _interopNamespace(e) {\n  if (e && e.__esModule) return e;\n  var n = Object.create(null);\n  if (e) {\n    Object.keys(e).forEach(function (k) {\n      if (k !== 'default') {\n        var d = Object.getOwnPropertyDescriptor(e, k);\n        Object.defineProperty(n, k, d.get ? d : {\n          enumerable: true,\n          get: function () { return e[k]; }\n        });\n      }\n    });\n  }\n  n[\"default\"] = e;\n  return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\nvar axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);\n\nfunction styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar css_248z = \"/*\\n! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com\\n*//*\\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\\n*/\\n\\n*,\\n::before,\\n::after {\\n  box-sizing: border-box; /* 1 */\\n  border-width: 0; /* 2 */\\n  border-style: solid; /* 2 */\\n  border-color: #e5e7eb; /* 2 */\\n}\\n\\n::before,\\n::after {\\n  --tw-content: '';\\n}\\n\\n/*\\n1. Use a consistent sensible line-height in all browsers.\\n2. Prevent adjustments of font size after orientation changes in iOS.\\n3. Use a more readable tab size.\\n4. Use the user's configured `sans` font-family by default.\\n*/\\n\\nhtml {\\n  line-height: 1.5; /* 1 */\\n  -webkit-text-size-adjust: 100%; /* 2 */\\n  -moz-tab-size: 4; /* 3 */\\n  -o-tab-size: 4;\\n     tab-size: 4; /* 3 */\\n  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\\\"; /* 4 */\\n}\\n\\n/*\\n1. Remove the margin in all browsers.\\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\\n*/\\n\\nbody {\\n  margin: 0; /* 1 */\\n  line-height: inherit; /* 2 */\\n}\\n\\n/*\\n1. Add the correct height in Firefox.\\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n3. Ensure horizontal rules are visible by default.\\n*/\\n\\nhr {\\n  height: 0; /* 1 */\\n  color: inherit; /* 2 */\\n  border-top-width: 1px; /* 3 */\\n}\\n\\n/*\\nAdd the correct text decoration in Chrome, Edge, and Safari.\\n*/\\n\\nabbr:where([title]) {\\n  -webkit-text-decoration: underline dotted;\\n          text-decoration: underline dotted;\\n}\\n\\n/*\\nRemove the default font size and weight for headings.\\n*/\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n  font-size: inherit;\\n  font-weight: inherit;\\n}\\n\\n/*\\nReset links to optimize for opt-in styling instead of opt-out.\\n*/\\n\\na {\\n  color: inherit;\\n  text-decoration: inherit;\\n}\\n\\n/*\\nAdd the correct font weight in Edge and Safari.\\n*/\\n\\nb,\\nstrong {\\n  font-weight: bolder;\\n}\\n\\n/*\\n1. Use the user's configured `mono` font family by default.\\n2. Correct the odd `em` font sizing in all browsers.\\n*/\\n\\ncode,\\nkbd,\\nsamp,\\npre {\\n  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace; /* 1 */\\n  font-size: 1em; /* 2 */\\n}\\n\\n/*\\nAdd the correct font size in all browsers.\\n*/\\n\\nsmall {\\n  font-size: 80%;\\n}\\n\\n/*\\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\\n*/\\n\\nsub,\\nsup {\\n  font-size: 75%;\\n  line-height: 0;\\n  position: relative;\\n  vertical-align: baseline;\\n}\\n\\nsub {\\n  bottom: -0.25em;\\n}\\n\\nsup {\\n  top: -0.5em;\\n}\\n\\n/*\\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n3. Remove gaps between table borders by default.\\n*/\\n\\ntable {\\n  text-indent: 0; /* 1 */\\n  border-color: inherit; /* 2 */\\n  border-collapse: collapse; /* 3 */\\n}\\n\\n/*\\n1. Change the font styles in all browsers.\\n2. Remove the margin in Firefox and Safari.\\n3. Remove default padding in all browsers.\\n*/\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n  font-family: inherit; /* 1 */\\n  font-size: 100%; /* 1 */\\n  line-height: inherit; /* 1 */\\n  color: inherit; /* 1 */\\n  margin: 0; /* 2 */\\n  padding: 0; /* 3 */\\n}\\n\\n/*\\nRemove the inheritance of text transform in Edge and Firefox.\\n*/\\n\\nbutton,\\nselect {\\n  text-transform: none;\\n}\\n\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Remove default button styles.\\n*/\\n\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n  -webkit-appearance: button; /* 1 */\\n  background-color: transparent; /* 2 */\\n  background-image: none; /* 2 */\\n}\\n\\n/*\\nUse the modern Firefox focus style for all focusable elements.\\n*/\\n\\n:-moz-focusring {\\n  outline: auto;\\n}\\n\\n/*\\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\\n*/\\n\\n:-moz-ui-invalid {\\n  box-shadow: none;\\n}\\n\\n/*\\nAdd the correct vertical alignment in Chrome and Firefox.\\n*/\\n\\nprogress {\\n  vertical-align: baseline;\\n}\\n\\n/*\\nCorrect the cursor style of increment and decrement buttons in Safari.\\n*/\\n\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n  height: auto;\\n}\\n\\n/*\\n1. Correct the odd appearance in Chrome and Safari.\\n2. Correct the outline style in Safari.\\n*/\\n\\n[type='search'] {\\n  -webkit-appearance: textfield; /* 1 */\\n  outline-offset: -2px; /* 2 */\\n}\\n\\n/*\\nRemove the inner padding in Chrome and Safari on macOS.\\n*/\\n\\n::-webkit-search-decoration {\\n  -webkit-appearance: none;\\n}\\n\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Change font properties to `inherit` in Safari.\\n*/\\n\\n::-webkit-file-upload-button {\\n  -webkit-appearance: button; /* 1 */\\n  font: inherit; /* 2 */\\n}\\n\\n/*\\nAdd the correct display in Chrome and Safari.\\n*/\\n\\nsummary {\\n  display: list-item;\\n}\\n\\n/*\\nRemoves the default spacing and border for appropriate elements.\\n*/\\n\\nblockquote,\\ndl,\\ndd,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nhr,\\nfigure,\\np,\\npre {\\n  margin: 0;\\n}\\n\\nfieldset {\\n  margin: 0;\\n  padding: 0;\\n}\\n\\nlegend {\\n  padding: 0;\\n}\\n\\nol,\\nul,\\nmenu {\\n  list-style: none;\\n  margin: 0;\\n  padding: 0;\\n}\\n\\n/*\\nPrevent resizing textareas horizontally by default.\\n*/\\n\\ntextarea {\\n  resize: vertical;\\n}\\n\\n/*\\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\\n2. Set the default placeholder color to the user's configured gray 400 color.\\n*/\\n\\ninput::-moz-placeholder, textarea::-moz-placeholder {\\n  opacity: 1; /* 1 */\\n  color: #9ca3af; /* 2 */\\n}\\n\\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\\n  opacity: 1; /* 1 */\\n  color: #9ca3af; /* 2 */\\n}\\n\\ninput::placeholder,\\ntextarea::placeholder {\\n  opacity: 1; /* 1 */\\n  color: #9ca3af; /* 2 */\\n}\\n\\n/*\\nSet the default cursor for buttons.\\n*/\\n\\nbutton,\\n[role=\\\"button\\\"] {\\n  cursor: pointer;\\n}\\n\\n/*\\nMake sure disabled buttons don't get the pointer cursor.\\n*/\\n:disabled {\\n  cursor: default;\\n}\\n\\n/*\\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\\n   This can trigger a poorly considered lint error in some tools but is included by design.\\n*/\\n\\nimg,\\nsvg,\\nvideo,\\ncanvas,\\naudio,\\niframe,\\nembed,\\nobject {\\n  display: block; /* 1 */\\n  vertical-align: middle; /* 2 */\\n}\\n\\n/*\\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\\n*/\\n\\nimg,\\nvideo {\\n  max-width: 100%;\\n  height: auto;\\n}\\n\\n/*\\nEnsure the default browser behavior of the `hidden` attribute.\\n*/\\n\\n[hidden] {\\n  display: none;\\n}\\n\\n*, ::before, ::after {\\n  --tw-translate-x: 0;\\n  --tw-translate-y: 0;\\n  --tw-rotate: 0;\\n  --tw-skew-x: 0;\\n  --tw-skew-y: 0;\\n  --tw-scale-x: 1;\\n  --tw-scale-y: 1;\\n  --tw-pan-x:  ;\\n  --tw-pan-y:  ;\\n  --tw-pinch-zoom:  ;\\n  --tw-scroll-snap-strictness: proximity;\\n  --tw-ordinal:  ;\\n  --tw-slashed-zero:  ;\\n  --tw-numeric-figure:  ;\\n  --tw-numeric-spacing:  ;\\n  --tw-numeric-fraction:  ;\\n  --tw-ring-inset:  ;\\n  --tw-ring-offset-width: 0px;\\n  --tw-ring-offset-color: #fff;\\n  --tw-ring-color: rgb(59 130 246 / 0.5);\\n  --tw-ring-offset-shadow: 0 0 #0000;\\n  --tw-ring-shadow: 0 0 #0000;\\n  --tw-shadow: 0 0 #0000;\\n  --tw-shadow-colored: 0 0 #0000;\\n  --tw-blur:  ;\\n  --tw-brightness:  ;\\n  --tw-contrast:  ;\\n  --tw-grayscale:  ;\\n  --tw-hue-rotate:  ;\\n  --tw-invert:  ;\\n  --tw-saturate:  ;\\n  --tw-sepia:  ;\\n  --tw-drop-shadow:  ;\\n  --tw-backdrop-blur:  ;\\n  --tw-backdrop-brightness:  ;\\n  --tw-backdrop-contrast:  ;\\n  --tw-backdrop-grayscale:  ;\\n  --tw-backdrop-hue-rotate:  ;\\n  --tw-backdrop-invert:  ;\\n  --tw-backdrop-opacity:  ;\\n  --tw-backdrop-saturate:  ;\\n  --tw-backdrop-sepia:  ;\\n}\\r\\n.absolute {\\n  position: absolute;\\n}\\r\\n.relative {\\n  position: relative;\\n}\\r\\n.top-14 {\\n  top: 3.5rem;\\n}\\r\\n.left-4 {\\n  left: 1rem;\\n}\\r\\n.z-10 {\\n  z-index: 10;\\n}\\r\\n.col-span-5 {\\n  grid-column: span 5 / span 5;\\n}\\r\\n.col-start-1 {\\n  grid-column-start: 1;\\n}\\r\\n.col-start-7 {\\n  grid-column-start: 7;\\n}\\r\\n.m-1 {\\n  margin: 0.25rem;\\n}\\r\\n.mx-2 {\\n  margin-left: 0.5rem;\\n  margin-right: 0.5rem;\\n}\\r\\n.my-2 {\\n  margin-top: 0.5rem;\\n  margin-bottom: 0.5rem;\\n}\\r\\n.my-3 {\\n  margin-top: 0.75rem;\\n  margin-bottom: 0.75rem;\\n}\\r\\n.mr-2 {\\n  margin-right: 0.5rem;\\n}\\r\\n.mt-4 {\\n  margin-top: 1rem;\\n}\\r\\n.mb-4 {\\n  margin-bottom: 1rem;\\n}\\r\\n.-ml-1 {\\n  margin-left: -0.25rem;\\n}\\r\\n.mt-3 {\\n  margin-top: 0.75rem;\\n}\\r\\n.mr-1 {\\n  margin-right: 0.25rem;\\n}\\r\\n.mb-1 {\\n  margin-bottom: 0.25rem;\\n}\\r\\n.ml-2 {\\n  margin-left: 0.5rem;\\n}\\r\\n.mt-1 {\\n  margin-top: 0.25rem;\\n}\\r\\n.ml-1 {\\n  margin-left: 0.25rem;\\n}\\r\\n.mr-3 {\\n  margin-right: 0.75rem;\\n}\\r\\n.mt-2 {\\n  margin-top: 0.5rem;\\n}\\r\\n.ml-3 {\\n  margin-left: 0.75rem;\\n}\\r\\n.inline {\\n  display: inline;\\n}\\r\\n.flex {\\n  display: flex;\\n}\\r\\n.grid {\\n  display: grid;\\n}\\r\\n.h-6 {\\n  height: 1.5rem;\\n}\\r\\n.h-3 {\\n  height: 0.75rem;\\n}\\r\\n.h-4 {\\n  height: 1rem;\\n}\\r\\n.h-20 {\\n  height: 5rem;\\n}\\r\\n.h-7 {\\n  height: 1.75rem;\\n}\\r\\n.h-5 {\\n  height: 1.25rem;\\n}\\r\\n.h-2 {\\n  height: 0.5rem;\\n}\\r\\n.h-10 {\\n  height: 2.5rem;\\n}\\r\\n.w-6 {\\n  width: 1.5rem;\\n}\\r\\n.w-20 {\\n  width: 5rem;\\n}\\r\\n.w-4 {\\n  width: 1rem;\\n}\\r\\n.w-3 {\\n  width: 0.75rem;\\n}\\r\\n.w-5 {\\n  width: 1.25rem;\\n}\\r\\n.w-full {\\n  width: 100%;\\n}\\r\\n.w-7 {\\n  width: 1.75rem;\\n}\\r\\n.w-32 {\\n  width: 8rem;\\n}\\r\\n.grow {\\n  flex-grow: 1;\\n}\\r\\n.rotate-180 {\\n  --tw-rotate: 180deg;\\n  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));\\n}\\r\\n.rotate-90 {\\n  --tw-rotate: 90deg;\\n  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));\\n}\\r\\n@-webkit-keyframes spin {\\n\\n  to {\\n    transform: rotate(360deg);\\n  }\\n}\\r\\n@keyframes spin {\\n\\n  to {\\n    transform: rotate(360deg);\\n  }\\n}\\r\\n.animate-spin {\\n  -webkit-animation: spin 1s linear infinite;\\n          animation: spin 1s linear infinite;\\n}\\r\\n.cursor-pointer {\\n  cursor: pointer;\\n}\\r\\n.resize {\\n  resize: both;\\n}\\r\\n.grid-cols-3 {\\n  grid-template-columns: repeat(3, minmax(0, 1fr));\\n}\\r\\n.grid-cols-11 {\\n  grid-template-columns: repeat(11, minmax(0, 1fr));\\n}\\r\\n.grid-cols-5 {\\n  grid-template-columns: repeat(5, minmax(0, 1fr));\\n}\\r\\n.flex-row {\\n  flex-direction: row;\\n}\\r\\n.flex-col {\\n  flex-direction: column;\\n}\\r\\n.items-center {\\n  align-items: center;\\n}\\r\\n.justify-center {\\n  justify-content: center;\\n}\\r\\n.justify-between {\\n  justify-content: space-between;\\n}\\r\\n.justify-around {\\n  justify-content: space-around;\\n}\\r\\n.gap-4 {\\n  gap: 1rem;\\n}\\r\\n.gap-1 {\\n  gap: 0.25rem;\\n}\\r\\n.gap-3 {\\n  gap: 0.75rem;\\n}\\r\\n.self-center {\\n  align-self: center;\\n}\\r\\n.whitespace-nowrap {\\n  white-space: nowrap;\\n}\\r\\n.rounded-md {\\n  border-radius: 0.375rem;\\n}\\r\\n.rounded-3xl {\\n  border-radius: 1.5rem;\\n}\\r\\n.rounded-full {\\n  border-radius: 9999px;\\n}\\r\\n.rounded-lg {\\n  border-radius: 0.5rem;\\n}\\r\\n.rounded-xl {\\n  border-radius: 0.75rem;\\n}\\r\\n.border {\\n  border-width: 1px;\\n}\\r\\n.border-2 {\\n  border-width: 2px;\\n}\\r\\n.border-none {\\n  border-style: none;\\n}\\r\\n.border-textColorSecondary {\\n  border-color: var(--textColorSecondary);\\n}\\r\\n.border-bgColorSecondary {\\n  border-color: var(--bgColorSecondary);\\n}\\r\\n.border-blue-500 {\\n  --tw-border-opacity: 1;\\n  border-color: rgb(59 130 246 / var(--tw-border-opacity));\\n}\\r\\n.bg-bgColorDropdown {\\n  background-color: var(--bgColorDropdown);\\n}\\r\\n.bg-bgColorSecondary {\\n  background-color: var(--bgColorSecondary);\\n}\\r\\n.bg-bgColorPrimary {\\n  background-color: var(--bgColorPrimary);\\n}\\r\\n.bg-transparent {\\n  background-color: transparent;\\n}\\r\\n.bg-pink-400 {\\n  --tw-bg-opacity: 1;\\n  background-color: rgb(244 114 182 / var(--tw-bg-opacity));\\n}\\r\\n.p-6 {\\n  padding: 1.5rem;\\n}\\r\\n.p-1 {\\n  padding: 0.25rem;\\n}\\r\\n.p-2\\\\.5 {\\n  padding: 0.625rem;\\n}\\r\\n.p-2 {\\n  padding: 0.5rem;\\n}\\r\\n.py-1 {\\n  padding-top: 0.25rem;\\n  padding-bottom: 0.25rem;\\n}\\r\\n.py-5 {\\n  padding-top: 1.25rem;\\n  padding-bottom: 1.25rem;\\n}\\r\\n.px-2\\\\.5 {\\n  padding-left: 0.625rem;\\n  padding-right: 0.625rem;\\n}\\r\\n.py-1\\\\.5 {\\n  padding-top: 0.375rem;\\n  padding-bottom: 0.375rem;\\n}\\r\\n.px-2 {\\n  padding-left: 0.5rem;\\n  padding-right: 0.5rem;\\n}\\r\\n.px-1 {\\n  padding-left: 0.25rem;\\n  padding-right: 0.25rem;\\n}\\r\\n.px-3 {\\n  padding-left: 0.75rem;\\n  padding-right: 0.75rem;\\n}\\r\\n.py-2 {\\n  padding-top: 0.5rem;\\n  padding-bottom: 0.5rem;\\n}\\r\\n.py-3 {\\n  padding-top: 0.75rem;\\n  padding-bottom: 0.75rem;\\n}\\r\\n.py-0\\\\.5 {\\n  padding-top: 0.125rem;\\n  padding-bottom: 0.125rem;\\n}\\r\\n.py-0 {\\n  padding-top: 0px;\\n  padding-bottom: 0px;\\n}\\r\\n.px-4 {\\n  padding-left: 1rem;\\n  padding-right: 1rem;\\n}\\r\\n.py-4 {\\n  padding-top: 1rem;\\n  padding-bottom: 1rem;\\n}\\r\\n.pt-4 {\\n  padding-top: 1rem;\\n}\\r\\n.pt-2 {\\n  padding-top: 0.5rem;\\n}\\r\\n.text-left {\\n  text-align: left;\\n}\\r\\n.text-center {\\n  text-align: center;\\n}\\r\\n.text-right {\\n  text-align: right;\\n}\\r\\n.text-xl {\\n  font-size: 1.25rem;\\n  line-height: 1.75rem;\\n}\\r\\n.text-base {\\n  font-size: 1rem;\\n  line-height: 1.5rem;\\n}\\r\\n.text-xs {\\n  font-size: 0.75rem;\\n  line-height: 1rem;\\n}\\r\\n.text-lg {\\n  font-size: 1.125rem;\\n  line-height: 1.75rem;\\n}\\r\\n.text-sm {\\n  font-size: 0.875rem;\\n  line-height: 1.25rem;\\n}\\r\\n.font-medium {\\n  font-weight: 500;\\n}\\r\\n.font-normal {\\n  font-weight: 400;\\n}\\r\\n.capitalize {\\n  text-transform: capitalize;\\n}\\r\\n.text-textColorPrimary {\\n  color: var(--textColorPrimary);\\n}\\r\\n.text-textColorSecondary {\\n  color: var(--textColorSecondary);\\n}\\r\\n.text-red-500 {\\n  --tw-text-opacity: 1;\\n  color: rgb(239 68 68 / var(--tw-text-opacity));\\n}\\r\\n.text-blue-500 {\\n  --tw-text-opacity: 1;\\n  color: rgb(59 130 246 / var(--tw-text-opacity));\\n}\\r\\n.text-orange-500 {\\n  --tw-text-opacity: 1;\\n  color: rgb(249 115 22 / var(--tw-text-opacity));\\n}\\r\\n.text-white {\\n  --tw-text-opacity: 1;\\n  color: rgb(255 255 255 / var(--tw-text-opacity));\\n}\\r\\n.outline-none {\\n  outline: 2px solid transparent;\\n  outline-offset: 2px;\\n}\\r\\n.filter {\\n  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);\\n}\\r\\n\\r\\n:root {\\r\\n  --bgColorPrimary: #16161A;\\r\\n  --bgColorSecondary: #2D2C33;\\r\\n  --bgColorDropdown: #1C1D20;\\r\\n  --textColorPrimary: #fff;\\r\\n  --textColorSecondary: #9da0a6;\\r\\n  --btnColorPrimary: #e4147c;\\r\\n  --btnColorSecondary: #296CF4;\\r\\n}\\r\\n\\r\\n.focus-within\\\\:border-blue-500:focus-within {\\n  --tw-border-opacity: 1;\\n  border-color: rgb(59 130 246 / var(--tw-border-opacity));\\n}\\r\\n\\r\\n.focus-within\\\\:bg-bgColorPrimary:focus-within {\\n  background-color: var(--bgColorPrimary);\\n}\\r\\n\\r\\n.hover\\\\:cursor-pointer:hover {\\n  cursor: pointer;\\n}\\r\\n\\r\\n.hover\\\\:bg-bgColorSecondary:hover {\\n  background-color: var(--bgColorSecondary);\\n}\\r\\n\\r\\n.hover\\\\:bg-textColorSecondary:hover {\\n  background-color: var(--textColorSecondary);\\n}\\r\\n\\r\\n.hover\\\\:bg-bgColorPrimary:hover {\\n  background-color: var(--bgColorPrimary);\\n}\\r\\n\\r\\n.hover\\\\:bg-pink-800:hover {\\n  --tw-bg-opacity: 1;\\n  background-color: rgb(157 23 77 / var(--tw-bg-opacity));\\n}\\r\\n\\r\\n.hover\\\\:text-blue-500:hover {\\n  --tw-text-opacity: 1;\\n  color: rgb(59 130 246 / var(--tw-text-opacity));\\n}\\r\\n\\r\\n.hover\\\\:underline:hover {\\n  -webkit-text-decoration-line: underline;\\n          text-decoration-line: underline;\\n}\\r\\n\\r\\n.disabled\\\\:pointer-events-none:disabled {\\n  pointer-events: none;\\n}\\r\\n\\r\\n.disabled\\\\:cursor-not-allowed:disabled {\\n  cursor: not-allowed;\\n}\\r\\n\\r\\n.disabled\\\\:opacity-50:disabled {\\n  opacity: 0.5;\\n}\\r\\n\\r\\n.disabled\\\\:opacity-75:disabled {\\n  opacity: 0.75;\\n}\";\nstyleInject(css_248z);\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar TabIndexContext = React.createContext({\r\n    tabIndex: 0,\r\n    setTabIndex: function () { }\r\n});\r\nvar ChainIdContext = React.createContext({\r\n    inputChainId: 1,\r\n    outputChainId: 137,\r\n    setInputChainId: function () { },\r\n    setOutputChainId: function () { }\r\n});\r\nvar TokenDetailsContext = React.createContext({\r\n    inputTokenDetails: { address: \"\", symbol: \"\", icon: \"\", decimals: 0 },\r\n    outputTokenDetails: { address: \"\", symbol: \"\", icon: \"\", decimals: 0 },\r\n    setInputTokenDetails: function () { },\r\n    setOutputTokenDetails: function () { }\r\n});\r\nvar InputTokenAmountContext = React.createContext({\r\n    inputTokenAmount: \"\",\r\n    setInputTokenAmount: function () { },\r\n    inputTokenList: {},\r\n    outputTokenList: {}\r\n});\r\nvar RoutesContext = React.createContext({\r\n    selectedRoute: {},\r\n    routes: [],\r\n    setRoutes: function (routes) { },\r\n    setSelectedRoute: function (routes) { }\r\n});\r\nvar BridgesContext = React.createContext({\r\n    bridgesByName: {}\r\n});\r\nvar ChainsContext = React.createContext({\r\n    chainsByChainId: {},\r\n    fromChainsList: [],\r\n    toChainsList: []\r\n});\r\nvar SortTypeContext = React.createContext({\r\n    sortType: \"output\",\r\n    setSortType: function () { }\r\n});\r\nvar WidgetWidthContext = React.createContext({\r\n    widgetWidth: 0\r\n});\r\nvar InputTokenBalanceContext = React.createContext({\r\n    inputTokenBalance: \"0\",\r\n    setInputTokenBalance: function (amount) { }\r\n});\r\nvar PropsContext = React.createContext({\r\n    defaultInputChainId: 1,\r\n    defaultOutputChainId: 137\r\n});\r\nvar useWeb3Context = React.createContext({\r\n    account: \"\",\r\n    chainId: 0,\r\n    signer: {},\r\n    w3Provider: {}\r\n});\r\nvar RouteLoadingContext = React.createContext({\r\n    routeLoading: false,\r\n    setRouteLoading: function (value) { }\r\n});\r\nvar WarningMsgContext = React.createContext({\r\n    warningMsg: \"\",\r\n    setWarningMsg: function (msg) { }\r\n});\n\nvar getChainDataByChainId = function (chains) {\r\n    var _a, _b;\r\n    if (!chains.isSuccess)\r\n        return [];\r\n    var data = (_b = (_a = chains.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n    var chainsByChainId = {};\r\n    var fromChainsList = [];\r\n    var toChainsList = [];\r\n    data.forEach(function (chain) {\r\n        chainsByChainId[chain.chainId] = chain;\r\n        if (chain.sendingEnabled) {\r\n            fromChainsList.push({\r\n                chainId: chain.chainId,\r\n                name: chain.name,\r\n                icon: chain.icon\r\n            });\r\n        }\r\n        if (chain.receivingEnabled) {\r\n            toChainsList.push({\r\n                chainId: chain.chainId,\r\n                name: chain.name,\r\n                icon: chain.icon\r\n            });\r\n        }\r\n    });\r\n    return [chainsByChainId, fromChainsList, toChainsList];\r\n};\r\nvar getBridgeDataByBridgeName = function (bridges) {\r\n    var _a, _b;\r\n    if (!bridges.isSuccess)\r\n        return [];\r\n    var data = (_b = (_a = bridges.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n    var bridgesByName = {};\r\n    data.forEach(function (bridge) {\r\n        bridgesByName[bridge.bridgeName] = bridge;\r\n    });\r\n    return [bridgesByName];\r\n};\n\nvar updateTokenList = function (chainId, tokenList, userAddress) {\r\n    var customList = localStorage.getItem('customTokens');\r\n    if (customList) {\r\n        customList = JSON.parse(customList);\r\n        if (customList[userAddress] && customList[userAddress][chainId]) {\r\n            return __spreadArray(__spreadArray([], customList[userAddress][chainId], true), tokenList, true);\r\n        }\r\n    }\r\n    return tokenList;\r\n};\r\nvar updateCSS = function (themeObj) {\r\n    if (themeObj.bgColorPrimary)\r\n        document.documentElement.style\r\n            .setProperty('--bgColorPrimary', themeObj.bgColorPrimary);\r\n    if (themeObj.bgColorSecondary)\r\n        document.documentElement.style\r\n            .setProperty('--bgColorSecondary', themeObj.bgColorSecondary);\r\n    if (themeObj.bgColorDropdown)\r\n        document.documentElement.style\r\n            .setProperty('--bgColorDropdown', themeObj.bgColorDropdown);\r\n    if (themeObj.textColorPrimary)\r\n        document.documentElement.style\r\n            .setProperty('--textColorPrimary', themeObj.textColorPrimary);\r\n    if (themeObj.textColorSecondary)\r\n        document.documentElement.style\r\n            .setProperty('--textColorSecondary', themeObj.textColorSecondary);\r\n    if (themeObj.btnColorPrimary)\r\n        document.documentElement.style\r\n            .setProperty('--btnColorPrimary', themeObj.btnColorPrimary);\r\n    if (themeObj.btnColorSecondary)\r\n        document.documentElement.style\r\n            .setProperty('--btnColorSecondary', themeObj.btnColorSecondary);\r\n};\n\n// to check if inputTokenAmount is a valid amount\r\nvar isValidInput = new RegExp(/^(\\d*)?(\\.)?\\d*$/);\n\nvar EVENT$1 = 'resize';\r\nvar useBoxWidth = function (ref) {\r\n    var _a, _b;\r\n    var _c = React.useState((_a = ref.current) === null || _a === void 0 ? void 0 : _a.offsetWidth), width = _c[0], setWidth = _c[1];\r\n    React.useEffect(function () {\r\n        var handleWindowSizeChange = function () {\r\n            var _a;\r\n            if (!ref || !ref.current) {\r\n                return;\r\n            }\r\n            setWidth((_a = ref.current) === null || _a === void 0 ? void 0 : _a.offsetWidth);\r\n        };\r\n        window.addEventListener(EVENT$1, handleWindowSizeChange);\r\n        return function () {\r\n            window.removeEventListener(EVENT$1, handleWindowSizeChange);\r\n        };\r\n    }, [window.innerWidth, ref]);\r\n    if (!width && ref && ref.current)\r\n        return (_b = ref.current) === null || _b === void 0 ? void 0 : _b.offsetWidth;\r\n    return width;\r\n};\n\nvar EVENT = 'mousedown';\r\nvar useClickAway = function (ref, callback) {\r\n    React.useEffect(function () {\r\n        var listener = function (event) {\r\n            if (!ref || !ref.current || ref.current.contains(event.target)) {\r\n                return;\r\n            }\r\n            callback(event);\r\n        };\r\n        document.addEventListener(EVENT, listener);\r\n        return function () {\r\n            document.removeEventListener(EVENT, listener);\r\n        };\r\n    }, [ref, callback]);\r\n};\n\nvar useIsMount = function () {\r\n    var isMountRef = React.useRef(true);\r\n    React.useEffect(function () {\r\n        if (isMountRef.current) {\r\n            isMountRef.current = false;\r\n        }\r\n    }, [isMountRef]);\r\n    return isMountRef.current;\r\n};\n\nvar getAccount = function (provider) { return __awaiter(void 0, void 0, void 0, function () {\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (Object.keys(provider).length === 0)\r\n                    return [2 /*return*/, \"\"];\r\n                return [4 /*yield*/, provider.listAccounts().then(function (accounts) { return accounts[0]; })];\r\n            case 1: return [2 /*return*/, _a.sent()];\r\n        }\r\n    });\r\n}); };\n\nvar getChainId = function (provider) { return __awaiter(void 0, void 0, void 0, function () {\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (Object.keys(provider).length === 0)\r\n                    return [2 /*return*/, 0];\r\n                return [4 /*yield*/, provider.getNetwork().then(function (_a) {\r\n                        var chainId = _a.chainId;\r\n                        return chainId;\r\n                    })];\r\n            case 1: return [2 /*return*/, _a.sent()];\r\n        }\r\n    });\r\n}); };\n\nvar getSigner = function (provider, account) { return __awaiter(void 0, void 0, void 0, function () {\r\n    return __generator(this, function (_a) {\r\n        if (Object.keys(provider).length === 0)\r\n            return [2 /*return*/, 0];\r\n        return [2 /*return*/, provider.getSigner(account)];\r\n    });\r\n}); };\n\nvar useWeb3 = function (provider) { return __awaiter(void 0, void 0, void 0, function () {\r\n    var account, chainId, signer, w3Provider;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                w3Provider = provider;\r\n                if (Object.keys(provider).length === 0)\r\n                    return [2 /*return*/, { account: account, chainId: chainId, signer: signer, w3Provider: w3Provider }];\r\n                return [4 /*yield*/, getAccount(provider)];\r\n            case 1:\r\n                account = _a.sent();\r\n                return [4 /*yield*/, getChainId(provider)];\r\n            case 2:\r\n                chainId = _a.sent();\r\n                return [4 /*yield*/, getSigner(provider, account)];\r\n            case 3:\r\n                signer = _a.sent();\r\n                return [2 /*return*/, { account: account, chainId: chainId, signer: signer, w3Provider: w3Provider }];\r\n        }\r\n    });\r\n}); };\n\nvar BASE_URL = \"https://api.socket.tech/v2\";\r\nvar ApiClient = function () {\r\n    var apiKey = sessionStorage.getItem('apiKey');\r\n    if (!apiKey)\r\n        return;\r\n    return axios__default[\"default\"].create({\r\n        baseURL: BASE_URL,\r\n        headers: {\r\n            \"Content-type\": \"application/json\",\r\n            \"API-KEY\": apiKey !== null && apiKey !== void 0 ? apiKey : ''\r\n        },\r\n    });\r\n};\n\nvar getReq = function (_a) {\r\n    var path = _a.path;\r\n    return __awaiter(void 0, void 0, void 0, function () {\r\n        var response, error_1;\r\n        var _b;\r\n        return __generator(this, function (_c) {\r\n            switch (_c.label) {\r\n                case 0:\r\n                    _c.trys.push([0, 2, , 3]);\r\n                    if (!ApiClient)\r\n                        return [2 /*return*/, { error: \"Can't get api key from session storage\" }];\r\n                    return [4 /*yield*/, ((_b = ApiClient()) === null || _b === void 0 ? void 0 : _b.get(path))];\r\n                case 1:\r\n                    response = _c.sent();\r\n                    return [2 /*return*/, response];\r\n                case 2:\r\n                    error_1 = _c.sent();\r\n                    throw error_1;\r\n                case 3: return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n};\r\nvar postReq = function (_a) {\r\n    var path = _a.path, body = _a.body;\r\n    return __awaiter(void 0, void 0, void 0, function () {\r\n        var response, error_2;\r\n        var _b;\r\n        return __generator(this, function (_c) {\r\n            switch (_c.label) {\r\n                case 0:\r\n                    _c.trys.push([0, 2, , 3]);\r\n                    if (!ApiClient)\r\n                        return [2 /*return*/, { error: \"Can't get api key from session storage\" }];\r\n                    return [4 /*yield*/, ((_b = ApiClient()) === null || _b === void 0 ? void 0 : _b.post(path, body))];\r\n                case 1:\r\n                    response = _c.sent();\r\n                    return [2 /*return*/, response];\r\n                case 2:\r\n                    error_2 = _c.sent();\r\n                    throw error_2;\r\n                case 3: return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n};\n\nvar getAllowanceDetail = function (_a) {\r\n    var chainId = _a.chainId, owner = _a.owner, allowanceTarget = _a.allowanceTarget, tokenAddress = _a.tokenAddress;\r\n    var obj = {\r\n        path: \"/approval/check-allowance?chainID=\".concat(chainId, \"&owner=\").concat(owner, \"&allowanceTarget=\").concat(allowanceTarget, \"&tokenAddress=\").concat(tokenAddress)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem checking allowance\");\r\n    }\r\n    return response;\r\n};\n\nvar getApprovalTxData = function (_a) {\r\n    var chainId = _a.chainId, owner = _a.owner, allowanceTarget = _a.allowanceTarget, tokenAddress = _a.tokenAddress, amount = _a.amount;\r\n    var obj = {\r\n        path: \"/approval/build-tx?chainID=\".concat(chainId, \"&owner=\").concat(owner, \"&allowanceTarget=\").concat(allowanceTarget, \"&tokenAddress=\").concat(tokenAddress, \"&amount=\").concat(amount)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem getting approval transaction data\");\r\n    }\r\n    return response;\r\n};\n\nvar getBridgeStatus = function (_a) {\r\n    var transactionHash = _a.transactionHash, fromChainId = _a.fromChainId, toChainId = _a.toChainId;\r\n    var obj = {\r\n        path: \"bridge-status?transactionHash=\".concat(transactionHash, \"&fromChainId=\").concat(fromChainId, \"&toChainId=\").concat(toChainId)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem getting bridge tx status\");\r\n    }\r\n    return response;\r\n};\n\nvar getFromTokenList = function (_a) {\r\n    var fromChainId = _a.fromChainId, toChainId = _a.toChainId, isShortList = _a.isShortList;\r\n    var obj = {\r\n        path: \"/token-lists/from-token-list?fromChainId=\".concat(fromChainId, \"&toChainId=\").concat(toChainId, \"&isShortList=\").concat(isShortList)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching from token list\");\r\n    }\r\n    return response;\r\n};\n\nvar getIfTokenSupported = function (_a) {\r\n    var tokenAddress = _a.tokenAddress, chainId = _a.chainId;\r\n    var obj = {\r\n        path: \"/supported/token-support?chainId=\".concat(chainId, \"&address=\").concat(tokenAddress)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching if token is supported\");\r\n    }\r\n    return response;\r\n};\n\nvar getQuote = function (_a) {\r\n    var fromChainId = _a.fromChainId, fromTokenAddress = _a.fromTokenAddress, toChainId = _a.toChainId, toTokenAddress = _a.toTokenAddress, fromAmount = _a.fromAmount, userAddress = _a.userAddress, uniqueRoutesPerBridge = _a.uniqueRoutesPerBridge, sort = _a.sort, singleTxOnly = _a.singleTxOnly;\r\n    var obj = {\r\n        path: \"/quote?fromChainId=\".concat(fromChainId, \"&fromTokenAddress=\").concat(fromTokenAddress, \"&toChainId=\").concat(toChainId, \"&toTokenAddress=\").concat(toTokenAddress, \"&fromAmount=\").concat(fromAmount, \"&userAddress=\").concat(userAddress, \"&uniqueRoutesPerBridge=\").concat(uniqueRoutesPerBridge, \"&sort=\").concat(sort, \"&singleTxOnly=\").concat(singleTxOnly)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching quotes\");\r\n    }\r\n    return response;\r\n};\n\nvar getSupportedBridges = function () {\r\n    var obj = {\r\n        path: '/supported/bridges'\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching supported bridges\");\r\n    }\r\n    return response;\r\n};\n\nvar getSupportedChains = function () {\r\n    var obj = {\r\n        path: '/supported/chains'\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching supported chains\");\r\n    }\r\n    return response;\r\n};\n\nvar getTokenBalanceByTokenAddress = function (_a) {\r\n    var tokenAddress = _a.tokenAddress, chainId = _a.chainId, userAddress = _a.userAddress;\r\n    var obj = {\r\n        path: \"balances/token-balance?tokenAddress=\".concat(tokenAddress, \"&chainId=\").concat(chainId, \"&userAddress=\").concat(userAddress)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching token balance\");\r\n    }\r\n    return response;\r\n};\n\nvar getTokenPriceByTokenAddress = function (_a) {\r\n    var tokenAddress = _a.tokenAddress, chainId = _a.chainId;\r\n    var obj = {\r\n        path: \"/token-price?tokenAddress=\".concat(tokenAddress, \"&chainId=\").concat(chainId)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching token price\");\r\n    }\r\n    return response;\r\n};\n\nvar getToTokenList = function (_a) {\r\n    var fromChainId = _a.fromChainId, toChainId = _a.toChainId, isShortList = _a.isShortList;\r\n    var obj = {\r\n        path: \"/token-lists/to-token-list?fromChainId=\".concat(fromChainId, \"&toChainId=\").concat(toChainId, \"&isShortList=\").concat(isShortList)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching to token list\");\r\n    }\r\n    return response;\r\n};\n\nvar getUserTokenBalances = function (_a) {\r\n    var userAddress = _a.userAddress;\r\n    var obj = {\r\n        path: \"balances?userAddress=\".concat(userAddress)\r\n    };\r\n    var response = getReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching user token balances\");\r\n    }\r\n    return response;\r\n};\n\nvar getRouteTransactionData = function (_a) {\r\n    var route = _a.route;\r\n    var obj = {\r\n        path: \"/build-tx\",\r\n        body: { \"route\": route }\r\n    };\r\n    var response = postReq(obj);\r\n    if (!response) {\r\n        throw new Error(\"Problem fetching route transaction data\");\r\n    }\r\n    return response;\r\n};\n\nvar _path$3;\n\nfunction _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }\n\nvar SvgDownArrow = function SvgDownArrow(props) {\n  return /*#__PURE__*/React__namespace.createElement(\"svg\", _extends$3({\n    viewBox: \"0 0 6 10\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path$3 || (_path$3 = /*#__PURE__*/React__namespace.createElement(\"path\", {\n    d: \"m1 1 4 4-4 4\",\n    stroke: \"currentColor\",\n    strokeLinecap: \"round\"\n  })));\n};\n\nvar _path$2;\n\nfunction _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }\n\nvar SvgLoading = function SvgLoading(props) {\n  return /*#__PURE__*/React__namespace.createElement(\"svg\", _extends$2({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    fill: \"none\",\n    viewBox: \"0 0 24 24\"\n  }, props), _path$2 || (_path$2 = /*#__PURE__*/React__namespace.createElement(\"path\", {\n    className: \"loading_svg__opacity-90\",\n    fill: \"currentColor\",\n    d: \"M4 12a8 8 0 0 1 8-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n  })));\n};\n\nvar _circle, _path$1;\n\nfunction _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }\n\nvar SvgGreenTick = function SvgGreenTick(props) {\n  return /*#__PURE__*/React__namespace.createElement(\"svg\", _extends$1({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 64 64\"\n  }, props), _circle || (_circle = /*#__PURE__*/React__namespace.createElement(\"circle\", {\n    cx: 32,\n    cy: 32,\n    r: 30,\n    fill: \"#fff\"\n  })), _path$1 || (_path$1 = /*#__PURE__*/React__namespace.createElement(\"path\", {\n    d: \"M32 2C15.431 2 2 15.432 2 32c0 16.568 13.432 30 30 30 16.568 0 30-13.432 30-30C62 15.432 48.568 2 32 2zm-6.975 48-.02-.02-.017.02L11 35.6l7.029-7.164 6.977 7.184 21-21.619L53 21.199 25.025 50z\",\n    fill: \"#43a047\"\n  })));\n};\n\nvar PrimaryButton = function (_a) {\r\n    var buttonText = _a.buttonText, bgColor = _a.bgColor, _b = _a.width, width = _b === void 0 ? \"100%\" : _b, _c = _a.loading, loading = _c === void 0 ? false : _c, _d = _a.textColorPrimary, textColorPrimary = _d === void 0 ? \"#fff\" : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, onClick = _a.onClick;\r\n    return (React__default[\"default\"].createElement(\"button\", { className: \"px-4 py-4 rounded-lg disabled:opacity-75 disabled:cursor-not-allowed text-base font-medium\", style: { backgroundColor: bgColor, width: width }, disabled: disabled, onClick: onClick },\r\n        React__default[\"default\"].createElement(\"span\", { style: { color: textColorPrimary } },\r\n            loading && React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-5 w-5 text-textColorPrimary\" }),\r\n            \" \",\r\n            buttonText)));\r\n};\n\nvar allowanceAmount;\r\nvar bridgeStatus;\r\nvar BridgeTokens = function () {\r\n    var _a = React.useContext(useWeb3Context), account = _a.account, w3Provider = _a.w3Provider, signer = _a.signer;\r\n    var widgetWidth = React.useContext(WidgetWidthContext).widgetWidth;\r\n    var setTabIndex = React.useContext(TabIndexContext).setTabIndex;\r\n    var selectedRoute = React.useContext(RoutesContext).selectedRoute;\r\n    var bridgesByName = React.useContext(BridgesContext).bridgesByName;\r\n    var _b = React.useContext(ChainIdContext), inputChainId = _b.inputChainId, outputChainId = _b.outputChainId;\r\n    var chainsByChainId = React.useContext(ChainsContext).chainsByChainId;\r\n    var _c = React.useContext(TokenDetailsContext), inputTokenDetails = _c.inputTokenDetails, outputTokenDetails = _c.outputTokenDetails;\r\n    var _d = React.useState(true), loading = _d[0], setLoading = _d[1];\r\n    var _e = React.useState(null), allowanceTarget = _e[0], setAllowanceTarget = _e[1];\r\n    var _f = React.useState({}), apiTxData = _f[0], setApiTxData = _f[1];\r\n    var _g = React.useState(null), minimumApprovalAmount = _g[0], setMinimumApprovalAmount = _g[1];\r\n    var _h = React.useState(\"Approve\"), approveBtnText = _h[0], setApproveBtnText = _h[1];\r\n    var _j = React.useState(\"Bridge\"), bridgeBtnText = _j[0], setBridgeBtnText = _j[1];\r\n    var _k = React.useState(true), hideApproveBtn = _k[0], setHideApproveBtn = _k[1];\r\n    var _l = React.useState(true), hideBridgeBtn = _l[0], setHideBridgeBtn = _l[1];\r\n    var _m = React.useState(false), loadingApproveBtn = _m[0], setLoadingApproveBtn = _m[1];\r\n    var _o = React.useState(false), loadingBridgeBtn = _o[0], setLoadingBridgeBtn = _o[1];\r\n    var _p = React.useState(false), disabledApproveBtn = _p[0], setDisabledApproveBtn = _p[1];\r\n    var _q = React.useState(false), disabledBridgeBtn = _q[0], setDisabledBridgeBtn = _q[1];\r\n    var _r = React.useState(''), warning = _r[0], setWarning = _r[1];\r\n    var _s = React.useState(null), sourceTxHash = _s[0], setSourceTxHash = _s[1];\r\n    var _t = React.useState(null), destinationTxHash = _t[0], setDestinationTxHash = _t[1];\r\n    var isFirstMount = React.useRef(true);\r\n    var inputAmountSimplified = (parseFloat(selectedRoute.fromAmount) / (Math.pow(10, inputTokenDetails.decimals))).toFixed(4).toString() + \" \" + inputTokenDetails.symbol;\r\n    var outputAmountSimplified = (parseFloat(selectedRoute.toAmount) / (Math.pow(10, outputTokenDetails.decimals))).toFixed(4).toString() + \" \" + outputTokenDetails.symbol;\r\n    var bridgeName = bridgesByName[selectedRoute.usedBridgeNames[0]].displayName;\r\n    allowanceAmount = reactQuery.useQuery([\"checkAllowance\"], function () { return getAllowanceDetail({\r\n        chainId: inputChainId.toString(),\r\n        owner: account,\r\n        allowanceTarget: allowanceTarget,\r\n        tokenAddress: inputTokenDetails.address\r\n    }); }, {\r\n        enabled: !!(allowanceTarget !== null && sourceTxHash === null)\r\n    });\r\n    bridgeStatus = reactQuery.useQuery([\"bridgeStatus\", sourceTxHash], function () { return getBridgeStatus({\r\n        transactionHash: sourceTxHash,\r\n        fromChainId: inputChainId.toString(),\r\n        toChainId: outputChainId.toString()\r\n    }); }, {\r\n        enabled: !!(sourceTxHash !== null && destinationTxHash == null),\r\n        refetchInterval: 20000\r\n    });\r\n    var routeTxData = reactQuery.useMutation([\"routeTxData\"], getRouteTransactionData, {\r\n        onSuccess: function (data) {\r\n            var _a;\r\n            setLoading(false);\r\n            setApiTxData((_a = data.data) === null || _a === void 0 ? void 0 : _a.result);\r\n            var _b = data.data.result.approvalData, allowanceTarget = _b.allowanceTarget, minimumApprovalAmount = _b.minimumApprovalAmount;\r\n            setMinimumApprovalAmount(minimumApprovalAmount);\r\n            if (allowanceTarget === null) {\r\n                setHideBridgeBtn(false);\r\n            }\r\n            else {\r\n                setAllowanceTarget(allowanceTarget);\r\n            }\r\n        },\r\n    });\r\n    React.useEffect(function () {\r\n        var _a, _b;\r\n        if (bridgeStatus.isSuccess) {\r\n            var response = (_b = (_a = bridgeStatus.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n            if (response.destinationTransactionHash != null && response.destinationTxStatus == \"COMPLETED\") {\r\n                setDestinationTxHash(response.destinationTransactionHash);\r\n            }\r\n        }\r\n    }, [bridgeStatus.isSuccess, destinationTxHash]);\r\n    React.useEffect(function () {\r\n        var _a, _b, _c;\r\n        if (allowanceAmount.isSuccess) {\r\n            var allowanceValue = parseInt((_c = (_b = (_a = allowanceAmount.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result) === null || _c === void 0 ? void 0 : _c.value);\r\n            if (minimumApprovalAmount != null && parseInt(minimumApprovalAmount) > allowanceValue) {\r\n                setDisabledBridgeBtn(true);\r\n                setHideApproveBtn(false);\r\n                setHideBridgeBtn(false);\r\n            }\r\n            else if (minimumApprovalAmount != null && parseInt(minimumApprovalAmount) <= allowanceValue) {\r\n                setHideBridgeBtn(false);\r\n            }\r\n        }\r\n    }, [allowanceAmount.isSuccess]);\r\n    // run this effect on only first mount of this component\r\n    React.useEffect(function () {\r\n        if (isFirstMount.current) {\r\n            routeTxData.mutate({ route: selectedRoute });\r\n            isFirstMount.current = false;\r\n        }\r\n    }, [isFirstMount]);\r\n    var gasLimitFromRoute = function () {\r\n        if (Object.keys(selectedRoute).length === 0)\r\n            return;\r\n        var userBridgeTx = {};\r\n        selectedRoute.userTxs.map(function (userTx) {\r\n            if (userTx.userTxType === \"fund-movr\") {\r\n                userBridgeTx = userTx;\r\n            }\r\n        });\r\n        var gasLimit = userBridgeTx.gasFees.gasLimit;\r\n        return gasLimit;\r\n    };\r\n    var handleApprove = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n        var approvalTransactionData, gasPrice, gasEstimate, tx, receipt, err_1;\r\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\r\n        return __generator(this, function (_l) {\r\n            switch (_l.label) {\r\n                case 0:\r\n                    if (!minimumApprovalAmount)\r\n                        return [2 /*return*/];\r\n                    _l.label = 1;\r\n                case 1:\r\n                    _l.trys.push([1, 7, , 8]);\r\n                    setDisabledApproveBtn(true);\r\n                    setLoadingApproveBtn(true);\r\n                    setApproveBtnText('Approving...');\r\n                    return [4 /*yield*/, getApprovalTxData({\r\n                            chainId: inputChainId.toString(),\r\n                            owner: account,\r\n                            allowanceTarget: allowanceTarget,\r\n                            tokenAddress: inputTokenDetails.address,\r\n                            amount: minimumApprovalAmount\r\n                        })];\r\n                case 2:\r\n                    approvalTransactionData = _l.sent();\r\n                    return [4 /*yield*/, signer.getGasPrice()];\r\n                case 3:\r\n                    gasPrice = _l.sent();\r\n                    return [4 /*yield*/, w3Provider.estimateGas({\r\n                            from: signer._address,\r\n                            to: (_b = (_a = approvalTransactionData.data) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b.to,\r\n                            value: '0x00',\r\n                            data: (_d = (_c = approvalTransactionData.data) === null || _c === void 0 ? void 0 : _c.result) === null || _d === void 0 ? void 0 : _d.data,\r\n                            gasPrice: gasPrice\r\n                        })];\r\n                case 4:\r\n                    gasEstimate = _l.sent();\r\n                    return [4 /*yield*/, signer.sendTransaction({\r\n                            from: (_f = (_e = approvalTransactionData.data) === null || _e === void 0 ? void 0 : _e.result) === null || _f === void 0 ? void 0 : _f.from,\r\n                            to: (_h = (_g = approvalTransactionData.data) === null || _g === void 0 ? void 0 : _g.result) === null || _h === void 0 ? void 0 : _h.to,\r\n                            value: '0x00',\r\n                            data: (_k = (_j = approvalTransactionData.data) === null || _j === void 0 ? void 0 : _j.result) === null || _k === void 0 ? void 0 : _k.data,\r\n                            gasPrice: gasPrice,\r\n                            gasLimit: gasEstimate\r\n                        })];\r\n                case 5:\r\n                    tx = _l.sent();\r\n                    return [4 /*yield*/, tx.wait()];\r\n                case 6:\r\n                    receipt = _l.sent();\r\n                    console.log('Approval Transaction Hash :', receipt.transactionHash);\r\n                    setLoadingApproveBtn(false);\r\n                    setApproveBtnText('Approved');\r\n                    setInterval(function () {\r\n                        setHideApproveBtn(true);\r\n                    }, 3000);\r\n                    setDisabledBridgeBtn(false);\r\n                    return [3 /*break*/, 8];\r\n                case 7:\r\n                    err_1 = _l.sent();\r\n                    console.error(err_1);\r\n                    setWarning(err_1.message);\r\n                    setInterval(function () {\r\n                        setWarning('');\r\n                    }, 3000);\r\n                    setDisabledApproveBtn(false);\r\n                    setLoadingApproveBtn(false);\r\n                    setApproveBtnText('Approve');\r\n                    return [3 /*break*/, 8];\r\n                case 8: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    var handleBridge = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n        var gasPrice, gasEstimate, tx, receipt, txHash_1, err_2;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    _a.trys.push([0, 4, , 5]);\r\n                    setDisabledBridgeBtn(true);\r\n                    setLoadingBridgeBtn(true);\r\n                    setBridgeBtnText('Bridging...');\r\n                    return [4 /*yield*/, signer.getGasPrice()];\r\n                case 1:\r\n                    gasPrice = _a.sent();\r\n                    gasEstimate = gasLimitFromRoute() + 1000;\r\n                    return [4 /*yield*/, signer.sendTransaction({\r\n                            from: signer._address,\r\n                            to: apiTxData.txTarget,\r\n                            data: apiTxData.txData,\r\n                            value: apiTxData.value,\r\n                            gasPrice: gasPrice,\r\n                            gasLimit: gasEstimate\r\n                        })];\r\n                case 2:\r\n                    tx = _a.sent();\r\n                    return [4 /*yield*/, tx.wait()];\r\n                case 3:\r\n                    receipt = _a.sent();\r\n                    txHash_1 = receipt.transactionHash;\r\n                    console.log('Bridging Transaction : ', receipt.transactionHash);\r\n                    setLoadingBridgeBtn(false);\r\n                    setBridgeBtnText('Bridged');\r\n                    setInterval(function () {\r\n                        setHideBridgeBtn(true);\r\n                        setSourceTxHash(txHash_1);\r\n                    }, 3000);\r\n                    return [3 /*break*/, 5];\r\n                case 4:\r\n                    err_2 = _a.sent();\r\n                    console.error(err_2);\r\n                    setWarning(err_2.message);\r\n                    setInterval(function () {\r\n                        setWarning('');\r\n                    }, 3000);\r\n                    setDisabledBridgeBtn(false);\r\n                    setLoadingBridgeBtn(false);\r\n                    setBridgeBtnText('Bridge');\r\n                    return [3 /*break*/, 5];\r\n                case 5: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    return (React__default[\"default\"].createElement(\"div\", null,\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\", id: \"bridge-header\" },\r\n            React__default[\"default\"].createElement(\"button\", { className: \"w-6 h-6 rounded-md hover:bg-bgColorSecondary hover:cursor-pointer mr-2 text-textColorPrimary flex justify-center items-center\", onClick: function () { return setTabIndex(0); } },\r\n                React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-180\", style: { width: 9, height: 14 } })),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"grow text-center text-xl text-textColorPrimary font-medium\" }, \"Bridge\")),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-4\" }),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"text-textColorPrimary text-base font-medium\" }, \"Bridge Info\"),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary test-xs font-normal py-1\" },\r\n            inputAmountSimplified,\r\n            \" on \",\r\n            chainsByChainId[inputChainId][\"name\"],\r\n            \" to \",\r\n            outputAmountSimplified,\r\n            \" on \",\r\n            chainsByChainId[outputChainId][\"name\"],\r\n            \" via \",\r\n            bridgeName,\r\n            \" bridge\"),\r\n        loading && React__default[\"default\"].createElement(\"div\", { className: \"text-textColorPrimary text-base font-medium mt-4 mb-4 py-5 text-center\" },\r\n            React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-20 w-20 text-textColorPrimary\" })),\r\n        (sourceTxHash !== null && destinationTxHash === null) &&\r\n            React__default[\"default\"].createElement(\"div\", { className: \"text-textColorPrimary text-base font-medium mt-4 mb-4 py-5 text-center\" },\r\n                React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-20 w-20 text-textColorPrimary\" }),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"text-textColorPrimary text-base font-medium pt-4\" }, \"Bridging in Progress...\")),\r\n        destinationTxHash !== null &&\r\n            React__default[\"default\"].createElement(\"div\", { className: \"py-5 flex flex-col items-center\" },\r\n                React__default[\"default\"].createElement(SvgGreenTick, { className: \"h-20 w-20\" }),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"text-textColorPrimary text-base font-medium pt-2\" }, \"Transaction completed\")),\r\n        warning && React__default[\"default\"].createElement(\"div\", { className: \"mt-4 mb-4 text-base font-medium text-red-500\" }, warning),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex \".concat(widgetWidth > 400 ? 'flex-row' : 'flex-col', \" gap-4 mt-3\") },\r\n            !hideApproveBtn &&\r\n                React__default[\"default\"].createElement(PrimaryButton, { buttonText: approveBtnText, loading: loadingApproveBtn, bgColor: getComputedStyle(document.documentElement)\r\n                        .getPropertyValue('--btnColorPrimary'), disabled: disabledApproveBtn, onClick: handleApprove }),\r\n            !hideBridgeBtn &&\r\n                React__default[\"default\"].createElement(PrimaryButton, { buttonText: bridgeBtnText, loading: loadingBridgeBtn, bgColor: getComputedStyle(document.documentElement)\r\n                        .getPropertyValue('--btnColorPrimary'), disabled: disabledBridgeBtn, onClick: handleBridge })),\r\n        sourceTxHash !== null && chainsByChainId &&\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-around mt-3\" },\r\n                React__default[\"default\"].createElement(\"button\", { className: \"text-xs text-blue-500 hover:underline border rounded-3xl border-textColorSecondary bg-bgColorDropdown px-2.5 py-1.5 flex flex-row\" },\r\n                    React__default[\"default\"].createElement(\"img\", { src: chainsByChainId[inputChainId].icon, className: \"w-4 h-4 rounded-full mr-1\" }),\r\n                    React__default[\"default\"].createElement(\"a\", { href: \"\".concat(chainsByChainId[inputChainId].explorers[0], \"/tx/\").concat(sourceTxHash), target: \"_blank\" }, \"Source Tx\")),\r\n                React__default[\"default\"].createElement(\"button\", { className: \"text-xs text-blue-500 hover:underline border disabled:pointer-events-none bg-bgColorDropdown disabled:opacity-50 rounded-3xl border-textColorSecondary px-2.5 py-1.5 flex flex-row\", disabled: destinationTxHash === null },\r\n                    React__default[\"default\"].createElement(\"img\", { src: chainsByChainId[outputChainId].icon, className: \"w-4 h-4 rounded-full mr-1\" }),\r\n                    React__default[\"default\"].createElement(\"a\", { href: \"\".concat(chainsByChainId[outputChainId].explorers[0], \"/tx/\").concat(destinationTxHash), target: \"_blank\" }, \"Destination Tx\")))));\r\n};\n\nvar BridgeTypeSort = function () {\r\n    var widgetWidth = React.useContext(WidgetWidthContext).widgetWidth;\r\n    var _a = React.useContext(SortTypeContext), sortType = _a.sortType, setSortType = _a.setSortType;\r\n    return (React__default[\"default\"].createElement(\"div\", { className: \"\".concat(widgetWidth > 250 ? 'grid grid-cols-3' : 'flex flex-col', \" gap-1 py-1 px-1 bg-bgColorSecondary rounded-lg text-xs\") },\r\n        React__default[\"default\"].createElement(\"button\", { className: \"text-textColorPrimary py-1 px-1 hover:bg-textColorSecondary rounded-lg \".concat(sortType === \"output\" ? \"bg-bgColorPrimary\" : \"\"), onClick: function () { return setSortType(\"output\"); } }, \"Max Received\"),\r\n        React__default[\"default\"].createElement(\"button\", { className: \"text-textColorPrimary py-1 px-1 hover:bg-textColorSecondary rounded-lg \".concat(sortType === \"time\" ? \"bg-bgColorPrimary\" : \"\"), onClick: function () { return setSortType(\"time\"); } }, \"Fastest Transfer\"),\r\n        React__default[\"default\"].createElement(\"button\", { className: \"text-textColorPrimary py-1 px-1 hover:bg-textColorSecondary rounded-lg \".concat(sortType === \"gas\" ? \"bg-bgColorPrimary\" : \"\"), onClick: function () { return setSortType(\"gas\"); } }, \"Least Gas\")));\r\n};\n\nvar _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar SvgRightArrow = function SvgRightArrow(props) {\n  return /*#__PURE__*/React__namespace.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 12 12\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    className: \"right-arrow_svg___1e1onsz2\",\n    style: {\n      position: \"relative\",\n      top: 1\n    }\n  }, props), _path || (_path = /*#__PURE__*/React__namespace.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"m6 .666-.94.94 3.72 3.727H.667v1.333H8.78l-3.727 3.72.947.947L11.333 6 6 .666z\",\n    fill: \"currentColor\"\n  })));\n};\n\nvar ChainSelectDropdown = function (_a) {\r\n    var options = _a.options, setChain = _a.setChain, onHide = _a.onHide;\r\n    var clickAwayRef = React.useRef(null);\r\n    useClickAway(clickAwayRef, function () { return onHide(true); });\r\n    return (React__default[\"default\"].createElement(\"div\", { ref: clickAwayRef, className: \"absolute text-textColorPrimary bg-bgColorDropdown top-14 left-4 py-2 rounded-lg z-10\", style: { width: \"220px\" } }, options.map(function (option) {\r\n        return (React__default[\"default\"].createElement(\"div\", { className: \"flex mx-2 p-1 rounded-lg h-10 items-center text-sm font-medium hover:cursor-pointer hover:bg-bgColorSecondary\", onClick: function () {\r\n                setChain(option.chainId);\r\n                onHide(true);\r\n            }, key: option.chainId },\r\n            React__default[\"default\"].createElement(\"img\", { src: option.icon, className: \"w-5 h-5 rounded-md mr-2\" }),\r\n            React__default[\"default\"].createElement(\"div\", null, option.name)));\r\n    })));\r\n};\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar bn = {exports: {}};\n\n(function (module) {\n(function (module, exports) {\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) ; else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(module, commonjsGlobal);\n}(bn));\n\nvar BN$1 = bn.exports;\n\nconst version$3 = \"logger/5.6.0\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nfunction _checkNormalize() {\n    try {\n        const missing = [];\n        // Make sure all forms of normalization are supported\n        [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n            try {\n                if (\"test\".normalize(form) !== \"test\") {\n                    throw new Error(\"bad normalize\");\n                }\n                ;\n            }\n            catch (error) {\n                missing.push(form);\n            }\n        });\n        if (missing.length) {\n            throw new Error(\"missing \" + missing.join(\", \"));\n        }\n        if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n            throw new Error(\"broken implementation\");\n        }\n    }\n    catch (error) {\n        return error.message;\n    }\n    return null;\n}\nconst _normalizeError = _checkNormalize();\nvar LogLevel;\n(function (LogLevel) {\n    LogLevel[\"DEBUG\"] = \"DEBUG\";\n    LogLevel[\"INFO\"] = \"INFO\";\n    LogLevel[\"WARNING\"] = \"WARNING\";\n    LogLevel[\"ERROR\"] = \"ERROR\";\n    LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nvar ErrorCode;\n(function (ErrorCode) {\n    ///////////////////\n    // Generic Errors\n    // Unknown Error\n    ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n    // Not Implemented\n    ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n    // Unsupported Operation\n    //   - operation\n    ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n    // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n    //   - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n    ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n    // Some sort of bad response from the server\n    ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n    // Timeout\n    ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n    ///////////////////\n    // Operational  Errors\n    // Buffer Overrun\n    ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n    // Numeric Fault\n    //   - operation: the operation being executed\n    //   - fault: the reason this faulted\n    ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n    ///////////////////\n    // Argument Errors\n    // Missing new operator to an object\n    //  - name: The name of the class\n    ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n    // Invalid argument (e.g. value is incompatible with type) to a function:\n    //   - argument: The argument name that was invalid\n    //   - value: The value of the argument\n    ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n    // Missing argument to a function:\n    //   - count: The number of arguments received\n    //   - expectedCount: The number of arguments expected\n    ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n    // Too many arguments\n    //   - count: The number of arguments received\n    //   - expectedCount: The number of arguments expected\n    ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n    ///////////////////\n    // Blockchain Errors\n    // Call exception\n    //  - transaction: the transaction\n    //  - address?: the contract address\n    //  - args?: The arguments passed into the function\n    //  - method?: The Solidity method signature\n    //  - errorSignature?: The EIP848 error signature\n    //  - errorArgs?: The EIP848 error parameters\n    //  - reason: The reason (only for EIP848 \"Error(string)\")\n    ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n    // Insufficient funds (< value + gasLimit * gasPrice)\n    //   - transaction: the transaction attempted\n    ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n    // Nonce has already been used\n    //   - transaction: the transaction attempted\n    ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n    // The replacement fee for the transaction is too low\n    //   - transaction: the transaction attempted\n    ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n    // The gas limit could not be estimated\n    //   - transaction: the transaction passed to estimateGas\n    ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n    // The transaction was replaced by one with a higher gas price\n    //   - reason: \"cancelled\", \"replaced\" or \"repriced\"\n    //   - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n    //   - hash: original transaction hash\n    //   - replacement: the full TransactionsResponse for the replacement\n    //   - receipt: the receipt of the replacement\n    ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n})(ErrorCode || (ErrorCode = {}));\nconst HEX = \"0123456789abcdef\";\nclass Logger {\n    constructor(version) {\n        Object.defineProperty(this, \"version\", {\n            enumerable: true,\n            value: version,\n            writable: false\n        });\n    }\n    _log(logLevel, args) {\n        const level = logLevel.toLowerCase();\n        if (LogLevels[level] == null) {\n            this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n        }\n        if (_logLevel > LogLevels[level]) {\n            return;\n        }\n        console.log.apply(console, args);\n    }\n    debug(...args) {\n        this._log(Logger.levels.DEBUG, args);\n    }\n    info(...args) {\n        this._log(Logger.levels.INFO, args);\n    }\n    warn(...args) {\n        this._log(Logger.levels.WARNING, args);\n    }\n    makeError(message, code, params) {\n        // Errors are being censored\n        if (_censorErrors) {\n            return this.makeError(\"censored error\", code, {});\n        }\n        if (!code) {\n            code = Logger.errors.UNKNOWN_ERROR;\n        }\n        if (!params) {\n            params = {};\n        }\n        const messageDetails = [];\n        Object.keys(params).forEach((key) => {\n            const value = params[key];\n            try {\n                if (value instanceof Uint8Array) {\n                    let hex = \"\";\n                    for (let i = 0; i < value.length; i++) {\n                        hex += HEX[value[i] >> 4];\n                        hex += HEX[value[i] & 0x0f];\n                    }\n                    messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n                }\n                else {\n                    messageDetails.push(key + \"=\" + JSON.stringify(value));\n                }\n            }\n            catch (error) {\n                messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n            }\n        });\n        messageDetails.push(`code=${code}`);\n        messageDetails.push(`version=${this.version}`);\n        const reason = message;\n        let url = \"\";\n        switch (code) {\n            case ErrorCode.NUMERIC_FAULT: {\n                url = \"NUMERIC_FAULT\";\n                const fault = message;\n                switch (fault) {\n                    case \"overflow\":\n                    case \"underflow\":\n                    case \"division-by-zero\":\n                        url += \"-\" + fault;\n                        break;\n                    case \"negative-power\":\n                    case \"negative-width\":\n                        url += \"-unsupported\";\n                        break;\n                    case \"unbound-bitwise-result\":\n                        url += \"-unbound-result\";\n                        break;\n                }\n                break;\n            }\n            case ErrorCode.CALL_EXCEPTION:\n            case ErrorCode.INSUFFICIENT_FUNDS:\n            case ErrorCode.MISSING_NEW:\n            case ErrorCode.NONCE_EXPIRED:\n            case ErrorCode.REPLACEMENT_UNDERPRICED:\n            case ErrorCode.TRANSACTION_REPLACED:\n            case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n                url = code;\n                break;\n        }\n        if (url) {\n            message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n        }\n        if (messageDetails.length) {\n            message += \" (\" + messageDetails.join(\", \") + \")\";\n        }\n        // @TODO: Any??\n        const error = new Error(message);\n        error.reason = reason;\n        error.code = code;\n        Object.keys(params).forEach(function (key) {\n            error[key] = params[key];\n        });\n        return error;\n    }\n    throwError(message, code, params) {\n        throw this.makeError(message, code, params);\n    }\n    throwArgumentError(message, name, value) {\n        return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n            argument: name,\n            value: value\n        });\n    }\n    assert(condition, message, code, params) {\n        if (!!condition) {\n            return;\n        }\n        this.throwError(message, code, params);\n    }\n    assertArgument(condition, message, name, value) {\n        if (!!condition) {\n            return;\n        }\n        this.throwArgumentError(message, name, value);\n    }\n    checkNormalize(message) {\n        if (_normalizeError) {\n            this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"String.prototype.normalize\", form: _normalizeError\n            });\n        }\n    }\n    checkSafeUint53(value, message) {\n        if (typeof (value) !== \"number\") {\n            return;\n        }\n        if (message == null) {\n            message = \"value not safe\";\n        }\n        if (value < 0 || value >= 0x1fffffffffffff) {\n            this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n                operation: \"checkSafeInteger\",\n                fault: \"out-of-safe-range\",\n                value: value\n            });\n        }\n        if (value % 1) {\n            this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n                operation: \"checkSafeInteger\",\n                fault: \"non-integer\",\n                value: value\n            });\n        }\n    }\n    checkArgumentCount(count, expectedCount, message) {\n        if (message) {\n            message = \": \" + message;\n        }\n        else {\n            message = \"\";\n        }\n        if (count < expectedCount) {\n            this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n                count: count,\n                expectedCount: expectedCount\n            });\n        }\n        if (count > expectedCount) {\n            this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n                count: count,\n                expectedCount: expectedCount\n            });\n        }\n    }\n    checkNew(target, kind) {\n        if (target === Object || target == null) {\n            this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n        }\n    }\n    checkAbstract(target, kind) {\n        if (target === kind) {\n            this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n        }\n        else if (target === Object || target == null) {\n            this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n        }\n    }\n    static globalLogger() {\n        if (!_globalLogger) {\n            _globalLogger = new Logger(version$3);\n        }\n        return _globalLogger;\n    }\n    static setCensorship(censorship, permanent) {\n        if (!censorship && permanent) {\n            this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"setCensorship\"\n            });\n        }\n        if (_permanentCensorErrors) {\n            if (!censorship) {\n                return;\n            }\n            this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"setCensorship\"\n            });\n        }\n        _censorErrors = !!censorship;\n        _permanentCensorErrors = !!permanent;\n    }\n    static setLogLevel(logLevel) {\n        const level = LogLevels[logLevel.toLowerCase()];\n        if (level == null) {\n            Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n            return;\n        }\n        _logLevel = level;\n    }\n    static from(version) {\n        return new Logger(version);\n    }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n\nconst version$2 = \"bytes/5.6.1\";\n\nconst logger$1 = new Logger(version$2);\n///////////////////////////////\nfunction isHexable(value) {\n    return !!(value.toHexString);\n}\nfunction addSlice(array) {\n    if (array.slice) {\n        return array;\n    }\n    array.slice = function () {\n        const args = Array.prototype.slice.call(arguments);\n        return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n    };\n    return array;\n}\nfunction isInteger(value) {\n    return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nfunction isBytes(value) {\n    if (value == null) {\n        return false;\n    }\n    if (value.constructor === Uint8Array) {\n        return true;\n    }\n    if (typeof (value) === \"string\") {\n        return false;\n    }\n    if (!isInteger(value.length) || value.length < 0) {\n        return false;\n    }\n    for (let i = 0; i < value.length; i++) {\n        const v = value[i];\n        if (!isInteger(v) || v < 0 || v >= 256) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction arrayify(value, options) {\n    if (!options) {\n        options = {};\n    }\n    if (typeof (value) === \"number\") {\n        logger$1.checkSafeUint53(value, \"invalid arrayify value\");\n        const result = [];\n        while (value) {\n            result.unshift(value & 0xff);\n            value = parseInt(String(value / 256));\n        }\n        if (result.length === 0) {\n            result.push(0);\n        }\n        return addSlice(new Uint8Array(result));\n    }\n    if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n        value = \"0x\" + value;\n    }\n    if (isHexable(value)) {\n        value = value.toHexString();\n    }\n    if (isHexString(value)) {\n        let hex = value.substring(2);\n        if (hex.length % 2) {\n            if (options.hexPad === \"left\") {\n                hex = \"0\" + hex;\n            }\n            else if (options.hexPad === \"right\") {\n                hex += \"0\";\n            }\n            else {\n                logger$1.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n            }\n        }\n        const result = [];\n        for (let i = 0; i < hex.length; i += 2) {\n            result.push(parseInt(hex.substring(i, i + 2), 16));\n        }\n        return addSlice(new Uint8Array(result));\n    }\n    if (isBytes(value)) {\n        return addSlice(new Uint8Array(value));\n    }\n    return logger$1.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nfunction isHexString(value, length) {\n    if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n        return false;\n    }\n    if (length && value.length !== 2 + 2 * length) {\n        return false;\n    }\n    return true;\n}\n\nconst version$1 = \"bignumber/5.6.2\";\n\nvar BN = BN$1.BN;\nnew Logger(version$1);\n// value should have no prefix\nfunction _base36To16(value) {\n    return (new BN(value, 36)).toString(16);\n}\n\nvar sha3$1 = {exports: {}};\n\n/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n\n(function (module) {\n/*jslint bitwise: true */\n(function () {\n\n  var INPUT_ERROR = 'input is invalid type';\n  var FINALIZE_ERROR = 'finalize already called';\n  var WINDOW = typeof window === 'object';\n  var root = WINDOW ? window : {};\n  if (root.JS_SHA3_NO_WINDOW) {\n    WINDOW = false;\n  }\n  var WEB_WORKER = !WINDOW && typeof self === 'object';\n  var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n  if (NODE_JS) {\n    root = commonjsGlobal;\n  } else if (WEB_WORKER) {\n    root = self;\n  }\n  var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && 'object' === 'object' && module.exports;\n  var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n  var HEX_CHARS = '0123456789abcdef'.split('');\n  var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n  var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n  var KECCAK_PADDING = [1, 256, 65536, 16777216];\n  var PADDING = [6, 1536, 393216, 100663296];\n  var SHIFT = [0, 8, 16, 24];\n  var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n    0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n    2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n    2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n    2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n  var BITS = [224, 256, 384, 512];\n  var SHAKE_BITS = [128, 256];\n  var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n  var CSHAKE_BYTEPAD = {\n    '128': 168,\n    '256': 136\n  };\n\n  if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n    Array.isArray = function (obj) {\n      return Object.prototype.toString.call(obj) === '[object Array]';\n    };\n  }\n\n  if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n    ArrayBuffer.isView = function (obj) {\n      return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n    };\n  }\n\n  var createOutputMethod = function (bits, padding, outputType) {\n    return function (message) {\n      return new Keccak(bits, padding, bits).update(message)[outputType]();\n    };\n  };\n\n  var createShakeOutputMethod = function (bits, padding, outputType) {\n    return function (message, outputBits) {\n      return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n    };\n  };\n\n  var createCshakeOutputMethod = function (bits, padding, outputType) {\n    return function (message, outputBits, n, s) {\n      return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n    };\n  };\n\n  var createKmacOutputMethod = function (bits, padding, outputType) {\n    return function (key, message, outputBits, s) {\n      return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n    };\n  };\n\n  var createOutputMethods = function (method, createMethod, bits, padding) {\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createMethod(bits, padding, type);\n    }\n    return method;\n  };\n\n  var createMethod = function (bits, padding) {\n    var method = createOutputMethod(bits, padding, 'hex');\n    method.create = function () {\n      return new Keccak(bits, padding, bits);\n    };\n    method.update = function (message) {\n      return method.create().update(message);\n    };\n    return createOutputMethods(method, createOutputMethod, bits, padding);\n  };\n\n  var createShakeMethod = function (bits, padding) {\n    var method = createShakeOutputMethod(bits, padding, 'hex');\n    method.create = function (outputBits) {\n      return new Keccak(bits, padding, outputBits);\n    };\n    method.update = function (message, outputBits) {\n      return method.create(outputBits).update(message);\n    };\n    return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n  };\n\n  var createCshakeMethod = function (bits, padding) {\n    var w = CSHAKE_BYTEPAD[bits];\n    var method = createCshakeOutputMethod(bits, padding, 'hex');\n    method.create = function (outputBits, n, s) {\n      if (!n && !s) {\n        return methods['shake' + bits].create(outputBits);\n      } else {\n        return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n      }\n    };\n    method.update = function (message, outputBits, n, s) {\n      return method.create(outputBits, n, s).update(message);\n    };\n    return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n  };\n\n  var createKmacMethod = function (bits, padding) {\n    var w = CSHAKE_BYTEPAD[bits];\n    var method = createKmacOutputMethod(bits, padding, 'hex');\n    method.create = function (key, outputBits, s) {\n      return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n    };\n    method.update = function (key, message, outputBits, s) {\n      return method.create(key, outputBits, s).update(message);\n    };\n    return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n  };\n\n  var algorithms = [\n    { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n    { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n    { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n    { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n    { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n  ];\n\n  var methods = {}, methodNames = [];\n\n  for (var i = 0; i < algorithms.length; ++i) {\n    var algorithm = algorithms[i];\n    var bits = algorithm.bits;\n    for (var j = 0; j < bits.length; ++j) {\n      var methodName = algorithm.name + '_' + bits[j];\n      methodNames.push(methodName);\n      methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n      if (algorithm.name !== 'sha3') {\n        var newMethodName = algorithm.name + bits[j];\n        methodNames.push(newMethodName);\n        methods[newMethodName] = methods[methodName];\n      }\n    }\n  }\n\n  function Keccak(bits, padding, outputBits) {\n    this.blocks = [];\n    this.s = [];\n    this.padding = padding;\n    this.outputBits = outputBits;\n    this.reset = true;\n    this.finalized = false;\n    this.block = 0;\n    this.start = 0;\n    this.blockCount = (1600 - (bits << 1)) >> 5;\n    this.byteCount = this.blockCount << 2;\n    this.outputBlocks = outputBits >> 5;\n    this.extraBytes = (outputBits & 31) >> 3;\n\n    for (var i = 0; i < 50; ++i) {\n      this.s[i] = 0;\n    }\n  }\n\n  Keccak.prototype.update = function (message) {\n    if (this.finalized) {\n      throw new Error(FINALIZE_ERROR);\n    }\n    var notString, type = typeof message;\n    if (type !== 'string') {\n      if (type === 'object') {\n        if (message === null) {\n          throw new Error(INPUT_ERROR);\n        } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n          message = new Uint8Array(message);\n        } else if (!Array.isArray(message)) {\n          if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n            throw new Error(INPUT_ERROR);\n          }\n        }\n      } else {\n        throw new Error(INPUT_ERROR);\n      }\n      notString = true;\n    }\n    var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n      blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n    while (index < length) {\n      if (this.reset) {\n        this.reset = false;\n        blocks[0] = this.block;\n        for (i = 1; i < blockCount + 1; ++i) {\n          blocks[i] = 0;\n        }\n      }\n      if (notString) {\n        for (i = this.start; index < length && i < byteCount; ++index) {\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n        }\n      } else {\n        for (i = this.start; index < length && i < byteCount; ++index) {\n          code = message.charCodeAt(index);\n          if (code < 0x80) {\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\n          } else if (code < 0x800) {\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else if (code < 0xd800 || code >= 0xe000) {\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else {\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          }\n        }\n      }\n      this.lastByteIndex = i;\n      if (i >= byteCount) {\n        this.start = i - byteCount;\n        this.block = blocks[blockCount];\n        for (i = 0; i < blockCount; ++i) {\n          s[i] ^= blocks[i];\n        }\n        f(s);\n        this.reset = true;\n      } else {\n        this.start = i;\n      }\n    }\n    return this;\n  };\n\n  Keccak.prototype.encode = function (x, right) {\n    var o = x & 255, n = 1;\n    var bytes = [o];\n    x = x >> 8;\n    o = x & 255;\n    while (o > 0) {\n      bytes.unshift(o);\n      x = x >> 8;\n      o = x & 255;\n      ++n;\n    }\n    if (right) {\n      bytes.push(n);\n    } else {\n      bytes.unshift(n);\n    }\n    this.update(bytes);\n    return bytes.length;\n  };\n\n  Keccak.prototype.encodeString = function (str) {\n    var notString, type = typeof str;\n    if (type !== 'string') {\n      if (type === 'object') {\n        if (str === null) {\n          throw new Error(INPUT_ERROR);\n        } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n          str = new Uint8Array(str);\n        } else if (!Array.isArray(str)) {\n          if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n            throw new Error(INPUT_ERROR);\n          }\n        }\n      } else {\n        throw new Error(INPUT_ERROR);\n      }\n      notString = true;\n    }\n    var bytes = 0, length = str.length;\n    if (notString) {\n      bytes = length;\n    } else {\n      for (var i = 0; i < str.length; ++i) {\n        var code = str.charCodeAt(i);\n        if (code < 0x80) {\n          bytes += 1;\n        } else if (code < 0x800) {\n          bytes += 2;\n        } else if (code < 0xd800 || code >= 0xe000) {\n          bytes += 3;\n        } else {\n          code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n          bytes += 4;\n        }\n      }\n    }\n    bytes += this.encode(bytes * 8);\n    this.update(str);\n    return bytes;\n  };\n\n  Keccak.prototype.bytepad = function (strs, w) {\n    var bytes = this.encode(w);\n    for (var i = 0; i < strs.length; ++i) {\n      bytes += this.encodeString(strs[i]);\n    }\n    var paddingBytes = w - bytes % w;\n    var zeros = [];\n    zeros.length = paddingBytes;\n    this.update(zeros);\n    return this;\n  };\n\n  Keccak.prototype.finalize = function () {\n    if (this.finalized) {\n      return;\n    }\n    this.finalized = true;\n    var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n    blocks[i >> 2] |= this.padding[i & 3];\n    if (this.lastByteIndex === this.byteCount) {\n      blocks[0] = blocks[blockCount];\n      for (i = 1; i < blockCount + 1; ++i) {\n        blocks[i] = 0;\n      }\n    }\n    blocks[blockCount - 1] |= 0x80000000;\n    for (i = 0; i < blockCount; ++i) {\n      s[i] ^= blocks[i];\n    }\n    f(s);\n  };\n\n  Keccak.prototype.toString = Keccak.prototype.hex = function () {\n    this.finalize();\n\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n      extraBytes = this.extraBytes, i = 0, j = 0;\n    var hex = '', block;\n    while (j < outputBlocks) {\n      for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n        block = s[i];\n        hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n          HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n          HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n          HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n      }\n      if (j % blockCount === 0) {\n        f(s);\n        i = 0;\n      }\n    }\n    if (extraBytes) {\n      block = s[i];\n      hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n      if (extraBytes > 1) {\n        hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n      }\n      if (extraBytes > 2) {\n        hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n      }\n    }\n    return hex;\n  };\n\n  Keccak.prototype.arrayBuffer = function () {\n    this.finalize();\n\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n      extraBytes = this.extraBytes, i = 0, j = 0;\n    var bytes = this.outputBits >> 3;\n    var buffer;\n    if (extraBytes) {\n      buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n    } else {\n      buffer = new ArrayBuffer(bytes);\n    }\n    var array = new Uint32Array(buffer);\n    while (j < outputBlocks) {\n      for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n        array[j] = s[i];\n      }\n      if (j % blockCount === 0) {\n        f(s);\n      }\n    }\n    if (extraBytes) {\n      array[i] = s[i];\n      buffer = buffer.slice(0, bytes);\n    }\n    return buffer;\n  };\n\n  Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n  Keccak.prototype.digest = Keccak.prototype.array = function () {\n    this.finalize();\n\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n      extraBytes = this.extraBytes, i = 0, j = 0;\n    var array = [], offset, block;\n    while (j < outputBlocks) {\n      for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n        offset = j << 2;\n        block = s[i];\n        array[offset] = block & 0xFF;\n        array[offset + 1] = (block >> 8) & 0xFF;\n        array[offset + 2] = (block >> 16) & 0xFF;\n        array[offset + 3] = (block >> 24) & 0xFF;\n      }\n      if (j % blockCount === 0) {\n        f(s);\n      }\n    }\n    if (extraBytes) {\n      offset = j << 2;\n      block = s[i];\n      array[offset] = block & 0xFF;\n      if (extraBytes > 1) {\n        array[offset + 1] = (block >> 8) & 0xFF;\n      }\n      if (extraBytes > 2) {\n        array[offset + 2] = (block >> 16) & 0xFF;\n      }\n    }\n    return array;\n  };\n\n  function Kmac(bits, padding, outputBits) {\n    Keccak.call(this, bits, padding, outputBits);\n  }\n\n  Kmac.prototype = new Keccak();\n\n  Kmac.prototype.finalize = function () {\n    this.encode(this.outputBits, true);\n    return Keccak.prototype.finalize.call(this);\n  };\n\n  var f = function (s) {\n    var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n      b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n      b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n      b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n    for (n = 0; n < 48; n += 2) {\n      c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n      c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n      c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n      c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n      c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n      c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n      c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n      c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n      c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n      c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n      h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n      l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n      s[0] ^= h;\n      s[1] ^= l;\n      s[10] ^= h;\n      s[11] ^= l;\n      s[20] ^= h;\n      s[21] ^= l;\n      s[30] ^= h;\n      s[31] ^= l;\n      s[40] ^= h;\n      s[41] ^= l;\n      h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n      l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n      s[2] ^= h;\n      s[3] ^= l;\n      s[12] ^= h;\n      s[13] ^= l;\n      s[22] ^= h;\n      s[23] ^= l;\n      s[32] ^= h;\n      s[33] ^= l;\n      s[42] ^= h;\n      s[43] ^= l;\n      h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n      l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n      s[4] ^= h;\n      s[5] ^= l;\n      s[14] ^= h;\n      s[15] ^= l;\n      s[24] ^= h;\n      s[25] ^= l;\n      s[34] ^= h;\n      s[35] ^= l;\n      s[44] ^= h;\n      s[45] ^= l;\n      h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n      l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n      s[6] ^= h;\n      s[7] ^= l;\n      s[16] ^= h;\n      s[17] ^= l;\n      s[26] ^= h;\n      s[27] ^= l;\n      s[36] ^= h;\n      s[37] ^= l;\n      s[46] ^= h;\n      s[47] ^= l;\n      h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n      l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n      s[8] ^= h;\n      s[9] ^= l;\n      s[18] ^= h;\n      s[19] ^= l;\n      s[28] ^= h;\n      s[29] ^= l;\n      s[38] ^= h;\n      s[39] ^= l;\n      s[48] ^= h;\n      s[49] ^= l;\n\n      b0 = s[0];\n      b1 = s[1];\n      b32 = (s[11] << 4) | (s[10] >>> 28);\n      b33 = (s[10] << 4) | (s[11] >>> 28);\n      b14 = (s[20] << 3) | (s[21] >>> 29);\n      b15 = (s[21] << 3) | (s[20] >>> 29);\n      b46 = (s[31] << 9) | (s[30] >>> 23);\n      b47 = (s[30] << 9) | (s[31] >>> 23);\n      b28 = (s[40] << 18) | (s[41] >>> 14);\n      b29 = (s[41] << 18) | (s[40] >>> 14);\n      b20 = (s[2] << 1) | (s[3] >>> 31);\n      b21 = (s[3] << 1) | (s[2] >>> 31);\n      b2 = (s[13] << 12) | (s[12] >>> 20);\n      b3 = (s[12] << 12) | (s[13] >>> 20);\n      b34 = (s[22] << 10) | (s[23] >>> 22);\n      b35 = (s[23] << 10) | (s[22] >>> 22);\n      b16 = (s[33] << 13) | (s[32] >>> 19);\n      b17 = (s[32] << 13) | (s[33] >>> 19);\n      b48 = (s[42] << 2) | (s[43] >>> 30);\n      b49 = (s[43] << 2) | (s[42] >>> 30);\n      b40 = (s[5] << 30) | (s[4] >>> 2);\n      b41 = (s[4] << 30) | (s[5] >>> 2);\n      b22 = (s[14] << 6) | (s[15] >>> 26);\n      b23 = (s[15] << 6) | (s[14] >>> 26);\n      b4 = (s[25] << 11) | (s[24] >>> 21);\n      b5 = (s[24] << 11) | (s[25] >>> 21);\n      b36 = (s[34] << 15) | (s[35] >>> 17);\n      b37 = (s[35] << 15) | (s[34] >>> 17);\n      b18 = (s[45] << 29) | (s[44] >>> 3);\n      b19 = (s[44] << 29) | (s[45] >>> 3);\n      b10 = (s[6] << 28) | (s[7] >>> 4);\n      b11 = (s[7] << 28) | (s[6] >>> 4);\n      b42 = (s[17] << 23) | (s[16] >>> 9);\n      b43 = (s[16] << 23) | (s[17] >>> 9);\n      b24 = (s[26] << 25) | (s[27] >>> 7);\n      b25 = (s[27] << 25) | (s[26] >>> 7);\n      b6 = (s[36] << 21) | (s[37] >>> 11);\n      b7 = (s[37] << 21) | (s[36] >>> 11);\n      b38 = (s[47] << 24) | (s[46] >>> 8);\n      b39 = (s[46] << 24) | (s[47] >>> 8);\n      b30 = (s[8] << 27) | (s[9] >>> 5);\n      b31 = (s[9] << 27) | (s[8] >>> 5);\n      b12 = (s[18] << 20) | (s[19] >>> 12);\n      b13 = (s[19] << 20) | (s[18] >>> 12);\n      b44 = (s[29] << 7) | (s[28] >>> 25);\n      b45 = (s[28] << 7) | (s[29] >>> 25);\n      b26 = (s[38] << 8) | (s[39] >>> 24);\n      b27 = (s[39] << 8) | (s[38] >>> 24);\n      b8 = (s[48] << 14) | (s[49] >>> 18);\n      b9 = (s[49] << 14) | (s[48] >>> 18);\n\n      s[0] = b0 ^ (~b2 & b4);\n      s[1] = b1 ^ (~b3 & b5);\n      s[10] = b10 ^ (~b12 & b14);\n      s[11] = b11 ^ (~b13 & b15);\n      s[20] = b20 ^ (~b22 & b24);\n      s[21] = b21 ^ (~b23 & b25);\n      s[30] = b30 ^ (~b32 & b34);\n      s[31] = b31 ^ (~b33 & b35);\n      s[40] = b40 ^ (~b42 & b44);\n      s[41] = b41 ^ (~b43 & b45);\n      s[2] = b2 ^ (~b4 & b6);\n      s[3] = b3 ^ (~b5 & b7);\n      s[12] = b12 ^ (~b14 & b16);\n      s[13] = b13 ^ (~b15 & b17);\n      s[22] = b22 ^ (~b24 & b26);\n      s[23] = b23 ^ (~b25 & b27);\n      s[32] = b32 ^ (~b34 & b36);\n      s[33] = b33 ^ (~b35 & b37);\n      s[42] = b42 ^ (~b44 & b46);\n      s[43] = b43 ^ (~b45 & b47);\n      s[4] = b4 ^ (~b6 & b8);\n      s[5] = b5 ^ (~b7 & b9);\n      s[14] = b14 ^ (~b16 & b18);\n      s[15] = b15 ^ (~b17 & b19);\n      s[24] = b24 ^ (~b26 & b28);\n      s[25] = b25 ^ (~b27 & b29);\n      s[34] = b34 ^ (~b36 & b38);\n      s[35] = b35 ^ (~b37 & b39);\n      s[44] = b44 ^ (~b46 & b48);\n      s[45] = b45 ^ (~b47 & b49);\n      s[6] = b6 ^ (~b8 & b0);\n      s[7] = b7 ^ (~b9 & b1);\n      s[16] = b16 ^ (~b18 & b10);\n      s[17] = b17 ^ (~b19 & b11);\n      s[26] = b26 ^ (~b28 & b20);\n      s[27] = b27 ^ (~b29 & b21);\n      s[36] = b36 ^ (~b38 & b30);\n      s[37] = b37 ^ (~b39 & b31);\n      s[46] = b46 ^ (~b48 & b40);\n      s[47] = b47 ^ (~b49 & b41);\n      s[8] = b8 ^ (~b0 & b2);\n      s[9] = b9 ^ (~b1 & b3);\n      s[18] = b18 ^ (~b10 & b12);\n      s[19] = b19 ^ (~b11 & b13);\n      s[28] = b28 ^ (~b20 & b22);\n      s[29] = b29 ^ (~b21 & b23);\n      s[38] = b38 ^ (~b30 & b32);\n      s[39] = b39 ^ (~b31 & b33);\n      s[48] = b48 ^ (~b40 & b42);\n      s[49] = b49 ^ (~b41 & b43);\n\n      s[0] ^= RC[n];\n      s[1] ^= RC[n + 1];\n    }\n  };\n\n  if (COMMON_JS) {\n    module.exports = methods;\n  } else {\n    for (i = 0; i < methodNames.length; ++i) {\n      root[methodNames[i]] = methods[methodNames[i]];\n    }\n  }\n})();\n}(sha3$1));\n\nvar sha3 = sha3$1.exports;\n\nfunction keccak256(data) {\n    return '0x' + sha3.keccak_256(arrayify(data));\n}\n\nconst version = \"address/5.6.1\";\n\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n    if (!isHexString(address, 20)) {\n        logger.throwArgumentError(\"invalid address\", \"address\", address);\n    }\n    address = address.toLowerCase();\n    const chars = address.substring(2).split(\"\");\n    const expanded = new Uint8Array(40);\n    for (let i = 0; i < 40; i++) {\n        expanded[i] = chars[i].charCodeAt(0);\n    }\n    const hashed = arrayify(keccak256(expanded));\n    for (let i = 0; i < 40; i += 2) {\n        if ((hashed[i >> 1] >> 4) >= 8) {\n            chars[i] = chars[i].toUpperCase();\n        }\n        if ((hashed[i >> 1] & 0x0f) >= 8) {\n            chars[i + 1] = chars[i + 1].toUpperCase();\n        }\n    }\n    return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n    if (Math.log10) {\n        return Math.log10(x);\n    }\n    return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n    ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n    ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n    address = address.toUpperCase();\n    address = address.substring(4) + address.substring(0, 2) + \"00\";\n    let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n    // Javascript can handle integers safely up to 15 (decimal) digits\n    while (expanded.length >= safeDigits) {\n        let block = expanded.substring(0, safeDigits);\n        expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n    }\n    let checksum = String(98 - (parseInt(expanded, 10) % 97));\n    while (checksum.length < 2) {\n        checksum = \"0\" + checksum;\n    }\n    return checksum;\n}\nfunction getAddress(address) {\n    let result = null;\n    if (typeof (address) !== \"string\") {\n        logger.throwArgumentError(\"invalid address\", \"address\", address);\n    }\n    if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n        // Missing the 0x prefix\n        if (address.substring(0, 2) !== \"0x\") {\n            address = \"0x\" + address;\n        }\n        result = getChecksumAddress(address);\n        // It is a checksummed address with a bad checksum\n        if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n            logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n        }\n        // Maybe ICAP? (we only support direct mode)\n    }\n    else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n        // It is an ICAP address with a bad checksum\n        if (address.substring(2, 4) !== ibanChecksum(address)) {\n            logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n        }\n        result = _base36To16(address.substring(4));\n        while (result.length < 40) {\n            result = \"0\" + result;\n        }\n        result = getChecksumAddress(\"0x\" + result);\n    }\n    else {\n        logger.throwArgumentError(\"invalid address\", \"address\", address);\n    }\n    return result;\n}\nfunction isAddress(address) {\n    try {\n        getAddress(address);\n        return true;\n    }\n    catch (error) { }\n    return false;\n}\n\nvar getUserBalanceOfChainId = function (balances, chainId) {\r\n    var _a, _b;\r\n    if (!balances.isSuccess)\r\n        return {};\r\n    var data = (_b = (_a = balances.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n    var balanceByChainId = {};\r\n    data.map(function (balance) {\r\n        if (balance.chainId == chainId) {\r\n            balanceByChainId[balance.address] = balance.amount;\r\n        }\r\n    });\r\n    return balanceByChainId;\r\n};\r\nvar TokenSelectDropdown = function (_a) {\r\n    var _b, _c, _d, _e;\r\n    var options = _a.options, setTokenDetail = _a.setTokenDetail, onHide = _a.onHide, chainId = _a.chainId;\r\n    options.sort(function (a, b) { return a.symbol > b.symbol ? 1 : (a.symbol < b.symbol ? -1 : 0); });\r\n    var _f = React.useState(options), moreOptions = _f[0], setMoreOptions = _f[1];\r\n    var account = React.useContext(useWeb3Context).account;\r\n    var _g = React.useState(moreOptions), filteredResults = _g[0], setFilteredResults = _g[1];\r\n    var _h = React.useState(\"\"), searchQuery = _h[0], setSearchQuery = _h[1];\r\n    var _j = React.useState(false), isAddress$1 = _j[0], setIsAddress = _j[1];\r\n    var clickAwayRef = React.useRef(null);\r\n    var balanceResponse = reactQuery.useQuery([\"userTokenBalances\"], function () { return getUserTokenBalances({\r\n        userAddress: account\r\n    }); }, {\r\n        enabled: !!(account && account != \"\")\r\n    });\r\n    var newToken = {};\r\n    var tokenSupport = reactQuery.useQuery([\"tokenSupport\", isAddress$1], function () { return getIfTokenSupported({\r\n        chainId: chainId.toString(),\r\n        tokenAddress: searchQuery\r\n    }); }, {\r\n        enabled: !!isAddress$1\r\n    });\r\n    if (tokenSupport.isSuccess) {\r\n        if ((_c = (_b = tokenSupport.data) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.result.isSupported) {\r\n            newToken = (_e = (_d = tokenSupport.data) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.result.token;\r\n        }\r\n    }\r\n    var handleSearch = function (searchQuery) {\r\n        var result = [];\r\n        moreOptions.map(function (option) {\r\n            if (option.symbol.toLowerCase().includes(searchQuery.toLowerCase()) ||\r\n                option.address.toLowerCase().includes(searchQuery.toLowerCase())) {\r\n                result.push(option);\r\n            }\r\n        });\r\n        setFilteredResults(result);\r\n        if (result.length === 0) {\r\n            if (isAddress(searchQuery)) {\r\n                setIsAddress(true);\r\n            }\r\n        }\r\n    };\r\n    var addNewToken = function () {\r\n        var tokenDetail = newToken;\r\n        newToken = {};\r\n        var cust = localStorage.getItem('customTokens');\r\n        if (cust) {\r\n            cust = JSON.parse(cust);\r\n        }\r\n        else {\r\n            cust = {};\r\n        }\r\n        if (!cust[account])\r\n            cust[account] = {};\r\n        if (!cust[account][chainId])\r\n            cust[account][chainId] = [];\r\n        cust[account][chainId].push(tokenDetail);\r\n        localStorage.setItem('customTokens', JSON.stringify(cust));\r\n        setMoreOptions(__spreadArray([tokenDetail], moreOptions, true));\r\n    };\r\n    var tokenBalance = getUserBalanceOfChainId(balanceResponse, chainId);\r\n    useClickAway(clickAwayRef, function () { return onHide(true); });\r\n    return (React__default[\"default\"].createElement(\"div\", { ref: clickAwayRef, className: \"absolute text-textColorPrimary bg-bgColorDropdown top-14 py-2 rounded-lg z-10 w-full\" },\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex m-1 flex-col\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"w-full p-2.5\" },\r\n                React__default[\"default\"].createElement(\"input\", { className: \"rounded-lg bg-bgColorSecondary hover:bg-bgColorPrimary p-2 w-full outline-none border-none\", placeholder: \"Search Name or Address\", onChange: function (e) {\r\n                        if (isAddress$1)\r\n                            setIsAddress(false);\r\n                        setSearchQuery(e.target.value);\r\n                        handleSearch(e.target.value);\r\n                    }, value: searchQuery, autoFocus: true })),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row my-2 text-xs text-textColorSecondary mx-2\" },\r\n                React__default[\"default\"].createElement(\"div\", { className: \"grow ml-1\" }, \"Token Name\"),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"mr-3\" }, \"Balance\")),\r\n            React__default[\"default\"].createElement(\"div\", { style: { height: \"310px\", overflowY: \"scroll\" } },\r\n                filteredResults.map(function (option) {\r\n                    return (React__default[\"default\"].createElement(\"div\", { className: \"flex mx-2 my-3 p-1 rounded-lg h-10 items-center text-sm font-medium hover:cursor-pointer hover:bg-bgColorSecondary\", onClick: function () {\r\n                            setTokenDetail({ address: option.address, symbol: option.symbol, icon: option.icon, decimals: option.decimals });\r\n                            onHide(true);\r\n                        }, key: option.address },\r\n                        React__default[\"default\"].createElement(\"img\", { src: option.icon, className: \"w-7 h-7 rounded-full mr-2\" }),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"grow\" },\r\n                            React__default[\"default\"].createElement(\"div\", null, option.symbol),\r\n                            React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary text-sm\" }, option.name)),\r\n                        React__default[\"default\"].createElement(\"div\", null, tokenBalance[option.address] ? tokenBalance[option.address].toFixed(4) : \"0.00\")));\r\n                }),\r\n                (filteredResults.length === 0 && newToken.address) &&\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"flex mx-2 my-3 p-1 rounded-lg h-10 items-center text-sm font-medium\", key: newToken.address },\r\n                        React__default[\"default\"].createElement(\"img\", { src: newToken.icon, className: \"w-7 h-7 rounded-full mr-2\" }),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"grow\" },\r\n                            React__default[\"default\"].createElement(\"div\", null, newToken.symbol),\r\n                            React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary text-sm\" }, newToken.name)),\r\n                        account &&\r\n                            React__default[\"default\"].createElement(\"button\", { className: \"flex flex-row w-32 bg-pink-400 hover:bg-pink-800 w-full items-center justify-center whitespace-nowrap text-white rounded-lg font-medium text-sm px-3 h-10 cursor-pointer\", onClick: function () {\r\n                                    addNewToken();\r\n                                    setSearchQuery(\"\");\r\n                                    handleSearch(\"\");\r\n                                } }, \"Import Token\")),\r\n                (filteredResults.length === 0 && !newToken.address) &&\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary font-medium text-base mt-2 ml-3\" }, \"No Tokens Found\")))));\r\n};\n\nvar InputChainSelect = function (_a) {\r\n    var chainsByChainId = _a.chainsByChainId, fromChainsList = _a.fromChainsList, swap = _a.swap;\r\n    var _b = React.useContext(ChainIdContext), inputChainId = _b.inputChainId, outputChainId = _b.outputChainId, setInputChainId = _b.setInputChainId;\r\n    var setInputTokenDetails = React.useContext(TokenDetailsContext).setInputTokenDetails;\r\n    var _c = React.useState(true), hideInputChainDropdown = _c[0], setHideInputChainDropdown = _c[1];\r\n    return (React__default[\"default\"].createElement(\"div\", { id: \"input-chain-select\", className: \"hover:bg-bgColorPrimary col-start-1 col-span-5 text-textColorPrimary bg-bgColorSecondary px-3 py-2 relative rounded-lg border-2 border-bgColorSecondary\" },\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-col\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"text-xs\" }, \"From Network\"),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-between hover:cursor-pointer\", onClick: function () { return setHideInputChainDropdown(!hideInputChainDropdown); } },\r\n                React__default[\"default\"].createElement(\"div\", { className: \"text-base font-medium\" }, chainsByChainId\r\n                    ?\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row items-center\" },\r\n                            React__default[\"default\"].createElement(\"img\", { src: chainsByChainId[inputChainId].icon, className: \"w-4 h-4 rounded-md mr-1\" }),\r\n                            React__default[\"default\"].createElement(\"div\", null, chainsByChainId[inputChainId].name))\r\n                    :\r\n                        React__default[\"default\"].createElement(\"div\", null,\r\n                            React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-5 w-5 text-textColorPrimary\" }),\r\n                            \" Loading...\")),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"self-center\" },\r\n                    React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-90\", style: { width: 6, height: 10 } })),\r\n                !hideInputChainDropdown && fromChainsList &&\r\n                    React__default[\"default\"].createElement(ChainSelectDropdown, { options: fromChainsList, setChain: function (chainId) {\r\n                            if (chainId === inputChainId)\r\n                                return;\r\n                            setInputTokenDetails({ address: \"\", icon: \"\", symbol: \"\", decimals: 0 });\r\n                            if (chainId == outputChainId)\r\n                                swap();\r\n                            else\r\n                                setInputChainId(chainId);\r\n                        }, onHide: function (val) { return setHideInputChainDropdown(val); } })))));\r\n};\n\nvar OutputChainSelect = function (_a) {\r\n    var chainsByChainId = _a.chainsByChainId, toChainsList = _a.toChainsList, swap = _a.swap;\r\n    var _b = React.useContext(ChainIdContext), inputChainId = _b.inputChainId, outputChainId = _b.outputChainId, setOutputChainId = _b.setOutputChainId;\r\n    var setOutputTokenDetails = React.useContext(TokenDetailsContext).setOutputTokenDetails;\r\n    var _c = React.useState(true), hideOutputChainDropdown = _c[0], setHideOutputChainDropdown = _c[1];\r\n    return (React__default[\"default\"].createElement(\"div\", { id: \"output-chain-select\", className: \"hover:bg-bgColorPrimary col-start-7 col-span-5 text-textColorPrimary bg-bgColorSecondary px-3 py-2 relative rounded-lg border-2 border-bgColorSecondary\" },\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-col\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"text-xs\" }, \"To Network\"),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-between hover:cursor-pointer\", onClick: function () { return setHideOutputChainDropdown(!hideOutputChainDropdown); } },\r\n                React__default[\"default\"].createElement(\"div\", { className: \"text-base font-medium\" }, chainsByChainId\r\n                    ?\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row items-center\" },\r\n                            React__default[\"default\"].createElement(\"img\", { src: chainsByChainId[outputChainId].icon, className: \"w-4 h-4 rounded-md mr-1\" }),\r\n                            React__default[\"default\"].createElement(\"div\", null, chainsByChainId[outputChainId].name))\r\n                    :\r\n                        React__default[\"default\"].createElement(\"div\", null,\r\n                            React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-5 w-5 text-textColorPrimary\" }),\r\n                            \" Loading...\")),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"self-center\" },\r\n                    React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-90\", style: { width: 6, height: 10 } })),\r\n                !hideOutputChainDropdown && toChainsList &&\r\n                    React__default[\"default\"].createElement(ChainSelectDropdown, { options: toChainsList, setChain: function (chainId) {\r\n                            if (chainId === outputChainId)\r\n                                return;\r\n                            setOutputTokenDetails({ address: \"\", icon: \"\", symbol: \"\", decimals: 0 });\r\n                            if (chainId == inputChainId)\r\n                                swap();\r\n                            else\r\n                                setOutputChainId(chainId);\r\n                        }, onHide: function (val) { return setHideOutputChainDropdown(val); } })))));\r\n};\n\nvar ChainsSelect = function () {\r\n    var _a = React.useContext(ChainIdContext), inputChainId = _a.inputChainId, outputChainId = _a.outputChainId, setInputChainId = _a.setInputChainId, setOutputChainId = _a.setOutputChainId;\r\n    var _b = React.useContext(TokenDetailsContext), setInputTokenDetails = _b.setInputTokenDetails, setOutputTokenDetails = _b.setOutputTokenDetails;\r\n    var widgetWidth = React.useContext(WidgetWidthContext).widgetWidth;\r\n    var _c = React.useContext(ChainsContext), chainsByChainId = _c.chainsByChainId, fromChainsList = _c.fromChainsList, toChainsList = _c.toChainsList;\r\n    var swap = function () {\r\n        if (chainsByChainId[inputChainId].receivingEnabled === true &&\r\n            chainsByChainId[outputChainId].sendingEnabled === true) {\r\n            var fromChain = inputChainId, toChain = outputChainId;\r\n            setInputChainId(toChain);\r\n            setOutputChainId(fromChain);\r\n        }\r\n    };\r\n    return (React__default[\"default\"].createElement(\"div\", { id: \"chain-select\", className: \"\".concat(widgetWidth > 450 ? 'grid grid-cols-11' : 'flex flex-col', \" gap-3 rounded-xl\") },\r\n        React__default[\"default\"].createElement(InputChainSelect, { chainsByChainId: chainsByChainId, fromChainsList: fromChainsList, swap: swap }),\r\n        widgetWidth > 450 &&\r\n            React__default[\"default\"].createElement(\"div\", { id: \"swap-chains\", className: \"self-center text-textColorPrimary\" },\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex justify-center items-center rounded-lg border-2 border-bgColorSecondary bg-bgColorPrimary h-7 hover:cursor-pointer hover:bg-bgColorSecondary\", onClick: function () {\r\n                        setInputTokenDetails({ address: \"\", icon: \"\", symbol: \"\", decimals: 0 });\r\n                        setOutputTokenDetails({ address: \"\", icon: \"\", symbol: \"\", decimals: 0 });\r\n                        swap();\r\n                    } },\r\n                    React__default[\"default\"].createElement(SvgRightArrow, { className: \"h-3 w-3\" }))),\r\n        React__default[\"default\"].createElement(OutputChainSelect, { chainsByChainId: chainsByChainId, toChainsList: toChainsList, swap: swap })));\r\n};\n\nvar price$1;\r\nvar InputTokenSelect = function () {\r\n    var _a, _b;\r\n    var inputChainId = React.useContext(ChainIdContext).inputChainId;\r\n    var _c = React.useContext(TokenDetailsContext), inputTokenDetails = _c.inputTokenDetails, setInputTokenDetails = _c.setInputTokenDetails;\r\n    var _d = React.useState(true), hideInputTokenDropdown = _d[0], setHideInputTokenDropdown = _d[1];\r\n    var _e = React.useContext(InputTokenAmountContext), inputTokenAmount = _e.inputTokenAmount, setInputTokenAmount = _e.setInputTokenAmount, inputTokenList = _e.inputTokenList;\r\n    var tokenPrice = reactQuery.useQuery([\"tokenPrice1\", inputTokenDetails], function () { return getTokenPriceByTokenAddress({\r\n        tokenAddress: inputTokenDetails.address,\r\n        chainId: inputChainId.toString()\r\n    }); }, {\r\n        enabled: !!(inputTokenDetails.address != \"\")\r\n    });\r\n    if (tokenPrice.isSuccess) {\r\n        price$1 = (_b = (_a = tokenPrice.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result.tokenPrice;\r\n    }\r\n    else if (tokenPrice.isError) {\r\n        price$1 = 0;\r\n    }\r\n    return (React__default[\"default\"].createElement(\"div\", { id: \"input-token-select\", className: \"flex flex-col relative bg-bgColorSecondary rounded-lg px-3 py-2 border-2 border-bgColorSecondary hover:bg-bgColorPrimary focus-within:border-blue-500 focus-within:bg-bgColorPrimary\" },\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary text-xs mr-2\" }, \"Send\"),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"grow text-textColorSecondary text-xs text-right font-medium\" }, price$1 && inputTokenAmount != \"\" && isValidInput.test(inputTokenAmount) &&\r\n                React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                    React__default[\"default\"].createElement(\"input\", { disabled: true, className: \"text-xs font-medium bg-transparent w-full text-right border-none outline-none\", value: \"$ \".concat((price$1 * parseFloat(inputTokenAmount)).toLocaleString()) })))),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row text-textColorPrimary text-lg font-medium hover:cursor-pointer hover:text-blue-500\", onClick: function () { return setHideInputTokenDropdown(!hideInputTokenDropdown); } },\r\n                (inputTokenDetails.address === \"\") &&\r\n                    React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"mr-2\" },\r\n                            React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-5 w-5 text-textColorPrimary\" }),\r\n                            \" Loading...\"),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"self-center\" },\r\n                            React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-90 mr-1\", style: { width: 6, height: 10 } }))),\r\n                inputTokenDetails.address != \"\" &&\r\n                    React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                        React__default[\"default\"].createElement(\"img\", { src: inputTokenDetails.icon, className: \"w-4 h-4 rounded-full mr-1 self-center\" }),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"mr-2\" }, inputTokenDetails.symbol),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"self-center\" },\r\n                            React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-90 mr-1\", style: { width: 6, height: 10 } })))),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"grow text-textColorPrimary\" },\r\n                React__default[\"default\"].createElement(\"input\", { placeholder: \"0\", className: \"text-base font-medium bg-transparent w-full text-right border-none outline-none\", onChange: function (e) { return setInputTokenAmount(e.target.value); }, value: inputTokenAmount }))),\r\n        !hideInputTokenDropdown && inputTokenList &&\r\n            React__default[\"default\"].createElement(TokenSelectDropdown, { options: inputTokenList, chainId: inputChainId, setTokenDetail: function (inputTokenDetail) { return setInputTokenDetails(inputTokenDetail); }, onHide: function (val) { return setHideInputTokenDropdown(val); } })));\r\n};\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nvar DEBOUNCE_TIMEOUT = 1000;\r\nvar price;\r\nvar quoteList;\r\nvar OutputTokenSelect = function () {\r\n    var _a, _b;\r\n    var account = React.useContext(useWeb3Context).account;\r\n    var setRouteLoading = React.useContext(RouteLoadingContext).setRouteLoading;\r\n    var setWarningMsg = React.useContext(WarningMsgContext).setWarningMsg;\r\n    var _c = React.useContext(ChainIdContext), inputChainId = _c.inputChainId, outputChainId = _c.outputChainId;\r\n    var _d = React.useContext(TokenDetailsContext), inputTokenDetails = _d.inputTokenDetails, outputTokenDetails = _d.outputTokenDetails, setOutputTokenDetails = _d.setOutputTokenDetails;\r\n    var _e = React.useState(true), hideOutputTokenDropdown = _e[0], setHideOutputTokenDropdown = _e[1];\r\n    var _f = React.useState(false), fetchRoute = _f[0], setFetchRoute = _f[1];\r\n    var _g = React.useContext(RoutesContext), selectedRoute = _g.selectedRoute, setRoutes = _g.setRoutes, setSelectedRoute = _g.setSelectedRoute;\r\n    var _h = React.useContext(InputTokenAmountContext), inputTokenAmount = _h.inputTokenAmount, outputTokenList = _h.outputTokenList;\r\n    var sortType = React.useContext(SortTypeContext).sortType;\r\n    var isMount = useIsMount();\r\n    var tokenPrice = reactQuery.useQuery([\"tokenPrice2\", outputTokenDetails], function () { return getTokenPriceByTokenAddress({\r\n        tokenAddress: outputTokenDetails.address,\r\n        chainId: outputChainId.toString()\r\n    }); }, {\r\n        enabled: !!(outputTokenDetails.address)\r\n    });\r\n    quoteList = reactQuery.useQuery([\"quoteList\", inputTokenDetails.address, outputTokenDetails.address, inputTokenAmount, sortType], function () {\r\n        setFetchRoute(false);\r\n        return getQuote({\r\n            fromChainId: inputChainId.toString(),\r\n            fromTokenAddress: inputTokenDetails.address,\r\n            toChainId: outputChainId.toString(),\r\n            toTokenAddress: outputTokenDetails.address,\r\n            fromAmount: (parseFloat(inputTokenAmount) * (Math.pow(10, inputTokenDetails.decimals))).toLocaleString().split(',').join(''),\r\n            userAddress: account,\r\n            uniqueRoutesPerBridge: true,\r\n            sort: sortType,\r\n            singleTxOnly: true\r\n        });\r\n    }, {\r\n        enabled: !!(account && account != \"\" && inputTokenDetails.address && outputTokenDetails.address && isValidInput.test(inputTokenAmount) && fetchRoute === true && inputTokenAmount != \"\"),\r\n        cacheTime: 0\r\n    });\r\n    React.useEffect(function () {\r\n        var _a, _b;\r\n        if (isMount)\r\n            return;\r\n        if (quoteList.isLoading) {\r\n            setRouteLoading(true);\r\n        }\r\n        if (quoteList.isSuccess) {\r\n            var response = (_b = (_a = quoteList.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n            if (response === null || response === void 0 ? void 0 : response.routes.length) {\r\n                if (sortType === \"output\")\r\n                    setSelectedRoute(response === null || response === void 0 ? void 0 : response.routes[0]);\r\n                else\r\n                    setSelectedRoute(response === null || response === void 0 ? void 0 : response.routes[(response === null || response === void 0 ? void 0 : response.routes.length) - 1]);\r\n                setRoutes(response === null || response === void 0 ? void 0 : response.routes);\r\n            }\r\n            else {\r\n                setWarningMsg('No bridges support this trade. Try bigger amount.');\r\n                setSelectedRoute({});\r\n                setRoutes([]);\r\n                setInterval(function () {\r\n                    setWarningMsg('');\r\n                }, 5000);\r\n            }\r\n            setRouteLoading(false);\r\n        }\r\n    }, [quoteList.isLoading, inputTokenDetails.address, outputTokenDetails.address, inputTokenAmount, sortType]);\r\n    var debouncedFetchRouteCall = React.useCallback(lodash_debounce(function () {\r\n        setFetchRoute(true);\r\n    }, DEBOUNCE_TIMEOUT), []);\r\n    // debounce to reduce API calls while typing\r\n    React.useEffect(function () {\r\n        if (isMount)\r\n            return;\r\n        if (!isValidInput.test(inputTokenAmount) || inputTokenAmount == \"\") {\r\n            return;\r\n        }\r\n        debouncedFetchRouteCall();\r\n    }, [inputTokenAmount, inputTokenDetails.address, outputTokenDetails.address, sortType]);\r\n    if (tokenPrice.isSuccess) {\r\n        price = (_b = (_a = tokenPrice.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result.tokenPrice;\r\n    }\r\n    else if (tokenPrice.isError) {\r\n        price = 0;\r\n    }\r\n    return (React__default[\"default\"].createElement(\"div\", { id: \"output-token-select\", className: \"flex flex-col relative bg-bgColorSecondary rounded-lg px-3 py-2 border-2 border-bgColorSecondary\" },\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary text-xs mr-2\" }, \"Receive\"),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"grow text-textColorSecondary text-xs text-right font-medium\" }, price && Object.keys(selectedRoute).length !== 0 && inputTokenAmount != \"\" && !quoteList.isLoading &&\r\n                React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                    React__default[\"default\"].createElement(\"input\", { disabled: true, className: \"text-xs font-medium bg-transparent w-full text-right border-none outline-none\", value: \"$ \".concat(((price * parseInt(selectedRoute.toAmount)) / (Math.pow(10, outputTokenDetails.decimals))).toLocaleString()) })))),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\" },\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row text-textColorPrimary text-lg font-medium hover:cursor-pointer hover:text-blue-500\", onClick: function () { return setHideOutputTokenDropdown(!hideOutputTokenDropdown); } },\r\n                (outputTokenDetails.address === \"\") &&\r\n                    React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"mr-2\" },\r\n                            React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-5 w-5 text-textColorPrimary\" }),\r\n                            \" Loading...\"),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"self-center\" },\r\n                            React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-90 mr-1\", style: { width: 6, height: 10 } }))),\r\n                outputTokenDetails.address != \"\" &&\r\n                    React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                        React__default[\"default\"].createElement(\"img\", { src: outputTokenDetails.icon, className: \"w-4 h-4 rounded-full mr-1 self-center\" }),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"mr-2\" }, outputTokenDetails.symbol),\r\n                        React__default[\"default\"].createElement(\"div\", { className: \"self-center\" },\r\n                            React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-90 mr-1\", style: { width: 6, height: 10 } })))),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"grow text-textColorPrimary\" },\r\n                React__default[\"default\"].createElement(\"input\", { placeholder: \"0\", disabled: true, value: quoteList.isLoading\r\n                        ? 'Loading...'\r\n                        : (Object.keys(selectedRoute).length === 0 || inputTokenAmount === \"\" || !isValidInput.test(inputTokenAmount)\r\n                            ? \"0\"\r\n                            : (parseInt(selectedRoute.toAmount) / (Math.pow(10, outputTokenDetails.decimals))).toString()), className: \"text-base font-medium bg-transparent w-full text-right border-none outline-none\" }))),\r\n        !hideOutputTokenDropdown && outputTokenList &&\r\n            React__default[\"default\"].createElement(TokenSelectDropdown, { options: outputTokenList, chainId: outputChainId, setTokenDetail: function (outputTokenDetail) { return setOutputTokenDetails(outputTokenDetail); }, onHide: function (val) { return setHideOutputTokenDropdown(val); } })));\r\n};\n\nvar tokenBalance;\r\nvar TokensSelect = function () {\r\n    var account = React.useContext(useWeb3Context).account;\r\n    var inputChainId = React.useContext(ChainIdContext).inputChainId;\r\n    var inputTokenDetails = React.useContext(TokenDetailsContext).inputTokenDetails;\r\n    var _a = React.useContext(InputTokenBalanceContext), inputTokenBalance = _a.inputTokenBalance, setInputTokenBalance = _a.setInputTokenBalance;\r\n    tokenBalance = reactQuery.useQuery([\"tokenBalance\", inputChainId, inputTokenDetails], function () { return getTokenBalanceByTokenAddress({\r\n        tokenAddress: inputTokenDetails.address,\r\n        chainId: inputChainId.toString(),\r\n        userAddress: account\r\n    }); }, {\r\n        enabled: !!(account && account != \"\" && inputTokenDetails.address)\r\n    });\r\n    React.useEffect(function () {\r\n        var _a, _b, _c, _d;\r\n        if (tokenBalance.isSuccess) {\r\n            var balance = (_b = (_a = tokenBalance.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result.balance;\r\n            var decimals = (_d = (_c = tokenBalance.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.result.decimals;\r\n            var inputBalance = (balance / (Math.pow(10, decimals))).toFixed(4).toString();\r\n            setInputTokenBalance(inputBalance);\r\n        }\r\n    }, [tokenBalance.isLoading, inputChainId, inputTokenDetails]);\r\n    return (React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n        React__default[\"default\"].createElement(InputTokenSelect, null),\r\n        account &&\r\n            React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                React__default[\"default\"].createElement(\"div\", { className: \"mt-1\" },\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary text-sm\" },\r\n                        \"Balance: \",\r\n                        tokenBalance.isLoading ? React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin ml-1 mr-1 h-5 w-5 text-textColorPrimary text-xs\" }) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, inputTokenBalance),\r\n                        \" \",\r\n                        inputTokenDetails.symbol !== \"\" && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, inputTokenDetails.symbol)))),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n        React__default[\"default\"].createElement(OutputTokenSelect, null)));\r\n};\n\nvar MainComponent = function () {\r\n    var selectedRoute = React.useContext(RoutesContext).selectedRoute;\r\n    var bridgesByName = React.useContext(BridgesContext).bridgesByName;\r\n    var inputChainId = React.useContext(ChainIdContext).inputChainId;\r\n    var chainsByChainId = React.useContext(ChainsContext).chainsByChainId;\r\n    var setTabIndex = React.useContext(TabIndexContext).setTabIndex;\r\n    var _a = React.useContext(useWeb3Context), account = _a.account, chainId = _a.chainId;\r\n    var inputTokenAmount = React.useContext(InputTokenAmountContext).inputTokenAmount;\r\n    var _b = React.useState(\"\"), bridgeFee = _b[0], setBridgeFee = _b[1];\r\n    var _c = React.useState(false), routeLoading = _c[0], setRouteLoading = _c[1];\r\n    var _d = React.useState(''), warningMsg = _d[0], setWarningMsg = _d[1];\r\n    var _e = React.useState(\"\"), inputTokenBalance = _e[0], setInputTokenBalance = _e[1];\r\n    var isNotValid = Object.keys(selectedRoute).length === 0 || inputTokenAmount === \"\" || !isValidInput.test(inputTokenAmount);\r\n    React.useEffect(function () {\r\n        if (Object.keys(selectedRoute).length === 0)\r\n            return;\r\n        var userBridgeTx = {};\r\n        selectedRoute.userTxs.map(function (userTx) {\r\n            if (userTx.userTxType === \"fund-movr\") {\r\n                userBridgeTx = userTx;\r\n            }\r\n        });\r\n        var bridgeStep = {};\r\n        userBridgeTx.steps.map(function (step) {\r\n            if (step.type === \"bridge\") {\r\n                bridgeStep = step;\r\n            }\r\n        });\r\n        var fees = \"\";\r\n        fees = (parseInt(bridgeStep.protocolFees.amount) / Math.pow(10, (bridgeStep.protocolFees.asset.decimals))).toFixed(4).toString();\r\n        fees += \" \" + bridgeStep.protocolFees.asset.symbol;\r\n        fees += \" ($\" + (bridgeStep.protocolFees.feesInUsd).toString() + \")\";\r\n        setBridgeFee(fees);\r\n    }, [selectedRoute]);\r\n    return (React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-col\" },\r\n            React__default[\"default\"].createElement(BridgeTypeSort, null),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-5\" }),\r\n            React__default[\"default\"].createElement(ChainsSelect, null),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            React__default[\"default\"].createElement(RouteLoadingContext.Provider, { value: { routeLoading: routeLoading, setRouteLoading: setRouteLoading } },\r\n                React__default[\"default\"].createElement(WarningMsgContext.Provider, { value: { warningMsg: warningMsg, setWarningMsg: setWarningMsg } },\r\n                    React__default[\"default\"].createElement(InputTokenBalanceContext.Provider, { value: { inputTokenBalance: inputTokenBalance, setInputTokenBalance: setInputTokenBalance } },\r\n                        React__default[\"default\"].createElement(TokensSelect, null)))),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"flex flex-col text-textColorPrimary text-sm font-normal\" },\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-between\" },\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Bridge\"),\r\n                    isNotValid\r\n                        ?\r\n                            React__default[\"default\"].createElement(\"div\", null, \"\\u2014\")\r\n                        :\r\n                            routeLoading\r\n                                ?\r\n                                    React__default[\"default\"].createElement(SvgLoading, { className: \"inline animate-spin -ml-1 mr-2 h-5 w-5 text-textColorPrimary\" })\r\n                                :\r\n                                    React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\" },\r\n                                        React__default[\"default\"].createElement(\"img\", { src: bridgesByName[selectedRoute.usedBridgeNames[0]].icon, className: \"w-5 h-5 rounded-full mr-1 self-center\" }),\r\n                                        React__default[\"default\"].createElement(\"button\", { className: \"text-blue-500 capitalize\", onClick: function () { return setTabIndex(1); } }, bridgesByName ? bridgesByName[selectedRoute.usedBridgeNames[0]].displayName : selectedRoute.usedBridgeNames[0]))),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"h-4\" }),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-between\" },\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Transfer Time\"),\r\n                    (isNotValid || routeLoading)\r\n                        ? React__default[\"default\"].createElement(\"div\", null, \"\\u2014\")\r\n                        : React__default[\"default\"].createElement(\"div\", null,\r\n                            \"~\",\r\n                            (selectedRoute.serviceTime / 60).toString(),\r\n                            \" min\")),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"h-4\" }),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-between\" },\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Bridge Fee\"),\r\n                    (isNotValid || routeLoading)\r\n                        ? React__default[\"default\"].createElement(\"div\", null, \"\\u2014\")\r\n                        : React__default[\"default\"].createElement(\"div\", null, bridgeFee)),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"h-4\" }),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row justify-between\" },\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Gas Fee\"),\r\n                    (isNotValid || routeLoading)\r\n                        ? React__default[\"default\"].createElement(\"div\", null, \"\\u2014\")\r\n                        : React__default[\"default\"].createElement(\"div\", null,\r\n                            \"~ $\",\r\n                            (selectedRoute.totalGasFeesInUsd).toFixed(4).toString()))),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            warningMsg !== '' && React__default[\"default\"].createElement(\"div\", { className: \"mb-4 text-base font-medium text-orange-500\" }, warningMsg),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n            React__default[\"default\"].createElement(\"div\", null,\r\n                React__default[\"default\"].createElement(PrimaryButton, { buttonText: \"\\n              \".concat(!account ? 'Connect Wallet' :\r\n                        (parseFloat(inputTokenBalance) < parseFloat(inputTokenAmount)) ? 'Not enough balance' :\r\n                            (Object.keys(selectedRoute).length === 0 || routeLoading) ? 'Select Route' :\r\n                                chainId !== inputChainId ? \"Switch to \".concat(chainsByChainId[inputChainId][\"name\"], \" Network\") :\r\n                                    'Proceed', \"\\n            \"), bgColor: getComputedStyle(document.documentElement)\r\n                        .getPropertyValue('--btnColorPrimary'), disabled: !account ||\r\n                        routeLoading ||\r\n                        (parseFloat(inputTokenBalance) < parseFloat(inputTokenAmount)) ||\r\n                        Object.keys(selectedRoute).length === 0 ||\r\n                        chainId !== inputChainId, onClick: function () { return setTabIndex(2); } })))));\r\n};\n\nvar RouteInfoButton = function (_a) {\r\n    var route = _a.route, index = _a.index, selectedIndex = _a.selectedIndex, setSelectedIndex = _a.setSelectedIndex;\r\n    var bridgesByName = React.useContext(BridgesContext).bridgesByName;\r\n    var widgetWidth = React.useContext(WidgetWidthContext).widgetWidth;\r\n    var outputTokenDetails = React.useContext(TokenDetailsContext).outputTokenDetails;\r\n    var _b = React.useState(\"\"), bridgeFee = _b[0], setBridgeFee = _b[1];\r\n    React.useEffect(function () {\r\n        if (Object.keys(route).length === 0)\r\n            return;\r\n        var userBridgeTx = {};\r\n        route.userTxs.map(function (userTx) {\r\n            if (userTx.userTxType === \"fund-movr\") {\r\n                userBridgeTx = userTx;\r\n            }\r\n        });\r\n        var bridgeStep = {};\r\n        userBridgeTx.steps.map(function (step) {\r\n            if (step.type === \"bridge\") {\r\n                bridgeStep = step;\r\n            }\r\n        });\r\n        var fees = \"\";\r\n        fees += \"$\" + (bridgeStep.protocolFees.feesInUsd).toString();\r\n        setBridgeFee(fees);\r\n    }, [route]);\r\n    return (React__default[\"default\"].createElement(\"button\", { className: \"\".concat(widgetWidth > 500 ? 'grid grid-cols-5 gap-4' : 'flex flex-col', \" px-3 py-3 rounded-lg hover:cursor-pointer w-full text-left text-sm text-textColorPrimary font-normal border \").concat(index == selectedIndex ? \"border-blue-500\" : \"border-bgColorSecondary\"), onClick: function () { return setSelectedIndex(index); } }, widgetWidth > 500\r\n        ?\r\n            React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                React__default[\"default\"].createElement(\"img\", { src: bridgesByName[route.usedBridgeNames[0]].icon, className: \"w-6 h-6 rounded-full self-center\", title: bridgesByName[route.usedBridgeNames[0]].displayName, alt: bridgesByName[route.usedBridgeNames[0]].displayName }),\r\n                React__default[\"default\"].createElement(\"div\", null, (parseInt(route.toAmount) / (Math.pow(10, outputTokenDetails.decimals))).toFixed(4).toString()),\r\n                React__default[\"default\"].createElement(\"div\", null,\r\n                    \"~\",\r\n                    bridgeFee),\r\n                React__default[\"default\"].createElement(\"div\", null,\r\n                    \"$\",\r\n                    (route.totalGasFeesInUsd).toPrecision(3).toString()),\r\n                React__default[\"default\"].createElement(\"div\", null,\r\n                    (route.serviceTime / 60).toString(),\r\n                    \" min\"))\r\n        :\r\n            React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row py-0.5 w-full text-xs mb-1 items-center\" },\r\n                    React__default[\"default\"].createElement(\"img\", { src: bridgesByName[route.usedBridgeNames[0]].icon, className: \"w-6 h-6 rounded-full self-center\", title: bridgesByName[route.usedBridgeNames[0]].displayName, alt: bridgesByName[route.usedBridgeNames[0]].displayName }),\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"ml-2 font-medium text-base\" }, bridgesByName[route.usedBridgeNames[0]].displayName),\r\n                    React__default[\"default\"].createElement(\"div\", null)),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row py-0.5 w-full text-xs\" },\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary font-normal\" },\r\n                        \"Receive (\",\r\n                        outputTokenDetails.symbol,\r\n                        \")\"),\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"grow text-right\" }, (parseInt(route.toAmount) / (Math.pow(10, outputTokenDetails.decimals))).toFixed(4).toString())),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row py-0.5 w-full text-xs\" },\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary font-normal\" }, \"Bridge Fee\"),\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"grow text-right\" },\r\n                        \"~\",\r\n                        bridgeFee)),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row py-0.5 w-full text-xs\" },\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary font-normal\" }, \"Gas Fee\"),\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"grow text-right\" },\r\n                        \"$\",\r\n                        (route.totalGasFeesInUsd).toFixed(4).toString())),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row py-0.5 w-full text-xs\" },\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"text-textColorSecondary font-normal\" }, \"Time\"),\r\n                    React__default[\"default\"].createElement(\"div\", { className: \"grow text-right\" },\r\n                        (route.serviceTime / 60).toString(),\r\n                        \" min\")))));\r\n};\n\nvar RouteSelector = function () {\r\n    var setTabIndex = React.useContext(TabIndexContext).setTabIndex;\r\n    var widgetWidth = React.useContext(WidgetWidthContext).widgetWidth;\r\n    var outputTokenDetails = React.useContext(TokenDetailsContext).outputTokenDetails;\r\n    var _a = React.useContext(RoutesContext), routes = _a.routes, selectedRoute = _a.selectedRoute, setSelectedRoute = _a.setSelectedRoute;\r\n    var _b = React.useState(0), selectedIndex = _b[0], setSelectedIndex = _b[1];\r\n    React.useEffect(function () {\r\n        routes.map(function (route, index) {\r\n            if (route === selectedRoute) {\r\n                setSelectedIndex(index);\r\n                return;\r\n            }\r\n        });\r\n    }, [routes]);\r\n    var saveSelectedRoute = function () {\r\n        setSelectedRoute(routes[selectedIndex]);\r\n        setTabIndex(0);\r\n    };\r\n    return (React__default[\"default\"].createElement(\"div\", null,\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-row\", id: \"bridge-header\" },\r\n            React__default[\"default\"].createElement(\"button\", { className: \"w-6 h-6 rounded-md hover:bg-bgColorSecondary hover:cursor-pointer mr-2 text-textColorPrimary flex justify-center items-center\", onClick: function () { return setTabIndex(0); } },\r\n                React__default[\"default\"].createElement(SvgDownArrow, { className: \"rotate-180\", style: { width: 9, height: 14 } })),\r\n            React__default[\"default\"].createElement(\"div\", { className: \"grow text-center text-xl text-textColorPrimary font-medium\" }, \"Bridge\")),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-4\" }),\r\n        widgetWidth > 500 &&\r\n            React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n                React__default[\"default\"].createElement(\"div\", { className: \"grid grid-cols-5 gap-4 px-4 text-xs text-textColorSecondary font-normal\" },\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Bridge\"),\r\n                    React__default[\"default\"].createElement(\"div\", null,\r\n                        \"Receive (\",\r\n                        outputTokenDetails.symbol,\r\n                        \")\"),\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Bridge Fee\"),\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Gas Fee\"),\r\n                    React__default[\"default\"].createElement(\"div\", null, \"Time\")),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"h-3\" })),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"flex flex-col\" }, routes.map(function (route, index) {\r\n            return (React__default[\"default\"].createElement(\"div\", { key: index },\r\n                React__default[\"default\"].createElement(RouteInfoButton, { route: route, selectedIndex: selectedIndex, setSelectedIndex: setSelectedIndex, index: index }),\r\n                React__default[\"default\"].createElement(\"div\", { className: \"h-2\" })));\r\n        })),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-4\" }),\r\n        React__default[\"default\"].createElement(\"div\", { className: \"h-3\" }),\r\n        React__default[\"default\"].createElement(\"div\", null,\r\n            React__default[\"default\"].createElement(PrimaryButton, { buttonText: \"Save for this transfer\", bgColor: getComputedStyle(document.documentElement)\r\n                    .getPropertyValue('--btnColorSecondary'), onClick: saveSelectedRoute }))));\r\n};\n\nvar inputTokenList;\r\nvar outputTokenList;\r\nvar WidgetWrapper = function () {\r\n    var widgetProps = React.useContext(PropsContext);\r\n    var ref = React.useRef(null);\r\n    var bridgesResponse = reactQuery.useQuery([\"bridges\"], getSupportedBridges);\r\n    var bridgesByName = getBridgeDataByBridgeName(bridgesResponse)[0];\r\n    var chainsResponse = reactQuery.useQuery([\"chains\"], getSupportedChains);\r\n    var _a = getChainDataByChainId(chainsResponse), chainsByChainId = _a[0], fromChainsList = _a[1], toChainsList = _a[2];\r\n    var _b = React.useState(0), tabIndex = _b[0], setTabIndex = _b[1];\r\n    var _c = React.useState(widgetProps.defaultInputChainId), inputChainId = _c[0], setInputChainId = _c[1];\r\n    var _d = React.useState(widgetProps.defaultOutputChainId), outputChainId = _d[0], setOutputChainId = _d[1];\r\n    var _e = React.useState({ address: \"\", symbol: \"\", icon: \"\", decimals: 0 }), inputTokenDetails = _e[0], setInputTokenDetails = _e[1];\r\n    var _f = React.useState({ address: \"\", symbol: \"\", icon: \"\", decimals: 0 }), outputTokenDetails = _f[0], setOutputTokenDetails = _f[1];\r\n    var _g = React.useState(\"\"), inputTokenAmount = _g[0], setInputTokenAmount = _g[1];\r\n    var _h = React.useState([]), routes = _h[0], setRoutes = _h[1];\r\n    var _j = React.useState({}), selectedRoute = _j[0], setSelectedRoute = _j[1];\r\n    var _k = React.useState(\"output\"), sortType = _k[0], setSortType = _k[1];\r\n    var account = React.useContext(useWeb3Context).account;\r\n    var widgetWidth = useBoxWidth(ref);\r\n    var fromTokenList = reactQuery.useQuery([\"fromTokenList\", inputChainId], function () { return getFromTokenList({\r\n        fromChainId: inputChainId.toString(),\r\n        toChainId: outputChainId.toString(),\r\n        isShortList: true\r\n    }); }, {\r\n        enabled: !!(inputChainId)\r\n    });\r\n    var toTokenList = reactQuery.useQuery([\"toTokenList\", outputChainId], function () { return getToTokenList({\r\n        fromChainId: inputChainId.toString(),\r\n        toChainId: outputChainId.toString(),\r\n        isShortList: true\r\n    }); }, {\r\n        enabled: !!(outputChainId)\r\n    });\r\n    React.useEffect(function () {\r\n        var _a, _b;\r\n        if (fromTokenList.isSuccess) {\r\n            inputTokenList = (_b = (_a = fromTokenList.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n            var _c = inputTokenList.filter(function (token) { return (token.symbol === 'USDC'); })[0], address = _c.address, icon = _c.icon, symbol = _c.symbol, decimals = _c.decimals;\r\n            setInputTokenDetails({ address: address, icon: icon, symbol: symbol, decimals: decimals });\r\n            inputTokenList = updateTokenList(inputChainId, inputTokenList, account);\r\n        }\r\n    }, [fromTokenList.isSuccess, inputChainId]);\r\n    React.useEffect(function () {\r\n        var _a, _b;\r\n        if (toTokenList.isSuccess) {\r\n            outputTokenList = (_b = (_a = toTokenList.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.result;\r\n            var _c = outputTokenList.filter(function (token) { return (token.symbol === 'USDC'); })[0], address = _c.address, icon = _c.icon, symbol = _c.symbol, decimals = _c.decimals;\r\n            setOutputTokenDetails({ address: address, icon: icon, symbol: symbol, decimals: decimals });\r\n            outputTokenList = updateTokenList(outputChainId, outputTokenList, account);\r\n        }\r\n    }, [toTokenList.isSuccess, outputChainId]);\r\n    return (React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\r\n        React__default[\"default\"].createElement(TabIndexContext.Provider, { value: { tabIndex: tabIndex, setTabIndex: setTabIndex } },\r\n            React__default[\"default\"].createElement(BridgesContext.Provider, { value: { bridgesByName: bridgesByName } },\r\n                React__default[\"default\"].createElement(ChainsContext.Provider, { value: { chainsByChainId: chainsByChainId, fromChainsList: fromChainsList, toChainsList: toChainsList } },\r\n                    React__default[\"default\"].createElement(ChainIdContext.Provider, { value: { inputChainId: inputChainId, setInputChainId: setInputChainId, outputChainId: outputChainId, setOutputChainId: setOutputChainId } },\r\n                        React__default[\"default\"].createElement(InputTokenAmountContext.Provider, { value: { inputTokenAmount: inputTokenAmount, setInputTokenAmount: setInputTokenAmount, inputTokenList: inputTokenList, outputTokenList: outputTokenList } },\r\n                            React__default[\"default\"].createElement(TokenDetailsContext.Provider, { value: { inputTokenDetails: inputTokenDetails, setInputTokenDetails: setInputTokenDetails, outputTokenDetails: outputTokenDetails, setOutputTokenDetails: setOutputTokenDetails } },\r\n                                React__default[\"default\"].createElement(RoutesContext.Provider, { value: { selectedRoute: selectedRoute, routes: routes, setRoutes: setRoutes, setSelectedRoute: setSelectedRoute } },\r\n                                    React__default[\"default\"].createElement(SortTypeContext.Provider, { value: { sortType: sortType, setSortType: setSortType } },\r\n                                        React__default[\"default\"].createElement(WidgetWidthContext.Provider, { value: { widgetWidth: widgetWidth } },\r\n                                            React__default[\"default\"].createElement(\"div\", { style: { width: '100%' }, className: \"rounded-xl bg-bgColorPrimary p-6\", ref: ref },\r\n                                                tabIndex === 0 && React__default[\"default\"].createElement(MainComponent, null),\r\n                                                tabIndex === 1 && React__default[\"default\"].createElement(RouteSelector, null),\r\n                                                tabIndex === 2 && React__default[\"default\"].createElement(BridgeTokens, null)))))))))))));\r\n};\n\nvar queryClient = new reactQuery.QueryClient();\r\nvar Widget = function (_a) {\r\n    var apiKey = _a.apiKey, provider = _a.provider, theme = _a.theme, defaultInputChainId = _a.defaultInputChainId, defaultOutputChainId = _a.defaultOutputChainId;\r\n    var _b = React.useState(\"\"), account = _b[0], setAccount = _b[1];\r\n    var _c = React.useState({}), chainId = _c[0], setChainId = _c[1];\r\n    var _d = React.useState({}), signer = _d[0], setSigner = _d[1];\r\n    var _e = React.useState({}), w3Provider = _e[0], setW3Provider = _e[1];\r\n    React.useEffect(function () {\r\n        var fetchDetails = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n            var _a, account, chainId, signer, w3Provider;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0: return [4 /*yield*/, useWeb3(provider)];\r\n                    case 1:\r\n                        _a = _b.sent(), account = _a.account, chainId = _a.chainId, signer = _a.signer, w3Provider = _a.w3Provider;\r\n                        setAccount(account);\r\n                        setChainId(chainId);\r\n                        setSigner(signer);\r\n                        setW3Provider(w3Provider);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        }); };\r\n        fetchDetails();\r\n    }, [provider]);\r\n    sessionStorage.setItem('apiKey', apiKey);\r\n    updateCSS(theme);\r\n    return (React__default[\"default\"].createElement(reactQuery.QueryClientProvider, { client: queryClient },\r\n        React__default[\"default\"].createElement(PropsContext.Provider, { value: {\r\n                defaultInputChainId: defaultInputChainId,\r\n                defaultOutputChainId: defaultOutputChainId\r\n            } },\r\n            React__default[\"default\"].createElement(useWeb3Context.Provider, { value: { account: account, chainId: chainId, signer: signer, w3Provider: w3Provider } },\r\n                React__default[\"default\"].createElement(WidgetWrapper, null)))));\r\n};\n\nvar darkTheme = {\r\n    bgColorPrimary: \"#16161A\",\r\n    bgColorSecondary: \"#2D2C33\",\r\n    bgColorDropdown: \"#1C1D20\",\r\n    textColorPrimary: \"#fff\",\r\n    textColorSecondary: \"#9da0a6\",\r\n    btnColorPrimary: \"#e4147c\",\r\n    btnColorSecondary: \"#296CF4\",\r\n};\r\nvar lightTheme = {\r\n    bgColorPrimary: \"#fff\",\r\n    bgColorSecondary: \"#F1F1F2\",\r\n    bgColorDropdown: \"#c1c1c1\",\r\n    textColorPrimary: \"#000\",\r\n    textColorSecondary: \"#93929B\",\r\n    btnColorPrimary: \"#e4147c\",\r\n    btnColorSecondary: \"#296CF4\",\r\n};\n\nvar BridgeWidget = function (_a) {\r\n    var apiKey = _a.apiKey, provider = _a.provider, theme = _a.theme, defaultInputChainId = _a.defaultInputChainId, defaultOutputChainId = _a.defaultOutputChainId;\r\n    if (defaultOutputChainId === defaultInputChainId) {\r\n        console.warn(\"Input ChainID and Output ChainID must be different\");\r\n        if (defaultOutputChainId === 1) {\r\n            defaultOutputChainId = 137;\r\n        }\r\n        else {\r\n            defaultOutputChainId = 1;\r\n        }\r\n    }\r\n    var themeObj = __assign(__assign({}, darkTheme), theme);\r\n    return (React__default[\"default\"].createElement(Widget, { apiKey: apiKey, theme: themeObj, provider: provider, defaultInputChainId: defaultInputChainId, defaultOutputChainId: defaultOutputChainId }));\r\n};\r\nvar defaultProps = {\r\n    apiKey: \"\",\r\n    provider: {},\r\n    theme: darkTheme,\r\n    width: 400,\r\n    defaultInputChainId: 1,\r\n    defaultOutputChainId: 137\r\n};\r\nBridgeWidget.defaultProps = defaultProps;\n\nexports.BridgeWidget = BridgeWidget;\nexports.darkTheme = darkTheme;\nexports.lightTheme = lightTheme;\n\n"]}