diff --git a/.github/workflows/e2e-tests-dapp.yml b/.github/workflows/e2e-tests-dapp.yml new file mode 100644 index 0000000000..38cdb29c2a --- /dev/null +++ b/.github/workflows/e2e-tests-dapp.yml @@ -0,0 +1,162 @@ +name: E2E DApp tests + +on: + workflow_dispatch: + pull_request: + types: [opened, ready_for_review] + pull_request_review: + types: [submitted] + +jobs: + General: + if: github.event.review && (github.event.review.state == 'approved' || contains(github.event.review.body, '/check') || contains(github.event.review.body, '/dapp-general')) + runs-on: macos-14 + strategy: + matrix: + browser: ["chrome"] + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: distutils hack + run: brew install python-setuptools + + - name: Forcefully update the Chrome browser + if: matrix.browser=='chrome' + run: brew update && brew upgrade --cask google-chrome + + - name: Forcefully install Firefox for Developers browser + if: matrix.browser=='firefox' + run: | + brew update + brew tap homebrew/cask-versions && brew install --cask firefox-developer-edition + echo "FIREFOX_BIN=/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox-bin" >> $GITHUB_ENV + + - name: Read .nvmrc + id: nvm + run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: "${{ steps.nvm.outputs.NVMRC }}" + + - name: + Cache extension node modules + # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows + uses: actions/cache@v4 + env: + cache-name: cache-yoroi-extension-node-modules + with: + # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. + # https://github.com/actions/cache/blob/main/examples.md#node---npm + # But we put node version into the cache key and cache node_modules. + path: packages/yoroi-extension/node_modules + key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - name: npm install + run: | + . install-all.sh + + - name: Build the test mainnet version + working-directory: ./packages/yoroi-extension + run: npm run test:build:mainnet + + - name: Run tests + working-directory: ./packages/e2e-tests + env: + FIRST_SMOKE_TEST_WALLET: ${{ secrets.FIRST_SMOKE_TEST_WALLET }} + SECOND_STATIC_TEST_WALLET: ${{ secrets.SECOND_STATIC_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET: ${{ secrets.SECOND_SMOKE_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET_FF: ${{ secrets.SECOND_SMOKE_TEST_WALLET_FF }} + run: npm run test:${{ matrix.browser }}:dapp + + - name: Archive tests screenshots and logs + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: testRunsData_E2E_tests_${{ matrix.browser }} + path: | + ./packages/e2e-tests/mochawesome-report + ./packages/e2e-tests/testRunsData_${{ matrix.browser }} + + Failing: + if: github.event.review && contains(github.event.review.body, '/dapp-failing') + runs-on: macos-14 + strategy: + matrix: + browser: ['chrome'] + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: distutils hack + run: brew install python-setuptools + + - name: Forcefully update the Chrome browser + if: matrix.browser=='chrome' + run: brew update && brew upgrade --cask google-chrome + + - name: Forcefully install Firefox for Developers browser + if: matrix.browser=='firefox' + run: | + brew update + brew tap homebrew/cask-versions && brew install --cask firefox-developer-edition + echo "FIREFOX_BIN=/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox-bin" >> $GITHUB_ENV + + - name: Read .nvmrc + id: nvm + run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: '${{ steps.nvm.outputs.NVMRC }}' + + - name: Cache extension node modules + # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows + uses: actions/cache@v4 + env: + cache-name: cache-yoroi-extension-node-modules + with: + # https://github.com/actions/cache/blob/main/examples.md#node---npm + # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. + # But we put node version into the cache key and cache node_modules. + path: packages/yoroi-extension/node_modules + key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - name: npm install + run: | + . install-all.sh + + - name: Build the test mainnet version + working-directory: ./packages/yoroi-extension + run: npm run test:build:mainnet + + - name: Run tests + working-directory: ./packages/e2e-tests + env: + FIRST_SMOKE_TEST_WALLET: ${{ secrets.FIRST_SMOKE_TEST_WALLET }} + SECOND_STATIC_TEST_WALLET: ${{ secrets.SECOND_STATIC_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET: ${{ secrets.SECOND_SMOKE_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET_FF: ${{ secrets.SECOND_SMOKE_TEST_WALLET_FF }} + run: npm run test:${{ matrix.browser }}:dapp:bl + + - name: Archive tests screenshots and logs + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: testRunsData_E2E_tests_${{ matrix.browser }} + path: | + ./packages/e2e-tests/mochawesome-report + ./packages/e2e-tests/testRunsData_${{ matrix.browser }} diff --git a/.github/workflows/e2e-tests-ext.yml b/.github/workflows/e2e-tests-ext.yml new file mode 100644 index 0000000000..ac798239b2 --- /dev/null +++ b/.github/workflows/e2e-tests-ext.yml @@ -0,0 +1,161 @@ +name: E2E Ext tests + +on: + workflow_dispatch: + pull_request: + types: [opened, ready_for_review] + pull_request_review: + types: [submitted] + +jobs: + General: + if: github.event.review && (github.event.review.state == 'approved' || contains(github.event.review.body, '/check') || contains(github.event.review.body, '/ext-general')) + runs-on: macos-14 + strategy: + matrix: + browser: ["chrome"] + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: distutils hack + run: brew install python-setuptools + + - name: Forcefully update the Chrome browser + if: matrix.browser=='chrome' + run: brew update && brew upgrade --cask google-chrome + + - name: Forcefully install Firefox for Developers browser + if: matrix.browser=='firefox' + run: | + brew update + brew tap homebrew/cask-versions && brew install --cask firefox-developer-edition + echo "FIREFOX_BIN=/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox-bin" >> $GITHUB_ENV + + - name: Read .nvmrc + id: nvm + run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: "${{ steps.nvm.outputs.NVMRC }}" + + - name: Cache extension node modules + # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows + uses: actions/cache@v4 + env: + cache-name: cache-yoroi-extension-node-modules + with: + # https://github.com/actions/cache/blob/main/examples.md#node---npm + # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. + # But we put node version into the cache key and cache node_modules. + path: packages/yoroi-extension/node_modules + key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - name: npm install + run: | + . install-all.sh + + - name: Build the test mainnet version + working-directory: ./packages/yoroi-extension + run: npm run test:build:mainnet + + - name: Run tests + working-directory: ./packages/e2e-tests + env: + FIRST_SMOKE_TEST_WALLET: ${{ secrets.FIRST_SMOKE_TEST_WALLET }} + SECOND_STATIC_TEST_WALLET: ${{ secrets.SECOND_STATIC_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET: ${{ secrets.SECOND_SMOKE_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET_FF: ${{ secrets.SECOND_SMOKE_TEST_WALLET_FF }} + run: npm run test:${{ matrix.browser }} + + - name: Archive tests screenshots and logs + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: testRunsData_E2E_tests_${{ matrix.browser }} + path: | + ./packages/e2e-tests/mochawesome-report + ./packages/e2e-tests/testRunsData_${{ matrix.browser }} + + Failing: + if: github.event.review && contains(github.event.review.body, '/ext-failing') + runs-on: macos-14 + strategy: + matrix: + browser: ["chrome"] + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: distutils hack + run: brew install python-setuptools + + - name: Forcefully update the Chrome browser + if: matrix.browser=='chrome' + run: brew update && brew upgrade --cask google-chrome + + - name: Forcefully install Firefox for Developers browser + if: matrix.browser=='firefox' + run: | + brew update + brew tap homebrew/cask-versions && brew install --cask firefox-developer-edition + echo "FIREFOX_BIN=/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox-bin" >> $GITHUB_ENV + + - name: Read .nvmrc + id: nvm + run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT + + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: "${{ steps.nvm.outputs.NVMRC }}" + + - name: Cache extension node modules + # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows + uses: actions/cache@v4 + env: + cache-name: cache-yoroi-extension-node-modules + with: + # https://github.com/actions/cache/blob/main/examples.md#node---npm + # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. + # But we put node version into the cache key and cache node_modules. + path: packages/yoroi-extension/node_modules + key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - name: npm install + run: | + . install-all.sh + + - name: Build the test mainnet version + working-directory: ./packages/yoroi-extension + run: npm run test:build:mainnet + + - name: Run tests + working-directory: ./packages/e2e-tests + env: + FIRST_SMOKE_TEST_WALLET: ${{ secrets.FIRST_SMOKE_TEST_WALLET }} + SECOND_STATIC_TEST_WALLET: ${{ secrets.SECOND_STATIC_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET: ${{ secrets.SECOND_SMOKE_TEST_WALLET }} + SECOND_SMOKE_TEST_WALLET_FF: ${{ secrets.SECOND_SMOKE_TEST_WALLET_FF }} + run: npm run test:${{ matrix.browser }}:bl + + - name: Archive tests screenshots and logs + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: testRunsData_E2E_tests_${{ matrix.browser }} + path: | + ./packages/e2e-tests/mochawesome-report + ./packages/e2e-tests/testRunsData_${{ matrix.browser }} diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml deleted file mode 100644 index ac00505cc7..0000000000 --- a/.github/workflows/jira.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Lint branch name and add jira task - -on: - push: - branches: - - develop - pull_request: - types: [opened, synchronize, reopened] - -jobs: - # A script to ensure that the PR branch name is named following the new naming - # conventions `//` and to make a comment with - # the Jira ticket associated with the open PR - # Script: https://github.com/AhmedIbrahim336/jira-ticket - jira: - runs-on: ubuntu-latest - steps: - - run: curl ${{ secrets.JIRA_TICKET_API }}${{ github.event.number }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b4f8c8c19b..22f2dddb1b 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -40,7 +40,6 @@ jobs: run: | npm i --legacy-peer-deps npm i --legacy-peer-deps --prefix packages/yoroi-extension - npm i --legacy-peer-deps --prefix packages/yoroi-connector - name: Build if: steps.check.outputs.changed == 'true' diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index 7828b7345a..5d35428a50 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -29,7 +29,6 @@ jobs: run: | npm i --legacy-peer-deps npm i --legacy-peer-deps --prefix packages/yoroi-extension - npm i --legacy-peer-deps --prefix packages/yoroi-connector - name: Build run: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c1947ad8e6..f8ed96e828 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,388 +46,3 @@ jobs: - name: tests run: | npm run test - - E2E_tests_dApp: - if: github.event.review && (github.event.review.state == 'approved' || contains(github.event.review.body, '/check') || contains(github.event.review.body, '/dapp-check')) - runs-on: macos-12 - strategy: - matrix: - browser: ['chrome', 'firefox'] - fail-fast: false - - steps: - - uses: actions/checkout@v3 - - - name: Forcefully update the Chrome browser - if: matrix.browser=='chrome' - run: brew update && brew upgrade --cask google-chrome - - - name: Forcefully install Firefox for Developers browser - if: matrix.browser=='firefox' - run: | - brew update - brew tap homebrew/cask-versions && brew install --cask firefox-developer-edition - echo "FIREFOX_DEV=/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox-bin" >> $GITHUB_ENV - - - name: Read .nvmrc - id: nvm - run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: '${{ steps.nvm.outputs.NVMRC }}' - - - name: Cache extension node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-extension-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-extension/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Cache connector node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-connector-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-connector/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-connector/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: npm install - run: | - . install-all.sh - - - name: Build the test version - working-directory: ./packages/yoroi-extension - run: npm run test:build - - - name: Run dapp connector tests - working-directory: ./packages/yoroi-extension - env: - MAILSAC_API_KEY: ${{ secrets.MAILSAC_API_KEY }} - run: npm run test:run:e2e:dApp:${{ matrix.browser }} - - - name: Archive tests screenshots and logs - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: testRunsData_E2E_tests_dApp_${{ matrix.browser }} - path: ./packages/yoroi-extension/testRunsData_${{ matrix.browser }} - - Trezor_Model_T_emulator: - if: github.event.review && (github.event.review.state == 'approved' || contains(github.event.review.body, '/check') || contains(github.event.review.body, '/trezor-check')) - runs-on: ubuntu-22.04 - strategy: - matrix: - browser: ['chrome', 'firefox'] - fail-fast: false - - steps: - - name: Forcefully update the Chrome browser - if: matrix.browser=='chrome' - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - - - name: Install Firefox Developer Edition - if: matrix.browser=='firefox' - run: | - wget -c "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=linux64&lang=en-US" -O - | sudo tar -xj -C /opt - sudo rm -rf /opt/firefoxdev - sudo mv /opt/firefox /opt/firefoxdev - echo "FIREFOX_DEV=/opt/firefoxdev/firefox-bin" >> $GITHUB_ENV - - - name: Clone the trezor-usr-env - run: | - cd .. - git clone https://github.com/trezor/trezor-user-env.git - - - name: Install nix-shell - run: | - sudo apt update - sudo apt -y install nix-bin - - - name: Download firmware - working-directory: ../trezor-user-env/src/binaries/firmware/bin/ - run: sudo ./download.sh - - - name: Download trezord-go - working-directory: ../trezor-user-env/src/binaries/trezord-go/bin/ - run: sudo ./download.sh - - - name: Copy the v2-master firmware to the root of the project - working-directory: ../trezor-user-env - run: cp -rf src/binaries/firmware/bin/trezor-emu-core-v2-master ./ - - - name: Copy the trezord-go-v2.0.32 to the root of the project - working-directory: ../trezor-user-env - run: cp -rf src/binaries/trezord-go/bin/trezord-go-v2.0.32 ./ - - - name: Create the logs folder in the root of the trezor-user-env - working-directory: ../trezor-user-env - run: mkdir logs - - - name: Run the trezor user environment - working-directory: ../trezor-user-env - run: sudo docker run -p 9001:9001 -p 9002:9002 -p 21326:21326 -p 127.0.0.1:21325:21326 -p 21324:21324 -v logs:/trezor-user-env/logs/screens -v trezor-emu-core-v2-master:/trezor-user-env/src/binaries/firmware/bin/user_downloaded -v trezord-go-v2.0.32:/trezor-user-env/src/binaries/trezord-go/bin -d emurgornd/trezor-user-env:latest - - - uses: actions/checkout@v3 - - - name: Read .nvmrc - id: nvm - run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: '${{ steps.nvm.outputs.NVMRC }}' - - - name: Cache extension node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-extension-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-extension/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Cache connector node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-connector-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-connector/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-connector/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: npm install - run: | - . install-all.sh - - - name: Build the test version - working-directory: ./packages/yoroi-extension - run: npm run test:build - - - name: Run tests - working-directory: ./packages/yoroi-extension - run: xvfb-run -a -e /dev/stdout -s "-screen 0 1920x1080x24" npm run test:run:e2e:trezor:${{ matrix.browser }} - - - name: Archive tests screenshots and logs - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: testRunsData_Trezor_Model_T_emulator_${{ matrix.browser }} - path: ./packages/yoroi-extension/testRunsData_${{ matrix.browser }} - - E2E_smoke_tests: - if: github.event.review && (contains(github.event.review.body, '/release-check')) - runs-on: ubuntu-22.04 - strategy: - matrix: - browser: ['chrome', 'firefox'] - fail-fast: false - - steps: - - uses: actions/checkout@v3 - - - name: Forcefully update the Chrome browser - if: matrix.browser=='chrome' - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - - - name: Install Firefox Developer Edition - if: matrix.browser=='firefox' - run: | - wget -c "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=linux64&lang=en-US" -O - | sudo tar -xj -C /opt - sudo rm -rf /opt/firefoxdev - sudo mv /opt/firefox /opt/firefoxdev - echo "FIREFOX_DEV=/opt/firefoxdev/firefox-bin" >> $GITHUB_ENV - - - name: Read .nvmrc - id: nvm - run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: '${{ steps.nvm.outputs.NVMRC }}' - - - name: Cache extension node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-extension-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-extension/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Cache connector node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-connector-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-connector/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-connector/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: npm install - run: | - . install-all.sh - - - name: Build the test mainnet version - working-directory: ./packages/yoroi-extension - run: npm run test:build:mainnet - - - name: Run smoke tests - working-directory: ./packages/yoroi-extension - env: - FIRST_SMOKE_TEST_WALLET: ${{ secrets.FIRST_SMOKE_TEST_WALLET }} - SECOND_SMOKE_TEST_WALLET: ${{ secrets.SECOND_SMOKE_TEST_WALLET }} - SECOND_SMOKE_TEST_WALLET_FF: ${{ secrets.SECOND_SMOKE_TEST_WALLET_FF }} - run: xvfb-run -a -e /dev/stdout -s "-screen 0 1920x1080x24" npm run test:run:e2e:smoke:${{ matrix.browser }} - - - name: Archive tests screenshots and logs - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: testRunsData_E2E_smoke_tests_${{ matrix.browser }} - path: ./packages/yoroi-extension/testRunsData_${{ matrix.browser }} - - E2E_regression_tests: - if: github.event.review && (github.event.review.state == 'approved' || contains(github.event.review.body, '/check') || contains(github.event.review.body, '/regression-check')) - runs-on: ubuntu-22.04 - strategy: - matrix: - browser: [ 'chrome', 'firefox' ] - fail-fast: false - - steps: - - name: Forcefully update the Chrome browser - if: matrix.browser=='chrome' - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - - - name: Install Firefox Developer Edition - if: matrix.browser=='firefox' - run: | - wget -c "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=linux64&lang=en-US" -O - | sudo tar -xj -C /opt - sudo rm -rf /opt/firefoxdev - sudo mv /opt/firefox /opt/firefoxdev - echo "FIREFOX_DEV=/opt/firefoxdev/firefox-bin" >> $GITHUB_ENV - - - uses: actions/checkout@v3 - - - name: Read .nvmrc - id: nvm - run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: '${{ steps.nvm.outputs.NVMRC }}' - - - name: Cache extension node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-extension-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-extension/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-extension/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Cache connector node modules - # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows - uses: actions/cache@v3 - env: - cache-name: cache-yoroi-connector-node-modules - with: - # https://github.com/actions/cache/blob/main/examples.md#node---npm - # It is recommended to cache the NPM cache (~/.npm) instead of node_modules. - # But we put node version into the cache key and cache node_modules. - path: packages/yoroi-connector/node_modules - key: ${{ runner.os }}-build-${{ env.cache-name }}-node-${{ steps.nvm.outputs.NVMRC }}-${{ hashFiles('packages/yoroi-connector/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: npm install - run: | - . install-all.sh - - - name: Build the test version - working-directory: ./packages/yoroi-extension - run: npm run test:build - - - name: Run tests - working-directory: ./packages/yoroi-extension - env: - MAILSAC_API_KEY: ${{secrets.MAILSAC_API_KEY}} - run: xvfb-run -a -e /dev/stdout -s "-screen 0 1920x1080x24" npm run test:run:e2e:${{ matrix.browser }} - - - name: Archive tests screenshots and logs - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: testRunsData_E2E_regression_tests_${{ matrix.browser }} - path: ./packages/yoroi-extension/testRunsData_${{ matrix.browser }} \ No newline at end of file diff --git a/eslint-loud.sh b/eslint-loud.sh new file mode 100644 index 0000000000..2805bd4b63 --- /dev/null +++ b/eslint-loud.sh @@ -0,0 +1 @@ +npm run eslint-loud --prefix packages/yoroi-extension \ No newline at end of file diff --git a/install-all.sh b/install-all.sh old mode 100644 new mode 100755 index cef1c8c3d8..491927c392 --- a/install-all.sh +++ b/install-all.sh @@ -1,4 +1,3 @@ npm i --legacy-peer-deps \ && npm i --legacy-peer-deps --prefix packages/yoroi-extension \ -&& npm i --legacy-peer-deps --prefix packages/yoroi-connector \ -&& npm i --legacy-peer-deps --prefix packages/yoroi-connector/example-cardano +&& npm i --prefix packages/e2e-tests chromedriver --chromedriver_version=LATEST diff --git a/package-lock.json b/package-lock.json index 563dafe662..e34aab6563 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,29 +12,40 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/highlight": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", - "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -75,13 +86,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -99,10 +110,38 @@ "node": ">=4" } }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@lerna/add": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz", "integrity": "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/bootstrap": "4.0.0", @@ -124,6 +163,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz", "integrity": "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/command": "4.0.0", @@ -157,6 +197,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz", "integrity": "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/collect-updates": "4.0.0", @@ -172,6 +213,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz", "integrity": "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/collect-uncommitted": "4.0.0", @@ -200,6 +242,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz", "integrity": "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/command": "4.0.0", @@ -219,6 +262,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz", "integrity": "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/global-options": "4.0.0", @@ -230,10 +274,40 @@ "node": ">= 10.18.0" } }, + "node_modules/@lerna/cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@lerna/cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@lerna/collect-uncommitted": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz", "integrity": "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -248,6 +322,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz", "integrity": "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -264,6 +339,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz", "integrity": "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -285,6 +361,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz", "integrity": "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/validation-error": "4.0.0", @@ -303,18 +380,6 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/conventional-commits/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@lerna/create": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz", @@ -348,6 +413,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz", "integrity": "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "cmd-shim": "^4.1.0", @@ -358,31 +424,11 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/create/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/create/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/@lerna/describe-ref": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz", "integrity": "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -396,6 +442,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz", "integrity": "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -411,6 +458,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz", "integrity": "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -429,6 +477,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz", "integrity": "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/collect-updates": "4.0.0", @@ -444,6 +493,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz", "integrity": "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/validation-error": "4.0.0", @@ -458,6 +508,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz", "integrity": "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "npmlog": "^4.1.2" @@ -470,6 +521,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz", "integrity": "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "fs-extra": "^9.1.0", @@ -480,85 +532,11 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/get-packed/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/get-packed/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@lerna/get-packed/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@lerna/get-packed/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@lerna/get-packed/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/get-packed/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/@lerna/github-client": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz", "integrity": "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -575,6 +553,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz", "integrity": "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "node-fetch": "^2.6.1", @@ -589,6 +568,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz", "integrity": "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "engines": { "node": ">= 10.18.0" @@ -598,6 +578,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz", "integrity": "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -611,6 +592,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz", "integrity": "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -630,6 +612,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz", "integrity": "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/command": "4.0.0", @@ -644,6 +627,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz", "integrity": "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -660,6 +644,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz", "integrity": "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/command": "4.0.0", @@ -676,6 +661,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz", "integrity": "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/command": "4.0.0", @@ -691,6 +677,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz", "integrity": "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/query-graph": "4.0.0", @@ -705,6 +692,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz", "integrity": "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "byte-size": "^7.0.0", @@ -720,6 +708,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz", "integrity": "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "config-chain": "^1.1.12", @@ -729,22 +718,11 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/npm-conf/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@lerna/npm-dist-tag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz", "integrity": "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/otplease": "4.0.0", @@ -760,6 +738,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz", "integrity": "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -778,6 +757,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz", "integrity": "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/otplease": "4.0.0", @@ -793,52 +773,11 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/npm-publish/node_modules/normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", - "dev": true, - "dependencies": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/npm-publish/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/npm-publish/node_modules/read-package-json": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", - "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", - "dev": true, - "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@lerna/npm-run-script": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz", "integrity": "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -853,6 +792,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz", "integrity": "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/prompt": "4.0.0" @@ -865,6 +805,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz", "integrity": "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "npmlog": "^4.1.2" @@ -877,6 +818,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz", "integrity": "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/get-packed": "4.0.0", @@ -891,99 +833,26 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/pack-directory/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/pack-directory/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/@lerna/package": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz", + "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "load-json-file": "^6.2.0", + "npm-package-arg": "^8.1.0", + "write-pkg": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.18.0" } }, - "node_modules/@lerna/pack-directory/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@lerna/pack-directory/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@lerna/pack-directory/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/pack-directory/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@lerna/package": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz", - "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", - "dev": true, - "dependencies": { - "load-json-file": "^6.2.0", - "npm-package-arg": "^8.1.0", - "write-pkg": "^4.0.0" - }, - "engines": { - "node": ">= 10.18.0" - } - }, - "node_modules/@lerna/package-graph": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz", - "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", + "node_modules/@lerna/package-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz", + "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/prerelease-id-from-version": "4.0.0", @@ -1000,6 +869,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz", "integrity": "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "semver": "^7.3.4" @@ -1012,6 +882,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz", "integrity": "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "fs-extra": "^9.1.0", @@ -1026,6 +897,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz", "integrity": "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/package": "4.0.0", @@ -1058,6 +930,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz", "integrity": "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "inquirer": "^7.3.3", @@ -1071,6 +944,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz", "integrity": "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/check-working-tree": "4.0.0", @@ -1110,6 +984,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz", "integrity": "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "npmlog": "^4.1.2" @@ -1122,6 +997,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz", "integrity": "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/package-graph": "4.0.0" @@ -1134,6 +1010,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz", "integrity": "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "fs-extra": "^9.1.0", @@ -1148,6 +1025,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz", "integrity": "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/child-process": "4.0.0", @@ -1163,6 +1041,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz", "integrity": "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/command": "4.0.0", @@ -1183,6 +1062,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz", "integrity": "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/npm-conf": "4.0.0", @@ -1197,6 +1077,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz", "integrity": "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/query-graph": "4.0.0", @@ -1210,6 +1091,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz", "integrity": "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/create-symlink": "4.0.0", @@ -1225,6 +1107,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz", "integrity": "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/create-symlink": "4.0.0", @@ -1242,6 +1125,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz", "integrity": "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "engines": { "node": ">= 10.18.0" @@ -1251,6 +1135,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz", "integrity": "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "npmlog": "^4.1.2" @@ -1263,6 +1148,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz", "integrity": "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "@lerna/check-working-tree": "4.0.0", @@ -1300,6 +1186,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz", "integrity": "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "dependencies": { "npmlog": "^4.1.2", @@ -1309,25 +1196,13 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/write-log-file/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -1335,21 +1210,21 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -1357,41 +1232,38 @@ } }, "node_modules/@npmcli/ci-detect": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz", - "integrity": "sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", + "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", "deprecated": "this package has been deprecated, use `ci-info` instead", "dev": true }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, "node_modules/@npmcli/git": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz", - "integrity": "sha512-a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^1.1.0", + "@npmcli/promise-spawn": "^1.3.2", "lru-cache": "^6.0.0", - "mkdirp": "^1.0.3", - "npm-pick-manifest": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", - "semver": "^7.3.2", - "unique-filename": "^1.1.1", + "semver": "^7.3.5", "which": "^2.0.2" } }, - "node_modules/@npmcli/git/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", @@ -1422,22 +1294,10 @@ "node": ">=10" } }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/node-gyp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", - "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", "dev": true }, "node_modules/@npmcli/promise-spawn": { @@ -1450,77 +1310,17 @@ } }, "node_modules/@npmcli/run-script": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz", - "integrity": "sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^1.0.2", "@npmcli/promise-spawn": "^1.3.2", - "infer-owner": "^1.0.4", "node-gyp": "^7.1.0", - "puka": "^1.0.1", "read-package-json-fast": "^2.0.1" } }, - "node_modules/@npmcli/run-script/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/run-script/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/run-script/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@npmcli/run-script/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/run-script/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/run-script/node_modules/node-gyp": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", @@ -1560,50 +1360,34 @@ "node": ">=6" } }, - "node_modules/@npmcli/run-script/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/@octokit/auth-token": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", - "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, "dependencies": { "@octokit/types": "^6.0.3" } }, "node_modules/@octokit/core": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.5.tgz", - "integrity": "sha512-+DCtPykGnvXKWWQI0E1XD+CCeWSBhB6kwItXqfFmNBlIlhczuDPbg+P6BtLnVBaRJDAjv+1mrUJuRsFSjktopg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", "dev": true, "dependencies": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.4.12", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", "@octokit/types": "^6.0.3", - "before-after-hook": "^2.1.0", + "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz", - "integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dev": true, "dependencies": { "@octokit/types": "^6.0.3", @@ -1611,30 +1395,21 @@ "universal-user-agent": "^6.0.0" } }, - "node_modules/@octokit/endpoint/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@octokit/graphql": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.0.tgz", - "integrity": "sha512-CJ6n7izLFXLvPZaWzCQDjU/RP+vHiZmWdOunaCS87v+2jxMsW9FB5ktfIxybRBxZjxuJGRnxk7xJecWTVxFUYQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, "dependencies": { - "@octokit/request": "^5.3.0", + "@octokit/request": "^5.6.0", "@octokit/types": "^6.0.3", "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/openapi-types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-5.3.0.tgz", - "integrity": "sha512-5q2qBz4iZ0xS/DEJ0ROusFbN4cVlbJE9GvOByen+mv7artuGXfVhONqcuRd7jYN2glTmCnzcZw+X6LrjRVqs0A==", + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { @@ -1644,33 +1419,33 @@ "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.11.0.tgz", - "integrity": "sha512-7L9xQank2G3r1dGqrVPo1z62V5utbykOUzlmNHPz87Pww/JpZQ9KyG5CHtUzgmB4n5iDRKYNK/86A8D98HP0yA==", + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "dev": true, "dependencies": { - "@octokit/types": "^6.11.0" + "@octokit/types": "^6.40.0" }, "peerDependencies": { "@octokit/core": ">=2" } }, "node_modules/@octokit/plugin-request-log": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz", - "integrity": "sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.13.3.tgz", - "integrity": "sha512-nMGS2osFcWXRfHkDR0d+lB1zpMPTZJ0NjysPUfs7BT5/juNG/Q0+5UB6nC1f62jPzun154qekzwOb7Q5oahCXQ==", + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "dev": true, "dependencies": { - "@octokit/types": "^6.12.0", + "@octokit/types": "^6.39.0", "deprecation": "^2.3.1" }, "peerDependencies": { @@ -1678,25 +1453,23 @@ } }, "node_modules/@octokit/request": { - "version": "5.4.14", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.14.tgz", - "integrity": "sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", "dev": true, "dependencies": { "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^6.7.1", - "deprecation": "^2.0.0", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "once": "^1.4.0", + "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/request-error": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz", - "integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, "dependencies": { "@octokit/types": "^6.0.3", @@ -1704,34 +1477,25 @@ "once": "^1.4.0" } }, - "node_modules/@octokit/request/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@octokit/rest": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.3.3.tgz", - "integrity": "sha512-OxElwBanZn1AShCaIrRTLM9PwhGE5/busMke/go30OWAQ+eJMD7Us/67mtapE77EYY4FM2tvb4Eg25rZaA/NPA==", + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", "dev": true, "dependencies": { - "@octokit/core": "^3.2.3", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "4.13.3" + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" } }, "node_modules/@octokit/types": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.12.0.tgz", - "integrity": "sha512-KwOf16soD7aDEEi/PgNeJlHzjZPfrmmNy+7WezSdrpnqZ7YImBJcNnX9+5RUHt1MnA4h8oISRHTqaZDGsX9DRQ==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^5.3.0" + "@octokit/openapi-types": "^12.11.0" } }, "node_modules/@tootallnate/once": { @@ -1744,27 +1508,27 @@ } }, "node_modules/@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "node_modules/@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "node_modules/abbrev": { @@ -1776,7 +1540,7 @@ "node_modules/add-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", "dev": true }, "node_modules/agent-base": { @@ -1792,13 +1556,11 @@ } }, "node_modules/agentkeepalive": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", - "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", "humanize-ms": "^1.2.1" }, "engines": { @@ -1835,12 +1597,12 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" @@ -1849,25 +1611,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -1886,43 +1636,87 @@ } }, "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, "node_modules/array-union": { @@ -1934,25 +1728,68 @@ "node": ">=8" } }, + "node_modules/array.prototype.reduce": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz", + "integrity": "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "dependencies": { "safer-buffer": "~2.1.0" @@ -1961,7 +1798,7 @@ "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, "engines": { "node": ">=0.8" @@ -1970,7 +1807,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/at-least-node": { @@ -1982,40 +1819,55 @@ "node": ">= 4.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", + "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==", "dev": true }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/before-after-hook": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.1.tgz", - "integrity": "sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, "node_modules/brace-expansion": { @@ -2029,33 +1881,33 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, "node_modules/byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2071,11 +1923,12 @@ } }, "node_modules/cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "dependencies": { + "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -2090,7 +1943,7 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.0", + "ssri": "^8.0.1", "tar": "^6.0.2", "unique-filename": "^1.1.1" }, @@ -2098,89 +1951,20 @@ "node": ">= 10" } }, - "node_modules/cacache/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cacache/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacache/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2224,13 +2008,13 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -2243,6 +2027,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -2250,10 +2046,13 @@ "dev": true }, "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/ci-info": { "version": "2.0.0", @@ -2292,64 +2091,23 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { "node": ">=0.8" @@ -2369,6 +2127,18 @@ "node": ">=6" } }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cmd-shim": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", @@ -2384,7 +2154,7 @@ "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2409,13 +2179,16 @@ "dev": true }, "node_modules/columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "dependencies": { - "strip-ansi": "^3.0.0", + "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, "node_modules/combined-stream": { @@ -2461,7 +2234,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/concat-stream": { @@ -2479,61 +2252,37 @@ "typedarray": "^0.0.6" } }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/concurrently": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", - "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", + "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", "dev": true, "dependencies": { "chalk": "^4.1.0", - "date-fns": "^2.16.1", + "date-fns": "^2.29.1", "lodash": "^4.17.21", - "rxjs": "^6.6.3", + "rxjs": "^7.0.0", + "shell-quote": "^1.7.3", "spawn-command": "^0.0.2-1", "supports-color": "^8.1.0", "tree-kill": "^1.2.2", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "bin": { + "conc": "dist/bin/concurrently.js", "concurrently": "dist/bin/concurrently.js" }, "engines": { "node": "^12.20.0 || ^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "dependencies": { "ini": "^1.3.4", @@ -2543,13 +2292,13 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", "dev": true, "dependencies": { "compare-func": "^2.0.0", @@ -2560,16 +2309,16 @@ } }, "node_modules/conventional-changelog-core": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz", - "integrity": "sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, "dependencies": { "add-stream": "^1.0.0", - "conventional-changelog-writer": "^4.0.18", + "conventional-changelog-writer": "^5.0.0", "conventional-commits-parser": "^3.2.0", "dateformat": "^3.0.0", - "get-pkg-repo": "^1.0.0", + "get-pkg-repo": "^4.0.0", "git-raw-commits": "^2.0.8", "git-remote-origin-url": "^2.0.0", "git-semver-tags": "^4.1.1", @@ -2578,28 +2327,12 @@ "q": "^1.5.1", "read-pkg": "^3.0.0", "read-pkg-up": "^3.0.0", - "shelljs": "^0.8.3", "through2": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", - "dev": true, - "dependencies": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-changelog-preset-loader": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", @@ -2610,15 +2343,14 @@ } }, "node_modules/conventional-changelog-writer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz", - "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", - "handlebars": "^4.7.6", + "handlebars": "^4.7.7", "json-stringify-safe": "^5.0.1", "lodash": "^4.17.15", "meow": "^8.0.0", @@ -2634,9 +2366,9 @@ } }, "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -2656,9 +2388,9 @@ } }, "node_modules/conventional-commits-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", - "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, "dependencies": { "is-text-path": "^1.0.1", @@ -2666,8 +2398,7 @@ "lodash": "^4.17.15", "meow": "^8.0.0", "split2": "^3.0.0", - "through2": "^4.0.0", - "trim-off-newlines": "^1.0.0" + "through2": "^4.0.0" }, "bin": { "conventional-commits-parser": "cli.js" @@ -2701,13 +2432,13 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -2734,18 +2465,6 @@ "node": ">= 8" } }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -2758,7 +2477,7 @@ "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "dependencies": { "assert-plus": "^1.0.0" @@ -2767,11 +2486,65 @@ "node": ">=0.10" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", - "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, "engines": { "node": ">=0.11" }, @@ -2790,9 +2563,9 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -2809,7 +2582,7 @@ "node_modules/debuglog": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "engines": { @@ -2819,16 +2592,16 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "dependencies": { "decamelize": "^1.1.0", @@ -2836,21 +2609,24 @@ }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, "engines": { "node": ">=0.10" @@ -2859,34 +2635,59 @@ "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2895,18 +2696,9 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -2914,18 +2706,18 @@ "dev": true }, "node_modules/detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "dependencies": { "asap": "^2.0.0", @@ -2968,13 +2760,19 @@ "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2991,19 +2789,32 @@ "iconv-lite": "^0.6.2" } }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/env-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/envinfo": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", - "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -3028,27 +2839,57 @@ } }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -3057,6 +2898,59 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -3075,9 +2969,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -3086,7 +2980,7 @@ "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -3099,9 +2993,9 @@ "dev": true }, "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -3141,22 +3035,10 @@ "node": ">=4" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" @@ -3169,20 +3051,19 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { @@ -3192,9 +3073,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -3216,9 +3097,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3230,23 +3111,26 @@ "node_modules/filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-versions": { @@ -3264,10 +3148,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, "engines": { "node": "*" @@ -3303,30 +3196,64 @@ } }, "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { - "minipass": "^2.6.0" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "aproba": "^1.0.3", @@ -3339,256 +3266,150 @@ "wide-align": "^1.1.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=0.10.0" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/gauge/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "number-is-nan": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", - "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "meow": "^3.3.0", - "normalize-package-data": "^2.3.0", - "parse-github-repo-url": "^1.3.0", - "through2": "^2.0.0" - }, - "bin": { - "get-pkg-repo": "cli.js" - } - }, - "node_modules/get-pkg-repo/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "dependencies": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "node_modules/get-pkg-repo/node_modules/indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "dependencies": { - "repeating": "^2.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "ansi-regex": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-pkg-repo/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "error-ex": "^1.2.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-pkg-repo/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-pkg-repo/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "bin": { + "get-pkg-repo": "src/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/get-pkg-repo/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "node_modules/get-pkg-repo/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/get-pkg-repo/node_modules/redent": { + "node_modules/get-pkg-repo/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "dependencies": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, - "node_modules/get-pkg-repo/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/get-pkg-repo/node_modules/strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { - "get-stdin": "^4.0.1" - }, - "bin": { - "strip-indent": "cli.js" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.1.0" } }, "node_modules/get-pkg-repo/node_modules/through2": { @@ -3601,13 +3422,22 @@ "xtend": "~4.0.1" } }, - "node_modules/get-pkg-repo/node_modules/trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "node_modules/get-port": { @@ -3622,40 +3452,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/git-raw-commits": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", - "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", "dev": true, "dependencies": { "dargs": "^7.0.0", @@ -3674,7 +3512,7 @@ "node_modules/git-remote-origin-url": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "dependencies": { "gitconfiglocal": "^1.0.0", @@ -3687,7 +3525,7 @@ "node_modules/git-remote-origin-url/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3710,28 +3548,28 @@ } }, "node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/git-up": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", - "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", "dev": true, "dependencies": { "is-ssh": "^1.3.0", - "parse-url": "^5.0.0" + "parse-url": "^6.0.0" } }, "node_modules/git-url-parse": { - "version": "11.4.4", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.4.tgz", - "integrity": "sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz", + "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==", "dev": true, "dependencies": { "git-up": "^4.0.0" @@ -3740,22 +3578,23 @@ "node_modules/gitconfiglocal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, "dependencies": { "ini": "^1.3.2" } }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -3767,9 +3606,9 @@ } }, "node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" @@ -3778,17 +3617,33 @@ "node": ">= 6" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -3798,20 +3653,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -3828,7 +3695,7 @@ "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, "engines": { "node": ">=4" @@ -3857,22 +3724,10 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3887,11 +3742,50 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -3902,13 +3796,25 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3918,9 +3824,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "node_modules/http-proxy-agent": { @@ -3940,7 +3846,7 @@ "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "dependencies": { "assert-plus": "^1.0.0", @@ -3953,9 +3859,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -3977,7 +3883,7 @@ "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "dependencies": { "ms": "^2.0.0" @@ -4013,118 +3919,103 @@ "url": "https://opencollective.com/husky" } }, - "node_modules/husky/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/husky/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/husky/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "minimatch": "^3.0.4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/husky/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/husky/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "find-up": "^5.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" + "node": ">=8" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" @@ -4133,17 +4024,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "p-limit": "^2.2.0" }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" }, "engines": { "node": ">=8" @@ -4152,7 +4051,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -4176,7 +4075,8 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -4196,17 +4096,16 @@ "dev": true }, "node_modules/init-package-json": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.2.tgz", - "integrity": "sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", + "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", "dev": true, "dependencies": { - "glob": "^7.1.1", - "npm-package-arg": "^8.1.0", + "npm-package-arg": "^8.1.5", "promzard": "^0.3.0", "read": "~1.0.1", - "read-package-json": "^3.0.0", - "semver": "^7.3.2", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^3.0.0" }, @@ -4214,25 +4113,11 @@ "node": ">=10" } }, - "node_modules/init-package-json/node_modules/normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", - "dev": true, - "dependencies": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/init-package-json/node_modules/read-package-json": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", - "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, "dependencies": { "glob": "^7.1.1", @@ -4268,87 +4153,93 @@ "node": ">=8.0.0" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "node_modules/inquirer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, "engines": { - "node": ">=8" + "npm": ">=2.0.0" } }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/inquirer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, - "node_modules/inquirer/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 12" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -4358,9 +4249,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -4382,22 +4273,25 @@ } }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, "engines": { "node": ">= 0.4" }, @@ -4405,43 +4299,43 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -4453,13 +4347,13 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -4478,10 +4372,13 @@ } }, "node_modules/is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4501,32 +4398,44 @@ "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -4536,28 +4445,34 @@ } }, "node_modules/is-ssh": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", - "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, "dependencies": { - "protocols": "^1.1.0" + "protocols": "^2.0.1" } }, "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4566,12 +4481,12 @@ } }, "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4583,43 +4498,64 @@ "node_modules/is-text-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "dependencies": { "text-extensions": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4628,7 +4564,7 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, "node_modules/js-tokens": { @@ -4638,9 +4574,9 @@ "dev": true }, "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", "dev": true }, "node_modules/json-parse-better-errors": { @@ -4656,9 +4592,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -4670,7 +4606,7 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "node_modules/jsonfile": { @@ -4688,7 +4624,7 @@ "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" @@ -4711,18 +4647,18 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/kind-of": { @@ -4767,73 +4703,156 @@ } }, "node_modules/libnpmaccess": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz", - "integrity": "sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz", + "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", "dev": true, "dependencies": { "aproba": "^2.0.0", "minipass": "^3.1.1", - "npm-package-arg": "^8.0.0", - "npm-registry-fetch": "^9.0.0" + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/libnpmaccess/node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "node_modules/libnpmaccess/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } }, - "node_modules/libnpmaccess/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "node_modules/libnpmaccess/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/libnpmaccess/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" } }, "node_modules/libnpmpublish": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.0.tgz", - "integrity": "sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz", + "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", "dev": true, "dependencies": { - "normalize-package-data": "^3.0.0", - "npm-package-arg": "^8.1.0", - "npm-registry-fetch": "^9.0.0", + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", "semver": "^7.1.3", - "ssri": "^8.0.0" + "ssri": "^8.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/libnpmpublish/node_modules/normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "node_modules/libnpmpublish/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "dependencies": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/libnpmpublish/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" }, "engines": { "node": ">=10" } }, + "node_modules/libnpmpublish/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "node_modules/load-json-file": { @@ -4851,16 +4870,28 @@ "node": ">=8" } }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -4872,19 +4903,13 @@ "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", "dev": true }, "node_modules/lodash.ismatch": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", "dev": true }, "node_modules/lodash.template": { @@ -4906,19 +4931,6 @@ "lodash._reinterpolate": "^3.0.0" } }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4932,25 +4944,27 @@ } }, "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/make-fetch-happen": { @@ -4979,25 +4993,16 @@ "node": ">= 10" } }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/meow": { @@ -5025,19 +5030,62 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/meow/node_modules/read-pkg": { @@ -5081,12 +5129,6 @@ "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5099,15 +5141,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -5117,6 +5150,15 @@ "node": ">=8" } }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", @@ -5145,34 +5187,34 @@ } }, "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, "node_modules/mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.46.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -5197,9 +5239,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -5209,10 +5251,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minimist-options": { "version": "4.1.0", @@ -5222,29 +5267,22 @@ "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, + "kind-of": "^6.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/minipass-collect": { @@ -5259,22 +5297,10 @@ "node": ">= 8" } }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-fetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", - "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, "dependencies": { "minipass": "^3.1.0", @@ -5288,31 +5314,6 @@ "encoding": "^0.1.12" } }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-fetch/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -5325,18 +5326,6 @@ "node": ">= 8" } }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-json-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", @@ -5347,18 +5336,6 @@ "minipass": "^3.0.0" } }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -5371,18 +5348,6 @@ "node": ">=8" } }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", @@ -5395,43 +5360,29 @@ "node": ">=8" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { + "minipass": "^3.0.0", "yallist": "^4.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "dependencies": { - "minipass": "^2.9.0" + "node": ">= 8" } }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mkdirp-infer-owner": { @@ -5448,27 +5399,6 @@ "node": ">=10" } }, - "node_modules/mkdirp-infer-owner/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-infer-owner/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -5503,12 +5433,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -5516,12 +5464,45 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/node-gyp": { @@ -5549,10 +5530,57 @@ "node": ">= 6.0.0" } }, + "node_modules/node-gyp/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/node-gyp/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/node-gyp/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/node-gyp/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -5562,14 +5590,32 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" } }, + "node_modules/node-gyp/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, "node_modules/node-gyp/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -5582,6 +5628,12 @@ "which": "bin/which" } }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/nopt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", @@ -5596,45 +5648,36 @@ } }, "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + }, + "engines": { + "node": ">=10" } }, "node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "dependencies": { "npm-normalize-package-bin": "^1.0.1" @@ -5656,6 +5699,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "deprecated": "The lifecycle script runner used in npm is now @npmcli/run-script. Please use that module moving forward", "dev": true, "dependencies": { "byline": "^5.0.0", @@ -5687,13 +5731,13 @@ "dev": true }, "node_modules/npm-package-arg": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", - "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, "dependencies": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", "validate-npm-package-name": "^3.0.0" }, "engines": { @@ -5701,9 +5745,9 @@ } }, "node_modules/npm-packlist": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz", - "integrity": "sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", "dev": true, "dependencies": { "glob": "^7.1.6", @@ -5719,14 +5763,15 @@ } }, "node_modules/npm-pick-manifest": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", - "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", "dev": true, "dependencies": { "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.0.0", - "semver": "^7.0.0" + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" } }, "node_modules/npm-registry-fetch": { @@ -5748,31 +5793,6 @@ "node": ">=10" } }, - "node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-registry-fetch/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -5789,6 +5809,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "are-we-there-yet": "~1.1.2", @@ -5800,7 +5821,7 @@ "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5818,16 +5839,16 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5843,14 +5864,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -5861,14 +5882,18 @@ } }, "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" }, "engines": { "node": ">= 0.8" @@ -5880,7 +5905,7 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -5913,7 +5938,7 @@ "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5922,7 +5947,7 @@ "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5932,6 +5957,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "os-homedir": "^1.0.0", @@ -5941,37 +5967,40 @@ "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -6072,12 +6101,12 @@ } }, "node_modules/pacote": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.7.tgz", - "integrity": "sha512-ogxPor11v/rnU9ukwLlI2dPx22q9iob1+yZyqSwerKsOvBMhU9e+SJHtxY4y2N0MRH4/5jGsGiRLsZeJWyM4dQ==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", "dev": true, "dependencies": { - "@npmcli/git": "^2.0.1", + "@npmcli/git": "^2.1.0", "@npmcli/installed-package-contents": "^1.0.6", "@npmcli/promise-spawn": "^1.2.0", "@npmcli/run-script": "^1.8.2", @@ -6090,7 +6119,7 @@ "npm-package-arg": "^8.0.1", "npm-packlist": "^2.1.4", "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^9.0.0", + "npm-registry-fetch": "^11.0.0", "promise-retry": "^2.0.1", "read-package-json-fast": "^2.0.1", "rimraf": "^3.0.2", @@ -6104,76 +6133,59 @@ "node": ">=10" } }, - "node_modules/pacote/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/pacote/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pacote/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "node_modules/pacote/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/pacote/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/pacote/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pacote/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/pacote/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "node_modules/pacote/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" @@ -6191,12 +6203,6 @@ "node": ">=6" } }, - "node_modules/parse-github-repo-url": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", - "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", - "dev": true - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -6216,9 +6222,9 @@ } }, "node_modules/parse-path": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", - "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz", + "integrity": "sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==", "dev": true, "dependencies": { "is-ssh": "^1.3.0", @@ -6227,30 +6233,30 @@ "query-string": "^6.13.8" } }, - "node_modules/parse-path/node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/parse-path/node_modules/protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true }, "node_modules/parse-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.2.tgz", - "integrity": "sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.5.tgz", + "integrity": "sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==", "dev": true, "dependencies": { "is-ssh": "^1.3.0", - "normalize-url": "^3.3.0", + "normalize-url": "^6.1.0", "parse-path": "^4.0.0", "protocols": "^1.4.0" } }, + "node_modules/parse-url/node_modules/protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -6263,7 +6269,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6279,9 +6285,9 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "node_modules/path-type": { @@ -6296,13 +6302,19 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -6312,45 +6324,27 @@ } }, "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/please-upgrade-node": { @@ -6362,6 +6356,15 @@ "semver-compare": "^1.0.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -6371,7 +6374,7 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "node_modules/promise-retry": { @@ -6390,7 +6393,7 @@ "node_modules/promzard": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "dev": true, "dependencies": { "read": "1" @@ -6399,34 +6402,25 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "node_modules/protocols": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", - "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "node_modules/puka": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz", - "integrity": "sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -6435,7 +6429,7 @@ "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, "engines": { "node": ">=0.6.0", @@ -6443,12 +6437,18 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/query-string": { @@ -6470,9 +6470,9 @@ } }, "node_modules/queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -6501,7 +6501,7 @@ "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "dependencies": { "mute-stream": "~0.0.4" @@ -6517,21 +6517,25 @@ "dev": true }, "node_modules/read-package-json": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", - "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", + "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, "dependencies": { "glob": "^7.1.1", "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^2.0.0", + "normalize-package-data": "^3.0.0", "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/read-package-json-fast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", - "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "dependencies": { "json-parse-even-better-errors": "^2.3.0", @@ -6553,10 +6557,50 @@ "util-promisify": "^2.1.0" } }, + "node_modules/read-package-tree/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-package-tree/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-package-tree/node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "node_modules/read-package-tree/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "dependencies": { "load-json-file": "^4.0.0", @@ -6570,7 +6614,7 @@ "node_modules/read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "dependencies": { "find-up": "^2.0.0", @@ -6583,7 +6627,7 @@ "node_modules/read-pkg-up/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { "locate-path": "^2.0.0" @@ -6595,7 +6639,7 @@ "node_modules/read-pkg-up/node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { "p-locate": "^2.0.0", @@ -6620,7 +6664,7 @@ "node_modules/read-pkg-up/node_modules/p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { "p-limit": "^1.1.0" @@ -6632,7 +6676,7 @@ "node_modules/read-pkg-up/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "engines": { "node": ">=4" @@ -6641,16 +6685,22 @@ "node_modules/read-pkg-up/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, "node_modules/read-pkg/node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -6662,10 +6712,22 @@ "node": ">=4" } }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "node_modules/read-pkg/node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { "error-ex": "^1.3.1", @@ -6690,34 +6752,42 @@ "node_modules/read-pkg/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/read-pkg/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/readdir-scoped-modules": { @@ -6733,18 +6803,6 @@ "once": "^1.3.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -6758,16 +6816,28 @@ "node": ">=8" } }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "is-finite": "^1.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/request": { @@ -6802,23 +6872,36 @@ "node": ">= 6" } }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6870,7 +6953,7 @@ "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { "node": ">= 4" @@ -6890,6 +6973,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -6934,22 +7018,68 @@ } }, "node_modules/rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "dependencies": { - "tslib": "^1.9.0" + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "npm": ">=2.0.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -6958,13 +7088,10 @@ "dev": true }, "node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6975,13 +7102,13 @@ "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, "node_modules/semver-regex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz", - "integrity": "sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", + "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", "dev": true, "engines": { "node": ">=8" @@ -6993,9 +7120,41 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -7029,27 +7188,37 @@ "node": ">=8" } }, - "node_modules/shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/slash": { @@ -7064,16 +7233,16 @@ "node_modules/slide": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", "dev": true, "engines": { "node": "*" } }, "node_modules/smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "engines": { "node": ">= 6.0.0", @@ -7081,26 +7250,26 @@ } }, "node_modules/socks": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz", - "integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", - "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^6.0.2", "debug": "4", "socks": "^2.3.3" }, @@ -7109,15 +7278,27 @@ } }, "node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", "dev": true, "dependencies": { - "is-plain-obj": "^1.0.0" + "is-plain-obj": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/source-map": { @@ -7132,13 +7313,13 @@ "node_modules/spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", "dev": true }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -7146,9 +7327,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -7162,9 +7343,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/split": { @@ -7197,24 +7378,16 @@ "readable-stream": "^3.0.0" } }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, "dependencies": { "asn1": "~0.2.3", @@ -7236,6 +7409,12 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, "node_modules/ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -7248,86 +7427,97 @@ "node": ">= 8" } }, - "node_modules/ssri/node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/strip-bom": { @@ -7378,45 +7568,62 @@ } }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=4.5" + "node": ">=10" } }, - "node_modules/tar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, "engines": { "node": ">=4" @@ -7438,30 +7645,6 @@ "node": ">=8" } }, - "node_modules/temp-write/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/temp-write/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -7474,30 +7657,16 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "node_modules/through2": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "dev": true, + "dependencies": { + "readable-stream": "3" } }, "node_modules/tmp": { @@ -7538,9 +7707,9 @@ } }, "node_modules/tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "dependencies": { "punycode": "^2.1.1" @@ -7559,33 +7728,24 @@ } }, "node_modules/trim-newlines": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", - "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -7597,22 +7757,98 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "node_modules/typedarray-to-buffer": { @@ -7625,9 +7861,9 @@ } }, "node_modules/uglify-js": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.0.tgz", - "integrity": "sha512-TWYSWa9T2pPN4DIJYbU9oAjQx+5qdV5RUDxwARg8fmJZrD/V27Zj0JngW5xg1DFz42G0uDYl2XhzF6alSzD62w==", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "dev": true, "optional": true, "bin": { @@ -7640,7 +7876,8 @@ "node_modules/uid-number": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "integrity": "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==", + "deprecated": "This package is no longer supported.", "dev": true, "engines": { "node": "*" @@ -7649,19 +7886,22 @@ "node_modules/umask": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", - "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", + "integrity": "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==", "dev": true }, "node_modules/unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/unique-filename": { @@ -7683,15 +7923,15 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -7719,13 +7959,13 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "node_modules/util-promisify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", - "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", "dev": true, "dependencies": { "object.getownpropertydescriptors": "^2.0.3" @@ -7754,7 +7994,7 @@ "node_modules/validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "dependencies": { "builtins": "^1.0.3" @@ -7763,7 +8003,7 @@ "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" @@ -7777,7 +8017,7 @@ "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "dependencies": { "defaults": "^1.0.3" @@ -7793,13 +8033,13 @@ } }, "node_modules/whatwg-url": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", + "lodash": "^4.7.0", + "tr46": "^2.1.0", "webidl-conversions": "^6.1.0" }, "engines": { @@ -7838,24 +8078,46 @@ } }, "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "dependencies": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "node_modules/wrap-ansi": { @@ -7875,65 +8137,22 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "node_modules/write-json-file": { @@ -7956,15 +8175,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/write-json-file/node_modules/detect-indent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", - "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/write-json-file/node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -7974,69 +8184,70 @@ "node": ">=8" } }, - "node_modules/write-json-file/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/write-json-file/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/write-pkg/node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=4" } }, - "node_modules/write-json-file/node_modules/sort-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", - "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "node_modules/write-pkg/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "dependencies": { - "is-plain-obj": "^2.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/write-json-file/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/write-pkg/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "engines": { + "node": ">=6" } }, - "node_modules/write-pkg": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", - "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "node_modules/write-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/write-pkg/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, "dependencies": { - "sort-keys": "^2.0.0", - "type-fest": "^0.4.1", - "write-json-file": "^3.2.0" + "is-plain-obj": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/write-pkg/node_modules/type-fest": { @@ -8048,6 +8259,17 @@ "node": ">=6" } }, + "node_modules/write-pkg/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "node_modules/write-pkg/node_modules/write-json-file": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", @@ -8075,9 +8297,9 @@ } }, "node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { "node": ">=10" @@ -8090,83 +8312,48 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, "engines": { "node": ">= 6" } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "engines": { "node": ">=10" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index 397d64d3a8..bad9641132 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,9 @@ "flow": "lerna run flow --stream", "test": "lerna run test --stream", "translations:purge": "lerna run translations:purge -- stream", - "dev:all": "concurrently \"npm run dev:stable --prefix packages/yoroi-extension\" \"npm run cardano --prefix packages/yoroi-connector\" ", "archive:src": "func() { git rev-parse HEAD > COMMIT && git rev-parse --abbrev-ref HEAD > BRANCH && git archive --format zip --add-file COMMIT --add-file BRANCH -o $1 HEAD && rm COMMIT BRANCH; }; func" }, - "husky": { - "hooks": { - "pre-push": ". check-all.sh", - "post-checkout": "npm run translations:purge" - } - }, + "devDependencies": { "concurrently": "^7.0.0", "husky": "4.3.8", diff --git a/packages/e2e-tests/.gitignore b/packages/e2e-tests/.gitignore new file mode 100644 index 0000000000..fe7b7a85f1 --- /dev/null +++ b/packages/e2e-tests/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +ExtBuilds/ +testRunsData_*/ +.DS_Store +mochawesome-report/ \ No newline at end of file diff --git a/packages/e2e-tests/.prettierrc b/packages/e2e-tests/.prettierrc new file mode 100644 index 0000000000..aeb8ba2987 --- /dev/null +++ b/packages/e2e-tests/.prettierrc @@ -0,0 +1,8 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "printWidth": 100, + "arrowParens": "avoid" +} diff --git a/packages/e2e-tests/helpers/constants.js b/packages/e2e-tests/helpers/constants.js new file mode 100644 index 0000000000..4a56dfd62d --- /dev/null +++ b/packages/e2e-tests/helpers/constants.js @@ -0,0 +1,121 @@ +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const __englishCharacters = 'qwertyuiopasdfghjklzxcvbnm'; +const __digits = '1234567890'; +const __getRandomItem = arr => { + const randomIndex = Math.floor(Math.random() * arr.length); + const item = arr[randomIndex]; + + return item; +}; +const __flipCoin = () => { + const trueFalseArr = [true, false]; + const randomIndex = Math.floor(Math.random() * trueFalseArr.length); + return trueFalseArr[randomIndex]; +}; +const __getRandomChar = isCapital => { + let randomChar = ''; + if (isCapital) { + randomChar = __flipCoin() + ? __getRandomItem(__englishCharacters + __digits).toUpperCase() + : __getRandomItem(__englishCharacters + __digits); + } else { + randomChar = __getRandomItem(__englishCharacters + __digits); + } + return randomChar; +}; +const __genString = (stringLength, startPart = '', withCapitals = false) => { + const numOfLettersToAdd = stringLength - startPart.length; + let tempString = `${startPart}`; + for (let index = 0; index < numOfLettersToAdd; index++) { + const randomCharacter = __getRandomChar(withCapitals); + tempString = tempString + randomCharacter; + } + return tempString; +}; + +export const getTestString = (basePart, stringLength, withCapitals) => { + if (!stringLength) { + return basePart; + } + if (stringLength <= basePart.length) { + return __genString(stringLength, '', withCapitals); + } + return __genString(stringLength, basePart, withCapitals); +}; + +export const chromeExtIdUrl = `chrome-extension://bdlknlffjjmjckcldekkbejaogpkjphg`; +export const firefoxExtensionId = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'; +export const firefoxExtIdUrl = `moz-extension://${firefoxExtensionId}`; +export const firefoxUuidMapping = `{"{530f7c6c-6077-4703-8f71-cb368c663e35}":"${firefoxExtensionId}"}`; +export const firefoxBin = + process.env.FIREFOX_BIN != null + ? process.env.FIREFOX_BIN + : '/Applications/Firefox Developer Edition.app/Contents/MacOS/firefox-bin'; +export const TargetBrowser = Object.freeze({ + Chrome: 'chrome', + Brave: 'brave', + FF: 'firefox', +}); +export const WalletWordsSize = Object.freeze({ + Shelley: 15, + Daedalus: 24, +}); +export const adaInLovelaces = 1000000; + +export const projectRootDir = path.resolve(__dirname, '..'); + +export const dbSnapshotsDir = path.resolve(projectRootDir, 'helpers', 'wallet-dbSnapshots'); + +export const testRunDir = browserName => + path.resolve(__dirname, '..', `testRunsData_${browserName}`); + +export const getTestWalletName = (walletNameLength = 0, withCapitals = false) => { + let basePart = 'test'; + return getTestString(basePart, walletNameLength, withCapitals); +}; + +export const getPassword = (walletNameLength = 0, withCapitals = false) => { + let basePart = 'qwerty1234'; + return getTestString(basePart, walletNameLength, withCapitals); +}; +export const yoroiObject = Object.freeze({ + name: 'yoroi', + apiVersion: '0.3.0', + icon: + 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzIiIGhlaWdodD0iNjMiIHZpZXdCb3g9IjAgMCA3MiA2MyIgZmlsbD0ibm' + + '9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzExODRfODQyND' + + 'ApIj4KPHBhdGggZD0iTTU1LjYyNzEgNDguOTEzNkw0OS45MjEgNTIuODcxMkw3LjkwMjMyIDIzLjg2MjNDNy45MDIzMiAyMy44MD' + + 'U2IDcuOTAyMzIgMjMuNzQ4OCA3Ljg4NTYgMjMuNjkyVjIxLjEwMzdDNy44ODU2IDIwLjI2NDMgNy44ODU2IDE5LjQyNjEgNy44OD' + + 'U2IDE4LjU4ODlWMTUuOTUzOUw1NS42MjcxIDQ4LjkxMzZaTTQzLjkwMDYgMTEuNDc1M0M0MS4zNjM1IDEzLjIxMTkgMzguODAyOS' + + 'AxNC45MTUyIDM2LjI2NTggMTYuNjUxOUMzNi4xMzk2IDE2Ljc2NjYgMzUuOTc1MSAxNi44MzAyIDM1LjgwNDQgMTYuODMwMkMzNS' + + '42MzM4IDE2LjgzMDIgMzUuNDY5MyAxNi43NjY2IDM1LjM0MzEgMTYuNjUxOUMzMi4yMDc2IDE0LjQ3MSAyOS4wNTU0IDEyLjMxMD' + + 'IgMjUuOTE2NSAxMC4xNDYxQzIyLjYxMzkgNy44NTUwMyAxOS4zMTM0IDUuNTU3MyAxNi4wMTUyIDMuMjUyODlMMTEuMzMyIDBIME' + + 'MwLjYwMTY5OSAwLjQyMDgwNSAxLjA5NjQzIDAuNzc0ODE2IDEuNTk0NSAxLjExODgxTDEwLjQ3NjMgNy4yNzA1OEMxMy40MDQ1ID' + + 'kuMzA1NTkgMTYuMzMxNyAxMS4zNDA2IDE5LjI1NzcgMTMuMzc1NkMyMi4wMTIyIDE1LjI4OTMgMjQuNzU5OSAxNy4yMTI5IDI3Lj' + + 'UxNzcgMTkuMTIzM0MzMC4xMzUxIDIwLjkzNjcgMzIuNzU5MiAyMi43MzAyIDM1LjM3NjYgMjQuNTQ3QzM1LjQ4MjMgMjQuNjQyNy' + + 'AzNS42MTk5IDI0LjY5NTggMzUuNzYyNyAyNC42OTU4QzM1LjkwNTQgMjQuNjk1OCAzNi4wNDMgMjQuNjQyNyAzNi4xNDg4IDI0Lj' + + 'U0N0MzOC4yNjE0IDIzLjEwMDkgNDAuMzk3NCAyMS42NzgyIDQyLjUgMjAuMjMyMUM0Ny43MzI2IDE2LjY0OTYgNTIuOTYwNyAxMy' + + '4wNjE3IDU4LjE4NDMgOS40NjgxMkw2OS42MDMyIDEuNjY5ODZDNzAuMzkyMSAxLjEzMjE3IDcxLjE3NzcgMC41ODQ0NTIgNzIgME' + + 'g2MC42MzQ2QzU1LjA1NDQgMy44MjI4NyA0OS40NzY0IDcuNjQ3OTcgNDMuOTAwNiAxMS40NzUzWk03Ljk0NTc3IDM1LjI0NzRDNy' + + '45MjA5NyAzNS4yOTU1IDcuOTAwODIgMzUuMzQ1OCA3Ljg4NTYgMzUuMzk3N1Y0MC4xNTM1QzcuODg1NiA0MS4xMDIgNy44ODU2ID' + + 'QyLjA1MDUgNy44ODU2IDQyLjk5NTZDNy44ODgxNCA0My4wNTMzIDcuOTAxNzYgNDMuMTEgNy45MjU3MiA0My4xNjI2TDM1Ljk3MT' + + 'YgNjIuNTMzSDM1Ljk5ODNMNDEuNzA0NCA1OC41Nzg4TDcuOTQ1NzcgMzUuMjQ3NFpNNjMuOTc0IDE1Ljk3MDZMNDMuMTAxNyAzMC' + + '4zOTE1QzQzLjE2NzYgMzAuNDgwNCA0My4yNDE1IDMwLjU2MzEgNDMuMzIyMyAzMC42Mzg2QzQ1LjA4NzMgMzEuODg3NyA0Ni44NT' + + 'M0IDMzLjEzMTIgNDguNjIwNiAzNC4zNjkxQzQ4LjY3ODkgMzQuNDAwNCA0OC43NDU3IDM0LjQxMjEgNDguODExMiAzNC40MDI1TD' + + 'YzLjkyMzkgMjMuOTQ5MkM2My45NDY2IDIzLjkwNDggNjMuOTYzNCAyMy44NTc2IDYzLjk3NCAyMy44MDg5VjE1Ljk3MDZaTTYzLj' + + 'k5MDcgMzUuNTUxNEM2MS42MjA3IDM3LjE4NDUgNTkuMzM0MiAzOC43NjQyIDU3LjAyMSA0MC4zNjM5TDYyLjQ0MyA0NC4yMDQ2TD' + + 'YzLjk5MDcgNDMuMTMyNVYzNS41NTE0WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzExODRfODQyNDApIi8+CjwvZz4KPGRlZn' + + 'M+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMTg0Xzg0MjQwIiB4MT0iOS4xNTU4NiIgeTE9IjQ0LjM4NDkiIH' + + 'gyPSI2Mi43NDE3IiB5Mj0iLTkuMjQ5ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj' + + '0iIzFBNDRCNyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0NzYwRkYiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaX' + + 'BQYXRoIGlkPSJjbGlwMF8xMTg0Xzg0MjQwIj4KPHJlY3Qgd2lkdGg9IjcyIiBoZWlnaHQ9IjYyLjUyNjMiIGZpbGw9IndoaXRlIi' + + '8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==', +}); + +export const Colors = Object.freeze({ + errorRed: 'rgb(255, 19, 81)', +}); diff --git a/packages/e2e-tests/helpers/customChecks.js b/packages/e2e-tests/helpers/customChecks.js new file mode 100644 index 0000000000..87a3dd31d3 --- /dev/null +++ b/packages/e2e-tests/helpers/customChecks.js @@ -0,0 +1,67 @@ +import { AssertionError } from 'chai'; + +/** + * + * @param {any[]} arrayOne + * @param {any[]} arrayTwo + */ +const compareArrayLength = (arrayOne, arrayTwo) => { + if (arrayOne.length !== arrayTwo.length) { + throw new AssertionError( + `The exported txs array and displayed txs array have different length. Exported: ${exportedTxs.length}, Displayed: ${displayedTxs.length}` + ); + } +}; + +/** + * + * @param {{txType: string, inAmount: number, outAmount: number, feeAmount: number, exchange: string, tradeGroup: string, comment: string, date: string, txHashId: string}[]} exportedTxs + * @param {{txType: string, txTime: string, txDateTime: string, txStatus: string, txFee: number, txAmount: number, txHashId: string}[]} displayedTxs + */ +export const compareExportedTxsAndDisplayedTxs = (exportedTxs, displayedTxs) => { + compareArrayLength(exportedTxs, displayedTxs); + + const errorMessages = []; + for (const exportedTx of exportedTxs) { + const foundTx = displayedTxs.filter(dTx => dTx.txHashId === exportedTx.txHashId); + if (foundTx.length === 0) { + errorMessages.push( + `\n- The tx with txHasId "${exportedTx.txHashId}" wasn't found in the displayed txs` + ); + continue; + } + const displayedTx = foundTx[0]; + + const exportDateTimeStr = exportedTx.date.slice(0, exportedTx.date.length - 2) + '00'; + if (exportDateTimeStr !== displayedTx.txDateTime) { + errorMessages.push( + `\n- The tx with txHasId "${exportedTx.txHashId}" has diffent date.\n` + + ` Exported: ${exportedTx.date}, Displayed: ${displayedTx.txDateTime}` + ); + } + if (exportedTx.feeAmount !== displayedTx.txFee) { + errorMessages.push( + `\n- The tx with txHasId "${exportedTx.txHashId}" has diffent fee.\n` + + ` Exported: ${exportedTx.feeAmount}, Displayed: ${displayedTx.txFee}` + ); + } + // received tx + if (exportedTx.feeAmount === 0 && exportedTx.inAmount !== displayedTx.txAmount) { + errorMessages.push( + `\n- The tx with txHasId "${exportedTx.txHashId}" has diffent amount.\n` + + ` Exported: ${exportedTx.inAmount}, Displayed: ${displayedTx.txAmount}` + ); + } + const expectedAmount = displayedTx.txAmount * -1 - displayedTx.txFee; + if (exportedTx.feeAmount !== 0 && exportedTx.outAmount !== expectedAmount) { + errorMessages.push( + `\n- The tx with txHasId "${exportedTx.txHashId}" has diffent amount.\n` + + ` Exported: ${exportedTx.outAmount}, Displayed: ${displayedTx.txAmount}` + ); + } + } + + if (errorMessages.length !== 0) { + throw new AssertionError(errorMessages.join('\n')); + } +}; diff --git a/packages/e2e-tests/helpers/messages.js b/packages/e2e-tests/helpers/messages.js new file mode 100644 index 0000000000..7c90c3382f --- /dev/null +++ b/packages/e2e-tests/helpers/messages.js @@ -0,0 +1,6 @@ +export const WRONG_PASSWORD = 'Incorrect password. Please retype.'; +export const PASSWORD_TOO_SHORT = 'Password requires at least 10 characters.'; +export const PASSWORDS_DONT_MATCH = 'Passwords do not match. Please retype.'; +export const MAX_ALLOWED_UNUSED_ADDRS = + 'You cannot generate more than 20 consecutive unused addresses.'; +export const INVALID_AMOUNT = 'Invalid amount. Please retype.'; diff --git a/packages/e2e-tests/helpers/mock-dApp-webpage/cip30Errors.js b/packages/e2e-tests/helpers/mock-dApp-webpage/cip30Errors.js new file mode 100644 index 0000000000..94df15ec3e --- /dev/null +++ b/packages/e2e-tests/helpers/mock-dApp-webpage/cip30Errors.js @@ -0,0 +1,24 @@ +// erros codes from the CIP-30 https://cips.cardano.org/cips/cip30/#errortypes + +export const ApiErrorCode = Object.freeze({ + InvalidRequest: -1, + InternalError: -2, + Refused: -3, + AccountChange: -4, +}); + +export const DataSignErrorCode = Object.freeze({ + ProofGeneration: 1, + AddressNotPK: 2, + UserDeclined: 3, +}); + +export const TxSendErrorCode = Object.freeze({ + Refused: 1, + Failure: 2, +}); + +export const TxSignErrorCode = Object.freeze({ + ProofGeneration: 1, + UserDeclined: 2, +}); diff --git a/packages/e2e-tests/helpers/mock-dApp-webpage/dAppHelper.js b/packages/e2e-tests/helpers/mock-dApp-webpage/dAppHelper.js new file mode 100644 index 0000000000..33a17b474a --- /dev/null +++ b/packages/e2e-tests/helpers/mock-dApp-webpage/dAppHelper.js @@ -0,0 +1,89 @@ +import { expect } from 'chai'; +import DAppConnectWallet from '../../pages/dapp/dAppConnectWallet.page.js'; +import { mockDAppName, popupConnectorName } from '../windowManager.js'; +import { + bytesToHex, + getAddressFromBytes, + getAddressFromBech32, + getLargestFirstMultiAsset, + getTransactionOutput, + getTxBuilder, + getCslUtxos, +} from './dAppTxHelper.js'; + +/** + * The function to request non-authorised connection the a wallet. + * Also several checks are in here. + * @param {ThenableWebDriver} webdriver + * @param {Logger} logger + * @param {WindowManager} windowManager + * @param {MockDAppWebpage} mockedDApp + * @param {{name: string, plate: string, mnemonic: string}} testWalettObj + * @param {boolean} checkBalance + * @returns {Promise} + */ +export const connectNonAuth = async ( + webdriver, + logger, + windowManager, + mockedDApp, + testWalettObj, + checkBalance = true +) => { + await mockedDApp.requestNonAuthAccess(); + const dappConnectPage = new DAppConnectWallet(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappConnectPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappConnectPage.waitingConnectorIsReady(); + const allWallets = await dappConnectPage.getWallets(); + expect(allWallets.length).to.equal(1); + const walletInfo = await dappConnectPage.getWalletInfo(testWalettObj.plate); + if (checkBalance) { + expect(walletInfo.walletBalance, 'The wallet balance is different').to.equal( + testWalettObj.balance + ); + } + expect(walletInfo.walletName, `The wallet name should be "${testWalettObj.name}"`).to.equal( + testWalettObj.name + ); + expect(walletInfo.walletPlate, `The wallet plate should be "${testWalettObj.plate}"`).to.equal( + testWalettObj.plate + ); + await dappConnectPage.selectWallet(testWalettObj.plate); + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + const requestAccessResult = await mockedDApp.checkAccessRequest(); + expect(requestAccessResult.success, `Request access failed: ${requestAccessResult.errMsg}`).to.be + .true; + await mockedDApp.addOnDisconnect(); +}; + +/** + * Creates a simple unsigned Tx + * @param {string} receiverAddrBech32 - receiver address in Bech32 format + * @param {string} amount - amount to send in lovelaces. Example: "2000000" (2 ADA) + * @param {string} changeAddressHex - change address in HEX format + * @param {Array} utxosHex - UTxOs available in the wallet + * @returns {{uTxHex: string, txFee: string}} Unsigned Tx in HEX format + */ +export const buildSimpleTx = (receiverAddrBech32, amount, changeAddressHex, utxosHex) => { + const buildTransactionInput = { amount, address: receiverAddrBech32 }; + const txBuilder = getTxBuilder(); + const cslChangeAddress = getAddressFromBytes(changeAddressHex); + const cslOutputAddress = getAddressFromBech32(receiverAddrBech32); + const cslOutput = getTransactionOutput(cslOutputAddress, buildTransactionInput); + txBuilder.add_output(cslOutput); + const cslUtxos = getCslUtxos(utxosHex); + txBuilder.add_inputs_from(cslUtxos, getLargestFirstMultiAsset()); + txBuilder.add_change_if_needed(cslChangeAddress); + const cslUnsignedTransaction = txBuilder.build_tx(); + const txFee = cslUnsignedTransaction.body().fee().to_str(); + const cslUnsignedTxHex = bytesToHex(cslUnsignedTransaction.to_bytes()); + + return { + uTxHex: cslUnsignedTxHex, + txFee, + }; +}; diff --git a/packages/e2e-tests/helpers/mock-dApp-webpage/dAppTxHelper.js b/packages/e2e-tests/helpers/mock-dApp-webpage/dAppTxHelper.js new file mode 100644 index 0000000000..45530220ad --- /dev/null +++ b/packages/e2e-tests/helpers/mock-dApp-webpage/dAppTxHelper.js @@ -0,0 +1,216 @@ +import BigNumber from 'bignumber.js'; +import * as CSL from '@emurgo/cardano-serialization-lib-nodejs'; + +export function getTtl() { + const fullConfig = [ + { + StartAt: 0, + ChainNetworkId: '0', + ByronNetworkId: 1097911063, + GenesisDate: '1563999616000', + SlotsPerEpoch: 21600, + SlotDuration: 20, + }, + { + StartAt: 74, + SlotsPerEpoch: 432000, + SlotDuration: 1, + PerEpochPercentageReward: 69344, + LinearFee: { + coefficient: '44', + constant: '155381', + }, + MinimumUtxoVal: '1000000', + PoolDeposit: '500000000', + KeyDeposit: '2000000', + }, + ]; + const defaultTtlOffset = 7200; + const absSlotNumber = new BigNumber( + TimeUtils.timeToAbsoluteSlot(fullConfig, new Date(1649261533360)) + ); + + return absSlotNumber.plus(defaultTtlOffset).toNumber(); +} + +export function bytesToHex(bytes) { + return Buffer.from(bytes).toString('hex'); +} + +export function hexToBytes(hex) { + return Buffer.from(hex, 'hex'); +} + +export function cslMultiassetToJSONs(cslMultiasset) { + let assetValue = []; + const cslScriptHashes = cslMultiasset?.keys(); + for (let i = 0; i < cslScriptHashes?.len(); i++) { + const cslAssets = cslMultiasset.get(cslScriptHashes.get(i)); + const cslAssetNames = cslAssets.keys(); + const assetsJSON = {}; + for (let j = 0; j < cslAssetNames.len(); j++) { + const cslAssetName = cslAssetNames.get(j); + const policyId = bytesToHex(cslScriptHashes.get(i).to_bytes()); + const name = bytesToHex(cslAssetName.to_bytes()); + assetsJSON[`${policyId}.${name}`] = cslAssets.get(cslAssetName).to_str(); + } + assetValue.push(assetsJSON); + } + return assetValue; +} + +export const toInt = number => CSL.Int.new_i32(number); + +export const getTxBuilder = () => { + return CSL.TransactionBuilder.new( + CSL.TransactionBuilderConfigBuilder.new() + .fee_algo(CSL.LinearFee.new(CSL.BigNum.from_str('44'), CSL.BigNum.from_str('155381'))) + .coins_per_utxo_word(CSL.BigNum.from_str('34482')) + .pool_deposit(CSL.BigNum.from_str('500000000')) + .key_deposit(CSL.BigNum.from_str('2000000')) + .ex_unit_prices( + CSL.ExUnitPrices.new( + CSL.UnitInterval.new(CSL.BigNum.from_str('577'), CSL.BigNum.from_str('10000')), + CSL.UnitInterval.new(CSL.BigNum.from_str('721'), CSL.BigNum.from_str('10000000')) + ) + ) + .max_value_size(5000) + .max_tx_size(16384) + .build() + ); +}; + +export const getCslUtxo = utxoHex => CSL.TransactionUnspentOutput.from_bytes(hexToBytes(utxoHex)); + +export const getCslUtxos = utxosHex => { + const cslUtxos = CSL.TransactionUnspentOutputs.new(); + for (const utxoHex of utxosHex) { + const cslUtxo = getCslUtxo(utxoHex); + cslUtxos.add(cslUtxo); + } + + return cslUtxos; +}; + +export const getCslValue = valueHex => CSL.Value.from_bytes(Buffer.from(valueHex, 'hex')); + +export const getAmountInHex = amount => + Buffer.from(CSL.Value.new(CSL.BigNum.from_str(amount)).to_bytes()).toString('hex'); + +export const getLargestFirstMultiAsset = () => CSL.CoinSelectionStrategyCIP2.LargestFirstMultiAsset; + +export const getTransactionOutput = (cslOutputAddress, buildTransactionInput) => + CSL.TransactionOutput.new( + cslOutputAddress, + CSL.Value.new(CSL.BigNum.from_str(buildTransactionInput.amount)) + ); + +export const getAddressFromBytes = changeAddress => + CSL.Address.from_bytes(hexToBytes(changeAddress)); + +export const getAddressFromBech32 = addressBech32 => CSL.Address.from_bech32(addressBech32); + +export const getTransactionFromBytes = txHex => CSL.Transaction.from_bytes(hexToBytes(txHex)); + +export const getTransactionWitnessSetFromBytes = witnessHex => + CSL.TransactionWitnessSet.from_bytes(hexToBytes(witnessHex)); + +export const getSignedTransaction = (cslUnsignedTransaction, cslWitnessSet) => + CSL.Transaction.new( + cslUnsignedTransaction.body(), + cslWitnessSet, + cslUnsignedTransaction.auxiliary_data() + ); + +export const getPubKeyHash = usedAddress => + CSL.BaseAddress.from_address(usedAddress).payment_cred().to_keyhash(); + +export const getNativeScript = pubKeyHash => + CSL.NativeScript.new_script_pubkey(CSL.ScriptPubkey.new(pubKeyHash)); + +export const getTransactionOutputBuilder = cslChangeAddress => + CSL.TransactionOutputBuilder.new().with_address(cslChangeAddress).next(); + +export const getAssetName = assetNameString => + CSL.AssetName.new(Buffer.from(assetNameString, 'utf8')); + +export const addressToCbor = address => bytesToHex(CSL.Address.from_bech32(address).to_bytes()); + +export const addressesFromCborIfNeeded = addresses => + addresses.map(a => CSL.Address.from_bytes(hexToBytes(a)).to_bech32()); + +const reduceWasmMultiAsset = (multiAsset, reducer, initValue) => { + let result = initValue; + if (multiAsset) { + const policyIds = multiAsset.keys(); + for (let i = 0; i < policyIds.len(); i++) { + const policyId = policyIds.get(i); + const assets = multiAsset.get(policyId); + if (assets) { + const assetNames = assets.keys(); + for (let j = 0; j < assetNames.len(); j++) { + const name = assetNames.get(j); + const amount = assets.get(name); + const policyIdHex = bytesToHex(policyId.to_bytes()); + const encodedName = bytesToHex(name.name()); + result = reducer(result, { + policyId: policyIdHex, + name: encodedName, + amount: amount?.to_str(), + assetId: `${policyIdHex}.${encodedName}`, + }); + } + } + } + } + + return result; +}; + +export const mapCborUtxos = cborUtxos => { + const mappedUtxos = cborUtxos.map(hex => { + const u = getCslUtxo(hex); + const input = u.input(); + const output = u.output(); + const txHash = bytesToHex(input.transaction_id().to_bytes()); + const txIndex = input.index(); + const value = output.amount(); + return { + utxo_id: `${txHash}${txIndex}`, + tx_hash: txHash, + tx_index: txIndex, + receiver: output.address().to_bech32(), + amount: value.coin().to_str(), + assets: reduceWasmMultiAsset( + value.multiasset(), + (res, asset) => { + res.push(asset); + return res; + }, + [] + ), + }; + }); + + return mappedUtxos; +}; + +export const signTxWithCSL = (unsignedTxHex, witnessHex) => { + const cslUnsignedTransaction = getTransactionFromBytes(unsignedTxHex); + const cslWitnessSet = getTransactionWitnessSetFromBytes(witnessHex); + const cslSignedTransaction = getSignedTransaction(cslUnsignedTransaction, cslWitnessSet); + + return bytesToHex(cslSignedTransaction.to_bytes()); +}; + +export const getCSLPubKeyHash = pubKey => CSL.PublicKey.from_hex(pubKey).hash(); + +export const getDRepIDHexAndBechFromHex = pubDRepKey => { + const cslDRepIDHash = getCSLPubKeyHash(pubDRepKey); + const dRepIDHex = cslDRepIDHash.to_hex(); + const dRepIDBech32 = cslDRepIDHash.to_bech32('drep'); + return { + dRepIDHex, + dRepIDBech32, + }; +}; diff --git a/packages/e2e-tests/helpers/mock-dApp-webpage/mockServer.js b/packages/e2e-tests/helpers/mock-dApp-webpage/mockServer.js new file mode 100644 index 0000000000..5592db73a4 --- /dev/null +++ b/packages/e2e-tests/helpers/mock-dApp-webpage/mockServer.js @@ -0,0 +1,34 @@ +import jsonServerPkg from 'json-server'; +const { create, bodyParser, defaults } = jsonServerPkg; + +export const mockedServerPorts = 21000; +export const mockDAppUrl = `http://localhost:${mockedServerPorts}/mock-dapp`; + +export const getMockServer = settings => { + const middlewares = [...defaults({ logger: !!settings.outputLog }), bodyParser]; + + const server = create(); + console.log(`JSON Server Created`); + + server.use(middlewares); + + server.get('/mock-dapp', (req, res) => { + res.header('content-type', 'text/html'); + res.send(` + + + + MockDApp + + + + + `); + }); + + const mockServer = server.listen(mockedServerPorts, () => { + console.log(`JSON Server is running at http://localhost:${mockedServerPorts}`); + }); + + return mockServer; +}; diff --git a/packages/e2e-tests/helpers/mock-dApp-webpage/mockedDApp.js b/packages/e2e-tests/helpers/mock-dApp-webpage/mockedDApp.js new file mode 100644 index 0000000000..0d9c3b9b4b --- /dev/null +++ b/packages/e2e-tests/helpers/mock-dApp-webpage/mockedDApp.js @@ -0,0 +1,664 @@ +import { buildSimpleTx } from './dAppHelper.js'; +import { + addressToCbor, + addressesFromCborIfNeeded, + getAmountInHex, + getCSLPubKeyHash, + getCslValue, + getDRepIDHexAndBechFromHex, + mapCborUtxos, +} from './dAppTxHelper.js'; + +class MockDAppWebpageError extends Error {} +/** + * Controller of the mocked dApp + * @constructor + * @param {ThenableWebDriver} driver - The created selenium driver for a browser + * @param {Logger} logger - A simple logger for logging + */ +export class MockDAppWebpage { + constructor(driver, logger) { + this.driver = driver; + this.logger = logger; + } + + async _requestAccess(auth = false) { + this.logger.info( + `MockDApp::_requestAccess Requesting the access ${auth ? 'with' : 'without'} authentication` + ); + const scriptString = `window.accessRequestPromise = cardano.yoroi.enable(${ + auth ? '{requestIdentification: true}' : '' + })`; + await this.driver.executeScript(scriptString); + } + + async getYoroiObject() { + this.logger.info(`MockDApp::getYoroiObject Getting the yoroi object from the cardano object`); + const yoroiObjResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + const response = window.cardano.yoroi; + if (response) { + callback({ success: true, retValue: response, errMsg: null }); + } else { + callback({ success: false, retValue: response, errMsg: null }); + } + }); + this.logger.info( + `MockDApp::getYoroiObject The response is ${JSON.stringify(yoroiObjResponse, null, 2)}` + ); + return yoroiObjResponse; + } + + async getChangeAddress() { + this.logger.info(`MockDApp::getChangeAddress Getting the change address`); + const changeAddressResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api + .getChangeAddress() + .then(addresses => { + if (addresses.length === 0) { + callback({ success: false, retValue: null, errMsg: 'No change addresses' }); + } + callback({ success: true, retValue: addresses, errMsg: null }); + }) + .catch(error => { + callback({ success: false, retValue: null, errMsg: error }); + }); + }); + this.logger.info( + `MockDApp::getChangeAddress The response is ${JSON.stringify(changeAddressResponse, null, 2)}` + ); + return changeAddressResponse; + } + + async getRewardAddresses() { + this.logger.info(`MockDApp::getRewardAddresses Getting the change address`); + const rewardAddressesResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api + .getRewardAddresses() + .then(addresses => { + if (addresses.length === 0) { + callback({ success: false, retValue: null, errMsg: 'No reward addresses' }); + } + callback({ success: true, retValue: addresses, errMsg: null }); + }) + .catch(error => { + callback({ success: false, retValue: null, errMsg: error }); + }); + }); + this.logger.info( + `MockDApp::getRewardAddresses The response is ${JSON.stringify(rewardAddressesResponse, null, 2)}` + ); + return rewardAddressesResponse; + } + + async getUTXOs(amount, convert = true) { + this.logger.info(`MockDApp::getUTXOs Getting UTXOs. Amount: ${amount}`); + const getUTXOsResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api + .getUtxos(args[0]) + .then(utxosResponse => { + if (utxosResponse === null) { + callback({ success: true, retValue: null, errMsg: null }); + } else if (utxosResponse.length === 0) { + callback({ success: true, retValue: utxosResponse, errMsg: 'NO UTXOS' }); + } else { + callback({ success: true, retValue: utxosResponse, errMsg: null }); + } + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }, amount); + if (getUTXOsResponse.success && convert) { + const utxos = mapCborUtxos(getUTXOsResponse.retValue); + getUTXOsResponse.retValue = utxos; + } + this.logger.info( + `MockDApp::getUTXOs The walletUTXOsResponse: ${JSON.stringify(getUTXOsResponse, null, 2)}` + ); + return getUTXOsResponse; + } + + async requestUsedAddresses(page = 0, limit = 5) { + this.logger.info(`MockDApp::requestUsedAddresses Getting used addresses`); + await this.driver.executeScript( + (...args) => { + window.addressesPromise = window.api.getUsedAddresses({ page: args[0], limit: args[1] }); + }, + page, + limit + ); + } + + async requestUnusedAddresses() { + this.logger.info(`MockDApp::requestUnusedAddresses Getting unused addresses`); + await this.driver.executeScript(() => { + window.addressesPromise = window.api.getUnusedAddresses(); + }); + } + + async getAddresses() { + this.logger.info(`MockDApp::getAddresses Getting a result from window.addressesPromise`); + const addressesResult = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.addressesPromise + .then( + // eslint-disable-next-line promise/always-return + onSuccess => { + callback({ success: true, retValue: onSuccess, errMsg: null }); + }, + onReject => { + callback({ success: false, retValue: null, errMsg: onReject }); + } + ) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + if (addressesResult.success) { + addressesResult.retValue = addressesFromCborIfNeeded(addressesResult.retValue); + } + this.logger.info(`MockDApp::getAddresses Result: ${JSON.stringify(addressesResult, null, 2)}`); + return addressesResult; + } + + async requestNonAuthAccess() { + await this._requestAccess(); + } + + async requestAuthAccess() { + await this._requestAccess(true); + } + + async checkAccessRequest() { + this.logger.info(`MockDApp::checkAccessRequest Checking the access request`); + const accessResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.accessRequestPromise + .then( + // eslint-disable-next-line promise/always-return + api => { + window.api = api; + callback({ success: true, retValue: null, errMsg: null }); + }, + error => { + callback({ success: false, retValue: null, errMsg: error }); + } + ) + .catch(error => { + callback({ success: false, retValue: null, errMsg: error }); + }); + }); + this.logger.info( + `MockDApp::checkAccessRequest The access response: ${JSON.stringify(accessResponse, null, 2)}` + ); + + await this.driver.executeScript(accResp => { + if (accResp.success) { + window.walletConnected = true; + } else { + window.walletConnected = null; + } + }, accessResponse); + + if (accessResponse.success) { + this.logger.info(`MockDApp::checkAccessRequest window.walletConnected = true is set`); + } else { + this.logger.info(`MockDApp::checkAccessRequest window.walletConnected = null is set`); + } + + return accessResponse; + } + + async addOnDisconnect() { + this.logger.info(`MockDApp::addOnDisconnect Setting the onDisconnect hook`); + await this.driver.executeScript(() => { + window.api.experimental.onDisconnect(() => { + window.walletConnected = false; + }); + }); + this.logger.info(`MockDApp::addOnDisconnect onDisconnect hook is set`); + } + + async isEnabled() { + await this.driver.sleep(100); + this.logger.info(`MockDApp::isEnabled Checking is a wallet enabled`); + const isEnabledResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.cardano.yoroi + .isEnabled() + .then( + onSuccess => { + callback({ success: true, retValue: onSuccess, errMsg: null }); + }, + onReject => { + callback({ success: false, retValue: null, errMsg: onReject }); + } + ) + .catch(error => { + callback({ success: false, retValue: null, errMsg: error }); + }); + }); + this.logger.info( + `MockDApp::isEnabled The wallet isEnabled response: ${JSON.stringify(isEnabledResponse, null, 2)}` + ); + return isEnabledResponse; + } + + async getConnectionState() { + const states = []; + this.logger.info(`MockDApp::getConnectionState Getting the connection state`); + for (let i = 0; i < 10; i++) { + this.logger.info(`MockDApp::getConnectionState Try ${i + 1} to get the connection state`); + await this.driver.sleep(100); + const walletConnectedState = await this.driver.executeScript(`return window.walletConnected`); + this.logger.info( + `MockDApp::getConnectionState Try ${i + 1} the connection state is ${JSON.stringify(walletConnectedState)}` + ); + states.push(walletConnectedState); + } + const resultConnectionState = states.every(walletState => walletState === true); + this.logger.info( + `MockDApp::getConnectionState The connection state is ${JSON.stringify(resultConnectionState)}` + ); + return resultConnectionState; + } + + async getBalance() { + this.logger.info(`MockDApp::getBalance Getting the balance`); + const balanceResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api + .getBalance() + // eslint-disable-next-line promise/always-return + .then(balanceCborHex => { + callback({ success: true, retValue: balanceCborHex, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + this.logger.info( + `MockDApp::getBalance The response is ${JSON.stringify(balanceResponse, null, 2)}` + ); + if (balanceResponse.success) { + const value = getCslValue(balanceResponse.retValue); + const valueStr = value.coin().to_str(); + this.logger.info(`MockDApp::getBalance The balance is ${valueStr}`); + balanceResponse.retValue = valueStr; + } + return balanceResponse; + } + + async requestSigningTxHex(unsignedTxHex) { + this.logger.info( + `MockDApp::requestSigningTxHex Requesting signing the unsigned transaction "${unsignedTxHex}"` + ); + this.driver.executeScript(uTxHex => { + window.signTxPromise = window.api.signTx({ tx: uTxHex }); + }, unsignedTxHex); + } + + async requestSigningTx(amount, toAddress) { + this.logger.info( + `MockDApp::requestSigningTx Requesting signing the transaction: amount="${amount}", toAddress="${toAddress}"` + ); + + // the correct way is to request UTxOs for a required amount + // but currently we have this bug https://emurgo.atlassian.net/browse/YOEXT-932 + const UTXOsreposne = await this.getUTXOs(undefined, false); + this.logger.info( + `MockDApp::requestSigningTx The UTXOsreposne: ${JSON.stringify(UTXOsreposne, null, 2)}` + ); + if (!UTXOsreposne.success || UTXOsreposne.retValue.length === 0) { + this.logger.error( + `MockDApp::requestSigningTx The error is received in UTXOsreposne: ${UTXOsreposne.errMsg}` + ); + throw new MockDAppWebpageError(UTXOsreposne.errMsg); + } + + const changeAddressResponse = await this.getChangeAddress(); + if (!changeAddressResponse.success) { + this.logger.error( + `MockDApp::requestSigningTx The error is received: ${changeAddressResponse.errMsg}` + ); + throw new MockDAppWebpageError(changeAddressResponse.errMsg); + } + const changeAddressHex = changeAddressResponse.retValue; + const { uTxHex, txFee } = buildSimpleTx( + toAddress, + amount, + changeAddressHex, + UTXOsreposne.retValue + ); + + await this.requestSigningTxHex(uTxHex); + + return { uTxHex, txFee }; + } + + async getSigningTxResult() { + this.logger.info(`MockDApp::getSigningTxResult Getting signing result`); + const signingResult = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.signTxPromise + .then( + // eslint-disable-next-line promise/always-return + onSuccess => { + callback({ success: true, retValue: onSuccess, errMsg: null }); + }, + onReject => { + callback({ success: false, retValue: null, errMsg: onReject }); + } + ) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + this.logger.info( + `MockDApp::getSigningTxResult Signing result: ${JSON.stringify(signingResult, null, 2)}` + ); + return signingResult; + } + + async requestSigningData(payload) { + this.logger.info(`MockDApp::requestSigningData Requesting signing the data: data="${payload}"`); + + const addressesResponse = await this.getAddresses(); + + let address; + if (addressesResponse.retValue && addressesResponse.retValue.length > 0) { + address = addressesResponse.retValue[0]; + this.logger.info(`MockDApp::requestSigningData Using the address ${address}`); + } else { + this.logger.error( + `MockDApp::requestSigningData The error is received: No used or unused addresses` + ); + throw new MockDAppWebpageError('There are no addresses to proceed'); + } + + address = addressToCbor(address); + + this.logger.info(`MockDApp::requestSigningData Signing address: ${address}`); + + let payloadHex; + if (payload.startsWith('0x')) { + payloadHex = Buffer.from(payload.replace('^0x', ''), 'hex').toString('hex'); + } else { + payloadHex = Buffer.from(payload, 'utf8').toString('hex'); + } + this.logger.info(`MockDApp::requestSigningData Payload HEX: ${payloadHex}`); + + const scriptString = `window.signDataPromise = window.api.signData(${JSON.stringify(address)}, ${JSON.stringify( + payloadHex + )});`; + + this.driver.executeScript(scriptString); + } + + async getSigningDataResult() { + this.logger.info(`MockDApp::getSigningDataResult Getting signing data result`); + const signingResult = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.signDataPromise + .then( + onSuccess => { + return callback({ success: true, retValue: onSuccess, errMsg: null }); + }, + onReject => { + callback({ success: false, retValue: null, errMsg: onReject }); + } + ) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + this.logger.info( + `MockDApp::getSigningDataResult Signing data result: ${JSON.stringify(signingResult, null, 2)}` + ); + return signingResult; + } + + async getCollateral(amount) { + this.logger.info(`MockDApp::getCollateral Getting Collateral Utxos`); + + let convertedAmount = ''; + if (amount) { + convertedAmount = getAmountInHex(amount); + } + + const collateralResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + + window.api + .getCollateral(args[0]) + .then(utxosResponse => { + return callback({ success: true, retValue: utxosResponse, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }, convertedAmount); + if ( + collateralResponse.success && + collateralResponse.retValue != null && + collateralResponse.retValue.length !== 0 + ) { + const utxos = mapCborUtxos(collateralResponse.retValue); + collateralResponse.retValue = utxos; + this.logger.info( + `MockDApp::getCollateral response: ${JSON.stringify(collateralResponse, null, 2)}` + ); + return collateralResponse; + } + this.logger.error( + `MockDApp::getCollateral Something went wrong: ${JSON.stringify(collateralResponse.errMsg, null, 2)}` + ); + return collateralResponse; + } + + async requestCollateral(amount) { + this.logger.info(`MockDApp::requestCollateral Requesting collateral: data="${amount}"`); + const scriptString = `window.collateralPromise = window.api.getCollateral(${amount});`; + await this.driver.executeScript(scriptString); + } + + async getCollateralResult() { + this.logger.info(`MockDApp::getCollateralResult Getting collateral data result`); + const collateralResult = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.collateralPromise + .then(utxosResponse => { + return callback({ success: true, retValue: utxosResponse, errMsg: null }); + }) + .catch(error => { + return callback({ success: false, retValue: null, errMsg: error }); + }); + }); + if ( + collateralResult.success && + collateralResult.retValue != null && + collateralResult.retValue.length !== 0 + ) { + const utxos = mapCborUtxos(collateralResult.retValue); + return { success: true, retValue: utxos, errMsg: null }; + } + this.logger.error( + `MockDApp::getCollateralResult Something went wrong: ${JSON.stringify(collateralResult)}` + ); + return collateralResult; + } + + async submitTx(signedTxHex) { + this.logger.info(`MockDApp::submitTx Submitting Tx "${signedTxHex}"`); + const submitResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + const sigTxHex = args[0]; + window.api + .submitTx(sigTxHex) + .then(transactionId => { + callback({ success: true, retValue: transactionId, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }, signedTxHex); + this.logger.info( + `MockDApp::getBalance The response is ${JSON.stringify(submitResponse, null, 2)}` + ); + return submitResponse; + } + + async getNetworkId() { + this.logger.info(`MockDApp::getNetworkId Getting the network Id`); + const networkIdResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api + .getNetworkId() + .then(networkId => { + callback({ success: true, retValue: networkId, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + this.logger.info( + `MockDApp::getNetworkId The response is ${JSON.stringify(networkIdResponse, null, 2)}` + ); + return networkIdResponse; + } + + async getExtensions() { + this.logger.info(`MockDApp::getExtensions Getting the network Id`); + const extensionsResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api + .getExtensions() + .then(extensions => { + callback({ success: true, retValue: extensions, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + this.logger.info( + `MockDApp::getExtensions The response is ${JSON.stringify(extensionsResponse, null, 2)}` + ); + return extensionsResponse; + } + + async getPubDRepKey(convert = false) { + this.logger.info(`MockDApp::getPubDRepKey Getting the wallet public DRep key`); + const pubDRepKeyResponse = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api.cip95 + .getPubDRepKey() + .then(pubDRepKey => { + callback({ success: true, retValue: pubDRepKey, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + if (pubDRepKeyResponse.success && convert) { + pubDRepKeyResponse.retValue = getDRepIDHexAndBechFromHex(pubDRepKeyResponse.retValue); + } + this.logger.info( + `MockDApp::getPubDRepKey The response is ${JSON.stringify(pubDRepKeyResponse, null, 2)}` + ); + return pubDRepKeyResponse; + } + + async getRegisteredPubStakeKeys(convert = false) { + this.logger.info(`MockDApp::getRegisteredPubStakeKeys Getting registered public stake keys`); + const response = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api.cip95 + .getRegisteredPubStakeKeys() + .then(registeredPubStakeKeys => { + callback({ success: true, retValue: registeredPubStakeKeys, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + if (response.success && response.retValue.length > 0 && convert) { + const regPubStakeKey = response.retValue[0]; + response.retValue = [getCSLPubKeyHash(regPubStakeKey).to_hex()]; + } + this.logger.info( + `MockDApp::getRegisteredPubStakeKeys The response is ${JSON.stringify(response, null, 2)}` + ); + return response; + } + + async getUnregisteredPubStakeKeys(convert = false) { + this.logger.info( + `MockDApp::getUnregisteredPubStakeKeys Getting unregistered public stake keys` + ); + const response = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.api.cip95 + .getUnregisteredPubStakeKeys() + .then(unregisteredPubStakeKeys => { + callback({ success: true, retValue: unregisteredPubStakeKeys, errMsg: null }); + }) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + if (response.success && response.retValue.length > 0 && convert) { + const unregPubStakeKey = response.retValue[0]; + response.retValue = [getCSLPubKeyHash(unregPubStakeKey).to_hex()]; + } + this.logger.info( + `MockDApp::getUnregisteredPubStakeKeys The response is ${JSON.stringify(response, null, 2)}` + ); + return response; + } + + async requestSigningDataCIP95(address, payload) { + this.logger.info(`MockDApp::requestSigningDataCIP95 Getting unregistered public stake keys`); + this.logger.info(`MockDApp::requestSigningDataCIP95 Signing address: ${address}`); + + let payloadHex; + if (payload.startsWith('0x')) { + payloadHex = Buffer.from(payload.replace('^0x', ''), 'hex').toString('hex'); + } else { + payloadHex = Buffer.from(payload, 'utf8').toString('hex'); + } + this.logger.info(`MockDApp::requestSigningDataCIP95 Payload HEX: ${payloadHex}`); + + const scriptString = `window.signDataCIP95Promise = window.api.cip95.signData(${JSON.stringify( + address + )}, ${JSON.stringify(payloadHex)});`; + + this.driver.executeScript(scriptString); + } + + async getSigningDataCIP95Result() { + this.logger.info(`MockDApp::getSigningDataResult Getting signing data result`); + const signingResult = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.signDataCIP95Promise + .then( + onSuccess => { + return callback({ success: true, retValue: onSuccess, errMsg: null }); + }, + onReject => { + callback({ success: false, retValue: null, errMsg: onReject }); + } + ) + .catch(err => { + callback({ success: false, retValue: null, errMsg: err }); + }); + }); + this.logger.info( + `MockDApp::getSigningDataResult Signing data result: ${JSON.stringify(signingResult, null, 2)}` + ); + return signingResult; + } +} diff --git a/packages/e2e-tests/helpers/restoreWalletHelper.js b/packages/e2e-tests/helpers/restoreWalletHelper.js new file mode 100644 index 0000000000..50d5439c50 --- /dev/null +++ b/packages/e2e-tests/helpers/restoreWalletHelper.js @@ -0,0 +1,98 @@ +import AddNewWallet from '../pages/addNewWallet.page.js'; +import RestoreWalletStepOne from '../pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js'; +import RestoreWalletStepTwo from '../pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js'; +import WalletDetails from '../pages/newWalletPages/walletDetails.page.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { getPassword } from '../helpers/constants.js'; +import { expect } from 'chai'; +import CreateWalletStepOne from '../pages/newWalletPages/createWalletSteps/createWalletStepOne.page.js'; +import CreateWalletStepTwo from '../pages/newWalletPages/createWalletSteps/createWalletStepTwo.page.js'; +import CreateWalletStepThree from '../pages/newWalletPages/createWalletSteps/createWalletStepThree.page.js'; +import { walletNameShortener } from '../utils/utils.js'; + +export const restoreWallet = async (webdriver, logger, testWallet, shouldBeModalWindow = true) => { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectRestoreWallet(); + const restoreWalletStepOnePage = new RestoreWalletStepOne(webdriver, logger); + await restoreWalletStepOnePage.selectFifteenWordWallet(); + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + await restoreWalletStepTwoPage.enterRecoveryPhrase15Words(testWallet.mnemonic); + await restoreWalletStepTwoPage.sleep(100); + await restoreWalletStepTwoPage.continue(); + const walletDetailsPage = new WalletDetails(webdriver, logger); + if (shouldBeModalWindow) { + await walletDetailsPage.closeTipsModalWindow(); + } + const walletPassword = getPassword(); + await walletDetailsPage.enterWalletName(testWallet.name); + await walletDetailsPage.enterWalletPassword(walletPassword); + await walletDetailsPage.repeatWalletPassword(walletPassword); + const walletPlate = await walletDetailsPage.getWalletPlate(); + expect(walletPlate, 'Wallet plate is different from expected').to.equal(testWallet.plate); + await walletDetailsPage.continue(); + await checkCorrectWalletIsDisplayed(webdriver, logger, testWallet, shouldBeModalWindow); +}; + +export const checkCorrectWalletIsDisplayed = async ( + webdriver, + logger, + testWallet, + shouldBeModalWindow = true +) => { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + if (shouldBeModalWindow) { + await transactionsPage.closeUpdatesModalWindow(); + } + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + const shortedWalletName = walletNameShortener(testWallet.name); + expect(walletInfo.name, `The wallet name should be "${testWallet.name}"`).to.equal( + shortedWalletName + ); + expect(walletInfo.plate, `The wallet plate should be "${testWallet.plate}"`).to.equal( + testWallet.plate + ); +}; + +export const createWallet = async (webdriver, logger, testWalletName) => { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectCreateNewWallet(); + const createWalletStepOnePage = new CreateWalletStepOne(webdriver, logger); + await createWalletStepOnePage.continue(); + const createWalletStepTwoPage = new CreateWalletStepTwo(webdriver, logger); + await createWalletStepTwoPage.closeTipsModalWindow(); + await createWalletStepTwoPage.toggleVisibilityOfRecoveryPhrase(); + await createWalletStepTwoPage.saveRecoveryPhrase(); + await createWalletStepTwoPage.continue(); + const createWalletStepThreePage = new CreateWalletStepThree(webdriver, logger); + const recoveryPhrase = await createWalletStepThreePage.getRecoveryPhraseFromStorage(); + await createWalletStepThreePage.enterRecoveryPhrase(recoveryPhrase); + await createWalletStepThreePage.continue(); + const walletDetailsPage = new WalletDetails(webdriver, logger); + await walletDetailsPage.closeTipsModalWindow(); + const walletPassword = getPassword(); + await walletDetailsPage.enterWalletName(testWalletName); + await walletDetailsPage.enterWalletPassword(walletPassword); + await walletDetailsPage.repeatWalletPassword(walletPassword); + const walletPlate = await walletDetailsPage.getWalletPlate(); + await walletDetailsPage.saveToLocalStorage('walletPlate', walletPlate); + await walletDetailsPage.continue(); + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + await transactionsPage.closeUpdatesModalWindow(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed).to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + expect(walletInfo.balance, 'The wallet balance should be 0 (zero)').to.equal(0); + const expWalletPlate = await transactionsPage.getFromLocalStorage('walletPlate'); + const shortedWalletName = walletNameShortener(testWalletName); + expect(walletInfo.name, `The wallet name should be "${testWalletName}"`).to.equal( + shortedWalletName + ); + expect(walletInfo.plate, `The wallet plate should be "${expWalletPlate}"`).to.equal( + expWalletPlate + ); + return walletInfo; +}; diff --git a/packages/e2e-tests/helpers/timeConstants.js b/packages/e2e-tests/helpers/timeConstants.js new file mode 100644 index 0000000000..71682c8342 --- /dev/null +++ b/packages/e2e-tests/helpers/timeConstants.js @@ -0,0 +1,12 @@ +export const quarterSecond = 250; +export const halfSecond = 500; +export const oneSecond = 1000; +export const defaultRepeatPeriod = oneSecond; +export const twoSeconds = 2 * oneSecond; +export const threeSeconds = 3 * oneSecond; +export const fiveSeconds = 5 * oneSecond; +export const defaultWaitTimeout = 10 * oneSecond; +export const quarterMinute = 15 * oneSecond; +export const halfMinute = 30 * oneSecond; +export const oneMinute = 60 * oneSecond; +export const fiveMinute = 5 * oneMinute; diff --git a/packages/e2e-tests/helpers/trezorEmulatorController.js b/packages/e2e-tests/helpers/trezorEmulatorController.js new file mode 100644 index 0000000000..976d9513fb --- /dev/null +++ b/packages/e2e-tests/helpers/trezorEmulatorController.js @@ -0,0 +1,244 @@ +import ws from 'ws'; +const { WebSocket } = ws; + +class TrezorEmulatorControllerError extends Error {} + +export class TrezorEmulatorController { + websocketUrl = 'ws://localhost:9001/'; + id = 0; + + constructor(logger) { + this.logger = logger; + this.ws = null; + } + + _customPromise(json, functionName) { + return new Promise((resolve, reject) => { + this._send(json, functionName); + this.ws.onmessage = event => { + const dataObject = this.handleMessage(event); + this.logger.info( + `${functionName}: The response is received: ${JSON.stringify(dataObject)}` + ); + resolve(dataObject); + }; + this.ws.onerror = err => { + this.logger.error(`${functionName}: The error is received: ${err}`); + reject(this.ws); + }; + }); + } + + _innerConnect(websocketUrl, logger) { + return new Promise((resolve, reject) => { + const server = new WebSocket(websocketUrl); + server.onopen = function () { + logger.info(`_innerConnect: Connection is open`); + resolve(server); + }; + server.onerror = function (err) { + logger.error(`_innerConnect: Connection is rejected. Reason: ${JSON.stringify(err)}`); + reject(err); + }; + }); + } + + async connect() { + this.logger.info(`connect: Connecting to websocket ${this.websocketUrl}`); + this.ws = await this._innerConnect(this.websocketUrl, this.logger); + + return this; + } + + handleMessage(event) { + if (!event.data || typeof event.data !== 'string') { + this.logger.error(`handleMessage: Response received without proper data: ${event.data}`); + throw new TrezorEmulatorControllerError( + `Response received without proper data: ${event.data}` + ); + } + + const dataObject = JSON.parse(event.data); + + if ('background_check' in dataObject && dataObject.background_check) { + this.logger.info(`handleMessage: Background check`); + return dataObject; + } + + if ('success' in dataObject) { + if (dataObject.success) { + this.logger.info(`handleMessage: The response is successful`); + } else { + this.logger.error(`handleMessage: The response is fail`); + } + } + + return dataObject; + } + + _send(json, functionName) { + const tempId = this.id; + const requestToSend = JSON.stringify( + Object.assign(json, { + tempId, + }) + ); + this.ws.send(requestToSend); + this.id++; + this.logger.info(`${functionName}._send: Request sent: ${requestToSend}`); + } + + _sendOnBackground(json) { + this.ws.send(JSON.stringify(json)); + } + + closeWsConnection() { + this.logger.info(`closeWsConnection: Closing the connection`); + this.ws.close(); + this.logger.info(`closeWsConnection: The connection is closed`); + } + + emulatorStart() { + const requestJson = { + type: 'emulator-start', + version: '2-master', + }; + + return this._customPromise(requestJson, 'emulatorStart'); + } + + emulatorWipe() { + const requestJson = { + type: 'emulator-wipe', + }; + + return this._customPromise(requestJson, 'emulatorWipe'); + } + + emulatorResetDevice() { + const requestJson = { + type: 'emulator-reset-device', + }; + + return this._customPromise(requestJson, 'emulatorResetDevice'); + } + + emulatorResetDeviceShamir() { + const requestJson = { + type: 'emulator-reset-device', + use_shamir: true, + }; + + return this._customPromise(requestJson, 'emulatorResetDeviceShamir'); + } + + emulatorSetup(mnemonic) { + const requestJson = { + type: 'emulator-setup', + mnemonic: + mnemonic || + 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about', + pin: '', + passphrase_protection: false, + label: 'Emulator', + }; + + return this._customPromise(requestJson, 'emulatorSetup'); + } + + emulatorPressYes() { + const requestJson = { + type: 'emulator-press-yes', + }; + + return this._customPromise(requestJson, 'emulatorPressYes'); + } + + emulatorPressNo() { + const requestJson = { + type: 'emulator-press-no', + }; + + return this._customPromise(requestJson, 'emulatorPressNo'); + } + + emulatorAllowUnsafe() { + const requestJson = { + type: 'emulator-allow-unsafe-paths', + }; + + return this._customPromise(requestJson, 'emulatorAllowUnsafe'); + } + + emulatorStop() { + const requestJson = { + type: 'emulator-stop', + }; + + return this._customPromise(requestJson, 'emulatorStop'); + } + + bridgeStart(bridgeVersion) { + const requestJson = { + type: 'bridge-start', + version: bridgeVersion || '2.0.31', + }; + + return this._customPromise(requestJson, 'bridgeStart'); + } + + bridgeStop() { + const requestJson = { + type: 'bridge-stop', + }; + + return this._customPromise(requestJson, 'bridgeStop'); + } + + exit() { + return new Promise((resolve, reject) => { + this._send( + { + type: 'exit', + }, + 'exit' + ); + this.ws.onclose = () => { + resolve(this.ws); + }; + this.ws.onerror = err => { + this.logger.error(`exit: The error is received:${err}`); + reject(this.ws); + }; + }); + } + + ping() { + const requestJson = { + type: 'ping', + }; + + return this._customPromise(requestJson, 'ping'); + } + + getLastEvent() { + return new Promise((resolve, reject) => { + this.ws.onmessage = event => { + const dataObject = this.handleMessage(event); + resolve(dataObject); + }; + this.ws.onerror = err => { + this.logger.error(`getLastEvent: The error is received:${err}`); + reject(this.ws); + }; + }); + } + + readAndConfirmMnemonic() { + const requestJson = { + type: 'emulator-read-and-confirm-mnemonic', + }; + + return this._customPromise(requestJson, 'readAndConfirmMnemonic'); + } +} diff --git a/packages/e2e-tests/helpers/trezorHelper.js b/packages/e2e-tests/helpers/trezorHelper.js new file mode 100644 index 0000000000..f01677f697 --- /dev/null +++ b/packages/e2e-tests/helpers/trezorHelper.js @@ -0,0 +1,22 @@ +import { expect } from 'chai'; + +export const runAndPrepareTrezor = async (trezorController, trezorMnemonic) => { + await trezorController.connect(); + const result = await trezorController.getLastEvent(); + expect(result.type).to.be.equal('client', 'Something is wrong with connection'); + + const pingResponse = await trezorController.ping(); + expect(pingResponse.success, 'Ping request is failed').to.be.true; + + const bridgeStartResponse = await trezorController.bridgeStart(); + expect(bridgeStartResponse.success, 'bridge-start request is failed').to.be.true; + + const emulatorStartResponse = await trezorController.emulatorStart(); + expect(emulatorStartResponse.success, 'emulator-start request is failed').to.be.true; + + const emulatorWipeResponse = await trezorController.emulatorWipe(); + expect(emulatorWipeResponse.success, 'emulator-wipe request is failed').to.be.true; + + const emulatorSetupResponse = await trezorController.emulatorSetup(trezorMnemonic); + expect(emulatorSetupResponse.success, 'emulator-setup request is failed').to.be.true; +}; diff --git a/packages/e2e-tests/helpers/wallet-dbSnapshots/general.chromeLocalStorage.json b/packages/e2e-tests/helpers/wallet-dbSnapshots/general.chromeLocalStorage.json new file mode 100644 index 0000000000..4bb5a1fb97 --- /dev/null +++ b/packages/e2e-tests/helpers/wallet-dbSnapshots/general.chromeLocalStorage.json @@ -0,0 +1,4 @@ +{ + "IS_REVAMP_THEME_ANNOUNCED": "true", + "mainnet-ACCEPTED_TOS_VERSION": "2" +} diff --git a/packages/e2e-tests/helpers/wallet-dbSnapshots/general.localStorage.json b/packages/e2e-tests/helpers/wallet-dbSnapshots/general.localStorage.json new file mode 100644 index 0000000000..59864e0e69 --- /dev/null +++ b/packages/e2e-tests/helpers/wallet-dbSnapshots/general.localStorage.json @@ -0,0 +1,5 @@ +{ + "dialog__SAVE_RECOVERY_PHRASE": true, + "dialog__WALLET_NAME_AND_PASSWORD": true, + "dialog__WALLET_CHECKSUM": true +} diff --git a/packages/e2e-tests/helpers/wallet-dbSnapshots/testWallet1.indexedDB.json b/packages/e2e-tests/helpers/wallet-dbSnapshots/testWallet1.indexedDB.json new file mode 100644 index 0000000000..53651af958 --- /dev/null +++ b/packages/e2e-tests/helpers/wallet-dbSnapshots/testWallet1.indexedDB.json @@ -0,0 +1,2297 @@ +{ + "AccountingTransactionInput": [], + "AccountingTransactionOutput": [], + "Address": [ + { + "id": 241, + "value": { + "AddressId": 1, + "Digest": 6.380052592693652e179, + "Hash": "614eb5d5c69ae2abc533d44d615ea0f76f4f32317b2afde1592f7f9a48", + "IsUsed": true, + "Type": 3 + } + }, + { + "id": 243, + "value": { + "AddressId": 2, + "Digest": 7.229922786045467e37, + "Hash": "014eb5d5c69ae2abc533d44d615ea0f76f4f32317b2afde1592f7f9a483522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": true, + "Type": 1 + } + }, + { + "id": 247, + "value": { + "AddressId": 3, + "Digest": -8.232144619018239e153, + "Hash": "617c263f54c68fa8262ba376b32d66aff6bf2b8b2a90ae89cc47ce32ee", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 249, + "value": { + "AddressId": 4, + "Digest": -1.7536720553897433e153, + "Hash": "017c263f54c68fa8262ba376b32d66aff6bf2b8b2a90ae89cc47ce32ee3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 253, + "value": { + "AddressId": 5, + "Digest": 5.047504275363617e131, + "Hash": "6152608b31a9ec714181a4ebe82ba9581905031f565b6cb3fc653aa495", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 255, + "value": { + "AddressId": 6, + "Digest": 6.830081758857871e-107, + "Hash": "0152608b31a9ec714181a4ebe82ba9581905031f565b6cb3fc653aa4953522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 259, + "value": { + "AddressId": 7, + "Digest": 4.485845990792551e-138, + "Hash": "618b5a52656d5fb7b9f84370819be274c15c398123ccd893b59dbe0679", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 261, + "value": { + "AddressId": 8, + "Digest": 6.8122010483248995e25, + "Hash": "018b5a52656d5fb7b9f84370819be274c15c398123ccd893b59dbe06793522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 265, + "value": { + "AddressId": 9, + "Digest": 2.0221789718178016e229, + "Hash": "61c7a86cb39d94b7ce42ad1dd5c33890bbe8d9ddf057477aae7a57515a", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 267, + "value": { + "AddressId": 10, + "Digest": 2.550450492151412e-286, + "Hash": "01c7a86cb39d94b7ce42ad1dd5c33890bbe8d9ddf057477aae7a57515a3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 271, + "value": { + "AddressId": 11, + "Digest": -5.3934969176723165e-205, + "Hash": "61b7223dd5917a869240f78ab1f674165afc6c4745d06508cd84b37942", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 273, + "value": { + "AddressId": 12, + "Digest": 5.101364490555232e178, + "Hash": "01b7223dd5917a869240f78ab1f674165afc6c4745d06508cd84b379423522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 277, + "value": { + "AddressId": 13, + "Digest": 2.844517846040889e239, + "Hash": "61c52266eb79f6c6599534f2370ef4a36ce678c759dee76b67eca150d3", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 279, + "value": { + "AddressId": 14, + "Digest": 1.341631616271896e55, + "Hash": "01c52266eb79f6c6599534f2370ef4a36ce678c759dee76b67eca150d33522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 283, + "value": { + "AddressId": 15, + "Digest": -1.1344146685195727e-199, + "Hash": "612e07f95d6ae57bb47883d45d22d49fa16f80461599e8bccd0049ce6d", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 285, + "value": { + "AddressId": 16, + "Digest": -1.0558856033234728e-282, + "Hash": "012e07f95d6ae57bb47883d45d22d49fa16f80461599e8bccd0049ce6d3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 289, + "value": { + "AddressId": 17, + "Digest": 1.2938570044771769e116, + "Hash": "61109dca29894d4f6a58d2952d4340262831a5e46d345d9ff00b5343b0", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 291, + "value": { + "AddressId": 18, + "Digest": 9.571382260264633e-269, + "Hash": "01109dca29894d4f6a58d2952d4340262831a5e46d345d9ff00b5343b03522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 295, + "value": { + "AddressId": 19, + "Digest": -2.977680641696503e95, + "Hash": "61e351ff2e3e1e97c3be9908e68667d07bc3764514400e1f5f7d91d9bd", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 297, + "value": { + "AddressId": 20, + "Digest": 3.5467558778788136e-112, + "Hash": "01e351ff2e3e1e97c3be9908e68667d07bc3764514400e1f5f7d91d9bd3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 301, + "value": { + "AddressId": 21, + "Digest": 2.111949471498054e220, + "Hash": "61a388849bdf01e3cd840a4c66e7ce955fe9c54562fcc7a8741e826b87", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 303, + "value": { + "AddressId": 22, + "Digest": 1.7247745643819718e-37, + "Hash": "01a388849bdf01e3cd840a4c66e7ce955fe9c54562fcc7a8741e826b873522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 307, + "value": { + "AddressId": 23, + "Digest": -5.40318439232988e279, + "Hash": "6163af202d3a1a3ed9b403049d6e2650e5b93c040620a2fddc5f9abc46", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 309, + "value": { + "AddressId": 24, + "Digest": -1.1393402895433074e86, + "Hash": "0163af202d3a1a3ed9b403049d6e2650e5b93c040620a2fddc5f9abc463522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 313, + "value": { + "AddressId": 25, + "Digest": -3.786472492277643e269, + "Hash": "617d1922897a2312107cb17d531fad83c3c3c264fa7837a35c1c4a42c5", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 315, + "value": { + "AddressId": 26, + "Digest": -1.0391515953566685e-277, + "Hash": "017d1922897a2312107cb17d531fad83c3c3c264fa7837a35c1c4a42c53522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 319, + "value": { + "AddressId": 27, + "Digest": 3.6895997735203905e-50, + "Hash": "6124f57df2c3afc4cb19ba9d33e0ad8e8a6b7072aedc332806be517cb7", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 321, + "value": { + "AddressId": 28, + "Digest": 1.045830883351703e84, + "Hash": "0124f57df2c3afc4cb19ba9d33e0ad8e8a6b7072aedc332806be517cb73522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 325, + "value": { + "AddressId": 29, + "Digest": -9.63785455780804e135, + "Hash": "61f3440d5a9dac2559efe49fd44d6bf0feab120e82387f427938441449", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 327, + "value": { + "AddressId": 30, + "Digest": 1.6020837380194585e-105, + "Hash": "01f3440d5a9dac2559efe49fd44d6bf0feab120e82387f4279384414493522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 331, + "value": { + "AddressId": 31, + "Digest": -9.079459924596478e-54, + "Hash": "6159a7c321146b06e4d2dee4b2b2216c77d78ad617705aaf11bb4c11d6", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 333, + "value": { + "AddressId": 32, + "Digest": 2.6874536696483203e97, + "Hash": "0159a7c321146b06e4d2dee4b2b2216c77d78ad617705aaf11bb4c11d63522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 337, + "value": { + "AddressId": 33, + "Digest": -1.642140329507171e108, + "Hash": "6103ac559eae4ddf3a052ba8e0bd392ad439546b02b1a64bbe3bf13dcd", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 339, + "value": { + "AddressId": 34, + "Digest": -1.2642643213372364e-188, + "Hash": "0103ac559eae4ddf3a052ba8e0bd392ad439546b02b1a64bbe3bf13dcd3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 343, + "value": { + "AddressId": 35, + "Digest": 1.0024224248301637e74, + "Hash": "616da6e93617a60a110d00ce7d821d910a741787628e55724bd8a8be95", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 345, + "value": { + "AddressId": 36, + "Digest": -4.105647642042466e287, + "Hash": "016da6e93617a60a110d00ce7d821d910a741787628e55724bd8a8be953522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 349, + "value": { + "AddressId": 37, + "Digest": 3.8994874645751513e24, + "Hash": "61aadec732abb4da2f4c3e813617c40813da1526d6fe622f87304b7211", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 351, + "value": { + "AddressId": 38, + "Digest": 1.0869978832987863e30, + "Hash": "01aadec732abb4da2f4c3e813617c40813da1526d6fe622f87304b72113522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 355, + "value": { + "AddressId": 39, + "Digest": 6.680112625201024e-157, + "Hash": "61d114034e10adf788262242af4cea7149f2a664cb44d4a08a65c93f73", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 357, + "value": { + "AddressId": 40, + "Digest": -9.342753509994841e-110, + "Hash": "01d114034e10adf788262242af4cea7149f2a664cb44d4a08a65c93f733522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 363, + "value": { + "AddressId": 41, + "Digest": -1.738443432070536e-275, + "Hash": "614392a2da496fcbdf4d33ce59af500fd4a3672b9098c963e51cbb2953", + "IsUsed": true, + "Type": 3 + } + }, + { + "id": 365, + "value": { + "AddressId": 42, + "Digest": 147928575774080960000, + "Hash": "014392a2da496fcbdf4d33ce59af500fd4a3672b9098c963e51cbb29533522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": true, + "Type": 1 + } + }, + { + "id": 369, + "value": { + "AddressId": 43, + "Digest": 2.6578588702659997e-224, + "Hash": "6111a13c41942a9ebfc74f3ee64c6f2dfb1a2ae0021c0d008232e44806", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 371, + "value": { + "AddressId": 44, + "Digest": -3.5312576323729524e-183, + "Hash": "0111a13c41942a9ebfc74f3ee64c6f2dfb1a2ae0021c0d008232e448063522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 375, + "value": { + "AddressId": 45, + "Digest": -4.5657133864069804e-282, + "Hash": "61216e76cd8e778650e2c62babbd2ffcbef14d59726d59decececc91f3", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 377, + "value": { + "AddressId": 46, + "Digest": -4.677918786370773e-131, + "Hash": "01216e76cd8e778650e2c62babbd2ffcbef14d59726d59decececc91f33522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 381, + "value": { + "AddressId": 47, + "Digest": 1.1209511401034808e210, + "Hash": "61da521f8226a768cf03f8c8aae1ac8cb7f47a18a18a9031f6ffa8b5cb", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 383, + "value": { + "AddressId": 48, + "Digest": -1.6056533421094645e-249, + "Hash": "01da521f8226a768cf03f8c8aae1ac8cb7f47a18a18a9031f6ffa8b5cb3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 387, + "value": { + "AddressId": 49, + "Digest": -1.0644984427448559e245, + "Hash": "619712d62dda90d97044735200e42c9467d7c3febebc3a777c6d2f415a", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 389, + "value": { + "AddressId": 50, + "Digest": -1.0841293954569818e160, + "Hash": "019712d62dda90d97044735200e42c9467d7c3febebc3a777c6d2f415a3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 393, + "value": { + "AddressId": 51, + "Digest": -5.269376063154755e-290, + "Hash": "613758b8ffec90ae73a50c6b5bcf2b91a578afccb022586542adf9a353", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 395, + "value": { + "AddressId": 52, + "Digest": -1.36734901430298e-261, + "Hash": "013758b8ffec90ae73a50c6b5bcf2b91a578afccb022586542adf9a3533522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 399, + "value": { + "AddressId": 53, + "Digest": -7.791922131646468e-199, + "Hash": "61458c889cdff3e85ef206afc87434289c7648b90a8d99156eaaeb16f3", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 401, + "value": { + "AddressId": 54, + "Digest": -3.707416416635442e-103, + "Hash": "01458c889cdff3e85ef206afc87434289c7648b90a8d99156eaaeb16f33522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 405, + "value": { + "AddressId": 55, + "Digest": -5.58019595358433e140, + "Hash": "612b06586d435e35bb63b334b2f5c85ffdcc7a8dfd1bef0920da30bf76", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 407, + "value": { + "AddressId": 56, + "Digest": -1.1725614267644176e151, + "Hash": "012b06586d435e35bb63b334b2f5c85ffdcc7a8dfd1bef0920da30bf763522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 411, + "value": { + "AddressId": 57, + "Digest": 3.312158740927611e174, + "Hash": "6106c5b72183c0846e328614d0b9655dff0e414dd1e10df299116230d2", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 413, + "value": { + "AddressId": 58, + "Digest": 4.377991456109467e-52, + "Hash": "0106c5b72183c0846e328614d0b9655dff0e414dd1e10df299116230d23522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 417, + "value": { + "AddressId": 59, + "Digest": 1.7184970971608928e-211, + "Hash": "612f9e5fc54d46ed8538ed89846a0d64a5b7119034ada76f8b660cd49e", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 419, + "value": { + "AddressId": 60, + "Digest": 6.752711547512455e-66, + "Hash": "012f9e5fc54d46ed8538ed89846a0d64a5b7119034ada76f8b660cd49e3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 423, + "value": { + "AddressId": 61, + "Digest": 5.125346459754799e72, + "Hash": "614c50a95703a710d6d759e993f1019d9db489c4d72e38110d412c2584", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 425, + "value": { + "AddressId": 62, + "Digest": -1.3733628237722204e202, + "Hash": "014c50a95703a710d6d759e993f1019d9db489c4d72e38110d412c25843522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 429, + "value": { + "AddressId": 63, + "Digest": 1.2020976238853324e193, + "Hash": "616f77ed384190886c95494159098793d352b527726d539d11311b6f7f", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 431, + "value": { + "AddressId": 64, + "Digest": 1.4341807314529186e285, + "Hash": "016f77ed384190886c95494159098793d352b527726d539d11311b6f7f3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 435, + "value": { + "AddressId": 65, + "Digest": -6.099303498554604e116, + "Hash": "61dbf8357785da739695d7f0c90d559ab432f7c96956cda11dc2c9fd12", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 437, + "value": { + "AddressId": 66, + "Digest": 4.941660234493613e151, + "Hash": "01dbf8357785da739695d7f0c90d559ab432f7c96956cda11dc2c9fd123522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 441, + "value": { + "AddressId": 67, + "Digest": 6.980534651334454e-30, + "Hash": "61d4ec8ff0df21d83c9e49c7a0645d71180de138dc4fb8a990cfb39124", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 443, + "value": { + "AddressId": 68, + "Digest": 2.886222830597155e-177, + "Hash": "01d4ec8ff0df21d83c9e49c7a0645d71180de138dc4fb8a990cfb391243522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 447, + "value": { + "AddressId": 69, + "Digest": -1.6114518712146622e-302, + "Hash": "611c727ca88d2805864dcfeba3f6e750f1d4edcc1ceed9615663cd87f1", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 449, + "value": { + "AddressId": 70, + "Digest": 3.512552331782294e-29, + "Hash": "011c727ca88d2805864dcfeba3f6e750f1d4edcc1ceed9615663cd87f13522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 453, + "value": { + "AddressId": 71, + "Digest": -1.1592285659406763e237, + "Hash": "611fa5e2016d11aa10401b5a8119bf28059604756e3ffceb789e53cd46", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 455, + "value": { + "AddressId": 72, + "Digest": -2.0156773896317508e-125, + "Hash": "011fa5e2016d11aa10401b5a8119bf28059604756e3ffceb789e53cd463522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 459, + "value": { + "AddressId": 73, + "Digest": 2.671659381923158e-183, + "Hash": "61c195204b8504e697fde3d028a7007f3ae30a2646fd6863f815b6f072", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 461, + "value": { + "AddressId": 74, + "Digest": 4.509047308275815e-29, + "Hash": "01c195204b8504e697fde3d028a7007f3ae30a2646fd6863f815b6f0723522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 465, + "value": { + "AddressId": 75, + "Digest": 6.79767440678701e179, + "Hash": "61a91d990207051f26a3ac3f9685459c5fcb9f34e185cf42cbaf587766", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 467, + "value": { + "AddressId": 76, + "Digest": -1.0451045696337937e-120, + "Hash": "01a91d990207051f26a3ac3f9685459c5fcb9f34e185cf42cbaf5877663522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 471, + "value": { + "AddressId": 77, + "Digest": 1.808844968378034e147, + "Hash": "61c5e12639034f258ca99e56d3bab3e4697f2001375ba3ca04d57e1e60", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 473, + "value": { + "AddressId": 78, + "Digest": -4.281417073658419e-223, + "Hash": "01c5e12639034f258ca99e56d3bab3e4697f2001375ba3ca04d57e1e603522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 477, + "value": { + "AddressId": 79, + "Digest": -6.628823752517654e-222, + "Hash": "618b00e499c4bb114f5a99942082d217fc5c401ec0652c563c4da3a2c6", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 479, + "value": { + "AddressId": 80, + "Digest": 4.010878712840313e163, + "Hash": "018b00e499c4bb114f5a99942082d217fc5c401ec0652c563c4da3a2c63522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 485, + "value": { + "AddressId": 81, + "Digest": -1.421832940254618e170, + "Hash": "e13522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 4 + } + }, + { + "id": 491, + "value": { + "AddressId": 82, + "Digest": -2.58136402261292e-54, + "Hash": "61bf3c15cca319dbba8f0d66b5943172758ce91826c4496f7eb5bbec6a", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 493, + "value": { + "AddressId": 83, + "Digest": 4.535833616086006e-265, + "Hash": "01bf3c15cca319dbba8f0d66b5943172758ce91826c4496f7eb5bbec6a3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 499, + "value": { + "AddressId": 84, + "Digest": 5.79233518607557e166, + "Hash": "617b41aef636877a9bdae5620cfd9851e1232b377217e8e07580108a40", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 501, + "value": { + "AddressId": 85, + "Digest": -5.834929129688963e238, + "Hash": "017b41aef636877a9bdae5620cfd9851e1232b377217e8e07580108a403522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 507, + "value": { + "AddressId": 86, + "Digest": 9.003355886391902e108, + "Hash": "018425aa7efc8525af7365d03e7a11fb56fb19ea1a2b06c1b575f39b5e208e4aa6c81bfd5723095d66119dc78717874a918486d4f076063510", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 508, + "value": { + "AddressId": 87, + "Digest": -1.537835270484703e-219, + "Hash": "017180020fadc5f27c3c3ae306de55c02df0333b49d780dc9c1ca5296f208e4aa6c81bfd5723095d66119dc78717874a918486d4f076063510", + "IsUsed": false, + "Type": 1 + } + } + ], + "AddressMapping": [ + { "id": 242, "value": { "AddressId": 1, "AddressMappingId": 1, "KeyDerivationId": 6 } }, + { "id": 244, "value": { "AddressId": 2, "AddressMappingId": 2, "KeyDerivationId": 6 } }, + { "id": 248, "value": { "AddressId": 3, "AddressMappingId": 3, "KeyDerivationId": 7 } }, + { "id": 250, "value": { "AddressId": 4, "AddressMappingId": 4, "KeyDerivationId": 7 } }, + { "id": 254, "value": { "AddressId": 5, "AddressMappingId": 5, "KeyDerivationId": 8 } }, + { "id": 256, "value": { "AddressId": 6, "AddressMappingId": 6, "KeyDerivationId": 8 } }, + { "id": 260, "value": { "AddressId": 7, "AddressMappingId": 7, "KeyDerivationId": 9 } }, + { "id": 262, "value": { "AddressId": 8, "AddressMappingId": 8, "KeyDerivationId": 9 } }, + { "id": 266, "value": { "AddressId": 9, "AddressMappingId": 9, "KeyDerivationId": 10 } }, + { "id": 268, "value": { "AddressId": 10, "AddressMappingId": 10, "KeyDerivationId": 10 } }, + { "id": 272, "value": { "AddressId": 11, "AddressMappingId": 11, "KeyDerivationId": 11 } }, + { "id": 274, "value": { "AddressId": 12, "AddressMappingId": 12, "KeyDerivationId": 11 } }, + { "id": 278, "value": { "AddressId": 13, "AddressMappingId": 13, "KeyDerivationId": 12 } }, + { "id": 280, "value": { "AddressId": 14, "AddressMappingId": 14, "KeyDerivationId": 12 } }, + { "id": 284, "value": { "AddressId": 15, "AddressMappingId": 15, "KeyDerivationId": 13 } }, + { "id": 286, "value": { "AddressId": 16, "AddressMappingId": 16, "KeyDerivationId": 13 } }, + { "id": 290, "value": { "AddressId": 17, "AddressMappingId": 17, "KeyDerivationId": 14 } }, + { "id": 292, "value": { "AddressId": 18, "AddressMappingId": 18, "KeyDerivationId": 14 } }, + { "id": 296, "value": { "AddressId": 19, "AddressMappingId": 19, "KeyDerivationId": 15 } }, + { "id": 298, "value": { "AddressId": 20, "AddressMappingId": 20, "KeyDerivationId": 15 } }, + { "id": 302, "value": { "AddressId": 21, "AddressMappingId": 21, "KeyDerivationId": 16 } }, + { "id": 304, "value": { "AddressId": 22, "AddressMappingId": 22, "KeyDerivationId": 16 } }, + { "id": 308, "value": { "AddressId": 23, "AddressMappingId": 23, "KeyDerivationId": 17 } }, + { "id": 310, "value": { "AddressId": 24, "AddressMappingId": 24, "KeyDerivationId": 17 } }, + { "id": 314, "value": { "AddressId": 25, "AddressMappingId": 25, "KeyDerivationId": 18 } }, + { "id": 316, "value": { "AddressId": 26, "AddressMappingId": 26, "KeyDerivationId": 18 } }, + { "id": 320, "value": { "AddressId": 27, "AddressMappingId": 27, "KeyDerivationId": 19 } }, + { "id": 322, "value": { "AddressId": 28, "AddressMappingId": 28, "KeyDerivationId": 19 } }, + { "id": 326, "value": { "AddressId": 29, "AddressMappingId": 29, "KeyDerivationId": 20 } }, + { "id": 328, "value": { "AddressId": 30, "AddressMappingId": 30, "KeyDerivationId": 20 } }, + { "id": 332, "value": { "AddressId": 31, "AddressMappingId": 31, "KeyDerivationId": 21 } }, + { "id": 334, "value": { "AddressId": 32, "AddressMappingId": 32, "KeyDerivationId": 21 } }, + { "id": 338, "value": { "AddressId": 33, "AddressMappingId": 33, "KeyDerivationId": 22 } }, + { "id": 340, "value": { "AddressId": 34, "AddressMappingId": 34, "KeyDerivationId": 22 } }, + { "id": 344, "value": { "AddressId": 35, "AddressMappingId": 35, "KeyDerivationId": 23 } }, + { "id": 346, "value": { "AddressId": 36, "AddressMappingId": 36, "KeyDerivationId": 23 } }, + { "id": 350, "value": { "AddressId": 37, "AddressMappingId": 37, "KeyDerivationId": 24 } }, + { "id": 352, "value": { "AddressId": 38, "AddressMappingId": 38, "KeyDerivationId": 24 } }, + { "id": 356, "value": { "AddressId": 39, "AddressMappingId": 39, "KeyDerivationId": 25 } }, + { "id": 358, "value": { "AddressId": 40, "AddressMappingId": 40, "KeyDerivationId": 25 } }, + { "id": 364, "value": { "AddressId": 41, "AddressMappingId": 41, "KeyDerivationId": 27 } }, + { "id": 366, "value": { "AddressId": 42, "AddressMappingId": 42, "KeyDerivationId": 27 } }, + { "id": 370, "value": { "AddressId": 43, "AddressMappingId": 43, "KeyDerivationId": 28 } }, + { "id": 372, "value": { "AddressId": 44, "AddressMappingId": 44, "KeyDerivationId": 28 } }, + { "id": 376, "value": { "AddressId": 45, "AddressMappingId": 45, "KeyDerivationId": 29 } }, + { "id": 378, "value": { "AddressId": 46, "AddressMappingId": 46, "KeyDerivationId": 29 } }, + { "id": 382, "value": { "AddressId": 47, "AddressMappingId": 47, "KeyDerivationId": 30 } }, + { "id": 384, "value": { "AddressId": 48, "AddressMappingId": 48, "KeyDerivationId": 30 } }, + { "id": 388, "value": { "AddressId": 49, "AddressMappingId": 49, "KeyDerivationId": 31 } }, + { "id": 390, "value": { "AddressId": 50, "AddressMappingId": 50, "KeyDerivationId": 31 } }, + { "id": 394, "value": { "AddressId": 51, "AddressMappingId": 51, "KeyDerivationId": 32 } }, + { "id": 396, "value": { "AddressId": 52, "AddressMappingId": 52, "KeyDerivationId": 32 } }, + { "id": 400, "value": { "AddressId": 53, "AddressMappingId": 53, "KeyDerivationId": 33 } }, + { "id": 402, "value": { "AddressId": 54, "AddressMappingId": 54, "KeyDerivationId": 33 } }, + { "id": 406, "value": { "AddressId": 55, "AddressMappingId": 55, "KeyDerivationId": 34 } }, + { "id": 408, "value": { "AddressId": 56, "AddressMappingId": 56, "KeyDerivationId": 34 } }, + { "id": 412, "value": { "AddressId": 57, "AddressMappingId": 57, "KeyDerivationId": 35 } }, + { "id": 414, "value": { "AddressId": 58, "AddressMappingId": 58, "KeyDerivationId": 35 } }, + { "id": 418, "value": { "AddressId": 59, "AddressMappingId": 59, "KeyDerivationId": 36 } }, + { "id": 420, "value": { "AddressId": 60, "AddressMappingId": 60, "KeyDerivationId": 36 } }, + { "id": 424, "value": { "AddressId": 61, "AddressMappingId": 61, "KeyDerivationId": 37 } }, + { "id": 426, "value": { "AddressId": 62, "AddressMappingId": 62, "KeyDerivationId": 37 } }, + { "id": 430, "value": { "AddressId": 63, "AddressMappingId": 63, "KeyDerivationId": 38 } }, + { "id": 432, "value": { "AddressId": 64, "AddressMappingId": 64, "KeyDerivationId": 38 } }, + { "id": 436, "value": { "AddressId": 65, "AddressMappingId": 65, "KeyDerivationId": 39 } }, + { "id": 438, "value": { "AddressId": 66, "AddressMappingId": 66, "KeyDerivationId": 39 } }, + { "id": 442, "value": { "AddressId": 67, "AddressMappingId": 67, "KeyDerivationId": 40 } }, + { "id": 444, "value": { "AddressId": 68, "AddressMappingId": 68, "KeyDerivationId": 40 } }, + { "id": 448, "value": { "AddressId": 69, "AddressMappingId": 69, "KeyDerivationId": 41 } }, + { "id": 450, "value": { "AddressId": 70, "AddressMappingId": 70, "KeyDerivationId": 41 } }, + { "id": 454, "value": { "AddressId": 71, "AddressMappingId": 71, "KeyDerivationId": 42 } }, + { "id": 456, "value": { "AddressId": 72, "AddressMappingId": 72, "KeyDerivationId": 42 } }, + { "id": 460, "value": { "AddressId": 73, "AddressMappingId": 73, "KeyDerivationId": 43 } }, + { "id": 462, "value": { "AddressId": 74, "AddressMappingId": 74, "KeyDerivationId": 43 } }, + { "id": 466, "value": { "AddressId": 75, "AddressMappingId": 75, "KeyDerivationId": 44 } }, + { "id": 468, "value": { "AddressId": 76, "AddressMappingId": 76, "KeyDerivationId": 44 } }, + { "id": 472, "value": { "AddressId": 77, "AddressMappingId": 77, "KeyDerivationId": 45 } }, + { "id": 474, "value": { "AddressId": 78, "AddressMappingId": 78, "KeyDerivationId": 45 } }, + { "id": 478, "value": { "AddressId": 79, "AddressMappingId": 79, "KeyDerivationId": 46 } }, + { "id": 480, "value": { "AddressId": 80, "AddressMappingId": 80, "KeyDerivationId": 46 } }, + { "id": 486, "value": { "AddressId": 81, "AddressMappingId": 81, "KeyDerivationId": 48 } }, + { "id": 492, "value": { "AddressId": 82, "AddressMappingId": 82, "KeyDerivationId": 49 } }, + { "id": 494, "value": { "AddressId": 83, "AddressMappingId": 83, "KeyDerivationId": 49 } }, + { "id": 500, "value": { "AddressId": 84, "AddressMappingId": 84, "KeyDerivationId": 50 } }, + { "id": 502, "value": { "AddressId": 85, "AddressMappingId": 85, "KeyDerivationId": 50 } } + ], + "Bip44Account": [{ "id": 235, "value": { "Bip44AccountId": 1, "KeyDerivationId": 4 } }], + "Bip44Chain": [ + { "id": 239, "value": { "Bip44ChainId": 1, "DisplayCutoff": 1, "KeyDerivationId": 5 } }, + { "id": 361, "value": { "Bip44ChainId": 2, "DisplayCutoff": null, "KeyDerivationId": 26 } }, + { "id": 483, "value": { "Bip44ChainId": 3, "DisplayCutoff": null, "KeyDerivationId": 47 } } + ], + "Bip44Wrapper": [], + "Block": [ + { + "id": 509, + "value": { + "BlockId": 1, + "BlockTime": 1699864409000, + "Digest": -1.2539522861616603e-13, + "Hash": "3664bab92afb887173a2efe7031eb1110c3ae7942a0c2f32c487e82aaac8ea19", + "Height": 9541014, + "SlotNum": 108298118 + } + }, + { + "id": 519, + "value": { + "BlockId": 2, + "BlockTime": 1709816081000, + "Digest": 6.465949388494242e205, + "Hash": "510e0e94d2cc079ee57e6130bd26415b7895cec13f297136db5f442551484b1b", + "Height": 10025299, + "SlotNum": 118249790 + } + } + ], + "CanonicalAddress": [ + { "id": 245, "value": { "CanonicalAddressId": 1, "KeyDerivationId": 6 } }, + { "id": 251, "value": { "CanonicalAddressId": 2, "KeyDerivationId": 7 } }, + { "id": 257, "value": { "CanonicalAddressId": 3, "KeyDerivationId": 8 } }, + { "id": 263, "value": { "CanonicalAddressId": 4, "KeyDerivationId": 9 } }, + { "id": 269, "value": { "CanonicalAddressId": 5, "KeyDerivationId": 10 } }, + { "id": 275, "value": { "CanonicalAddressId": 6, "KeyDerivationId": 11 } }, + { "id": 281, "value": { "CanonicalAddressId": 7, "KeyDerivationId": 12 } }, + { "id": 287, "value": { "CanonicalAddressId": 8, "KeyDerivationId": 13 } }, + { "id": 293, "value": { "CanonicalAddressId": 9, "KeyDerivationId": 14 } }, + { "id": 299, "value": { "CanonicalAddressId": 10, "KeyDerivationId": 15 } }, + { "id": 305, "value": { "CanonicalAddressId": 11, "KeyDerivationId": 16 } }, + { "id": 311, "value": { "CanonicalAddressId": 12, "KeyDerivationId": 17 } }, + { "id": 317, "value": { "CanonicalAddressId": 13, "KeyDerivationId": 18 } }, + { "id": 323, "value": { "CanonicalAddressId": 14, "KeyDerivationId": 19 } }, + { "id": 329, "value": { "CanonicalAddressId": 15, "KeyDerivationId": 20 } }, + { "id": 335, "value": { "CanonicalAddressId": 16, "KeyDerivationId": 21 } }, + { "id": 341, "value": { "CanonicalAddressId": 17, "KeyDerivationId": 22 } }, + { "id": 347, "value": { "CanonicalAddressId": 18, "KeyDerivationId": 23 } }, + { "id": 353, "value": { "CanonicalAddressId": 19, "KeyDerivationId": 24 } }, + { "id": 359, "value": { "CanonicalAddressId": 20, "KeyDerivationId": 25 } }, + { "id": 367, "value": { "CanonicalAddressId": 21, "KeyDerivationId": 27 } }, + { "id": 373, "value": { "CanonicalAddressId": 22, "KeyDerivationId": 28 } }, + { "id": 379, "value": { "CanonicalAddressId": 23, "KeyDerivationId": 29 } }, + { "id": 385, "value": { "CanonicalAddressId": 24, "KeyDerivationId": 30 } }, + { "id": 391, "value": { "CanonicalAddressId": 25, "KeyDerivationId": 31 } }, + { "id": 397, "value": { "CanonicalAddressId": 26, "KeyDerivationId": 32 } }, + { "id": 403, "value": { "CanonicalAddressId": 27, "KeyDerivationId": 33 } }, + { "id": 409, "value": { "CanonicalAddressId": 28, "KeyDerivationId": 34 } }, + { "id": 415, "value": { "CanonicalAddressId": 29, "KeyDerivationId": 35 } }, + { "id": 421, "value": { "CanonicalAddressId": 30, "KeyDerivationId": 36 } }, + { "id": 427, "value": { "CanonicalAddressId": 31, "KeyDerivationId": 37 } }, + { "id": 433, "value": { "CanonicalAddressId": 32, "KeyDerivationId": 38 } }, + { "id": 439, "value": { "CanonicalAddressId": 33, "KeyDerivationId": 39 } }, + { "id": 445, "value": { "CanonicalAddressId": 34, "KeyDerivationId": 40 } }, + { "id": 451, "value": { "CanonicalAddressId": 35, "KeyDerivationId": 41 } }, + { "id": 457, "value": { "CanonicalAddressId": 36, "KeyDerivationId": 42 } }, + { "id": 463, "value": { "CanonicalAddressId": 37, "KeyDerivationId": 43 } }, + { "id": 469, "value": { "CanonicalAddressId": 38, "KeyDerivationId": 44 } }, + { "id": 475, "value": { "CanonicalAddressId": 39, "KeyDerivationId": 45 } }, + { "id": 481, "value": { "CanonicalAddressId": 40, "KeyDerivationId": 46 } }, + { "id": 487, "value": { "CanonicalAddressId": 41, "KeyDerivationId": 48 } }, + { "id": 495, "value": { "CanonicalAddressId": 42, "KeyDerivationId": 49 } }, + { "id": 503, "value": { "CanonicalAddressId": 43, "KeyDerivationId": 50 } } + ], + "Certificate": [], + "CertificateAddress": [], + "Cip1852Wrapper": [ + { + "id": 228, + "value": { + "ConceptualWalletId": 1, + "PrivateDeriverKeyDerivationId": 1, + "PrivateDeriverLevel": 0, + "PublicDeriverLevel": 3, + "RootKeyDerivationId": 1, + "SignerLevel": 0 + } + } + ], + "CoinTypeDerivation": [ + { "id": 232, "value": { "CoinTypeDerivationId": 1, "KeyDerivationId": 3 } } + ], + "ConceptualWallet": [ + { "id": 224, "value": { "ConceptualWalletId": 1, "Name": "TestWallet1", "NetworkId": 0 } } + ], + "EncryptionMeta": [ + { + "id": 93, + "value": { + "AddressSeed": 1033713417, + "BlockSeed": 763624740, + "EncryptionMetaId": 0, + "TokenSeed": 2585207091, + "TransactionSeed": 318293096 + } + } + ], + "Explorer": [ + { + "id": 99, + "value": { + "Endpoints": { + "address": "https://cardanoscan.io/address/", + "pool": "https://cardanoscan.io/pool/", + "stakeAddress": "https://cardanoscan.io/stakeKey/", + "token": "https://cardanoscan.io/token/", + "transaction": "https://cardanoscan.io/transaction/" + }, + "ExplorerId": 106, + "IsBackup": true, + "Name": "CardanoScan", + "NetworkId": 0 + } + }, + { + "id": 100, + "value": { + "Endpoints": { + "address": "https://adastat.net/addresses/", + "pool": "https://adastat.net/pools/", + "stakeAddress": "https://adastat.net/addresses/", + "token": "https://adastat.net/tokens/", + "transaction": "https://adastat.net/transactions/" + }, + "ExplorerId": 108, + "IsBackup": false, + "Name": "AdaStat", + "NetworkId": 0 + } + }, + { + "id": 101, + "value": { + "Endpoints": { + "address": "https://explorer.cardano.org/en/address?address=", + "transaction": "https://explorer.cardano.org/en/transaction?id=" + }, + "ExplorerId": 104, + "IsBackup": false, + "Name": "CardanoExplorer", + "NetworkId": 0 + } + }, + { + "id": 102, + "value": { + "Endpoints": { + "address": "https://cexplorer.io/address/", + "pool": "https://cexplorer.io/pool/", + "stakeAddress": "https://cexplorer.io/stake/", + "token": "https://cexplorer.io/asset/", + "transaction": "https://cexplorer.io/tx/" + }, + "ExplorerId": 100, + "IsBackup": false, + "Name": "Cexplorer", + "NetworkId": 0 + } + }, + { + "id": 103, + "value": { + "Endpoints": { + "address": "https://blockchair.com/cardano/address/", + "transaction": "https://blockchair.com/cardano/transaction/" + }, + "ExplorerId": 102, + "IsBackup": false, + "Name": "Blockchair", + "NetworkId": 0 + } + }, + { + "id": 104, + "value": { + "Endpoints": { + "address": "https://adapools.org/address/", + "pool": "https://adapools.org/pool/", + "stakeAddress": "https://adapools.org/stake/", + "transaction": "https://adapools.org/transactions/" + }, + "ExplorerId": 105, + "IsBackup": false, + "Name": "ADApools", + "NetworkId": 0 + } + }, + { + "id": 105, + "value": { + "Endpoints": { "pool": "https://pooltool.io/pool/" }, + "ExplorerId": 107, + "IsBackup": false, + "Name": "PoolTool", + "NetworkId": 0 + } + }, + { + "id": 106, + "value": { + "Endpoints": { + "address": "https://explorer.cardano-testnet.iohkdev.io/en/address?address=", + "transaction": "https://explorer.cardano-testnet.iohkdev.io/en/transaction?id=" + }, + "ExplorerId": 400, + "IsBackup": true, + "Name": "CardanoExplorer", + "NetworkId": 300 + } + }, + { + "id": 107, + "value": { + "Endpoints": { + "address": "https://testnet.cardanoscan.io/address/", + "pool": "https://testnet.cardanoscan.io/pool/", + "stakeAddress": "https://testnet.cardanoscan.io/stakeKey/", + "token": "https://testnet.cardanoscan.io/token/", + "transaction": "https://testnet.cardanoscan.io/transaction/" + }, + "ExplorerId": 450, + "IsBackup": true, + "Name": "CardanoScan", + "NetworkId": 250 + } + }, + { + "id": 108, + "value": { + "Endpoints": { + "address": "https://preview.cardanoscan.io/address/", + "pool": "https://preview.cardanoscan.io/pool/", + "stakeAddress": "https://preview.cardanoscan.io/stakeKey/", + "token": "https://preview.cardanoscan.io/token/", + "transaction": "https://preview.cardanoscan.io/transaction/" + }, + "ExplorerId": 550, + "IsBackup": true, + "Name": "CardanoScan", + "NetworkId": 350 + } + }, + { + "id": 109, + "value": { + "Endpoints": { + "address": "https://sancho.cexplorer.io/address/", + "pool": "https://sancho.cexplorer.io/pool/", + "stakeAddress": "https://sancho.cexplorer.io/stake/", + "token": "https://sancho.cexplorer.io/asset/", + "transaction": "https://sancho.cexplorer.io/tx/" + }, + "ExplorerId": 650, + "IsBackup": true, + "Name": "Cexplorer", + "NetworkId": 450 + } + } + ], + "HwWalletMeta": [], + "Key": [ + { + "id": 225, + "value": { + "Hash": "edb8eaa8970996442bf9633ad2c578b1a67d14fad00a28e36c7d84c33c14019ffc8f21da488c8ed9ba4871e17246aa2a223a98a6d0739f02d8f2bc4fa2577ba8f02161a39e9148b5f2e71c547beffa40bccab83cd1ef995c7ce1425bb1073043526e0bc421f34d3ac7bdf8e1dc385ef6007ca84633b95b8f8d8382c77d335fc44633a77d859af2626e5e4086aec4da2c639f91f3b0c296cc7207a087", + "IsEncrypted": true, + "KeyId": 1, + "PasswordLastUpdate": null, + "Type": 0 + } + }, + { + "id": 233, + "value": { + "Hash": "45d98cc6f9408741ebd3820553b32a08d9acb7174c0ecdb58ec0b708c502716e55a588dd5dcd0dbd0497dc0a429a93cb352d7ca95f131f29a5ab682f9bd0192c", + "IsEncrypted": false, + "KeyId": 2, + "PasswordLastUpdate": null, + "Type": 0 + } + } + ], + "KeyDerivation": [ + { + "id": 226, + "value": { + "Index": null, + "KeyDerivationId": 1, + "Parent": null, + "PrivateKeyId": 1, + "PublicKeyId": null + } + }, + { + "id": 229, + "value": { + "Index": 2147485500, + "KeyDerivationId": 2, + "Parent": 1, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 231, + "value": { + "Index": 2147485463, + "KeyDerivationId": 3, + "Parent": 2, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 234, + "value": { + "Index": 2147483648, + "KeyDerivationId": 4, + "Parent": 3, + "PrivateKeyId": null, + "PublicKeyId": 2 + } + }, + { + "id": 238, + "value": { + "Index": 0, + "KeyDerivationId": 5, + "Parent": 4, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 240, + "value": { + "Index": 0, + "KeyDerivationId": 6, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 246, + "value": { + "Index": 1, + "KeyDerivationId": 7, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 252, + "value": { + "Index": 2, + "KeyDerivationId": 8, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 258, + "value": { + "Index": 3, + "KeyDerivationId": 9, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 264, + "value": { + "Index": 4, + "KeyDerivationId": 10, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 270, + "value": { + "Index": 5, + "KeyDerivationId": 11, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 276, + "value": { + "Index": 6, + "KeyDerivationId": 12, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 282, + "value": { + "Index": 7, + "KeyDerivationId": 13, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 288, + "value": { + "Index": 8, + "KeyDerivationId": 14, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 294, + "value": { + "Index": 9, + "KeyDerivationId": 15, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 300, + "value": { + "Index": 10, + "KeyDerivationId": 16, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 306, + "value": { + "Index": 11, + "KeyDerivationId": 17, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 312, + "value": { + "Index": 12, + "KeyDerivationId": 18, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 318, + "value": { + "Index": 13, + "KeyDerivationId": 19, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 324, + "value": { + "Index": 14, + "KeyDerivationId": 20, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 330, + "value": { + "Index": 15, + "KeyDerivationId": 21, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 336, + "value": { + "Index": 16, + "KeyDerivationId": 22, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 342, + "value": { + "Index": 17, + "KeyDerivationId": 23, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 348, + "value": { + "Index": 18, + "KeyDerivationId": 24, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 354, + "value": { + "Index": 19, + "KeyDerivationId": 25, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 360, + "value": { + "Index": 1, + "KeyDerivationId": 26, + "Parent": 4, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 362, + "value": { + "Index": 0, + "KeyDerivationId": 27, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 368, + "value": { + "Index": 1, + "KeyDerivationId": 28, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 374, + "value": { + "Index": 2, + "KeyDerivationId": 29, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 380, + "value": { + "Index": 3, + "KeyDerivationId": 30, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 386, + "value": { + "Index": 4, + "KeyDerivationId": 31, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 392, + "value": { + "Index": 5, + "KeyDerivationId": 32, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 398, + "value": { + "Index": 6, + "KeyDerivationId": 33, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 404, + "value": { + "Index": 7, + "KeyDerivationId": 34, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 410, + "value": { + "Index": 8, + "KeyDerivationId": 35, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 416, + "value": { + "Index": 9, + "KeyDerivationId": 36, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 422, + "value": { + "Index": 10, + "KeyDerivationId": 37, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 428, + "value": { + "Index": 11, + "KeyDerivationId": 38, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 434, + "value": { + "Index": 12, + "KeyDerivationId": 39, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 440, + "value": { + "Index": 13, + "KeyDerivationId": 40, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 446, + "value": { + "Index": 14, + "KeyDerivationId": 41, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 452, + "value": { + "Index": 15, + "KeyDerivationId": 42, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 458, + "value": { + "Index": 16, + "KeyDerivationId": 43, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 464, + "value": { + "Index": 17, + "KeyDerivationId": 44, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 470, + "value": { + "Index": 18, + "KeyDerivationId": 45, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 476, + "value": { + "Index": 19, + "KeyDerivationId": 46, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 482, + "value": { + "Index": 2, + "KeyDerivationId": 47, + "Parent": 4, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 484, + "value": { + "Index": 0, + "KeyDerivationId": 48, + "Parent": 47, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 490, + "value": { + "Index": 20, + "KeyDerivationId": 49, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 498, + "value": { + "Index": 20, + "KeyDerivationId": 50, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + } + ], + "LastSyncInfo": [ + { + "id": 236, + "value": { + "BlockHash": "a42e5f02a14edcf80fa4cc3f064f988f0240d7f0244a3d3b3a50442ca0f0d366", + "Height": 10378718, + "LastSyncInfoId": 1, + "SlotNum": 125446047, + "Time": 1717012369679 + } + } + ], + "Network": [ + { + "id": 94, + "value": { + "Backend": { + "BackendService": "https://api.yoroiwallet.com", + "TokenInfoService": "https://cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 764824073, + "ChainNetworkId": "1", + "GenesisDate": "1506203091000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { "coefficient": "44", "constant": "155381" }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 432000, + "StartAt": 208 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 0, + "NetworkName": "Cardano Mainnet" + } + }, + { + "id": 95, + "value": { + "Backend": { + "BackendService": "https://testnet-backend.yoroiwallet.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 1097911063, + "ChainNetworkId": "0", + "GenesisDate": "1563999616000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { "coefficient": "44", "constant": "155381" }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 432000, + "StartAt": 74 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 300, + "NetworkName": "Cardano Legacy Testnet" + } + }, + { + "id": 96, + "value": { + "Backend": { + "BackendService": "https://preprod-backend.yoroiwallet.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 1, + "ChainNetworkId": "0", + "GenesisDate": "1654041600000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { "coefficient": "44", "constant": "155381" }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 432000, + "StartAt": 0 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 250, + "NetworkName": "Cardano Preprod Testnet" + } + }, + { + "id": 97, + "value": { + "Backend": { + "BackendService": "https://preview-backend.emurgornd.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 2, + "ChainNetworkId": "0", + "GenesisDate": "1666656000000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { "coefficient": "44", "constant": "155381" }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 86400, + "StartAt": 0 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 350, + "NetworkName": "Cardano Preview Testnet" + } + }, + { + "id": 98, + "value": { + "Backend": { + "BackendService": "https://sanchonet-backend.yoroiwallet.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 4, + "ChainNetworkId": "0", + "GenesisDate": "1686789000000", + "SlotDuration": 20, + "SlotsPerEpoch": 4320, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { "coefficient": "44", "constant": "155381" }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 86400, + "StartAt": 0 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 450, + "NetworkName": "Cardano Sancho Testnet" + } + } + ], + "PreferredExplorer": [], + "PriceData": [], + "PublicDeriver": [ + { + "id": 237, + "value": { + "ConceptualWalletId": 1, + "Index": 0, + "KeyDerivationId": 4, + "LastSyncInfoId": 1, + "Name": "", + "PublicDeriverId": 1 + } + } + ], + "PurposeDerivation": [{ "id": 230, "value": { "KeyDerivationId": 2, "PurposeDerivationId": 1 } }], + "RootDerivation": [{ "id": 227, "value": { "KeyDerivationId": 1, "RootDerivationId": 1 } }], + "Token": [ + { + "id": 110, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "ADA", + "type": "Cardano" + }, + "NetworkId": 0, + "TokenId": 1 + } + }, + { + "id": 111, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 300, + "TokenId": 2 + } + }, + { + "id": 112, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 250, + "TokenId": 3 + } + }, + { + "id": 113, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 350, + "TokenId": 4 + } + }, + { + "id": 114, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 450, + "TokenId": 5 + } + } + ], + "TokenList": [ + { + "id": 515, + "value": { "Amount": "213595757", "ListId": 0, "TokenId": 1, "TokenListItemId": 1 } + }, + { + "id": 516, + "value": { "Amount": "5000000", "ListId": 1, "TokenId": 1, "TokenListItemId": 2 } + }, + { + "id": 517, + "value": { "Amount": "5500000", "ListId": 2, "TokenId": 1, "TokenListItemId": 3 } + }, + { + "id": 518, + "value": { "Amount": "202924580", "ListId": 3, "TokenId": 1, "TokenListItemId": 4 } + }, + { + "id": 525, + "value": { "Amount": "5000000", "ListId": 4, "TokenId": 1, "TokenListItemId": 5 } + }, + { + "id": 526, + "value": { "Amount": "1000000", "ListId": 5, "TokenId": 1, "TokenListItemId": 6 } + }, + { + "id": 527, + "value": { "Amount": "1000000", "ListId": 6, "TokenId": 1, "TokenListItemId": 7 } + }, + { "id": 528, "value": { "Amount": "2828823", "ListId": 7, "TokenId": 1, "TokenListItemId": 8 } } + ], + "Transaction": [ + { + "id": 510, + "value": { + "BlockId": 1, + "Digest": 7.714062039903406e88, + "ErrorMessage": null, + "Extra": { "Fee": "171177", "IsValid": true, "Metadata": null }, + "Hash": "4a551e08a8808cfaf667bf29b2ebdddd525c48287b58eede94ceb7ee3692bec3", + "LastUpdateTime": 1699864409000, + "Ordinal": 1, + "Status": 1, + "TransactionId": 1, + "Type": 1 + } + }, + { + "id": 520, + "value": { + "BlockId": 2, + "Digest": -7.346330259468635e88, + "ErrorMessage": null, + "Extra": { "Fee": "171177", "IsValid": true, "Metadata": null }, + "Hash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "LastUpdateTime": 1709816081000, + "Ordinal": 30, + "Status": 1, + "TransactionId": 2, + "Type": 1 + } + } + ], + "TxMemo": [], + "UtxoAtSafePointTable": [ + { + "id": 504, + "value": { + "PublicDeriverId": 1, + "UtxoAtSafePoint": { + "lastSafeBlockHash": "1ddd7fabd5776d98c7ab43000f4d8fd32d5763302d8fc3162d5690136c18442f", + "utxos": [ + { + "amount": "1000000", + "assets": [], + "blockNum": "10025299", + "receiver": "addr1q98tt4wxnt32h3fn63xkzh4q7ah57v330v40mc2e9ale5jp4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmrz6qx", + "txHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "txIndex": 0, + "utxoId": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c:0" + }, + { + "amount": "1000000", + "assets": [], + "blockNum": "10025299", + "receiver": "addr1q9pe9gk6f9huhh6dx089nt6spl22xeetjzvvjcl9rjajj5e4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmnhvza", + "txHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "txIndex": 1, + "utxoId": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c:1" + }, + { + "amount": "2828823", + "assets": [], + "blockNum": "10025299", + "receiver": "addr1q9pe9gk6f9huhh6dx089nt6spl22xeetjzvvjcl9rjajj5e4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmnhvza", + "txHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "txIndex": 2, + "utxoId": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c:2" + } + ] + }, + "UtxoAtSafePointId": 1 + } + } + ], + "UtxoDiffToBestBlock": [ + { + "id": 505, + "value": { + "PublicDeriverId": 1, + "UtxoDiffToBestBlockId": 1, + "lastBestBlockHash": "a42e5f02a14edcf80fa4cc3f064f988f0240d7f0244a3d3b3a50442ca0f0d366", + "newUtxos": [], + "spentUtxoIds": [] + } + } + ], + "UtxoTransactionInput": [ + { + "id": 511, + "value": { + "AddressId": 86, + "IndexInOwnTx": 0, + "IndexInParentTx": 2, + "ParentTxHash": "60f51a2ce15cd8c01f66d80091a1397695735bd682166209813d9276c4cc7ff8", + "TokenListId": 0, + "TransactionId": 1, + "UtxoTransactionInputId": 1 + } + }, + { + "id": 521, + "value": { + "AddressId": 2, + "IndexInOwnTx": 0, + "IndexInParentTx": 0, + "ParentTxHash": "4a551e08a8808cfaf667bf29b2ebdddd525c48287b58eede94ceb7ee3692bec3", + "TokenListId": 4, + "TransactionId": 2, + "UtxoTransactionInputId": 2 + } + } + ], + "UtxoTransactionOutput": [ + { + "id": 512, + "value": { + "AddressId": 2, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": false, + "OutputIndex": 0, + "TokenListId": 1, + "TransactionId": 1, + "UtxoTransactionOutputId": 1 + } + }, + { + "id": 513, + "value": { + "AddressId": 87, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 1, + "TokenListId": 2, + "TransactionId": 1, + "UtxoTransactionOutputId": 2 + } + }, + { + "id": 514, + "value": { + "AddressId": 87, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 2, + "TokenListId": 3, + "TransactionId": 1, + "UtxoTransactionOutputId": 3 + } + }, + { + "id": 522, + "value": { + "AddressId": 2, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 0, + "TokenListId": 5, + "TransactionId": 2, + "UtxoTransactionOutputId": 4 + } + }, + { + "id": 523, + "value": { + "AddressId": 42, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 1, + "TokenListId": 6, + "TransactionId": 2, + "UtxoTransactionOutputId": 5 + } + }, + { + "id": 524, + "value": { + "AddressId": 42, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 2, + "TokenListId": 7, + "TransactionId": 2, + "UtxoTransactionOutputId": 6 + } + } + ] +} diff --git a/packages/e2e-tests/helpers/wallet-dbSnapshots/testWallet1MemoAdded.indexedDB.json b/packages/e2e-tests/helpers/wallet-dbSnapshots/testWallet1MemoAdded.indexedDB.json new file mode 100644 index 0000000000..e1e322b9be --- /dev/null +++ b/packages/e2e-tests/helpers/wallet-dbSnapshots/testWallet1MemoAdded.indexedDB.json @@ -0,0 +1,3287 @@ +{ + "AccountingTransactionInput": [], + "AccountingTransactionOutput": [], + "Address": [ + { + "id": 241, + "value": { + "AddressId": 1, + "Digest": 6.380052592693652e+179, + "Hash": "614eb5d5c69ae2abc533d44d615ea0f76f4f32317b2afde1592f7f9a48", + "IsUsed": true, + "Type": 3 + } + }, + { + "id": 243, + "value": { + "AddressId": 2, + "Digest": 7.229922786045467e+37, + "Hash": "014eb5d5c69ae2abc533d44d615ea0f76f4f32317b2afde1592f7f9a483522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": true, + "Type": 1 + } + }, + { + "id": 247, + "value": { + "AddressId": 3, + "Digest": -8.232144619018239e+153, + "Hash": "617c263f54c68fa8262ba376b32d66aff6bf2b8b2a90ae89cc47ce32ee", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 249, + "value": { + "AddressId": 4, + "Digest": -1.7536720553897433e+153, + "Hash": "017c263f54c68fa8262ba376b32d66aff6bf2b8b2a90ae89cc47ce32ee3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 253, + "value": { + "AddressId": 5, + "Digest": 5.047504275363617e+131, + "Hash": "6152608b31a9ec714181a4ebe82ba9581905031f565b6cb3fc653aa495", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 255, + "value": { + "AddressId": 6, + "Digest": 6.830081758857871e-107, + "Hash": "0152608b31a9ec714181a4ebe82ba9581905031f565b6cb3fc653aa4953522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 259, + "value": { + "AddressId": 7, + "Digest": 4.485845990792551e-138, + "Hash": "618b5a52656d5fb7b9f84370819be274c15c398123ccd893b59dbe0679", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 261, + "value": { + "AddressId": 8, + "Digest": 6.8122010483248995e+25, + "Hash": "018b5a52656d5fb7b9f84370819be274c15c398123ccd893b59dbe06793522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 265, + "value": { + "AddressId": 9, + "Digest": 2.0221789718178016e+229, + "Hash": "61c7a86cb39d94b7ce42ad1dd5c33890bbe8d9ddf057477aae7a57515a", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 267, + "value": { + "AddressId": 10, + "Digest": 2.550450492151412e-286, + "Hash": "01c7a86cb39d94b7ce42ad1dd5c33890bbe8d9ddf057477aae7a57515a3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 271, + "value": { + "AddressId": 11, + "Digest": -5.3934969176723165e-205, + "Hash": "61b7223dd5917a869240f78ab1f674165afc6c4745d06508cd84b37942", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 273, + "value": { + "AddressId": 12, + "Digest": 5.101364490555232e+178, + "Hash": "01b7223dd5917a869240f78ab1f674165afc6c4745d06508cd84b379423522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 277, + "value": { + "AddressId": 13, + "Digest": 2.844517846040889e+239, + "Hash": "61c52266eb79f6c6599534f2370ef4a36ce678c759dee76b67eca150d3", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 279, + "value": { + "AddressId": 14, + "Digest": 1.341631616271896e+55, + "Hash": "01c52266eb79f6c6599534f2370ef4a36ce678c759dee76b67eca150d33522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 283, + "value": { + "AddressId": 15, + "Digest": -1.1344146685195727e-199, + "Hash": "612e07f95d6ae57bb47883d45d22d49fa16f80461599e8bccd0049ce6d", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 285, + "value": { + "AddressId": 16, + "Digest": -1.0558856033234728e-282, + "Hash": "012e07f95d6ae57bb47883d45d22d49fa16f80461599e8bccd0049ce6d3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 289, + "value": { + "AddressId": 17, + "Digest": 1.2938570044771769e+116, + "Hash": "61109dca29894d4f6a58d2952d4340262831a5e46d345d9ff00b5343b0", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 291, + "value": { + "AddressId": 18, + "Digest": 9.571382260264633e-269, + "Hash": "01109dca29894d4f6a58d2952d4340262831a5e46d345d9ff00b5343b03522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 295, + "value": { + "AddressId": 19, + "Digest": -2.977680641696503e+95, + "Hash": "61e351ff2e3e1e97c3be9908e68667d07bc3764514400e1f5f7d91d9bd", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 297, + "value": { + "AddressId": 20, + "Digest": 3.5467558778788136e-112, + "Hash": "01e351ff2e3e1e97c3be9908e68667d07bc3764514400e1f5f7d91d9bd3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 301, + "value": { + "AddressId": 21, + "Digest": 2.111949471498054e+220, + "Hash": "61a388849bdf01e3cd840a4c66e7ce955fe9c54562fcc7a8741e826b87", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 303, + "value": { + "AddressId": 22, + "Digest": 1.7247745643819718e-37, + "Hash": "01a388849bdf01e3cd840a4c66e7ce955fe9c54562fcc7a8741e826b873522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 307, + "value": { + "AddressId": 23, + "Digest": -5.40318439232988e+279, + "Hash": "6163af202d3a1a3ed9b403049d6e2650e5b93c040620a2fddc5f9abc46", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 309, + "value": { + "AddressId": 24, + "Digest": -1.1393402895433074e+86, + "Hash": "0163af202d3a1a3ed9b403049d6e2650e5b93c040620a2fddc5f9abc463522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 313, + "value": { + "AddressId": 25, + "Digest": -3.786472492277643e+269, + "Hash": "617d1922897a2312107cb17d531fad83c3c3c264fa7837a35c1c4a42c5", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 315, + "value": { + "AddressId": 26, + "Digest": -1.0391515953566685e-277, + "Hash": "017d1922897a2312107cb17d531fad83c3c3c264fa7837a35c1c4a42c53522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 319, + "value": { + "AddressId": 27, + "Digest": 3.6895997735203905e-50, + "Hash": "6124f57df2c3afc4cb19ba9d33e0ad8e8a6b7072aedc332806be517cb7", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 321, + "value": { + "AddressId": 28, + "Digest": 1.045830883351703e+84, + "Hash": "0124f57df2c3afc4cb19ba9d33e0ad8e8a6b7072aedc332806be517cb73522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 325, + "value": { + "AddressId": 29, + "Digest": -9.63785455780804e+135, + "Hash": "61f3440d5a9dac2559efe49fd44d6bf0feab120e82387f427938441449", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 327, + "value": { + "AddressId": 30, + "Digest": 1.6020837380194585e-105, + "Hash": "01f3440d5a9dac2559efe49fd44d6bf0feab120e82387f4279384414493522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 331, + "value": { + "AddressId": 31, + "Digest": -9.079459924596478e-54, + "Hash": "6159a7c321146b06e4d2dee4b2b2216c77d78ad617705aaf11bb4c11d6", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 333, + "value": { + "AddressId": 32, + "Digest": 2.6874536696483203e+97, + "Hash": "0159a7c321146b06e4d2dee4b2b2216c77d78ad617705aaf11bb4c11d63522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 337, + "value": { + "AddressId": 33, + "Digest": -1.642140329507171e+108, + "Hash": "6103ac559eae4ddf3a052ba8e0bd392ad439546b02b1a64bbe3bf13dcd", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 339, + "value": { + "AddressId": 34, + "Digest": -1.2642643213372364e-188, + "Hash": "0103ac559eae4ddf3a052ba8e0bd392ad439546b02b1a64bbe3bf13dcd3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 343, + "value": { + "AddressId": 35, + "Digest": 1.0024224248301637e+74, + "Hash": "616da6e93617a60a110d00ce7d821d910a741787628e55724bd8a8be95", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 345, + "value": { + "AddressId": 36, + "Digest": -4.105647642042466e+287, + "Hash": "016da6e93617a60a110d00ce7d821d910a741787628e55724bd8a8be953522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 349, + "value": { + "AddressId": 37, + "Digest": 3.8994874645751513e+24, + "Hash": "61aadec732abb4da2f4c3e813617c40813da1526d6fe622f87304b7211", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 351, + "value": { + "AddressId": 38, + "Digest": 1.0869978832987863e+30, + "Hash": "01aadec732abb4da2f4c3e813617c40813da1526d6fe622f87304b72113522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 355, + "value": { + "AddressId": 39, + "Digest": 6.680112625201024e-157, + "Hash": "61d114034e10adf788262242af4cea7149f2a664cb44d4a08a65c93f73", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 357, + "value": { + "AddressId": 40, + "Digest": -9.342753509994841e-110, + "Hash": "01d114034e10adf788262242af4cea7149f2a664cb44d4a08a65c93f733522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 363, + "value": { + "AddressId": 41, + "Digest": -1.738443432070536e-275, + "Hash": "614392a2da496fcbdf4d33ce59af500fd4a3672b9098c963e51cbb2953", + "IsUsed": true, + "Type": 3 + } + }, + { + "id": 365, + "value": { + "AddressId": 42, + "Digest": 147928575774080960000, + "Hash": "014392a2da496fcbdf4d33ce59af500fd4a3672b9098c963e51cbb29533522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": true, + "Type": 1 + } + }, + { + "id": 369, + "value": { + "AddressId": 43, + "Digest": 2.6578588702659997e-224, + "Hash": "6111a13c41942a9ebfc74f3ee64c6f2dfb1a2ae0021c0d008232e44806", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 371, + "value": { + "AddressId": 44, + "Digest": -3.5312576323729524e-183, + "Hash": "0111a13c41942a9ebfc74f3ee64c6f2dfb1a2ae0021c0d008232e448063522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 375, + "value": { + "AddressId": 45, + "Digest": -4.5657133864069804e-282, + "Hash": "61216e76cd8e778650e2c62babbd2ffcbef14d59726d59decececc91f3", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 377, + "value": { + "AddressId": 46, + "Digest": -4.677918786370773e-131, + "Hash": "01216e76cd8e778650e2c62babbd2ffcbef14d59726d59decececc91f33522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 381, + "value": { + "AddressId": 47, + "Digest": 1.1209511401034808e+210, + "Hash": "61da521f8226a768cf03f8c8aae1ac8cb7f47a18a18a9031f6ffa8b5cb", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 383, + "value": { + "AddressId": 48, + "Digest": -1.6056533421094645e-249, + "Hash": "01da521f8226a768cf03f8c8aae1ac8cb7f47a18a18a9031f6ffa8b5cb3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 387, + "value": { + "AddressId": 49, + "Digest": -1.0644984427448559e+245, + "Hash": "619712d62dda90d97044735200e42c9467d7c3febebc3a777c6d2f415a", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 389, + "value": { + "AddressId": 50, + "Digest": -1.0841293954569818e+160, + "Hash": "019712d62dda90d97044735200e42c9467d7c3febebc3a777c6d2f415a3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 393, + "value": { + "AddressId": 51, + "Digest": -5.269376063154755e-290, + "Hash": "613758b8ffec90ae73a50c6b5bcf2b91a578afccb022586542adf9a353", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 395, + "value": { + "AddressId": 52, + "Digest": -1.36734901430298e-261, + "Hash": "013758b8ffec90ae73a50c6b5bcf2b91a578afccb022586542adf9a3533522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 399, + "value": { + "AddressId": 53, + "Digest": -7.791922131646468e-199, + "Hash": "61458c889cdff3e85ef206afc87434289c7648b90a8d99156eaaeb16f3", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 401, + "value": { + "AddressId": 54, + "Digest": -3.707416416635442e-103, + "Hash": "01458c889cdff3e85ef206afc87434289c7648b90a8d99156eaaeb16f33522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 405, + "value": { + "AddressId": 55, + "Digest": -5.58019595358433e+140, + "Hash": "612b06586d435e35bb63b334b2f5c85ffdcc7a8dfd1bef0920da30bf76", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 407, + "value": { + "AddressId": 56, + "Digest": -1.1725614267644176e+151, + "Hash": "012b06586d435e35bb63b334b2f5c85ffdcc7a8dfd1bef0920da30bf763522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 411, + "value": { + "AddressId": 57, + "Digest": 3.312158740927611e+174, + "Hash": "6106c5b72183c0846e328614d0b9655dff0e414dd1e10df299116230d2", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 413, + "value": { + "AddressId": 58, + "Digest": 4.377991456109467e-52, + "Hash": "0106c5b72183c0846e328614d0b9655dff0e414dd1e10df299116230d23522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 417, + "value": { + "AddressId": 59, + "Digest": 1.7184970971608928e-211, + "Hash": "612f9e5fc54d46ed8538ed89846a0d64a5b7119034ada76f8b660cd49e", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 419, + "value": { + "AddressId": 60, + "Digest": 6.752711547512455e-66, + "Hash": "012f9e5fc54d46ed8538ed89846a0d64a5b7119034ada76f8b660cd49e3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 423, + "value": { + "AddressId": 61, + "Digest": 5.125346459754799e+72, + "Hash": "614c50a95703a710d6d759e993f1019d9db489c4d72e38110d412c2584", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 425, + "value": { + "AddressId": 62, + "Digest": -1.3733628237722204e+202, + "Hash": "014c50a95703a710d6d759e993f1019d9db489c4d72e38110d412c25843522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 429, + "value": { + "AddressId": 63, + "Digest": 1.2020976238853324e+193, + "Hash": "616f77ed384190886c95494159098793d352b527726d539d11311b6f7f", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 431, + "value": { + "AddressId": 64, + "Digest": 1.4341807314529186e+285, + "Hash": "016f77ed384190886c95494159098793d352b527726d539d11311b6f7f3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 435, + "value": { + "AddressId": 65, + "Digest": -6.099303498554604e+116, + "Hash": "61dbf8357785da739695d7f0c90d559ab432f7c96956cda11dc2c9fd12", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 437, + "value": { + "AddressId": 66, + "Digest": 4.941660234493613e+151, + "Hash": "01dbf8357785da739695d7f0c90d559ab432f7c96956cda11dc2c9fd123522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 441, + "value": { + "AddressId": 67, + "Digest": 6.980534651334454e-30, + "Hash": "61d4ec8ff0df21d83c9e49c7a0645d71180de138dc4fb8a990cfb39124", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 443, + "value": { + "AddressId": 68, + "Digest": 2.886222830597155e-177, + "Hash": "01d4ec8ff0df21d83c9e49c7a0645d71180de138dc4fb8a990cfb391243522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 447, + "value": { + "AddressId": 69, + "Digest": -1.6114518712146622e-302, + "Hash": "611c727ca88d2805864dcfeba3f6e750f1d4edcc1ceed9615663cd87f1", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 449, + "value": { + "AddressId": 70, + "Digest": 3.512552331782294e-29, + "Hash": "011c727ca88d2805864dcfeba3f6e750f1d4edcc1ceed9615663cd87f13522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 453, + "value": { + "AddressId": 71, + "Digest": -1.1592285659406763e+237, + "Hash": "611fa5e2016d11aa10401b5a8119bf28059604756e3ffceb789e53cd46", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 455, + "value": { + "AddressId": 72, + "Digest": -2.0156773896317508e-125, + "Hash": "011fa5e2016d11aa10401b5a8119bf28059604756e3ffceb789e53cd463522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 459, + "value": { + "AddressId": 73, + "Digest": 2.671659381923158e-183, + "Hash": "61c195204b8504e697fde3d028a7007f3ae30a2646fd6863f815b6f072", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 461, + "value": { + "AddressId": 74, + "Digest": 4.509047308275815e-29, + "Hash": "01c195204b8504e697fde3d028a7007f3ae30a2646fd6863f815b6f0723522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 465, + "value": { + "AddressId": 75, + "Digest": 6.79767440678701e+179, + "Hash": "61a91d990207051f26a3ac3f9685459c5fcb9f34e185cf42cbaf587766", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 467, + "value": { + "AddressId": 76, + "Digest": -1.0451045696337937e-120, + "Hash": "01a91d990207051f26a3ac3f9685459c5fcb9f34e185cf42cbaf5877663522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 471, + "value": { + "AddressId": 77, + "Digest": 1.808844968378034e+147, + "Hash": "61c5e12639034f258ca99e56d3bab3e4697f2001375ba3ca04d57e1e60", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 473, + "value": { + "AddressId": 78, + "Digest": -4.281417073658419e-223, + "Hash": "01c5e12639034f258ca99e56d3bab3e4697f2001375ba3ca04d57e1e603522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 477, + "value": { + "AddressId": 79, + "Digest": -6.628823752517654e-222, + "Hash": "618b00e499c4bb114f5a99942082d217fc5c401ec0652c563c4da3a2c6", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 479, + "value": { + "AddressId": 80, + "Digest": 4.010878712840313e+163, + "Hash": "018b00e499c4bb114f5a99942082d217fc5c401ec0652c563c4da3a2c63522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 485, + "value": { + "AddressId": 81, + "Digest": -1.421832940254618e+170, + "Hash": "e13522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 4 + } + }, + { + "id": 491, + "value": { + "AddressId": 82, + "Digest": -2.58136402261292e-54, + "Hash": "61bf3c15cca319dbba8f0d66b5943172758ce91826c4496f7eb5bbec6a", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 493, + "value": { + "AddressId": 83, + "Digest": 4.535833616086006e-265, + "Hash": "01bf3c15cca319dbba8f0d66b5943172758ce91826c4496f7eb5bbec6a3522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 499, + "value": { + "AddressId": 84, + "Digest": 5.79233518607557e+166, + "Hash": "617b41aef636877a9bdae5620cfd9851e1232b377217e8e07580108a40", + "IsUsed": false, + "Type": 3 + } + }, + { + "id": 501, + "value": { + "AddressId": 85, + "Digest": -5.834929129688963e+238, + "Hash": "017b41aef636877a9bdae5620cfd9851e1232b377217e8e07580108a403522e100aa3b5dd881f3b827f9debd27d1d294a278bfa8f3aac7ebaf", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 507, + "value": { + "AddressId": 86, + "Digest": 9.003355886391902e+108, + "Hash": "018425aa7efc8525af7365d03e7a11fb56fb19ea1a2b06c1b575f39b5e208e4aa6c81bfd5723095d66119dc78717874a918486d4f076063510", + "IsUsed": false, + "Type": 1 + } + }, + { + "id": 508, + "value": { + "AddressId": 87, + "Digest": -1.537835270484703e-219, + "Hash": "017180020fadc5f27c3c3ae306de55c02df0333b49d780dc9c1ca5296f208e4aa6c81bfd5723095d66119dc78717874a918486d4f076063510", + "IsUsed": false, + "Type": 1 + } + } + ], + "AddressMapping": [ + { + "id": 242, + "value": { + "AddressId": 1, + "AddressMappingId": 1, + "KeyDerivationId": 6 + } + }, + { + "id": 244, + "value": { + "AddressId": 2, + "AddressMappingId": 2, + "KeyDerivationId": 6 + } + }, + { + "id": 248, + "value": { + "AddressId": 3, + "AddressMappingId": 3, + "KeyDerivationId": 7 + } + }, + { + "id": 250, + "value": { + "AddressId": 4, + "AddressMappingId": 4, + "KeyDerivationId": 7 + } + }, + { + "id": 254, + "value": { + "AddressId": 5, + "AddressMappingId": 5, + "KeyDerivationId": 8 + } + }, + { + "id": 256, + "value": { + "AddressId": 6, + "AddressMappingId": 6, + "KeyDerivationId": 8 + } + }, + { + "id": 260, + "value": { + "AddressId": 7, + "AddressMappingId": 7, + "KeyDerivationId": 9 + } + }, + { + "id": 262, + "value": { + "AddressId": 8, + "AddressMappingId": 8, + "KeyDerivationId": 9 + } + }, + { + "id": 266, + "value": { + "AddressId": 9, + "AddressMappingId": 9, + "KeyDerivationId": 10 + } + }, + { + "id": 268, + "value": { + "AddressId": 10, + "AddressMappingId": 10, + "KeyDerivationId": 10 + } + }, + { + "id": 272, + "value": { + "AddressId": 11, + "AddressMappingId": 11, + "KeyDerivationId": 11 + } + }, + { + "id": 274, + "value": { + "AddressId": 12, + "AddressMappingId": 12, + "KeyDerivationId": 11 + } + }, + { + "id": 278, + "value": { + "AddressId": 13, + "AddressMappingId": 13, + "KeyDerivationId": 12 + } + }, + { + "id": 280, + "value": { + "AddressId": 14, + "AddressMappingId": 14, + "KeyDerivationId": 12 + } + }, + { + "id": 284, + "value": { + "AddressId": 15, + "AddressMappingId": 15, + "KeyDerivationId": 13 + } + }, + { + "id": 286, + "value": { + "AddressId": 16, + "AddressMappingId": 16, + "KeyDerivationId": 13 + } + }, + { + "id": 290, + "value": { + "AddressId": 17, + "AddressMappingId": 17, + "KeyDerivationId": 14 + } + }, + { + "id": 292, + "value": { + "AddressId": 18, + "AddressMappingId": 18, + "KeyDerivationId": 14 + } + }, + { + "id": 296, + "value": { + "AddressId": 19, + "AddressMappingId": 19, + "KeyDerivationId": 15 + } + }, + { + "id": 298, + "value": { + "AddressId": 20, + "AddressMappingId": 20, + "KeyDerivationId": 15 + } + }, + { + "id": 302, + "value": { + "AddressId": 21, + "AddressMappingId": 21, + "KeyDerivationId": 16 + } + }, + { + "id": 304, + "value": { + "AddressId": 22, + "AddressMappingId": 22, + "KeyDerivationId": 16 + } + }, + { + "id": 308, + "value": { + "AddressId": 23, + "AddressMappingId": 23, + "KeyDerivationId": 17 + } + }, + { + "id": 310, + "value": { + "AddressId": 24, + "AddressMappingId": 24, + "KeyDerivationId": 17 + } + }, + { + "id": 314, + "value": { + "AddressId": 25, + "AddressMappingId": 25, + "KeyDerivationId": 18 + } + }, + { + "id": 316, + "value": { + "AddressId": 26, + "AddressMappingId": 26, + "KeyDerivationId": 18 + } + }, + { + "id": 320, + "value": { + "AddressId": 27, + "AddressMappingId": 27, + "KeyDerivationId": 19 + } + }, + { + "id": 322, + "value": { + "AddressId": 28, + "AddressMappingId": 28, + "KeyDerivationId": 19 + } + }, + { + "id": 326, + "value": { + "AddressId": 29, + "AddressMappingId": 29, + "KeyDerivationId": 20 + } + }, + { + "id": 328, + "value": { + "AddressId": 30, + "AddressMappingId": 30, + "KeyDerivationId": 20 + } + }, + { + "id": 332, + "value": { + "AddressId": 31, + "AddressMappingId": 31, + "KeyDerivationId": 21 + } + }, + { + "id": 334, + "value": { + "AddressId": 32, + "AddressMappingId": 32, + "KeyDerivationId": 21 + } + }, + { + "id": 338, + "value": { + "AddressId": 33, + "AddressMappingId": 33, + "KeyDerivationId": 22 + } + }, + { + "id": 340, + "value": { + "AddressId": 34, + "AddressMappingId": 34, + "KeyDerivationId": 22 + } + }, + { + "id": 344, + "value": { + "AddressId": 35, + "AddressMappingId": 35, + "KeyDerivationId": 23 + } + }, + { + "id": 346, + "value": { + "AddressId": 36, + "AddressMappingId": 36, + "KeyDerivationId": 23 + } + }, + { + "id": 350, + "value": { + "AddressId": 37, + "AddressMappingId": 37, + "KeyDerivationId": 24 + } + }, + { + "id": 352, + "value": { + "AddressId": 38, + "AddressMappingId": 38, + "KeyDerivationId": 24 + } + }, + { + "id": 356, + "value": { + "AddressId": 39, + "AddressMappingId": 39, + "KeyDerivationId": 25 + } + }, + { + "id": 358, + "value": { + "AddressId": 40, + "AddressMappingId": 40, + "KeyDerivationId": 25 + } + }, + { + "id": 364, + "value": { + "AddressId": 41, + "AddressMappingId": 41, + "KeyDerivationId": 27 + } + }, + { + "id": 366, + "value": { + "AddressId": 42, + "AddressMappingId": 42, + "KeyDerivationId": 27 + } + }, + { + "id": 370, + "value": { + "AddressId": 43, + "AddressMappingId": 43, + "KeyDerivationId": 28 + } + }, + { + "id": 372, + "value": { + "AddressId": 44, + "AddressMappingId": 44, + "KeyDerivationId": 28 + } + }, + { + "id": 376, + "value": { + "AddressId": 45, + "AddressMappingId": 45, + "KeyDerivationId": 29 + } + }, + { + "id": 378, + "value": { + "AddressId": 46, + "AddressMappingId": 46, + "KeyDerivationId": 29 + } + }, + { + "id": 382, + "value": { + "AddressId": 47, + "AddressMappingId": 47, + "KeyDerivationId": 30 + } + }, + { + "id": 384, + "value": { + "AddressId": 48, + "AddressMappingId": 48, + "KeyDerivationId": 30 + } + }, + { + "id": 388, + "value": { + "AddressId": 49, + "AddressMappingId": 49, + "KeyDerivationId": 31 + } + }, + { + "id": 390, + "value": { + "AddressId": 50, + "AddressMappingId": 50, + "KeyDerivationId": 31 + } + }, + { + "id": 394, + "value": { + "AddressId": 51, + "AddressMappingId": 51, + "KeyDerivationId": 32 + } + }, + { + "id": 396, + "value": { + "AddressId": 52, + "AddressMappingId": 52, + "KeyDerivationId": 32 + } + }, + { + "id": 400, + "value": { + "AddressId": 53, + "AddressMappingId": 53, + "KeyDerivationId": 33 + } + }, + { + "id": 402, + "value": { + "AddressId": 54, + "AddressMappingId": 54, + "KeyDerivationId": 33 + } + }, + { + "id": 406, + "value": { + "AddressId": 55, + "AddressMappingId": 55, + "KeyDerivationId": 34 + } + }, + { + "id": 408, + "value": { + "AddressId": 56, + "AddressMappingId": 56, + "KeyDerivationId": 34 + } + }, + { + "id": 412, + "value": { + "AddressId": 57, + "AddressMappingId": 57, + "KeyDerivationId": 35 + } + }, + { + "id": 414, + "value": { + "AddressId": 58, + "AddressMappingId": 58, + "KeyDerivationId": 35 + } + }, + { + "id": 418, + "value": { + "AddressId": 59, + "AddressMappingId": 59, + "KeyDerivationId": 36 + } + }, + { + "id": 420, + "value": { + "AddressId": 60, + "AddressMappingId": 60, + "KeyDerivationId": 36 + } + }, + { + "id": 424, + "value": { + "AddressId": 61, + "AddressMappingId": 61, + "KeyDerivationId": 37 + } + }, + { + "id": 426, + "value": { + "AddressId": 62, + "AddressMappingId": 62, + "KeyDerivationId": 37 + } + }, + { + "id": 430, + "value": { + "AddressId": 63, + "AddressMappingId": 63, + "KeyDerivationId": 38 + } + }, + { + "id": 432, + "value": { + "AddressId": 64, + "AddressMappingId": 64, + "KeyDerivationId": 38 + } + }, + { + "id": 436, + "value": { + "AddressId": 65, + "AddressMappingId": 65, + "KeyDerivationId": 39 + } + }, + { + "id": 438, + "value": { + "AddressId": 66, + "AddressMappingId": 66, + "KeyDerivationId": 39 + } + }, + { + "id": 442, + "value": { + "AddressId": 67, + "AddressMappingId": 67, + "KeyDerivationId": 40 + } + }, + { + "id": 444, + "value": { + "AddressId": 68, + "AddressMappingId": 68, + "KeyDerivationId": 40 + } + }, + { + "id": 448, + "value": { + "AddressId": 69, + "AddressMappingId": 69, + "KeyDerivationId": 41 + } + }, + { + "id": 450, + "value": { + "AddressId": 70, + "AddressMappingId": 70, + "KeyDerivationId": 41 + } + }, + { + "id": 454, + "value": { + "AddressId": 71, + "AddressMappingId": 71, + "KeyDerivationId": 42 + } + }, + { + "id": 456, + "value": { + "AddressId": 72, + "AddressMappingId": 72, + "KeyDerivationId": 42 + } + }, + { + "id": 460, + "value": { + "AddressId": 73, + "AddressMappingId": 73, + "KeyDerivationId": 43 + } + }, + { + "id": 462, + "value": { + "AddressId": 74, + "AddressMappingId": 74, + "KeyDerivationId": 43 + } + }, + { + "id": 466, + "value": { + "AddressId": 75, + "AddressMappingId": 75, + "KeyDerivationId": 44 + } + }, + { + "id": 468, + "value": { + "AddressId": 76, + "AddressMappingId": 76, + "KeyDerivationId": 44 + } + }, + { + "id": 472, + "value": { + "AddressId": 77, + "AddressMappingId": 77, + "KeyDerivationId": 45 + } + }, + { + "id": 474, + "value": { + "AddressId": 78, + "AddressMappingId": 78, + "KeyDerivationId": 45 + } + }, + { + "id": 478, + "value": { + "AddressId": 79, + "AddressMappingId": 79, + "KeyDerivationId": 46 + } + }, + { + "id": 480, + "value": { + "AddressId": 80, + "AddressMappingId": 80, + "KeyDerivationId": 46 + } + }, + { + "id": 486, + "value": { + "AddressId": 81, + "AddressMappingId": 81, + "KeyDerivationId": 48 + } + }, + { + "id": 492, + "value": { + "AddressId": 82, + "AddressMappingId": 82, + "KeyDerivationId": 49 + } + }, + { + "id": 494, + "value": { + "AddressId": 83, + "AddressMappingId": 83, + "KeyDerivationId": 49 + } + }, + { + "id": 500, + "value": { + "AddressId": 84, + "AddressMappingId": 84, + "KeyDerivationId": 50 + } + }, + { + "id": 502, + "value": { + "AddressId": 85, + "AddressMappingId": 85, + "KeyDerivationId": 50 + } + } + ], + "Bip44Account": [ + { + "id": 235, + "value": { + "Bip44AccountId": 1, + "KeyDerivationId": 4 + } + } + ], + "Bip44Chain": [ + { + "id": 239, + "value": { + "Bip44ChainId": 1, + "DisplayCutoff": 1, + "KeyDerivationId": 5 + } + }, + { + "id": 361, + "value": { + "Bip44ChainId": 2, + "DisplayCutoff": null, + "KeyDerivationId": 26 + } + }, + { + "id": 483, + "value": { + "Bip44ChainId": 3, + "DisplayCutoff": null, + "KeyDerivationId": 47 + } + } + ], + "Bip44Wrapper": [], + "Block": [ + { + "id": 509, + "value": { + "BlockId": 1, + "BlockTime": 1699864409000, + "Digest": -1.2539522861616603e-13, + "Hash": "3664bab92afb887173a2efe7031eb1110c3ae7942a0c2f32c487e82aaac8ea19", + "Height": 9541014, + "SlotNum": 108298118 + } + }, + { + "id": 519, + "value": { + "BlockId": 2, + "BlockTime": 1709816081000, + "Digest": 6.465949388494242e+205, + "Hash": "510e0e94d2cc079ee57e6130bd26415b7895cec13f297136db5f442551484b1b", + "Height": 10025299, + "SlotNum": 118249790 + } + } + ], + "CanonicalAddress": [ + { + "id": 245, + "value": { + "CanonicalAddressId": 1, + "KeyDerivationId": 6 + } + }, + { + "id": 251, + "value": { + "CanonicalAddressId": 2, + "KeyDerivationId": 7 + } + }, + { + "id": 257, + "value": { + "CanonicalAddressId": 3, + "KeyDerivationId": 8 + } + }, + { + "id": 263, + "value": { + "CanonicalAddressId": 4, + "KeyDerivationId": 9 + } + }, + { + "id": 269, + "value": { + "CanonicalAddressId": 5, + "KeyDerivationId": 10 + } + }, + { + "id": 275, + "value": { + "CanonicalAddressId": 6, + "KeyDerivationId": 11 + } + }, + { + "id": 281, + "value": { + "CanonicalAddressId": 7, + "KeyDerivationId": 12 + } + }, + { + "id": 287, + "value": { + "CanonicalAddressId": 8, + "KeyDerivationId": 13 + } + }, + { + "id": 293, + "value": { + "CanonicalAddressId": 9, + "KeyDerivationId": 14 + } + }, + { + "id": 299, + "value": { + "CanonicalAddressId": 10, + "KeyDerivationId": 15 + } + }, + { + "id": 305, + "value": { + "CanonicalAddressId": 11, + "KeyDerivationId": 16 + } + }, + { + "id": 311, + "value": { + "CanonicalAddressId": 12, + "KeyDerivationId": 17 + } + }, + { + "id": 317, + "value": { + "CanonicalAddressId": 13, + "KeyDerivationId": 18 + } + }, + { + "id": 323, + "value": { + "CanonicalAddressId": 14, + "KeyDerivationId": 19 + } + }, + { + "id": 329, + "value": { + "CanonicalAddressId": 15, + "KeyDerivationId": 20 + } + }, + { + "id": 335, + "value": { + "CanonicalAddressId": 16, + "KeyDerivationId": 21 + } + }, + { + "id": 341, + "value": { + "CanonicalAddressId": 17, + "KeyDerivationId": 22 + } + }, + { + "id": 347, + "value": { + "CanonicalAddressId": 18, + "KeyDerivationId": 23 + } + }, + { + "id": 353, + "value": { + "CanonicalAddressId": 19, + "KeyDerivationId": 24 + } + }, + { + "id": 359, + "value": { + "CanonicalAddressId": 20, + "KeyDerivationId": 25 + } + }, + { + "id": 367, + "value": { + "CanonicalAddressId": 21, + "KeyDerivationId": 27 + } + }, + { + "id": 373, + "value": { + "CanonicalAddressId": 22, + "KeyDerivationId": 28 + } + }, + { + "id": 379, + "value": { + "CanonicalAddressId": 23, + "KeyDerivationId": 29 + } + }, + { + "id": 385, + "value": { + "CanonicalAddressId": 24, + "KeyDerivationId": 30 + } + }, + { + "id": 391, + "value": { + "CanonicalAddressId": 25, + "KeyDerivationId": 31 + } + }, + { + "id": 397, + "value": { + "CanonicalAddressId": 26, + "KeyDerivationId": 32 + } + }, + { + "id": 403, + "value": { + "CanonicalAddressId": 27, + "KeyDerivationId": 33 + } + }, + { + "id": 409, + "value": { + "CanonicalAddressId": 28, + "KeyDerivationId": 34 + } + }, + { + "id": 415, + "value": { + "CanonicalAddressId": 29, + "KeyDerivationId": 35 + } + }, + { + "id": 421, + "value": { + "CanonicalAddressId": 30, + "KeyDerivationId": 36 + } + }, + { + "id": 427, + "value": { + "CanonicalAddressId": 31, + "KeyDerivationId": 37 + } + }, + { + "id": 433, + "value": { + "CanonicalAddressId": 32, + "KeyDerivationId": 38 + } + }, + { + "id": 439, + "value": { + "CanonicalAddressId": 33, + "KeyDerivationId": 39 + } + }, + { + "id": 445, + "value": { + "CanonicalAddressId": 34, + "KeyDerivationId": 40 + } + }, + { + "id": 451, + "value": { + "CanonicalAddressId": 35, + "KeyDerivationId": 41 + } + }, + { + "id": 457, + "value": { + "CanonicalAddressId": 36, + "KeyDerivationId": 42 + } + }, + { + "id": 463, + "value": { + "CanonicalAddressId": 37, + "KeyDerivationId": 43 + } + }, + { + "id": 469, + "value": { + "CanonicalAddressId": 38, + "KeyDerivationId": 44 + } + }, + { + "id": 475, + "value": { + "CanonicalAddressId": 39, + "KeyDerivationId": 45 + } + }, + { + "id": 481, + "value": { + "CanonicalAddressId": 40, + "KeyDerivationId": 46 + } + }, + { + "id": 487, + "value": { + "CanonicalAddressId": 41, + "KeyDerivationId": 48 + } + }, + { + "id": 495, + "value": { + "CanonicalAddressId": 42, + "KeyDerivationId": 49 + } + }, + { + "id": 503, + "value": { + "CanonicalAddressId": 43, + "KeyDerivationId": 50 + } + } + ], + "Certificate": [], + "CertificateAddress": [], + "Cip1852Wrapper": [ + { + "id": 228, + "value": { + "ConceptualWalletId": 1, + "PrivateDeriverKeyDerivationId": 1, + "PrivateDeriverLevel": 0, + "PublicDeriverLevel": 3, + "RootKeyDerivationId": 1, + "SignerLevel": 0 + } + } + ], + "CoinTypeDerivation": [ + { + "id": 232, + "value": { + "CoinTypeDerivationId": 1, + "KeyDerivationId": 3 + } + } + ], + "ConceptualWallet": [ + { + "id": 224, + "value": { + "ConceptualWalletId": 1, + "Name": "TestWallet1", + "NetworkId": 0 + } + } + ], + "EncryptionMeta": [ + { + "id": 93, + "value": { + "AddressSeed": 1033713417, + "BlockSeed": 763624740, + "EncryptionMetaId": 0, + "TokenSeed": 2585207091, + "TransactionSeed": 318293096 + } + } + ], + "Explorer": [ + { + "id": 99, + "value": { + "Endpoints": { + "address": "https://cardanoscan.io/address/", + "pool": "https://cardanoscan.io/pool/", + "stakeAddress": "https://cardanoscan.io/stakeKey/", + "token": "https://cardanoscan.io/token/", + "transaction": "https://cardanoscan.io/transaction/" + }, + "ExplorerId": 106, + "IsBackup": true, + "Name": "CardanoScan", + "NetworkId": 0 + } + }, + { + "id": 100, + "value": { + "Endpoints": { + "address": "https://adastat.net/addresses/", + "pool": "https://adastat.net/pools/", + "stakeAddress": "https://adastat.net/addresses/", + "token": "https://adastat.net/tokens/", + "transaction": "https://adastat.net/transactions/" + }, + "ExplorerId": 108, + "IsBackup": false, + "Name": "AdaStat", + "NetworkId": 0 + } + }, + { + "id": 101, + "value": { + "Endpoints": { + "address": "https://explorer.cardano.org/en/address?address=", + "transaction": "https://explorer.cardano.org/en/transaction?id=" + }, + "ExplorerId": 104, + "IsBackup": false, + "Name": "CardanoExplorer", + "NetworkId": 0 + } + }, + { + "id": 102, + "value": { + "Endpoints": { + "address": "https://cexplorer.io/address/", + "pool": "https://cexplorer.io/pool/", + "stakeAddress": "https://cexplorer.io/stake/", + "token": "https://cexplorer.io/asset/", + "transaction": "https://cexplorer.io/tx/" + }, + "ExplorerId": 100, + "IsBackup": false, + "Name": "Cexplorer", + "NetworkId": 0 + } + }, + { + "id": 103, + "value": { + "Endpoints": { + "address": "https://blockchair.com/cardano/address/", + "transaction": "https://blockchair.com/cardano/transaction/" + }, + "ExplorerId": 102, + "IsBackup": false, + "Name": "Blockchair", + "NetworkId": 0 + } + }, + { + "id": 104, + "value": { + "Endpoints": { + "address": "https://adapools.org/address/", + "pool": "https://adapools.org/pool/", + "stakeAddress": "https://adapools.org/stake/", + "transaction": "https://adapools.org/transactions/" + }, + "ExplorerId": 105, + "IsBackup": false, + "Name": "ADApools", + "NetworkId": 0 + } + }, + { + "id": 105, + "value": { + "Endpoints": { + "pool": "https://pooltool.io/pool/" + }, + "ExplorerId": 107, + "IsBackup": false, + "Name": "PoolTool", + "NetworkId": 0 + } + }, + { + "id": 106, + "value": { + "Endpoints": { + "address": "https://explorer.cardano-testnet.iohkdev.io/en/address?address=", + "transaction": "https://explorer.cardano-testnet.iohkdev.io/en/transaction?id=" + }, + "ExplorerId": 400, + "IsBackup": true, + "Name": "CardanoExplorer", + "NetworkId": 300 + } + }, + { + "id": 107, + "value": { + "Endpoints": { + "address": "https://testnet.cardanoscan.io/address/", + "pool": "https://testnet.cardanoscan.io/pool/", + "stakeAddress": "https://testnet.cardanoscan.io/stakeKey/", + "token": "https://testnet.cardanoscan.io/token/", + "transaction": "https://testnet.cardanoscan.io/transaction/" + }, + "ExplorerId": 450, + "IsBackup": true, + "Name": "CardanoScan", + "NetworkId": 250 + } + }, + { + "id": 108, + "value": { + "Endpoints": { + "address": "https://preview.cardanoscan.io/address/", + "pool": "https://preview.cardanoscan.io/pool/", + "stakeAddress": "https://preview.cardanoscan.io/stakeKey/", + "token": "https://preview.cardanoscan.io/token/", + "transaction": "https://preview.cardanoscan.io/transaction/" + }, + "ExplorerId": 550, + "IsBackup": true, + "Name": "CardanoScan", + "NetworkId": 350 + } + }, + { + "id": 109, + "value": { + "Endpoints": { + "address": "https://sancho.cexplorer.io/address/", + "pool": "https://sancho.cexplorer.io/pool/", + "stakeAddress": "https://sancho.cexplorer.io/stake/", + "token": "https://sancho.cexplorer.io/asset/", + "transaction": "https://sancho.cexplorer.io/tx/" + }, + "ExplorerId": 650, + "IsBackup": true, + "Name": "Cexplorer", + "NetworkId": 450 + } + } + ], + "HwWalletMeta": [], + "Key": [ + { + "id": 225, + "value": { + "Hash": "edb8eaa8970996442bf9633ad2c578b1a67d14fad00a28e36c7d84c33c14019ffc8f21da488c8ed9ba4871e17246aa2a223a98a6d0739f02d8f2bc4fa2577ba8f02161a39e9148b5f2e71c547beffa40bccab83cd1ef995c7ce1425bb1073043526e0bc421f34d3ac7bdf8e1dc385ef6007ca84633b95b8f8d8382c77d335fc44633a77d859af2626e5e4086aec4da2c639f91f3b0c296cc7207a087", + "IsEncrypted": true, + "KeyId": 1, + "PasswordLastUpdate": null, + "Type": 0 + } + }, + { + "id": 233, + "value": { + "Hash": "45d98cc6f9408741ebd3820553b32a08d9acb7174c0ecdb58ec0b708c502716e55a588dd5dcd0dbd0497dc0a429a93cb352d7ca95f131f29a5ab682f9bd0192c", + "IsEncrypted": false, + "KeyId": 2, + "PasswordLastUpdate": null, + "Type": 0 + } + } + ], + "KeyDerivation": [ + { + "id": 226, + "value": { + "Index": null, + "KeyDerivationId": 1, + "Parent": null, + "PrivateKeyId": 1, + "PublicKeyId": null + } + }, + { + "id": 229, + "value": { + "Index": 2147485500, + "KeyDerivationId": 2, + "Parent": 1, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 231, + "value": { + "Index": 2147485463, + "KeyDerivationId": 3, + "Parent": 2, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 234, + "value": { + "Index": 2147483648, + "KeyDerivationId": 4, + "Parent": 3, + "PrivateKeyId": null, + "PublicKeyId": 2 + } + }, + { + "id": 238, + "value": { + "Index": 0, + "KeyDerivationId": 5, + "Parent": 4, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 240, + "value": { + "Index": 0, + "KeyDerivationId": 6, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 246, + "value": { + "Index": 1, + "KeyDerivationId": 7, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 252, + "value": { + "Index": 2, + "KeyDerivationId": 8, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 258, + "value": { + "Index": 3, + "KeyDerivationId": 9, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 264, + "value": { + "Index": 4, + "KeyDerivationId": 10, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 270, + "value": { + "Index": 5, + "KeyDerivationId": 11, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 276, + "value": { + "Index": 6, + "KeyDerivationId": 12, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 282, + "value": { + "Index": 7, + "KeyDerivationId": 13, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 288, + "value": { + "Index": 8, + "KeyDerivationId": 14, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 294, + "value": { + "Index": 9, + "KeyDerivationId": 15, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 300, + "value": { + "Index": 10, + "KeyDerivationId": 16, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 306, + "value": { + "Index": 11, + "KeyDerivationId": 17, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 312, + "value": { + "Index": 12, + "KeyDerivationId": 18, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 318, + "value": { + "Index": 13, + "KeyDerivationId": 19, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 324, + "value": { + "Index": 14, + "KeyDerivationId": 20, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 330, + "value": { + "Index": 15, + "KeyDerivationId": 21, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 336, + "value": { + "Index": 16, + "KeyDerivationId": 22, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 342, + "value": { + "Index": 17, + "KeyDerivationId": 23, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 348, + "value": { + "Index": 18, + "KeyDerivationId": 24, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 354, + "value": { + "Index": 19, + "KeyDerivationId": 25, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 360, + "value": { + "Index": 1, + "KeyDerivationId": 26, + "Parent": 4, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 362, + "value": { + "Index": 0, + "KeyDerivationId": 27, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 368, + "value": { + "Index": 1, + "KeyDerivationId": 28, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 374, + "value": { + "Index": 2, + "KeyDerivationId": 29, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 380, + "value": { + "Index": 3, + "KeyDerivationId": 30, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 386, + "value": { + "Index": 4, + "KeyDerivationId": 31, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 392, + "value": { + "Index": 5, + "KeyDerivationId": 32, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 398, + "value": { + "Index": 6, + "KeyDerivationId": 33, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 404, + "value": { + "Index": 7, + "KeyDerivationId": 34, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 410, + "value": { + "Index": 8, + "KeyDerivationId": 35, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 416, + "value": { + "Index": 9, + "KeyDerivationId": 36, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 422, + "value": { + "Index": 10, + "KeyDerivationId": 37, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 428, + "value": { + "Index": 11, + "KeyDerivationId": 38, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 434, + "value": { + "Index": 12, + "KeyDerivationId": 39, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 440, + "value": { + "Index": 13, + "KeyDerivationId": 40, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 446, + "value": { + "Index": 14, + "KeyDerivationId": 41, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 452, + "value": { + "Index": 15, + "KeyDerivationId": 42, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 458, + "value": { + "Index": 16, + "KeyDerivationId": 43, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 464, + "value": { + "Index": 17, + "KeyDerivationId": 44, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 470, + "value": { + "Index": 18, + "KeyDerivationId": 45, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 476, + "value": { + "Index": 19, + "KeyDerivationId": 46, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 482, + "value": { + "Index": 2, + "KeyDerivationId": 47, + "Parent": 4, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 484, + "value": { + "Index": 0, + "KeyDerivationId": 48, + "Parent": 47, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 490, + "value": { + "Index": 20, + "KeyDerivationId": 49, + "Parent": 5, + "PrivateKeyId": null, + "PublicKeyId": null + } + }, + { + "id": 498, + "value": { + "Index": 20, + "KeyDerivationId": 50, + "Parent": 26, + "PrivateKeyId": null, + "PublicKeyId": null + } + } + ], + "LastSyncInfo": [ + { + "id": 236, + "value": { + "BlockHash": "f01a8ab4d995799bbda61e924dbf8f556b7cdcbdb58a6557c9cfe1e3876f9e8b", + "Height": 10385188, + "LastSyncInfoId": 1, + "SlotNum": 125579463, + "Time": 1717145794121 + } + } + ], + "Network": [ + { + "id": 94, + "value": { + "Backend": { + "BackendService": "https://api.yoroiwallet.com", + "TokenInfoService": "https://cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 764824073, + "ChainNetworkId": "1", + "GenesisDate": "1506203091000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { + "coefficient": "44", + "constant": "155381" + }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 432000, + "StartAt": 208 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 0, + "NetworkName": "Cardano Mainnet" + } + }, + { + "id": 95, + "value": { + "Backend": { + "BackendService": "https://testnet-backend.yoroiwallet.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 1097911063, + "ChainNetworkId": "0", + "GenesisDate": "1563999616000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { + "coefficient": "44", + "constant": "155381" + }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 432000, + "StartAt": 74 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 300, + "NetworkName": "Cardano Legacy Testnet" + } + }, + { + "id": 96, + "value": { + "Backend": { + "BackendService": "https://preprod-backend.yoroiwallet.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 1, + "ChainNetworkId": "0", + "GenesisDate": "1654041600000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { + "coefficient": "44", + "constant": "155381" + }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 432000, + "StartAt": 0 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 250, + "NetworkName": "Cardano Preprod Testnet" + } + }, + { + "id": 97, + "value": { + "Backend": { + "BackendService": "https://preview-backend.emurgornd.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 2, + "ChainNetworkId": "0", + "GenesisDate": "1666656000000", + "SlotDuration": 20, + "SlotsPerEpoch": 21600, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { + "coefficient": "44", + "constant": "155381" + }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 86400, + "StartAt": 0 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 350, + "NetworkName": "Cardano Preview Testnet" + } + }, + { + "id": 98, + "value": { + "Backend": { + "BackendService": "https://sanchonet-backend.yoroiwallet.com", + "TokenInfoService": "https://stage-cdn.yoroiwallet.com" + }, + "BaseConfig": [ + { + "ByronNetworkId": 4, + "ChainNetworkId": "0", + "GenesisDate": "1686789000000", + "SlotDuration": 20, + "SlotsPerEpoch": 4320, + "StartAt": 0 + }, + { + "CoinsPerUtxoWord": "34482", + "KeyDeposit": "2000000", + "LinearFee": { + "coefficient": "44", + "constant": "155381" + }, + "MinimumUtxoVal": "1000000", + "PerEpochPercentageReward": 69344, + "PoolDeposit": "500000000", + "SlotDuration": 1, + "SlotsPerEpoch": 86400, + "StartAt": 0 + } + ], + "CoinType": 2147485463, + "Fork": 0, + "NetworkId": 450, + "NetworkName": "Cardano Sancho Testnet" + } + } + ], + "PreferredExplorer": [], + "PriceData": [], + "PublicDeriver": [ + { + "id": 237, + "value": { + "ConceptualWalletId": 1, + "Index": 0, + "KeyDerivationId": 4, + "LastSyncInfoId": 1, + "Name": "", + "PublicDeriverId": 1 + } + } + ], + "PurposeDerivation": [ + { + "id": 230, + "value": { + "KeyDerivationId": 2, + "PurposeDerivationId": 1 + } + } + ], + "RootDerivation": [ + { + "id": 227, + "value": { + "KeyDerivationId": 1, + "RootDerivationId": 1 + } + } + ], + "Token": [ + { + "id": 110, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "ADA", + "type": "Cardano" + }, + "NetworkId": 0, + "TokenId": 1 + } + }, + { + "id": 111, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 300, + "TokenId": 2 + } + }, + { + "id": 112, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 250, + "TokenId": 3 + } + }, + { + "id": 113, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 350, + "TokenId": 4 + } + }, + { + "id": 114, + "value": { + "Digest": -2.721713972065479e-183, + "Identifier": "", + "IsDefault": true, + "IsNFT": false, + "Metadata": { + "assetName": "", + "logo": null, + "longName": null, + "numberOfDecimals": 6, + "policyId": "", + "ticker": "TADA", + "type": "Cardano" + }, + "NetworkId": 450, + "TokenId": 5 + } + } + ], + "TokenList": [ + { + "id": 515, + "value": { + "Amount": "213595757", + "ListId": 0, + "TokenId": 1, + "TokenListItemId": 1 + } + }, + { + "id": 516, + "value": { + "Amount": "5000000", + "ListId": 1, + "TokenId": 1, + "TokenListItemId": 2 + } + }, + { + "id": 517, + "value": { + "Amount": "5500000", + "ListId": 2, + "TokenId": 1, + "TokenListItemId": 3 + } + }, + { + "id": 518, + "value": { + "Amount": "202924580", + "ListId": 3, + "TokenId": 1, + "TokenListItemId": 4 + } + }, + { + "id": 525, + "value": { + "Amount": "5000000", + "ListId": 4, + "TokenId": 1, + "TokenListItemId": 5 + } + }, + { + "id": 526, + "value": { + "Amount": "1000000", + "ListId": 5, + "TokenId": 1, + "TokenListItemId": 6 + } + }, + { + "id": 527, + "value": { + "Amount": "1000000", + "ListId": 6, + "TokenId": 1, + "TokenListItemId": 7 + } + }, + { + "id": 528, + "value": { + "Amount": "2828823", + "ListId": 7, + "TokenId": 1, + "TokenListItemId": 8 + } + } + ], + "Transaction": [ + { + "id": 510, + "value": { + "BlockId": 1, + "Digest": 7.714062039903406e+88, + "ErrorMessage": null, + "Extra": { + "Fee": "171177", + "IsValid": true, + "Metadata": null + }, + "Hash": "4a551e08a8808cfaf667bf29b2ebdddd525c48287b58eede94ceb7ee3692bec3", + "LastUpdateTime": 1699864409000, + "Ordinal": 1, + "Status": 1, + "TransactionId": 1, + "Type": 1 + } + }, + { + "id": 520, + "value": { + "BlockId": 2, + "Digest": -7.346330259468635e+88, + "ErrorMessage": null, + "Extra": { + "Fee": "171177", + "IsValid": true, + "Metadata": null + }, + "Hash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "LastUpdateTime": 1709816081000, + "Ordinal": 30, + "Status": 1, + "TransactionId": 2, + "Type": 1 + } + } + ], + "TxMemo": [ + { + "id": 648, + "value": { + "Content": "j1hKEo4Er4FDLFAtGBo07jIcXBSOqx9D16U0sUIl", + "Digest": -7.346330259468635e+88, + "LastUpdated": 1717145792007, + "TransactionHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "WalletId": "JPAX-4675" + } + } + ], + "UtxoAtSafePointTable": [ + { + "id": 758, + "value": { + "PublicDeriverId": 1, + "UtxoAtSafePoint": { + "lastSafeBlockHash": "1db1f94756922ca3cce0f11dcd177e133093767c5c6fd842eb5e9a26bfafe93c", + "utxos": [ + { + "amount": "1000000", + "assets": [], + "blockNum": "10025299", + "receiver": "addr1q98tt4wxnt32h3fn63xkzh4q7ah57v330v40mc2e9ale5jp4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmrz6qx", + "txHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "txIndex": 0, + "utxoId": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c:0" + }, + { + "amount": "1000000", + "assets": [], + "blockNum": "10025299", + "receiver": "addr1q9pe9gk6f9huhh6dx089nt6spl22xeetjzvvjcl9rjajj5e4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmnhvza", + "txHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "txIndex": 1, + "utxoId": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c:1" + }, + { + "amount": "2828823", + "assets": [], + "blockNum": "10025299", + "receiver": "addr1q9pe9gk6f9huhh6dx089nt6spl22xeetjzvvjcl9rjajj5e4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmnhvza", + "txHash": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c", + "txIndex": 2, + "utxoId": "89096e2c607c60e4e10ca171e28ee59f5866bece6ce4451868b544dc25e6bb5c:2" + } + ] + }, + "UtxoAtSafePointId": 1 + } + } + ], + "UtxoDiffToBestBlock": [ + { + "id": 759, + "value": { + "PublicDeriverId": 1, + "UtxoDiffToBestBlockId": 1, + "lastBestBlockHash": "f01a8ab4d995799bbda61e924dbf8f556b7cdcbdb58a6557c9cfe1e3876f9e8b", + "newUtxos": [], + "spentUtxoIds": [] + } + } + ], + "UtxoTransactionInput": [ + { + "id": 511, + "value": { + "AddressId": 86, + "IndexInOwnTx": 0, + "IndexInParentTx": 2, + "ParentTxHash": "60f51a2ce15cd8c01f66d80091a1397695735bd682166209813d9276c4cc7ff8", + "TokenListId": 0, + "TransactionId": 1, + "UtxoTransactionInputId": 1 + } + }, + { + "id": 521, + "value": { + "AddressId": 2, + "IndexInOwnTx": 0, + "IndexInParentTx": 0, + "ParentTxHash": "4a551e08a8808cfaf667bf29b2ebdddd525c48287b58eede94ceb7ee3692bec3", + "TokenListId": 4, + "TransactionId": 2, + "UtxoTransactionInputId": 2 + } + } + ], + "UtxoTransactionOutput": [ + { + "id": 512, + "value": { + "AddressId": 2, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": false, + "OutputIndex": 0, + "TokenListId": 1, + "TransactionId": 1, + "UtxoTransactionOutputId": 1 + } + }, + { + "id": 513, + "value": { + "AddressId": 87, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 1, + "TokenListId": 2, + "TransactionId": 1, + "UtxoTransactionOutputId": 2 + } + }, + { + "id": 514, + "value": { + "AddressId": 87, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 2, + "TokenListId": 3, + "TransactionId": 1, + "UtxoTransactionOutputId": 3 + } + }, + { + "id": 522, + "value": { + "AddressId": 2, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 0, + "TokenListId": 5, + "TransactionId": 2, + "UtxoTransactionOutputId": 4 + } + }, + { + "id": 523, + "value": { + "AddressId": 42, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 1, + "TokenListId": 6, + "TransactionId": 2, + "UtxoTransactionOutputId": 5 + } + }, + { + "id": 524, + "value": { + "AddressId": 42, + "ErgoBoxId": null, + "ErgoCreationHeight": null, + "ErgoRegisters": null, + "ErgoTree": null, + "IsUnspent": true, + "OutputIndex": 2, + "TokenListId": 7, + "TransactionId": 2, + "UtxoTransactionOutputId": 6 + } + } + ] +} \ No newline at end of file diff --git a/packages/yoroi-extension/features/support/windowManager.js b/packages/e2e-tests/helpers/windowManager.js similarity index 51% rename from packages/yoroi-extension/features/support/windowManager.js rename to packages/e2e-tests/helpers/windowManager.js index 0330682864..352c2f731f 100644 --- a/packages/yoroi-extension/features/support/windowManager.js +++ b/packages/e2e-tests/helpers/windowManager.js @@ -1,47 +1,34 @@ -// @flow -import { WebDriver } from 'selenium-webdriver'; -import { defaultRepeatPeriod, defaultWaitTimeout } from './helpers/common-constants'; - -type WindowType = 'tab' | 'window'; -type CustomWindowHandle = {| - title: string, - handle: string, -|}; +import { defaultRepeatPeriod, defaultWaitTimeout } from './timeConstants.js'; class WindowManagerError extends Error {} export const mockDAppName = 'MockDApp'; export const popupConnectorName = 'popupConnectorWindow'; +export const popupConnectorWindowTitle = 'Yoroi dApp Connector'; export const extensionTabName = 'Yoroi'; export const faqTabName = 'Yoroi - EMURGO'; export const trezorConnectTabName = 'Trezor'; export const backgroungTabName = 'background'; export class WindowManager { - windowHandles: Array; - driver: WebDriver; - logger: Object; - - constructor(driver: WebDriver, logger: Object) { + constructor(driver, logger) { this.driver = driver; this.windowHandles = []; this.logger = logger; } async init() { - this.logger.info(`WindowManager: Initializing the Window manager`); + this.logger.info(`WindowManager::init Initializing the Window manager`); const mainWindowHandle = await this._getCurrentWindowHandle(); const windowTitle = await this._getWindowTitle(); this.logger.info( - `WindowManager: -> The first and main window is { "${windowTitle}": "${mainWindowHandle}" }` + `WindowManager::init The first and main window is { "${windowTitle}": "${mainWindowHandle}" }` ); this.windowHandles.push({ title: windowTitle, handle: mainWindowHandle }); } - async _waitWindowTitle( - timeoutMs: number = defaultWaitTimeout, - repeatPeriodMs: number = defaultRepeatPeriod): Promise { - this.logger.info(`WindowManager:_waitWindowTitle: Waiting for the window title`); + async _waitWindowTitle(timeoutMs = defaultWaitTimeout, repeatPeriodMs = defaultRepeatPeriod) { + this.logger.info(`WindowManager::_waitWindowTitle Waiting for the window title`); const endTime = Date.now() + timeoutMs; while (endTime >= Date.now()) { @@ -49,14 +36,14 @@ export class WindowManager { if (windowTitle !== '') return windowTitle; await this.driver.sleep(repeatPeriodMs); } - this.logger.error(`WindowManager:_waitWindowTitle: -> The window has the empty title`); + this.logger.error(`WindowManager::_waitWindowTitle The window has the empty title`); throw new WindowManagerError(`The window has the empty title`); } - async _getWindowTitle(): Promise { - this.logger.info(`WindowManager: Getting a window title`); + async _getWindowTitle() { + this.logger.info(`WindowManager::_getWindowTitle Getting a window title`); const windowTitle = await this._waitWindowTitle(); - this.logger.info(`WindowManager: -> The window title is "${windowTitle}"`); + this.logger.info(`WindowManager::_getWindowTitle The window title is "${windowTitle}"`); if (windowTitle === extensionTabName) { return extensionTabName; } @@ -66,51 +53,57 @@ export class WindowManager { return 'main'; } - _getHandleByTitle(title: string): Array { - this.logger.info(`WindowManager: Getting a handle by the title "${title}"`); + _getHandleByTitle(title) { + this.logger.info(`WindowManager::_getHandleByTitle Getting a handle by the title "${title}"`); const handles = this.windowHandles.filter(customHandle => customHandle.title === title); this.logger.info( - `WindowManager: -> The handles for title "${title}" are ${JSON.stringify(handles)}` + `WindowManager::_getHandleByTitle The handles for title "${title}" are ${JSON.stringify(handles)}` ); return handles; } - _getTitleByHandle(handle: string): Array { - this.logger.info(`WindowManager: Getting a title by the handle "${handle}"`); + _getTitleByHandle(handle) { + this.logger.info(`WindowManager::_getTitleByHandle Getting a title by the handle "${handle}"`); const handles = this.windowHandles.filter(customHandle => customHandle.handle === handle); this.logger.info( - `WindowManager: -> The titles for the handle "${handle}" are ${JSON.stringify(handles)}` + `WindowManager::_getTitleByHandle The titles for the handle "${handle}" are ${JSON.stringify(handles)}` ); return handles; } - async _getCurrentWindowHandle(): Promise { - this.logger.info(`WindowManager: Getting the current handle`); + async _getCurrentWindowHandle() { + this.logger.info(`WindowManager::_getCurrentWindowHandle Getting the current handle`); const currentHandle = await this.driver.getWindowHandle(); - this.logger.info(`WindowManager: -> The current handle is "${currentHandle}"`); + this.logger.info( + `WindowManager::_getCurrentWindowHandle The current handle is "${currentHandle}"` + ); return currentHandle; } - async getAllWindowHandles(): Promise> { - this.logger.info(`WindowManager: Getting all window handles`); + async getAllWindowHandles() { + this.logger.info(`WindowManager::getAllWindowHandles Getting all window handles`); const allHandles = await this.driver.getAllWindowHandles(); - this.logger.info(`WindowManager: -> All handles: ${JSON.stringify(allHandles)}`); + this.logger.info( + `WindowManager::getAllWindowHandles All handles: ${JSON.stringify(allHandles)}` + ); return allHandles; } - async _openNew(type: WindowType, windowName: string): Promise { - this.logger.info(`WindowManager: Opening a new ${type} with a name "${windowName}"`); + async _openNew(type, windowName) { + this.logger.info(`WindowManager::_openNew Opening a new ${type} with a name "${windowName}"`); await this.driver.switchTo().newWindow(type); const currentWindowHandle = await this._getCurrentWindowHandle(); this.logger.info( - `WindowManager: -> The new ${type} with a name "${windowName}" has handle "${currentWindowHandle}"` + `WindowManager::_openNew The new ${type} with a name "${windowName}" has handle "${currentWindowHandle}"` ); return { title: windowName, handle: currentWindowHandle }; } - async getCurrentWindowName(): Promise { - this.logger.info(`WindowManager: Getting the window name from window manager`); + async getCurrentWindowName() { + this.logger.info( + `WindowManager::getCurrentWindowName Getting the window name from window manager` + ); const currentHandle = await this._getCurrentWindowHandle(); const handles = this._getTitleByHandle(currentHandle); if (handles.length === 1) { @@ -119,13 +112,9 @@ export class WindowManager { throw new WindowManagerError(`Too many titles for the handle ${currentHandle}`); } - async _openNewWithCheck( - type: WindowType, - windowName: string, - url: string - ): Promise { + async _openNewWithCheck(type, windowName, url) { this.logger.info( - `WindowManager: Opening with checking a new ${type} "${url}" with a name "${windowName}"` + `WindowManager::_openNewWithCheck Opening with checking a new ${type} "${url}" with a name "${windowName}"` ); const checkTitle = this._getHandleByTitle(windowName); if (!checkTitle.length) { @@ -134,21 +123,23 @@ export class WindowManager { this.windowHandles.push(handle); return handle; } - this.logger.error(`WindowManager: -> The handle with the title ${windowName} already exists`); + this.logger.error( + `WindowManager::_openNewWithCheck The handle with the title ${windowName} already exists` + ); throw new WindowManagerError(`The handle with the title ${windowName} already exists`); } - async openNewTab(tabTitle: string, url: string): Promise { + async openNewTab(tabTitle, url) { return await this._openNewWithCheck('tab', tabTitle, url); } - async openNewWindow(windowTitle: string, url: string): Promise { + async openNewWindow(windowTitle, url) { return await this._openNewWithCheck('window', windowTitle, url); } - async closeTabWindow(titleToClose: string, switchToTitle: string): Promise { + async closeTabWindow(titleToClose, switchToTitle) { this.logger.info( - `WindowManager: Closing the tab "${titleToClose}" and switching to the tab "${switchToTitle}"` + `WindowManager::closeTabWindow Closing the tab "${titleToClose}" and switching to the tab "${switchToTitle}"` ); const handleToClose = this._getHandleByTitle(titleToClose)[0]; const switchToHandle = this._getHandleByTitle(switchToTitle)[0]; @@ -158,58 +149,60 @@ export class WindowManager { const indexOfHandle = this.windowHandles.indexOf(handleToClose); this.windowHandles.splice(indexOfHandle, 1); this.logger.info( - `WindowManager: -> The tab "${titleToClose}" is closed and removed from this.windowHandles` + `WindowManager::closeTabWindow The tab "${titleToClose}" is closed and removed from this.windowHandles` ); } - async switchTo(title: string): Promise { - this.logger.info(`WindowManager: Switching to the tab|window "${title}"`); + async switchTo(title) { + this.logger.info(`WindowManager::switchTo Switching to the tab|window "${title}"`); const searchHandle = this._getHandleByTitle(title); if (searchHandle.length !== 1) { this.logger.error( - `WindowManger: -> Unable to switch to the window ${title} because found ${searchHandle.length} handles for the title` + `WindowManger::switchTo Unable to switch to the window ${title} because found ${searchHandle.length} handles for the title` ); throw new WindowManagerError( `Unable to switch to the window ${title} because found ${searchHandle.length} handles for the title` ); } await this.driver.switchTo().window(searchHandle[0].handle); - this.logger.info(`WindowManager: -> Switching to the tab|window "${title}" is done`); + this.logger.info(`WindowManager::switchTo Switching to the tab|window "${title}" is done`); } - _filterHandles(newWindowHandles: Array): Array { + _filterHandles(newWindowHandles) { const oldHandles = this.windowHandles.map(customHandle => customHandle.handle); return newWindowHandles.filter(handle => !oldHandles.includes(handle)); } - async findNewWindows(tries: number = 50): Promise> { - this.logger.info(`WindowManager: Finding a new window`); - let newWindowHandles: Array = []; + async findNewWindows(tries = 50) { + this.logger.info(`WindowManager::findNewWindows Finding a new window`); + let newWindowHandles = []; for (let i = 0; i < tries; i++) { - this.logger.info(`WindowManager: -> Try ${i} to find a new window`); + this.logger.info(`WindowManager::findNewWindows Try ${i} to find a new window`); await new Promise(resolve => setTimeout(resolve, 100)); newWindowHandles = await this.getAllWindowHandles(); - this.logger.info(`WindowManager: -> newWindowHandles: ${JSON.stringify(newWindowHandles)}`); - this.logger.info(`WindowManager: -> oldHandles: ${JSON.stringify(this.windowHandles)}`); + this.logger.info( + `WindowManager::findNewWindows newWindowHandles: ${JSON.stringify(newWindowHandles)}` + ); + this.logger.info( + `WindowManager::findNewWindows oldHandles: ${JSON.stringify(this.windowHandles)}` + ); if (newWindowHandles.length > this.windowHandles.length) { const newHandle = this._filterHandles(newWindowHandles); - this.logger.info( - `WindowManager: -> The new window handle is "${JSON.stringify(newHandle)}"` - ); + this.logger.info(`WindowManager::findNewWindows The new window handle is "${newHandle}"`); return newHandle; } } - this.logger.info(`WindowManager: -> The new window handle is not found`); + this.logger.info(`WindowManager::findNewWindows The new window handle is not found`); return this._filterHandles(newWindowHandles); } - async findNewWindowAndSwitchTo(newWindowTitle: string): Promise { + async findNewWindowAndSwitchTo(newWindowTitle) { this.logger.info( - `WindowManager: Finding a new window and switching to it and set the title "${newWindowTitle}" to it` + `WindowManager::findNewWindowAndSwitchTo Finding a new window and switching to it and set the title "${newWindowTitle}" to it` ); const popupWindowHandleArr = await this.findNewWindows(); if (popupWindowHandleArr.length !== 1) { - this.logger.error(`WindowManager: -> Can not find the popup window`); + this.logger.error(`WindowManager::findNewWindowAndSwitchTo Can not find the popup window`); throw new WindowManagerError('Can not find the popup window'); } const popupWindowHandle = popupWindowHandleArr[0]; @@ -218,21 +211,25 @@ export class WindowManager { await this.driver.switchTo().window(popupWindowHandle); this.logger.info( - `WindowManager: -> Switched to the new window ${JSON.stringify(popUpCustomHandle)}` + `WindowManager::findNewWindowAndSwitchTo Switched to the new window ${JSON.stringify(popUpCustomHandle)}` ); await this._waitWindowTitle(); return popUpCustomHandle; } - async isClosed(title: string): Promise { - this.logger.info(`WindowManager: Checking the window with the title "${title}" is closed`); - const expectToBeClosedHandle: Array = this.windowHandles.filter( + async isClosed(title) { + this.logger.info( + `WindowManager::isClosed Checking the window with the title "${title}" is closed` + ); + const expectToBeClosedHandle = this.windowHandles.filter( customHandle => customHandle.title === title ); if (!expectToBeClosedHandle.length) { - this.logger.error(`WindowManager: -> There is no handle for the title ${title}`); - throw new WindowManagerError(`There is no handle for the title ${title}`); + this.logger.warn( + `WindowManager::isClosed There is no handle for the title ${title}. Suppose it is closed` + ); + return true; } for (let i = 0; i < 50; i++) { const windowHandles = await this.getAllWindowHandles(); @@ -242,17 +239,19 @@ export class WindowManager { } const indexOfHandle = this.windowHandles.indexOf(expectToBeClosedHandle); this.windowHandles.splice(indexOfHandle, 1); - this.logger.info(`WindowManager: -> The window with the title "${title}" is closed`); + this.logger.info(`WindowManager::isClosed The window with the title "${title}" is closed`); return true; } - this.logger.info(`WindowManager: -> The window with the title "${title}" is still opened`); + this.logger.info( + `WindowManager::isClosed The window with the title "${title}" is still opened` + ); return false; } - async waitForClosingAndSwitchTo( - titleToClose: string, - titleSwitchTo: string - ): Promise { + async waitForClosingAndSwitchTo(titleToClose, titleSwitchTo) { + this.logger.info( + `WindowManager::waitForClosingAndSwitchTo Waiting for closing a window with the title "${titleToClose}" and switching to a window with a title "${titleSwitchTo}"` + ); const result = await this.isClosed(titleToClose); if (!result) { throw new WindowManagerError(`The window with the title "${titleToClose}" is still opened`); diff --git a/packages/e2e-tests/package-lock.json b/packages/e2e-tests/package-lock.json new file mode 100644 index 0000000000..a7d90bf5fe --- /dev/null +++ b/packages/e2e-tests/package-lock.json @@ -0,0 +1,3219 @@ +{ + "name": "ye-e2e", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ye-e2e", + "version": "0.1.0", + "license": "ISC", + "dependencies": { + "axios": "^1.6.8", + "balanced-match": "^1.0.2", + "brace-expansion": "^1.1.11", + "concat-map": "^0.0.1", + "core-util-is": "^1.0.3", + "fs.realpath": "^1.0.0", + "glob": "^7.2.3", + "immediate": "^3.0.6", + "inflight": "^1.0.6", + "inherits": "^2.0.4", + "isarray": "^1.0.0", + "jszip": "^3.10.1", + "lie": "^3.3.0", + "minimatch": "^3.1.2", + "once": "^1.4.0", + "pako": "^1.0.11", + "path-is-absolute": "^1.0.1", + "process-nextick-args": "^2.0.1", + "readable-stream": "^2.3.8", + "rimraf": "^3.0.2", + "safe-buffer": "^5.1.2", + "setimmediate": "^1.0.5", + "string_decoder": "^1.1.1", + "tmp": "^0.2.1", + "util-deprecate": "^1.0.2", + "wrappy": "^1.0.2", + "ws": "^8.14.2" + }, + "devDependencies": { + "@emurgo/cardano-serialization-lib-nodejs": "^11.5.0", + "bignumber.js": "^9.1.2", + "chai": "^4.3.10", + "chromedriver": "^123.0.4", + "json-server": "^0.17.4", + "mocha": "^10.2.0", + "mochawesome": "^7.1.3", + "prettier": "^3.0.3", + "selenium-webdriver": "^4.19.0", + "simple-node-logger": "^21.8.12" + } + }, + "node_modules/@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==", + "dev": true + }, + "node_modules/@testim/chrome-version": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", + "dev": true + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "optional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chromedriver": { + "version": "123.0.4", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-123.0.4.tgz", + "integrity": "sha512-3Yi7y7q35kkSAOTbRisiww/SL2w+DqafDPAaUShpSuLMmPaOvHQR0i3bm2/33QBiQ8fUb1J/MzppzVL6IDqvhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.7", + "compare-versions": "^6.1.0", + "extract-zip": "^2.0.1", + "proxy-agent": "^6.4.0", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.2" + }, + "bin": { + "chromedriver": "bin/chromedriver" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect-pause": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/connect-pause/-/connect-pause-0.1.1.tgz", + "integrity": "sha512-a1gSWQBQD73krFXdUEYJom2RTFrWUL3YvXDCRkyv//GVXc79cdW9MngtRuN9ih4FDKBtfJAJId+BbDuX+1rh2w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-urlrewrite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-urlrewrite/-/express-urlrewrite-1.4.0.tgz", + "integrity": "sha512-PI5h8JuzoweS26vFizwQl6UTF25CAHSggNv0J25Dn/IKZscJHWZzPrI5z2Y2jgOzIaw2qh8l6+/jUcig23Z2SA==", + "dev": true, + "dependencies": { + "debug": "*", + "path-to-regexp": "^1.0.3" + } + }, + "node_modules/express-urlrewrite/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/express-urlrewrite/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fsu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz", + "integrity": "sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "dev": true, + "dependencies": { + "jju": "^1.1.0" + } + }, + "node_modules/json-server": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/json-server/-/json-server-0.17.4.tgz", + "integrity": "sha512-bGBb0WtFuAKbgI7JV3A864irWnMZSvBYRJbohaOuatHwKSRFUfqtQlrYMrB6WbalXy/cJabyjlb7JkHli6dYjQ==", + "dev": true, + "dependencies": { + "body-parser": "^1.19.0", + "chalk": "^4.1.2", + "compression": "^1.7.4", + "connect-pause": "^0.1.1", + "cors": "^2.8.5", + "errorhandler": "^1.5.1", + "express": "^4.17.1", + "express-urlrewrite": "^1.4.0", + "json-parse-helpfulerror": "^1.0.3", + "lodash": "^4.17.21", + "lodash-id": "^0.14.1", + "lowdb": "^1.0.0", + "method-override": "^3.0.0", + "morgan": "^1.10.0", + "nanoid": "^3.1.23", + "please-upgrade-node": "^3.2.0", + "pluralize": "^8.0.0", + "server-destroy": "^1.0.1", + "yargs": "^17.0.1" + }, + "bin": { + "json-server": "lib/cli/bin.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lie/node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-id": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/lodash-id/-/lodash-id-0.14.1.tgz", + "integrity": "sha512-ikQPBTiq/d5m6dfKQlFdIXFzvThPi2Be9/AHxktOnDSfSxE1j9ICbBT5Elk1ke7HSTgM38LHTpmJovo9/klnLg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", + "dev": true + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "node_modules/lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/method-override": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", + "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", + "dev": true, + "dependencies": { + "debug": "3.1.0", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/method-override/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/method-override/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "8.1.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mochawesome": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", + "integrity": "sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "diff": "^5.0.0", + "json-stringify-safe": "^5.0.1", + "lodash.isempty": "^4.4.0", + "lodash.isfunction": "^3.0.9", + "lodash.isobject": "^3.0.2", + "lodash.isstring": "^4.0.1", + "mochawesome-report-generator": "^6.2.0", + "strip-ansi": "^6.0.1", + "uuid": "^8.3.2" + }, + "peerDependencies": { + "mocha": ">=7" + } + }, + "node_modules/mochawesome-report-generator": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mochawesome-report-generator/-/mochawesome-report-generator-6.2.0.tgz", + "integrity": "sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "dateformat": "^4.5.1", + "escape-html": "^1.0.3", + "fs-extra": "^10.0.0", + "fsu": "^1.1.1", + "lodash.isfunction": "^3.0.9", + "opener": "^1.5.2", + "prop-types": "^15.7.2", + "tcomb": "^3.2.17", + "tcomb-validation": "^3.3.0", + "validator": "^13.6.0", + "yargs": "^17.2.1" + }, + "bin": { + "marge": "bin/cli.js" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/selenium-webdriver": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.19.0.tgz", + "integrity": "sha512-8XHW8m9V2XN2/SC1kr4bWzMtGvjmKUEZ6S0UBoDBqonhmwEIzKOLbzhanBd08HCOg1s1O0XrDWCD71NnA8Zt0g==", + "dev": true, + "dependencies": { + "jszip": "^3.10.1", + "tmp": "^0.2.3", + "ws": ">=8.16.0" + }, + "engines": { + "node": ">= 14.20.0" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-node-logger": { + "version": "21.8.12", + "resolved": "https://registry.npmjs.org/simple-node-logger/-/simple-node-logger-21.8.12.tgz", + "integrity": "sha512-RPImnYDq3jdUjaTvYLghaF1n65Dd0LV8hdZtlT0X1NZBAkw+lx0ZJtFydcUyYKjg0Yxd27AW9IAIc3OLhTjBzA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.12", + "moment": "^2.20.1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.3" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tcomb": { + "version": "3.2.29", + "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", + "integrity": "sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==", + "dev": true + }, + "node_modules/tcomb-validation": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tcomb-validation/-/tcomb-validation-3.4.1.tgz", + "integrity": "sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA==", + "dev": true, + "dependencies": { + "tcomb": "^3.0.0" + } + }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dev": true, + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json new file mode 100644 index 0000000000..3a2d18e4e8 --- /dev/null +++ b/packages/e2e-tests/package.json @@ -0,0 +1,88 @@ +{ + "name": "ye-e2e", + "version": "0.1.0", + "description": "Selenium + Mocha e2e tests for the extension", + "type": "module", + "main": "index.js", + "config": { + "hooksPath": "./utils/hooks.mjs", + "testPathGeneral": "./test/*.test.js", + "testPathGeneralBl": "./test/blacklist/*.test.js", + "testPathHW": "./test/hw/*.test.js", + "testPathDApp": "./test/dapp/*.test.js", + "testPathDAppBl": "./test/blacklist/dapp/*.test.js" + }, + "scripts": { + "test:clean:logs": "find . -type d -name \"testRunsData_*\" -exec rm -r {} +", + "test:base:sequintel": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathGeneral --reporter mochawesome", + "test:base:sequintel:bl": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathGeneralBl --reporter mochawesome", + "test:hw:base:sequintel": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathHW --reporter mochawesome", + "test:dapp:base:sequintel": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathDApp --reporter mochawesome", + "test:dapp:base:sequintel:bl": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathDAppBl --reporter mochawesome", + "test:base:parallel": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathGeneral --parallel --reporter mochawesome --require mochawesome/register", + "test:base:one": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathGeneral -g", + "test:hw:base:one": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathHW -g", + "test:dapp:base:one": "npm run test:clean:logs && mocha --require $npm_package_config_hooksPath $npm_package_config_testPathDApp -g", + "test:chrome": "env TARGETBROWSER=chrome npm run test:base:sequintel", + "test:chrome:bl": "env TARGETBROWSER=chrome npm run test:base:sequintel:bl", + "test:chrome:hw": "env TARGETBROWSER=chrome npm run test:hw:base:sequintel", + "test:chrome:dapp": "env TARGETBROWSER=chrome npm run test:dapp:base:sequintel", + "test:chrome:dapp:bl": "env TARGETBROWSER=chrome npm run test:dapp:base:sequintel:bl", + "test:chrome:parallel": "env TARGETBROWSER=chrome npm run test:base:parallel", + "test:chrome:one": "env TARGETBROWSER=chrome npm run test:base:one", + "test:chrome:hw:one": "env TARGETBROWSER=chrome npm run test:hw:base:one", + "test:chrome:dapp:one": "env TARGETBROWSER=chrome npm run test:dapp:base:one", + "test:firefox": "env TARGETBROWSER=firefox npm run test:base:sequintel", + "test:firefox:bl": "env TARGETBROWSER=firefox npm run test:base:sequintel:bl", + "test:firefox:hw": "env TARGETBROWSER=firefox npm run test:hw:base:sequintel", + "test:firefox:dapp": "env TARGETBROWSER=firefox npm run test:dapp:base:sequintel", + "test:firefox:parallel": "env TARGETBROWSER=firefox npm run test:base:parallel", + "test:firefox:one": "env TARGETBROWSER=firefox npm run test:base:one", + "test:firefox:hw:one": "env TARGETBROWSER=firefox npm run test:hw:base:one", + "test:firefox:dapp:one": "env TARGETBROWSER=firefox npm run test:dapp:base:one" + }, + "author": "Denis Nebytov (denis@emurgo.io)", + "license": "ISC", + "devDependencies": { + "@emurgo/cardano-serialization-lib-nodejs": "^11.5.0", + "bignumber.js": "^9.1.2", + "chai": "^4.3.10", + "chromedriver": "^123.0.4", + "json-server": "^0.17.4", + "mocha": "^10.2.0", + "mochawesome": "^7.1.3", + "prettier": "^3.0.3", + "selenium-webdriver": "^4.19.0", + "simple-node-logger": "^21.8.12" + }, + "dependencies": { + "axios": "^1.6.8", + "balanced-match": "^1.0.2", + "brace-expansion": "^1.1.11", + "concat-map": "^0.0.1", + "core-util-is": "^1.0.3", + "fs.realpath": "^1.0.0", + "glob": "^7.2.3", + "immediate": "^3.0.6", + "inflight": "^1.0.6", + "inherits": "^2.0.4", + "isarray": "^1.0.0", + "jszip": "^3.10.1", + "lie": "^3.3.0", + "minimatch": "^3.1.2", + "once": "^1.4.0", + "pako": "^1.0.11", + "path-is-absolute": "^1.0.1", + "process-nextick-args": "^2.0.1", + "readable-stream": "^2.3.8", + "rimraf": "^3.0.2", + "safe-buffer": "^5.1.2", + "setimmediate": "^1.0.5", + "string_decoder": "^1.1.1", + "tmp": "^0.2.1", + "util-deprecate": "^1.0.2", + "wrappy": "^1.0.2", + "ws": "^8.14.2" + }, + "keywords": [] +} diff --git a/packages/e2e-tests/pages/addNewWallet.page.js b/packages/e2e-tests/pages/addNewWallet.page.js new file mode 100644 index 0000000000..17aa63bb14 --- /dev/null +++ b/packages/e2e-tests/pages/addNewWallet.page.js @@ -0,0 +1,110 @@ +import WalletCommonBase from './walletCommonBase.page.js'; + +class AddNewWallet extends WalletCommonBase { + // locators + createWalletButtonLocator = { + locator: 'createWalletButton', + method: 'id', + }; + restoreWalletButtonLocator = { + locator: 'restoreWalletButton', + method: 'id', + }; + connectHwButtonLocator = { + locator: 'connectHardwareWalletButton', + method: 'id', + }; + // ::start trezor connect section + cardanoNetworkButtonLocator = { + locator: '.PickCurrencyOptionDialog_cardano', + method: 'css', + }; + trezorHWButtonLocator = { + locator: '.WalletConnectHWOptionDialog_connectTrezor', + method: 'css', + }; + checkDialogLocator = { + locator: '.CheckDialog', + method: 'css', + }; + nextButtonLocator = { + locator: 'primaryButton', + method: 'id', + }; + connectDialogLocator = { + locator: '.ConnectDialog', + method: 'css', + }; + hwWalletNameInputLocator = { + locator: '//input[starts-with(@id, "walletName-")]', + method: 'xpath', + }; + // ::end trezor connect section + + // functions + async isDisplayed() { + this.logger.info(`AddNewWallet::selectCreateNewWallet is called`); + try { + await this.waitForElement(this.createWalletButtonLocator); + await this.waitForElement(this.restoreWalletButtonLocator); + await this.waitForElement(this.connectHwButtonLocator); + return true; + } catch (error) { + this.logger.warn(`AddNewWallet::selectCreateNewWallet An error has happen. Error ${error}`); + return false; + } + } + async selectCreateNewWallet() { + this.logger.info(`AddNewWallet::selectCreateNewWallet is called`); + await this.waitForElement(this.createWalletButtonLocator); + await this.click(this.createWalletButtonLocator); + } + async selectRestoreWallet() { + this.logger.info(`AddNewWallet::selectRestoreWallet is called`); + await this.waitForElement(this.restoreWalletButtonLocator); + await this.click(this.restoreWalletButtonLocator); + } + async selectConnectHW() { + this.logger.info(`AddNewWallet::selectConnectHW is called`); + await this.waitForElement(this.connectHwButtonLocator); + await this.click(this.connectHwButtonLocator); + } + // ::start trezor connect section + async selectCardanoNetwork() { + this.logger.info(`AddNewWallet::selectCardanoNetwork is called`); + await this.waitForElement(this.cardanoNetworkButtonLocator); + await this.click(this.cardanoNetworkButtonLocator); + } + async selectTrezorHW() { + this.logger.info(`AddNewWallet::selectTrezorHW is called`); + await this.waitForElement(this.trezorHWButtonLocator); + await this.click(this.trezorHWButtonLocator); + } + async confirmChecking() { + this.logger.info(`AddNewWallet::confirmChecking is called`); + await this.waitForElement(this.checkDialogLocator); + await this.waitForElement(this.nextButtonLocator); + await this.waitEnable(this.nextButtonLocator); + await this.click(this.nextButtonLocator); + } + async connectTrezor() { + this.logger.info(`AddNewWallet::connectTrezor is called`); + await this.waitForElement(this.connectDialogLocator); + await this.waitForElement(this.nextButtonLocator); + await this.waitEnable(this.nextButtonLocator); + await this.click(this.nextButtonLocator); + } + async enterHWWalletName(walletName) { + await this.waitForElement(this.hwWalletNameInputLocator); + // the label "Emulator" is used in TrezorEmulatorController.emulatorSetup() + await this.clearInputUpdatingForm(this.hwWalletNameInputLocator, 'Emulator'.length); + await this.input(this.hwWalletNameInputLocator, walletName); + } + async saveHWInfo() { + await this.waitForElement(this.nextButtonLocator); + await this.click(this.nextButtonLocator); + } + // ::end trezor connect section +} + +export default AddNewWallet; diff --git a/packages/e2e-tests/pages/basepage.js b/packages/e2e-tests/pages/basepage.js new file mode 100644 index 0000000000..cc6c5493c2 --- /dev/null +++ b/packages/e2e-tests/pages/basepage.js @@ -0,0 +1,570 @@ +import { until, Key, logging } from 'selenium-webdriver'; +import path from 'path'; +import * as fs from 'node:fs'; +import { promisify } from 'util'; +import { + createTestRunDataDir, + getByLocator, + getSnapshotObjectFromJSON, + isFirefox, + isChrome, +} from '../utils/utils.js'; +import { getExtensionUrl } from '../utils/driverBootstrap.js'; +import { + defaultRepeatPeriod, + defaultWaitTimeout, + halfSecond, + oneSecond, +} from '../helpers/timeConstants.js'; +import { dbSnapshotsDir } from '../helpers/constants.js'; + +const writeFile = promisify(fs.writeFile); + +class BasePage { + constructor(webDriver, logger) { + this.driver = webDriver; + this.logger = logger; + } + + rootLocator = { + locator: 'root', + method: 'id', + }; + + linkLocator = { + locator: './a', + method: 'xpath', + }; + + async goToUrl(theURL) { + this.logger.info('BasePage::goToUrl is called'); + await this.driver.get(theURL); + } + async refreshPage() { + this.logger.info('BasePage::refreshPage is called'); + await this.driver.navigate().refresh(); + } + async closeBrowser() { + this.logger.info('BasePage::closeBrowser is called'); + await this.driver.quit(); + } + async goToExtension() { + this.logger.info('BasePage::goToExtension is called'); + await this.driver.manage().setTimeouts({ implicit: halfSecond }); + + const extURL = getExtensionUrl(); + await this.driver.get(extURL); + await this.waitForElementLocated(this.rootLocator); + + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + } + async click(locator) { + this.logger.info(`BasePage::click is called. Locator: ${JSON.stringify(locator)}`); + await this.driver.findElement(getByLocator(locator)).click(); + } + async clickByScript(locator) { + this.logger.info(`BasePage::clickByScript is called. Locator: ${JSON.stringify(locator)}`); + const element = await this.findElement(locator); + await this.driver.executeScript(`arguments[0].click()`, element); + } + async hover(locator) { + this.logger.info(`BasePage::hoverOnElement is called. Locator: ${JSON.stringify(locator)}`); + const webElement = await this.findElement(locator); + await this.hoverOnElement(webElement); + } + async hoverOnElement(webElement) { + this.logger.info(`BasePage::hoverOnElement is called.`); + const actions = this.driver.actions(); + await actions.move({ origin: webElement }).perform(); + } + async scrollIntoView(locator) { + this.logger.info(`BasePage::scrollIntoView is called. Values: ${JSON.stringify(locator)}`); + await this.waitForElement(locator); + const clickable = await this.findElement(locator); + await this.driver.executeScript('arguments[0].scrollIntoView()', clickable); + } + async findElement(locator) { + this.logger.info(`BasePage::findElement is called. Locator: ${JSON.stringify(locator)}`); + return await this.driver.findElement(getByLocator(locator)); + } + async findElements(locator) { + this.logger.info(`BasePage::findElements is called. Locator: ${JSON.stringify(locator)}`); + return await this.driver.findElements(getByLocator(locator)); + } + async getText(locator) { + this.logger.info(`BasePage::getText is called. Locator: ${JSON.stringify(locator)}`); + const locatorElem = await this.waitForElement(locator); + return await locatorElem.getText(); + } + async getCssValue(locator, cssStyleProperty) { + this.logger.info( + `BasePage::getCssValue is called. Locator: ${JSON.stringify(locator)}, property: ${cssStyleProperty}` + ); + return await this.driver.findElement(getByLocator(locator)).getCssValue(cssStyleProperty); + } + async getCssValueElement(webElement, cssStyleProperty) { + this.logger.info(`BasePage::getCssValueElement is called. Property: ${cssStyleProperty}`); + return await webElement.getCssValue(cssStyleProperty); + } + async getAttribute(locator, property) { + this.logger.info( + `BasePage::getAttribute is called. Locator: ${JSON.stringify(locator)}, property: ${property}` + ); + return await this.driver.findElement(getByLocator(locator)).getAttribute(property); + } + async getAttributeElement(webElement, property) { + this.logger.info(`BasePage::getAttributeElement is called. Property: ${property}`); + return await webElement.getAttribute(property); + } + async getLinkFromComponent(locator) { + this.logger.info( + `BasePage::getLinkFromComponent is called. Locator: ${JSON.stringify(locator)}` + ); + const webElem = await this.driver.findElement(getByLocator(locator)); + const linkElem = await webElem.findElement(getByLocator(this.linkLocator)); + const linkText = await this.getAttributeElement(linkElem, 'href'); + return linkText; + } + async getWebElementAbove(locator, numberAbove) { + this.logger.info( + `BasePage::getWebElementAbove is called. Locator: ${JSON.stringify(locator)}, NumberAbove: ${JSON.stringify(numberAbove)}` + ); + const webElement = await this.findElement(locator); + return await this.getWebElementAboveElement(webElement, numberAbove); + } + async getWebElementAboveElement(webElement, numberAbove) { + this.logger.info( + `BasePage::getWebElementAboveElement is called. NumberAbove: ${JSON.stringify(numberAbove)}` + ); + const parentLocator = '.' + '/..'.repeat(numberAbove); + const elLocator = { + locator: parentLocator, + method: 'xpath', + }; + const parentElement = await webElement.findElement(getByLocator(elLocator)); + + return parentElement; + } + async executeLocalStorageScript(script) { + this.logger.info( + `BasePage::executeLocalStorageScript is called. Script: ${JSON.stringify(script)}` + ); + return await this.driver.executeScript(`return localStorage.${script}`); + } + async input(locator, value) { + this.logger.info( + `BasePage::input is called. Locator: ${JSON.stringify(locator)}, Value: ${value}` + ); + const input = await this.findElement(locator); + await input.sendKeys(value); + } + async inputElem(webElement, value) { + this.logger.info( + `BasePage::inputElem is called. WebElement: ${JSON.stringify(webElement)}, Value: ${value}` + ); + await webElement.sendKeys(value); + } + async clearInput(locator) { + this.logger.info(`BasePage::clearInput is called. Locator: ${JSON.stringify(locator)}`); + const input = await this.findElement(locator); + await input.clear(); + } + async clearInputElem(inputWebElement) { + this.logger.info(`BasePage::clearInput is clearInputElem.`); + await inputWebElement.clear(); + } + async clearInputUpdatingForm(locator, textLength) { + this.logger.info( + `BasePage::clearInputUpdatingForm is called. Locator: ${JSON.stringify(locator)}, Text lenght: ${textLength}` + ); + const input = await this.findElement(locator); + for (let i = 0; i < textLength; i++) { + await input.sendKeys(Key.BACK_SPACE); + } + } + async clearInputAll(locator) { + this.logger.info(`BasePage::clearInputAll is called. Locator: ${JSON.stringify(locator)}`); + const input = await this.findElement(locator); + await input.sendKeys(Key.chord(Key.COMMAND, 'a')); + await this.sleep(200); + await input.sendKeys(Key.NULL); + await input.sendKeys(Key.BACK_SPACE); + } + async getFromLocalStorage(key) { + this.logger.info(`BasePage::getFromLocalStorage is called. Key: ${key}`); + const result = await this.executeLocalStorageScript(`getItem("${key}")`); + return JSON.parse(result); + } + async saveToLocalStorage(key, value) { + this.logger.info(`BasePage::saveToLocalStorage is called. Key: "${key}", Value: "${value}"`); + await this.executeLocalStorageScript(`setItem("${key}", '${JSON.stringify(value)}')`); + } + async dropDB() { + await this.driver.executeScript(() => window.yoroi.api.ada.dropDB()); + } + async takeScreenshot(testSuiteName, screenshotName) { + this.logger.info( + `BasePage::takeScreenshot is called. testSuiteName: "${testSuiteName}", screenshotName: "${screenshotName}" ` + ); + const screenshot = await this.driver.takeScreenshot(); + const testRundDataDir = createTestRunDataDir(testSuiteName); + + const cleanName = screenshotName.replace(/ /gi, '_'); + const screenshotPath = path.resolve(testRundDataDir, `screenshot_${cleanName}.png`); + await writeFile(screenshotPath, screenshot, 'base64'); + } + async takeSnapshot(testSuiteName, snapshotName) { + this.logger.info( + `BasePage::takeSnapshot is called. testSuiteName: "${testSuiteName}", snapshotName: "${snapshotName}" ` + ); + const testRundDataDir = createTestRunDataDir(testSuiteName); + const cleanName = snapshotName.replace(/ /gi, '_'); + + const snapshotPath = path.resolve(testRundDataDir, `snapshot_${cleanName}-dom.html`); + const html = await this.driver.executeScript('return document.body.innerHTML;'); + await writeFile(snapshotPath, html); + } + async getBrowserLogs(testSuiteName, logFileName) { + this.logger.info( + `BasePage::getBrowserLogs is called. testSuiteName: "${testSuiteName}", logFileName: "${logFileName}" ` + ); + const testRundDataDir = createTestRunDataDir(testSuiteName); + const cleanName = logFileName.replace(/ /gi, '_'); + const logsPaths = path.resolve(testRundDataDir, `console_${cleanName}-log.json`); + if (isChrome()) { + const logEntries = await this.driver + .manage() + .logs() + .get(logging.Type.BROWSER, logging.Level.ALL); + const jsonLogs = logEntries.map(l => JSON.stringify(l.toJSON(), null, 2)); + await writeFile(logsPaths, `[\n${jsonLogs.join(',\n')}\n]`); + } + } + async waitForElementLocated(locator) { + this.logger.info( + `BasePage::waitForElementLocated is called. Value: ${JSON.stringify(locator)}` + ); + const isLocated = until.elementLocated(getByLocator(locator)); + return await this.driver.wait(isLocated); + } + async waitForElement(locator) { + this.logger.info(`BasePage::waitForElement is called. Value: ${JSON.stringify(locator)}`); + await this.waitForElementLocated(locator); + const element = await this.findElement(locator); + return await this.driver.wait(until.elementIsVisible(element)); + } + async waitEnable(locator) { + this.logger.info(`BasePage::waitEnable is called. Value: ${JSON.stringify(locator)}`); + const element = await this.findElement(locator); + const condition = until.elementIsEnabled(element); + return this.driver.wait(condition); + } + async waitDisabled(locator) { + this.logger.info(`BasePage::waitDisabled is called. Value: ${JSON.stringify(locator)}`); + const element = await this.findElement(locator); + const condition = until.elementIsDisabled(element); + return this.driver.wait(condition); + } + async waitForElementNotPresent(locator) { + this.logger.info( + `BasePage::waitForElementNotPresent is called. Value: ${JSON.stringify(locator)}` + ); + await this.driver.wait(async () => { + const elements = await this.findElements(locator); + return elements.length === 0; + }); + } + async waitElementTextMatches(locator, regex) { + this.logger.info( + `BasePage::waitElementTextMatches is called. Value: ${JSON.stringify(locator)}. Regex "${regex}"` + ); + await this.waitForElement(locator); + const element = await this.findElement(locator); + const condition = until.elementTextMatches(element, regex); + await this.driver.wait(condition); + return element; + } + async customWaiter( + conditionFunc, + timeout = defaultWaitTimeout, + repeatPeriod = defaultRepeatPeriod + ) { + this.logger.info(`BasePage::customWaiter is called.`); + const endTime = Date.now() + timeout; + await this.driver.manage().setTimeouts({ implicit: oneSecond }); + + while (endTime >= Date.now()) { + const conditionState = await conditionFunc(); + this.logger.info(`BasePage::customWaiter conditionState is ${conditionState}.`); + if (conditionState) { + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return true; + } + await this.sleep(repeatPeriod); + } + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return false; + } + async customWaitIsPresented( + locator, + timeout = defaultWaitTimeout, + repeatPeriod = defaultRepeatPeriod + ) { + this.logger.info(`BasePage::customWaitIsPresented is called.`); + const result = await this.customWaiter( + async () => { + const elemsPresented = await this.findElements(locator); + return elemsPresented === 1; + }, + timeout, + repeatPeriod + ); + return result; + } + async sleep(milliseconds) { + this.logger.info(`BasePage::sleep is called. Value: ${milliseconds}`); + await this.driver.sleep(milliseconds); + } + async checkIfExists(locator) { + this.logger.info( + `BasePage::checkIfExists: Checking if element exists "${JSON.stringify(locator)}"` + ); + await this.driver.manage().setTimeouts({ implicit: oneSecond }); + try { + await this.findElement(locator); + this.logger.info(`BasePage::checkIfExists: The element "${JSON.stringify(locator)}" exists`); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return true; + } catch (error) { + this.logger.error( + `BasePage::checkIfExists: The element "${JSON.stringify(locator)}" does not exists` + ); + this.logger.error(`BasePage::checkIfExists: The error: ${JSON.stringify(error, null, 2)}`); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return false; + } + } + // The method is for debugging + async highlightElement(webElement) { + this.logger.info( + `Webdriver::highlightElement: Highlighting element "${JSON.stringify(webElement)}"` + ); + await this.driver.executeScript( + "arguments[0].setAttribute('style', 'background: yellow; border: 2px solid red;');", + webElement + ); + } + // tableNames are [ 'UtxoAtSafePointTable', 'UtxoDiffToBestBlock', 'UtxoTransactionInput', 'UtxoTransactionOutput'] + async getInfoFromIndexedDB(tableName) { + this.logger.info(`Webdriver::getInfoFromIndexedDB Table name "${tableName}"`); + let result; + if (isFirefox()) { + result = await this.getInfoFromIndexedDBFF(tableName); + } + result = await this.getInfoFromIndexedDBChrome(tableName); + this.logger.info(`Webdriver::getInfoFromIndexedDB::result ${JSON.stringify(result)}`); + return result; + } + async getInfoFromIndexedDBFF(tableName) { + await this.driver.executeScript( + (dbName, table) => { + const dbRequest = window.indexedDB.open(dbName); + dbRequest.onsuccess = function (event) { + const db = event.target.result; + const tableContentRequest = db.transaction(table, 'readonly').objectStore(table).getAll(); + tableContentRequest.onsuccess = function (event) { + window.tableData = event.target.result; + }; + }; + }, + 'yoroi-schema', + tableName + ); + let tableContent; + try { + tableContent = await this.driver.executeScript(() => window.tableData); + } catch (error) { + this.webDriverLogger.warn(error); + tableContent = {}; + } + + return tableContent; + } + async getInfoFromIndexedDBChrome(tableName) { + await this.driver.executeScript(() => { + window.allDBsPromise = window.indexedDB.databases(); + }); + + const allDBs = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.allDBsPromise.then(response => callback(response)).catch(err => callback(err)); + }); + const { name, version } = allDBs[0]; + + await this.driver.executeScript( + (dbName, dbVersion, table) => { + const request = window.indexedDB.open(dbName, dbVersion); + request.onsuccess = function (event) { + const db = event.target.result; + const tableContentRequest = db.transaction(table, 'readonly').objectStore(table).getAll(); + tableContentRequest.onsuccess = function (event) { + window.tableData = event.target.result; + }; + }; + }, + name, + version, + tableName + ); + let tableContent; + try { + tableContent = await this.driver.executeScript(() => window.tableData); + } catch (error) { + this.webDriverLogger.warn(error); + tableContent = {}; + } + + return tableContent; + } + + async getFullIndexedDBFromChrome() { + this.logger.info(`BasePage::getFullIndexedDBFromChrome is called.`); + await this.driver.executeScript(() => { + window.allDBsPromise = window.indexedDB.databases(); + }); + const allDBs = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.allDBsPromise.then(response => callback(response)).catch(err => callback(err)); + }); + const { name, version } = allDBs[0]; + + await this.driver.executeScript( + (dbName, dbVersion) => { + const request = window.indexedDB.open(dbName, dbVersion); + request.onsuccess = function (event) { + const db = event.target.result; + const allTables = db.objectStoreNames; + const fullDBData = {}; + for (const table of allTables) { + const tableContentRequest = db + .transaction(table, 'readonly') + .objectStore(table) + .getAll(); + tableContentRequest.onsuccess = function (event) { + const allInfo = event.target.result; + fullDBData[table] = allInfo; + }; + } + window.fullDBData = fullDBData; + }; + }, + name, + version + ); + + let fullDBDataResult; + try { + fullDBDataResult = await this.driver.executeScript(() => window.fullDBData); + } catch (error) { + this.webDriverLogger.warn(error); + fullDBDataResult = {}; + } + this.logger.info(`Webdriver::getFullIndexedDBFromChrome::allTables. DB is collected.`); + + return fullDBDataResult; + } + + async saveFullIndexedDBChrome(fileName, overwrite = false) { + this.logger.info(`BasePage::saveFullIndexedDBChrome is called. File name: "${fileName}"`); + const fullDB = await this.getFullIndexedDBFromChrome(); + const dbfileName = `${fileName}.indexedDB.json`; + const snapshotPath = path.resolve(dbSnapshotsDir, dbfileName); + const fileExists = fs.existsSync(snapshotPath); + if (!fileExists || (fileExists && overwrite)) { + this.logger.info( + `BasePage::saveFullIndexedDBChrome Writting data to the file "${snapshotPath}"` + ); + writeFile(snapshotPath, JSON.stringify(fullDB, null, 2)); + } else { + throw new Error(`The file "${dbfileName}" exists. Overwritting the file is not allowed.`); + } + } + + async setInfoToIndexedDBChrome(tableName, value) { + this.logger.info(`BasePage::setInfoToIndexedDBChrome is called for the table ${tableName}.`); + this.driver.executeScript(() => { + window.allDBsPromise = window.indexedDB.databases(); + }); + + const allDBs = await this.driver.executeAsyncScript((...args) => { + const callback = args[args.length - 1]; + window.allDBsPromise.then(response => callback(response)).catch(err => callback(err)); + }); + const { name, version } = allDBs[0]; + + for (const valueItem of value) { + await this.driver.executeScript( + (dbName, dbVersion, tableName, valueItem) => { + const request = window.indexedDB.open(dbName, dbVersion); + request.onsuccess = function (event) { + const db = event.target.result; + const tx = db.transaction(tableName, 'readwrite'); + tx.oncomplete = function (event) { + console.log( + `-----> Transaction is completed. Data is added to the table "${tableName}"` + ); + }; + tx.onerror = function (event) { + console.log('-----> Error happend:', event.target.result); + }; + const store = tx.objectStore(tableName); + store.put(valueItem); + }; + }, + name, + version, + tableName, + valueItem + ); + } + } + + async getInfoChromeLocalStorage(key) { + this.logger.info(`BasePage::getInfoChromeLocalStorage is called. Key: "${key}"`); + this.driver.executeScript( + `await chrome.storage.local.get('${key}', function (result) {window.someKeyValue = result})` + ); + const result = await this.driver.executeScript(() => window.someKeyValue); + this.logger.info(`BasePage::getInfoChromeLocalStorage::result ${JSON.stringify(result)}`); + return result; + } + + async setInfoChromeLocalStorage(key, value) { + this.logger.info( + `BasePage::setInfoChromeLocalStorage is called. Key: "${key}", value: "${value}"` + ); + await this.driver.executeScript(`await chrome.storage.local.set({ "${key}": "${value}" })`); + } + + async prepareDBAndStorage(templateName, useGeneralStorageInfo = true) { + // import info into the indexedDB + const dbSnapshot = getSnapshotObjectFromJSON(`${templateName}.indexedDB.json`); + for (const dbKey in dbSnapshot) { + await this.setInfoToIndexedDBChrome(dbKey, dbSnapshot[dbKey]); + } + // set info into the chrome local storage + const chromeStorageFileName = `${useGeneralStorageInfo ? 'general' : templateName}.chromeLocalStorage.json`; + const chromeStorageSnapshot = getSnapshotObjectFromJSON(chromeStorageFileName); + for (const storageKey in chromeStorageSnapshot) { + await this.setInfoChromeLocalStorage(storageKey, chromeStorageSnapshot[storageKey]); + } + // set info into regular storage + const commonStorageFileName = `${useGeneralStorageInfo ? 'general' : templateName}.localStorage.json`; + const commonStorageSnaphot = getSnapshotObjectFromJSON(commonStorageFileName); + for (const commonStorageKey in commonStorageSnaphot) { + await this.saveToLocalStorage(commonStorageKey, commonStorageSnaphot[commonStorageKey]); + } + } +} + +export default BasePage; diff --git a/packages/e2e-tests/pages/dapp/dAppBase.page.js b/packages/e2e-tests/pages/dapp/dAppBase.page.js new file mode 100644 index 0000000000..b621e9e9d5 --- /dev/null +++ b/packages/e2e-tests/pages/dapp/dAppBase.page.js @@ -0,0 +1,42 @@ +import { defaultWaitTimeout, quarterSecond } from '../../helpers/timeConstants.js'; +import { popupConnectorName, popupConnectorWindowTitle } from '../../helpers/windowManager.js'; +import BasePage from '../basepage.js'; + +class DAppBase extends BasePage { + // locators + loaderSpinner = { + locator: '.LoadingSpinner_component', + method: 'css', + }; + // functions + async popUpIsDisplayed(windowManager) { + this.logger.info(`DAppBase::connectorPopUpIsDisplayed is called`); + await windowManager.findNewWindowAndSwitchTo(popupConnectorName); + const windowTitle = await this.driver.getTitle(); + const result = windowTitle === popupConnectorWindowTitle; + this.logger.info(`DAppBase::connectorPopUpIsDisplayed pop-up window is displayed: ${result}`); + + return result; + } + async waitingConnectorIsReady() { + this.logger.info(`DAppBase::connectorIsReady is called`); + const state = await this.customWaiter( + async () => { + const elAmount = await this.findElements(this.loaderSpinner); + return elAmount.length === 0; + }, + defaultWaitTimeout, + quarterSecond + ); + if (!state) { + this.logger.error( + `DAppBase::connectorIsReady The loader on the connector is still displayed` + ); + throw new Error( + `The loader on the connector is still displayed after ${defaultWaitTimeout} milliseconds` + ); + } + } +} + +export default DAppBase; diff --git a/packages/e2e-tests/pages/dapp/dAppConnectWallet.page.js b/packages/e2e-tests/pages/dapp/dAppConnectWallet.page.js new file mode 100644 index 0000000000..6f42566c81 --- /dev/null +++ b/packages/e2e-tests/pages/dapp/dAppConnectWallet.page.js @@ -0,0 +1,94 @@ +import DAppBase from './dAppBase.page.js'; +import { getByLocator } from '../../utils/utils.js'; + +class DAppConnectWallet extends DAppBase { + // locators + walletsListLocator = { + locator: '.ConnectPage_list', + method: 'css', + }; + walletItemButtonLocator = { + locator: '.ConnectPage_listItem', + method: 'css', + }; + walletItemPlateLabelLocator = { + locator: '.ConnectedWallet_checksum', + method: 'css', + }; + walletItemNameLabelLocator = { + locator: '.ConnectedWallet_nameWrapper', + method: 'css', + }; + walletItemBalanceLabelLocator = { + locator: 'dAppConnector:connect:walletList:walletCard_0-availableBalance-text', + method: 'id', + }; + noWalletsLabelLocator = { + locator: '.ConnectPage_noWalletsText', + method: 'css', + }; + createWalletButtonLocator = { + locator: '.ConnectPage_createWallet', + method: 'css', + }; + // functions + async _findWallet(wallets, walletPlate) { + this.logger.info(`DAppConnectWallet::_findWallet is called`); + const resultWallets = wallets.filter(async walletEl => { + const nameAndPlate = await walletEl.findElement( + getByLocator(this.walletItemPlateLabelLocator) + ); + return (await nameAndPlate.getText()).includes(walletPlate); + }); + if (resultWallets.length === 0) { + throw new Error(`No suitebale wallets are found. Expected wallet plate is ${walletPlate}`); + } else if (resultWallets.length > 1) { + throw new Error(`Too many wallet are found for the wallet plate ${walletPlate}`); + } + return resultWallets[0]; + } + async getWallets() { + const allWallets = await this.findElements(this.walletItemButtonLocator); + return allWallets; + } + async getWalletInfo(walletChecksum) { + this.logger.info(`DAppConnectWallet::getWalletInfo is called`); + const wallets = await this.getWallets(); + const walletElem = await this._findWallet(wallets, walletChecksum); + const walletNameFieldElem = await walletElem.findElement( + getByLocator(this.walletItemNameLabelLocator) + ); + const fullText = await walletNameFieldElem.getText(); + const [walletName, walletPlate] = fullText.split('\n'); + const walletBalanceElem = await walletElem.findElement( + getByLocator(this.walletItemBalanceLabelLocator) + ); + const fullBalanceText = await walletBalanceElem.getText(); + const walletBalance = Number(fullBalanceText.split(' ')[0]); + + return { + walletBalance, + walletName, + walletPlate, + }; + } + async selectWallet(walletChecksum) { + this.logger.info(`DAppConnectWallet::selectWallet is called`); + const wallets = await this.getWallets(); + const walletElem = await this._findWallet(wallets, walletChecksum); + await walletElem.click(); + } + async noWalletsWarningIsDisplayed() { + this.logger.info(`DAppConnectWallet::noWalletsWarningIsDisplayed is called`); + await this.waitForElement(this.noWalletsLabelLocator); + const element = await this.findElement(this.noWalletsLabelLocator); + return await element.isDisplayed(); + } + async clickCreateWallet() { + this.logger.info(`DAppConnectWallet::noWalletsWarningIsDisplayed is called`); + await this.waitForElement(this.createWalletButtonLocator); + await this.click(this.createWalletButtonLocator); + } +} + +export default DAppConnectWallet; diff --git a/packages/e2e-tests/pages/dapp/dAppSignBase.page.js b/packages/e2e-tests/pages/dapp/dAppSignBase.page.js new file mode 100644 index 0000000000..2558344aac --- /dev/null +++ b/packages/e2e-tests/pages/dapp/dAppSignBase.page.js @@ -0,0 +1,105 @@ +import { fiveSeconds, quarterSecond } from '../../helpers/timeConstants.js'; +import DAppBase from './dAppBase.page.js'; + +class DAppSignBase extends DAppBase { + // locators + cancelButtonLocator = { + locator: 'cancelButton', + method: 'id', + }; + confirmButtonLocator = { + locator: 'confirmButton', + method: 'id', + }; + errorBlockLocator = { + locator: '.ErrorBlock_component', + method: 'css', + }; + passwordInputLocator = { + locator: 'walletPassword', + method: 'id', + }; + // connection info + connectedToUrlLabelLocator = { + locator: 'connectedToUrl', + method: 'id', + }; + connectedWalletNameLocator = { + locator: 'connectedWalletName', + method: 'id', + }; + connectedWalletPlateLocator = { + locator: 'connectedWalletPlate', + method: 'id', + }; + + detailsTabName = 'Details'; + utxosTabName = 'UTxOs'; + connectionTabName = 'Connection'; + + getTabButtonLocator = tabName => { + return { + locator: `//div[@role="tablist"]/button/div[text()="${tabName}"]`, + method: 'xpath', + }; + }; + // functions + async enterPassword(password) { + this.logger.info(`DAppSignBase::enterPassword is called`); + await this.waitForElement(this.passwordInputLocator); + await this.input(this.passwordInputLocator, password); + } + async cancelSigning() { + this.logger.info(`DAppSignBase::cancelSigning is called`); + await this.waitForElement(this.cancelButtonLocator); + await this.click(this.cancelButtonLocator); + } + async confirmSigning() { + this.logger.info(`DAppSignBase::confirmSigning is called`); + await this.waitForElement(this.confirmButtonLocator); + const buttonIsEnabled = await this.customWaiter( + async () => { + const buttonlIsEnabled = await this.getAttribute(this.confirmButtonLocator, 'disabled'); + return buttonlIsEnabled === null; + }, + fiveSeconds, + quarterSecond + ); + if (buttonIsEnabled) { + await this.click(this.confirmButtonLocator); + } else { + this.logger.error(`DAppSignBase::confirmSigning The button Confirm is not enabled`); + throw new Error('The button Confirm is not enabled'); + } + } + async switchToDetailsTab() { + this.logger.info(`DAppSignBase::switchToDetailsTab is called`); + const tabLocator = this.getTabButtonLocator(this.detailsTabName); + await this.click(tabLocator); + } + async switchToUtxosTab() { + this.logger.info(`DAppSignBase::switchToUtxosTab is called`); + const tabLocator = this.getTabButtonLocator(this.utxosTabName); + await this.click(tabLocator); + } + async switchToConnectionTab() { + this.logger.info(`DAppSignBase::switchToConnectionTab is called`); + const tabLocator = this.getTabButtonLocator(this.connectionTabName); + await this.click(tabLocator); + } + async getConnectionInfo() { + this.logger.info(`DAppSignBase::getConnectionInfo is called`); + await this.switchToConnectionTab(); + await this.waitForElement(this.connectedToUrlLabelLocator); + const pageUrl = await this.getText(this.connectedToUrlLabelLocator); + const walletName = await this.getText(this.connectedWalletNameLocator); + const walletPlate = await this.getText(this.connectedWalletPlateLocator); + return { + pageUrl, + walletName, + walletPlate, + }; + } +} + +export default DAppSignBase; diff --git a/packages/e2e-tests/pages/dapp/dAppSignData.page.js b/packages/e2e-tests/pages/dapp/dAppSignData.page.js new file mode 100644 index 0000000000..741e4c61eb --- /dev/null +++ b/packages/e2e-tests/pages/dapp/dAppSignData.page.js @@ -0,0 +1,22 @@ +import DAppSignBase from './dAppSignBase.page.js'; + +class DAppSignData extends DAppSignBase { + // locators + signMessageTitleLocator = { + locator: 'signMessageTitle', + method: 'id', + }; + signMessageBoxLocator = { + locator: 'signMessageBox-payload', + method: 'id', + }; + // methods + async getDisplayedMessage() { + this.logger.info(`DAppSignData::confirmSigning is called`); + await this.waitForElement(this.signMessageBoxLocator); + const signDataText = await this.getText(this.signMessageBoxLocator); + return signDataText; + } +} + +export default DAppSignData; diff --git a/packages/e2e-tests/pages/dapp/dAppSignTx.page.js b/packages/e2e-tests/pages/dapp/dAppSignTx.page.js new file mode 100644 index 0000000000..40d57ac320 --- /dev/null +++ b/packages/e2e-tests/pages/dapp/dAppSignTx.page.js @@ -0,0 +1,170 @@ +import { getByLocator } from '../../utils/utils.js'; +import DAppSignBase from './dAppSignBase.page.js'; + +class DAppSignTx extends DAppSignBase { + // locators + // + // details tab + summaryBoxLocator = { + locator: 'signTxMessagesSummaryBox', + method: 'id', + }; + transactionTotalAmountLabelLocator = { + locator: 'signTxMessagesSummaryBox-total', + method: 'id', + }; + transactionFeeLabelLocator = { + locator: 'signTxAdditionalInfoPanelBox-fee', + method: 'id', + }; + assetsAmountTextLocator = { + locator: 'asseetValueDisplayBox', + method: 'id', + }; + // utxos tab + fromAddressYourInputsLocator = { + locator: 'fromAddressesBox-yourInputs', + method: 'id', + }; + fromAddressForeignInputsLocator = { + locator: 'fromAddressesBox-foreignInputs', + method: 'id', + }; + toAddressYourInputsLocator = { + locator: 'toAddressesBox-yourOutputs', + method: 'id', + }; + toAddressForeignInputsLocator = { + locator: 'toAddressesBox-foreignOutputs', + method: 'id', + }; + addressRowLocator = { + locator: 'addressRow', + method: 'id', + }; + addressRowAddressInfoLocator = rowIndex => { + return { + locator: `utxoDetails_${rowIndex}-address-text`, + method: 'id', + }; + }; + addressRowLinkLocator = { + locator: '.ExplorableHash_url', + method: 'css', + }; + addressRowAmountLocator = { + locator: 'addressRow-amount', + method: 'id', + }; + // error message + errorMessageLocator = { + locator: '.Layout_content', + methos: 'css', + }; + // functions + async getFee() { + this.logger.info(`DAppSignTx::getFee is called`); + await this.waitForElement(this.transactionFeeLabelLocator); + const rawText = await this.getText(this.transactionFeeLabelLocator); + return rawText.split(' ')[0]; + } + async getTotalAmount() { + this.logger.info(`DAppSignTx::getTotalAmount is called`); + await this.waitForElement(this.transactionTotalAmountLabelLocator); + const rawText = await this.getText(this.transactionTotalAmountLabelLocator); + return rawText.split(' ')[0]; + } + // should be improved in case of several outputs + async _getAssetsFromRow(addressRow) { + const result = []; + this.logger.info(`DAppSignTx::_getAmountFromRow is called`); + const amountElements = await addressRow.findElements( + getByLocator(this.addressRowAmountLocator) + ); + for (const amountEl of amountElements) { + const [amount, name] = (await amountEl.getText()).split(' '); + result.push({ tokenName: name, tokenAmount: amount }); + } + return result; + } + async _getAddressFromRow(addressRow, rowIndex) { + this.logger.info(`DAppSignTx::_getAddressFromRow is called`); + const addressElement = await addressRow.findElement( + getByLocator(this.addressRowAddressInfoLocator(rowIndex)) + ); + const linkElement = await addressElement.findElement(getByLocator(this.addressRowLinkLocator)); + const linkText = await linkElement.getAttribute('href'); + const linkTextArr = linkText.split('/'); + return linkTextArr[linkTextArr.length - 1]; + } + async _getAddressesRows(addressPart) { + this.logger.info(`DAppSignTx::_getAddressesRows is called`); + return await addressPart.findElements(getByLocator(this.addressRowLocator)); + } + async _getAddresses(addressesPart) { + this.logger.info(`DAppSignTx::_getAddresses is called`); + const result = []; + const addressesRows = await this._getAddressesRows(addressesPart); + for (let rowIndex = 0; rowIndex < addressesRows.length; rowIndex++) { + const addressesRow = addressesRows[rowIndex]; + const address = await this._getAddressFromRow(addressesRow, rowIndex); + const addressAssets = await this._getAssetsFromRow(addressesRow); + const mappedAddrAssets = addressAssets.map(addrAsset => { + return { + tokenName: addrAsset.tokenName, + tokenAmount: parseFloat(addrAsset.tokenAmount), + }; + }); + result.push({ + addr: address, + assets: mappedAddrAssets, + }); + } + return result; + } + async _getSectionAddresses(yourAddrsSectionLocator, foreignAddrsSectionLocator) { + this.logger.info(`DAppSignTx::_getSectionAddresses is called`); + const result = { + yourAddrs: [], + foreignAddrs: [], + }; + if (await this.checkIfExists(yourAddrsSectionLocator)) { + const yourInputsBoxElem = await this.findElement(yourAddrsSectionLocator); + const yourAddrsArr = await this._getAddresses(yourInputsBoxElem); + result.yourAddrs.push(...yourAddrsArr); + } + if (await this.checkIfExists(foreignAddrsSectionLocator)) { + const foreignInputsBoxElem = await this.findElement(foreignAddrsSectionLocator); + const foreignAddrsArr = await this._getAddresses(foreignInputsBoxElem); + result.foreignAddrs.push(...foreignAddrsArr); + } + + return result; + } + async getInputsInfo() { + this.logger.info(`DAppSignTx::getInputsInfo is called`); + const result = await this._getSectionAddresses( + this.fromAddressYourInputsLocator, + this.fromAddressForeignInputsLocator + ); + this.logger.info(`DAppSignTx::getInputsInfo Result: ${JSON.stringify(result, null, 2)}`); + return result; + } + async getOutputsInfo() { + this.logger.info(`DAppSignTx::getOutputsInfo is called`); + const result = await this._getSectionAddresses( + this.toAddressYourInputsLocator, + this.toAddressForeignInputsLocator + ); + this.logger.info(`DAppSignTx::getOutputsInfo Result: ${JSON.stringify(result, null, 2)}`); + return result; + } + async getErrorMessage() { + this.logger.info(`DAppSignTx::getErrorMessage is called`); + const result = await this.getText(this.errorMessageLocator); + this.logger.info(`DAppSignTx::getErrorMessage Result: ${result}`); + return result; + } +} + +export default DAppSignTx; diff --git a/packages/e2e-tests/pages/initialSteps.page.js b/packages/e2e-tests/pages/initialSteps.page.js new file mode 100644 index 0000000000..ed9bf751f4 --- /dev/null +++ b/packages/e2e-tests/pages/initialSteps.page.js @@ -0,0 +1,134 @@ +import BasePage from './basepage.js'; +import { isChrome } from '../utils/utils.js'; +import { + defaultWaitTimeout, + oneSecond, + quarterSecond, + twoSeconds, +} from '../helpers/timeConstants.js'; + +class InitialStepsPage extends BasePage { + // locators + languagesDropDownLocator = { + locator: '//div[starts-with(@id, "languageId--")]', + method: 'xpath', + }; + agreeCheckboxLocator = { + locator: '.PrivateSwitchBase-root', + method: 'css', + }; + tosContinueButtonLocator = { + locator: 'initialPage-continue-button', + method: 'id', + }; + analyticsSkipButtonLocator = { + locator: '//div[@class="OptForAnalyticsForm_skip"]/button', + method: 'xpath', + }; + analyticsAcceptButtonLocator = { + locator: '//div[@class="OptForAnalyticsForm_accpet"]/button', + method: 'xpath', + }; + cardanoUrlPromptFormLocator = { + locator: '.UriPromptForm_component', + method: 'css', + }; + cardanoPaymentUrlAllowButtonLocator = { + locator: '.allowButton', + method: 'css', + }; + cardanoPaymentUrlSkipButtonLocator = { + locator: '.MuiButton-secondary', + method: 'css', + }; + getLanguageMenuItem = countryCode => { + return { + locator: `selectLanguage-${countryCode}-menuItem`, + method: 'id', + }; + }; + // methods + async _continueButtonIsEnabled() { + const buttonIsEnabled = await this.customWaiter( + async () => { + const buttonlIsEnabled = await this.getAttribute(this.tosContinueButtonLocator, 'disabled'); + return buttonlIsEnabled === null; + }, + twoSeconds, + quarterSecond + ); + + return buttonIsEnabled; + } + async openLanguageSelection() { + this.logger.info(`InitialStepsPage::openLanguageSelection is called`); + await this.waitForElement(this.languagesDropDownLocator); + await this.click(this.languagesDropDownLocator); + } + async pickLanguage(countryCode) { + this.logger.info(`InitialStepsPage::pickLanguage is called. Country code: "${countryCode}"`); + const langLocator = this.getLanguageMenuItem(countryCode); + await this.scrollIntoView(langLocator); + await this.click(langLocator); + } + async selectLanguage(countryCode) { + this.logger.info(`InitialStepsPage::selectLanguage is called. Country code: "${countryCode}"`); + await this.openLanguageSelection(); + await this.pickLanguage(countryCode); + } + async acceptToSPP() { + this.logger.info(`InitialStepsPage::acceptToSPP is called`); + await this.waitForElement(this.languagesDropDownLocator); + await this.waitForElement(this.agreeCheckboxLocator); + await this.click(this.agreeCheckboxLocator); + await this.waitEnable(this.tosContinueButtonLocator); + await this.click(this.tosContinueButtonLocator); + } + async cantProceedWithoutToS() { + this.logger.info(`InitialStepsPage::cantProceedWithoutToS is called`); + await this.waitForElement(this.languagesDropDownLocator); + await this.waitForElement(this.agreeCheckboxLocator); + await this.click(this.agreeCheckboxLocator); + await this.waitEnable(this.tosContinueButtonLocator); + await this.click(this.agreeCheckboxLocator); + return !(await this._continueButtonIsEnabled()); + } + async getContinueButtonText() { + this.logger.info(`InitialStepsPage::getContinueButtonText is called`); + const btnText = await this.getText(this.tosContinueButtonLocator); + this.logger.info(`InitialStepsPage::getContinueButtonText::btnText is "${btnText}"`); + return btnText; + } + async acceptAnalytics() { + this.logger.info(`InitialStepsPage::acceptAnalytics is called`); + await this.waitForElement(this.analyticsAcceptButtonLocator); + await this.click(this.analyticsAcceptButtonLocator); + } + async skipAnalytics() { + this.logger.info(`InitialStepsPage::skipAnalytics is called`); + await this.waitForElement(this.analyticsSkipButtonLocator); + await this.click(this.analyticsSkipButtonLocator); + } + async allowCardanoPaymentsUrls() { + this.logger.info(`InitialStepsPage::allowCardanoPaymentsUrls is called`); + await this.waitForElement(this.cardanoUrlPromptFormLocator); + await this.click(this.cardanoPaymentUrlAllowButtonLocator); + } + async skipCardanoPaymentUrls() { + this.logger.info(`InitialStepsPage::skipCardanoPaymentUrls is called`); + await this.waitForElement(this.cardanoUrlPromptFormLocator); + await this.click(this.cardanoPaymentUrlSkipButtonLocator); + } + async skipInitialSteps() { + this.logger.info(`InitialStepsPage::skipInitialSteps is called`); + await this.driver.manage().setTimeouts({ implicit: oneSecond }); + await this.acceptToSPP(); + await this.skipAnalytics(); + if (isChrome()) { + await this.skipCardanoPaymentUrls(); + } + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + } +} + +export default InitialStepsPage; diff --git a/packages/e2e-tests/pages/newWalletPages/addWalletBase.page.js b/packages/e2e-tests/pages/newWalletPages/addWalletBase.page.js new file mode 100644 index 0000000000..5aa6a4e5b2 --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/addWalletBase.page.js @@ -0,0 +1,25 @@ +import BasePage from '../basepage.js'; + +class AddWalletBase extends BasePage { + backButtonLocator = { + locator: 'secondaryButton', + method: 'id', + }; + nextButtonLocator = { + locator: 'primaryButton', + method: 'id', + }; + async continue() { + this.logger.info(`AddWalletBase::continue is called`); + await this.waitForElement(this.nextButtonLocator); + await this.waitEnable(this.nextButtonLocator); + await this.click(this.nextButtonLocator); + } + async backOnPreviousStep() { + this.logger.info(`AddWalletBase::backOnPreviousStep is called`); + await this.waitForElement(this.backButtonLocator); + await this.click(this.backButtonLocator); + } +} + +export default AddWalletBase; diff --git a/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepOne.page.js b/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepOne.page.js new file mode 100644 index 0000000000..3d9f8baf97 --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepOne.page.js @@ -0,0 +1,27 @@ +import AddWalletBase from '../addWalletBase.page.js'; + +class CreateWalletStepOne extends AddWalletBase { + // locators + // info panel + // learn more link + learnAboutComponentLocator = { + locator: 'learnAboutRecoveryPhraseComponent', + method: 'id', + }; + // functions + // check info panel (expected text, language) + async backOnPreviousStep() { + this.logger.info(`CreateWalletStepOne::backOnPreviousStep is called`); + await this.waitForElement(this.learnAboutComponentLocator); + await this.waitForElement(this.backButtonLocator); + await this.click(this.backButtonLocator); + } + async continue() { + this.logger.info(`CreateWalletStepOne::continue is called`); + await this.waitForElement(this.learnAboutComponentLocator); + await this.waitForElement(this.nextButtonLocator); + await this.click(this.nextButtonLocator); + } +} + +export default CreateWalletStepOne; diff --git a/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepThree.page.js b/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepThree.page.js new file mode 100644 index 0000000000..92f4375139 --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepThree.page.js @@ -0,0 +1,60 @@ +import { WalletWordsSize } from '../../../helpers/constants.js'; +import AddWalletBase from '../addWalletBase.page.js'; + +class CreateWalletStepThree extends AddWalletBase { + // locators + verifyPhraseComponentLocator = { + locator: 'verifyRecoveryPhraseStepComponent', + method: 'id', + }; + incorrectOrderLabelLocator = { + locator: 'incorrectOrderMessage', + method: 'id', + }; + phraseValidTextLocator = { + locator: 'isValidPhraseMessage', + method: 'id', + }; + _getRecoveryPhraseBoxLocator = wordIndex => { + return { + locator: `verifyRecoveryPhraseWord${wordIndex}`, + method: 'id', + }; + }; + // functions + _wordIsAdded = async wordWebElement => { + const cursorState = await wordWebElement.getCssValue('cursor'); + return cursorState === 'not-allowed'; + }; + async getRecoveryPhraseFromStorage() { + this.logger.info(`CreateWalletStepThree::getRecoveryPhraseFromStorage is called`); + const result = await this.getFromLocalStorage('recoveryPhrase'); + return result; + } + async enterRecoveryPhrase(recoveryPhrase) { + this.logger.info(`CreateWalletStepThree::enterRecoveryPhrase is called`); + await this.waitForElement(this.verifyPhraseComponentLocator); + for (const recoveryPhraseWord of recoveryPhrase) { + for (let wordIndex = 0; wordIndex < WalletWordsSize.Shelley; wordIndex++) { + const elementLocator = this._getRecoveryPhraseBoxLocator(wordIndex); + const webElement = await this.findElement(elementLocator); + const wordIsAdded = await this._wordIsAdded(webElement); + if (!wordIsAdded) { + const elementText = await webElement.getText(); + if (elementText === recoveryPhraseWord) { + await webElement.click(); + break; + } + } + } + } + await this.sleep(200); + } + async recoveryPhraseIsValid() { + this.logger.info(`CreateWalletStepThree::recoveryPhraseIsValid is called`); + const isDisplayed = await (await this.findElement(this.phraseValidTextLocator)).isDisplayed(); + return isDisplayed; + } +} + +export default CreateWalletStepThree; diff --git a/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepTwo.page.js b/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepTwo.page.js new file mode 100644 index 0000000000..76cf91a54f --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/createWalletSteps/createWalletStepTwo.page.js @@ -0,0 +1,68 @@ +import AddWalletBase from '../addWalletBase.page.js'; + +class CreateWalletStepTwo extends AddWalletBase { + // locators + tipsModalLocator = { + locator: 'infoDialog', + method: 'id', + }; + tipModalContinueButtonLocator = { + locator: 'infoDialogContinueButton', + method: 'id', + }; + recoveryPharseBoxLocator = { + locator: 'recoveryPhraseBox', + method: 'id', + }; + showRecoveryPhraseButtonLocator = { + locator: 'toggleRecoveryPhraseButton', + method: 'id', + }; + _getRecoveryPhraseWordLocator = index => { + return { + locator: `recoveryPhraseWord${index}`, + method: 'id', + }; + }; + // functions + async _collectAllWords() { + const allWords = []; + for (let wordIndex = 0; wordIndex < 15; wordIndex++) { + const wordRaw = await this.getText(this._getRecoveryPhraseWordLocator(wordIndex)); + const wordClean = wordRaw.split(' ')[1]; + allWords.push(wordClean); + } + + return allWords; + } + async closeTipsModalWindow() { + this.logger.info(`CreateWalletStepTwo::closeTipsModalWindow is called`); + await this.waitForElement(this.tipsModalLocator); + await this.waitForElement(this.tipModalContinueButtonLocator); + await this.click(this.tipModalContinueButtonLocator); + } + async recoveryPhraseIsBlurred() { + this.logger.info(`CreateWalletStepTwo::recoveryPhraseIsBlurred is called`); + const allWordsBlurValues = []; + for (let wordIndex = 0; wordIndex < 15; wordIndex++) { + const blurValue = await this.getCssValue( + this._getRecoveryPhraseWordLocator(wordIndex), + 'filter' + ); + allWordsBlurValues.push(blurValue); + } + return allWordsBlurValues.every(word => word.includes('blur')); + } + async toggleVisibilityOfRecoveryPhrase() { + this.logger.info(`CreateWalletStepTwo::toggleVisibilityOfRecoveryPhrase is called`); + await this.waitForElement(this.showRecoveryPhraseButtonLocator); + await this.click(this.showRecoveryPhraseButtonLocator); + } + async saveRecoveryPhrase() { + this.logger.info(`CreateWalletStepTwo::saveRecoveryPhrase is called`); + const recoveryPhrase = await this._collectAllWords(); + await this.saveToLocalStorage('recoveryPhrase', recoveryPhrase); + } +} + +export default CreateWalletStepTwo; diff --git a/packages/e2e-tests/pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js b/packages/e2e-tests/pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js new file mode 100644 index 0000000000..42da590df1 --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js @@ -0,0 +1,26 @@ +import AddWalletBase from '../addWalletBase.page.js'; + +class RestoreWalletStepOne extends AddWalletBase { + // locators + fifteenWordButtonLocator = { + locator: 'fifteenWordsButton', + method: 'id', + }; + twentyFourWordsButtonLocator = { + locator: 'twentyfourWordsButton', + method: 'id', + }; + // functions + async selectFifteenWordWallet() { + this.logger.info(`RestoreWalletStepOne::selectFifteenWordWallet is called`); + await this.waitForElement(this.fifteenWordButtonLocator); + await this.click(this.fifteenWordButtonLocator); + } + async selectTwentyFourWordWallet() { + this.logger.info(`RestoreWalletStepOne::selectTwentyFourWordWallet is called`); + await this.waitForElement(this.twentyFourWordsButtonLocator); + await this.click(this.twentyFourWordsButtonLocator); + } +} + +export default RestoreWalletStepOne; diff --git a/packages/e2e-tests/pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js b/packages/e2e-tests/pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js new file mode 100644 index 0000000000..d97d8526ac --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js @@ -0,0 +1,161 @@ +import AddWalletBase from '../addWalletBase.page.js'; +import { Key } from 'selenium-webdriver'; +import { twoSeconds, quarterSecond } from '../../../helpers/timeConstants.js'; + +class RestoreWalletStepTwo extends AddWalletBase { + // locators + getRecoveryPhraseInputLocator = index => { + return { + locator: `downshift-${index}-input`, + method: 'id', + }; + }; + recoveryPhraseInputXpathLocator = { + locator: '//input[starts-with(@id, "downshift-") and contains(@id, "-input")]', + method: 'xpath', + }; + recoveryPhraseVerifiedTextLocator = { + locator: 'validPhraseMessage', + method: 'id', + }; + clearAllButtonLocator = { + locator: 'clearAllButton', + method: 'id', + }; + // duplicated wallet dialog + duplicatedWalletDialogLocator = { + locator: 'duplicatedWalletDialog-dialog', + method: 'id', + }; + duplicatedWalletDialogTitleLocator = { + locator: 'duplicatedWalletDialog-dialogTitle-text', + method: 'id', + }; + duplicatedWalletDialogCancelButtonLocator = { + locator: 'duplicatedWalletDialog-cancel-button', + method: 'id', + }; + duplicatedWalletDialogOpenWalletButtonLocator = { + locator: 'duplicatedWalletDialog-openWallet-button', + method: 'id', + }; + walletInfoNameLocator = { + locator: 'walletInfo-walletName-text', + method: 'id', + }; + walletInfoPlateLocator = { + locator: 'walletInfo-walletPlate-text', + method: 'id', + }; + walletInfoAmountLocator = { + locator: 'walletInfo-amount-text', + method: 'id', + }; + getAllRecoveryPhrasesInputs = async () => { + const inputsElements = await this.findElements(this.recoveryPhraseInputXpathLocator); + return inputsElements; + }; + // functions + _enterRecoveryPhrase = async (wordsAmount, recoveryPhrase) => { + let phraseTemplate = null; + if (typeof recoveryPhrase === 'string') { + phraseTemplate = recoveryPhrase.split(' '); + } else { + phraseTemplate = recoveryPhrase; + } + const allInputs = await this.getAllRecoveryPhrasesInputs(); + for (let wordIndex = 0; wordIndex < wordsAmount; wordIndex++) { + const phraseWord = phraseTemplate[wordIndex]; + const inputElement = allInputs[wordIndex]; + await this.inputElem(inputElement, phraseWord + Key.RETURN); + } + }; + enterRecoveryPhrase15Words = async recoveryPhrase => { + this.logger.info(`RestoreWalletStepTwo::enterRecoveryPhrase15Words is called`); + await this._enterRecoveryPhrase(15, recoveryPhrase); + }; + enterRecoveryPhrase24Words = async recoveryPhrase => { + this.logger.info(`RestoreWalletStepTwo::enterRecoveryPhrase24Words is called`); + await this._enterRecoveryPhrase(24, recoveryPhrase); + }; + clearAllButtonIsEnabled = async () => { + this.logger.info(`RestoreWalletStepTwo::clearAllButtonIsEnabled is called`); + await this.waitForElement(this.clearAllButtonLocator); + const clearAllIsEnabled = await this.getCssValue(this.clearAllButtonLocator, 'disabled'); + return clearAllIsEnabled === null; + }; + clearAllInputs = async () => { + this.logger.info(`RestoreWalletStepTwo::clearAllInputs is called`); + const buttonIsEnabled = await this.clearAllButtonIsEnabled(); + if (buttonIsEnabled) { + await this.click(this.clearAllButtonLocator); + } else { + throw new Error('The Clear All button is not enabled'); + } + }; + clearAllInputsManually = async () => { + const allInputs = await this.getAllRecoveryPhrasesInputs(); + for (const seedInput of allInputs) { + const wordInputLength = (await this.getAttributeElement(seedInput, 'value')).length; + for (let charIndex = 0; charIndex < wordInputLength; charIndex++) { + await this.inputElem(seedInput, Key.BACK_SPACE); + } + } + }; + allInputsAreEmpty = async () => { + this.logger.info(`RestoreWalletStepTwo::allInputsAreEmpty is called`); + const allInputs = await this.findElements(this.recoveryPhraseInputXpathLocator); + const result = []; + for (const wordInput of allInputs) { + const inputsText = await this.getAttributeElement(wordInput, 'value'); + const inputIsEmpty = inputsText === ''; + result.push(inputIsEmpty); + } + return result.every(value => value === true); + }; + recoveryPhraseIsVerified = async () => { + this.logger.info(`RestoreWalletStepTwo::recoveryPhraseIsVerified is called`); + const isDisplayed = await this.customWaiter( + async () => { + const allElements = await this.findElements(this.recoveryPhraseVerifiedTextLocator); + return allElements.length === 1; + }, + twoSeconds, + quarterSecond + ); + return isDisplayed; + }; + duplicatedWalletDialogIsDisplayed = async () => { + this.logger.info(`RestoreWalletStepTwo::duplicatedWalletDialogIsDisplayed is called`); + const isDisplayed = await ( + await this.findElement(this.duplicatedWalletDialogLocator) + ).isDisplayed(); + return isDisplayed; + }; + getDuplicatedWalletName = async () => { + this.logger.info(`RestoreWalletStepTwo::getDuplicatedWalletName is called`); + const walletName = await this.getText(this.walletInfoNameLocator); + return walletName; + }; + getDuplicatedWalletPlate = async () => { + this.logger.info(`RestoreWalletStepTwo::getDuplicatedWalletPlate is called`); + const walletPlate = await this.getText(this.walletInfoPlateLocator); + return walletPlate; + }; + getDuplicatedWalletBalance = async () => { + this.logger.info(`RestoreWalletStepTwo::getDuplicatedWalletBalance is called`); + const walletBalanceRaw = await this.getText(this.walletInfoAmountLocator); + const walletBalanceClean = parseFloat(walletBalanceRaw.split(' ')[0]); + return walletBalanceClean; + }; + openExistingWallet = async () => { + this.logger.info(`RestoreWalletStepTwo::openExistingWallet is called`); + await this.click(this.duplicatedWalletDialogOpenWalletButtonLocator); + }; + cancelOpeningExistingWallet = async () => { + this.logger.info(`RestoreWalletStepTwo::cancelOpeningExistingWallet is called`); + await this.click(this.duplicatedWalletDialogCancelButtonLocator); + }; +} + +export default RestoreWalletStepTwo; diff --git a/packages/e2e-tests/pages/newWalletPages/walletDetails.page.js b/packages/e2e-tests/pages/newWalletPages/walletDetails.page.js new file mode 100644 index 0000000000..bfa0744f88 --- /dev/null +++ b/packages/e2e-tests/pages/newWalletPages/walletDetails.page.js @@ -0,0 +1,103 @@ +import AddWalletBase from './addWalletBase.page.js'; + +class WalletDetails extends AddWalletBase { + defaultMessage = + 'Use a combination of letters, numbers and symbols to make your password stronger'; + // locators + // add learnMoreLink + tipsModalLocator = { + locator: 'infoDialog', + method: 'id', + }; + tipModalContinueButtonLocator = { + locator: 'infoDialogContinueButton', + method: 'id', + }; + // wallet name + walletNameInputLocator = { + locator: 'walletNameInput', + method: 'id', + }; + // wallet name error message + walletNameErrorLabelLocator = { + locator: 'walletNameInput-helper-text', + method: 'id', + }; + // wallet password + walletPasswordInputLocator = { + locator: 'walletPasswordInput', + method: 'id', + }; + // wallet password error message + walletPasswordErrorLabelLocator = { + locator: 'walletPasswordInput-helper-text', + method: 'id', + }; + // repeat wallet password + walletRepeatPasswordInputLocator = { + locator: 'repeatPasswordInput', + method: 'id', + }; + // repear wallet password error message + walletRepeatPasswordErrorLabelLocator = { + locator: 'repeatPasswordInput-helper-text', + method: 'id', + }; + // wallet plate + walletPlateLabelLocator = { + locator: 'walletPlateText', + method: 'id', + }; + + // functions + // + async closeTipsModalWindow() { + this.logger.info(`WalletDetails::closeTipsModalWindow is called`); + await this.waitForElement(this.tipsModalLocator); + await this.waitForElement(this.tipModalContinueButtonLocator); + await this.click(this.tipModalContinueButtonLocator); + } + async enterWalletName(walletName) { + this.logger.info(`WalletDetails::enterWalletName is called`); + await this.waitForElement(this.walletNameInputLocator); + await this.input(this.walletNameInputLocator, walletName); + } + async enterWalletPassword(password) { + this.logger.info(`WalletDetails::enterWalletPassword is called`); + await this.waitForElement(this.walletPasswordInputLocator); + await this.input(this.walletPasswordInputLocator, password); + } + async repeatWalletPassword(password) { + this.logger.info(`WalletDetails::repeatWalletPassword is called`); + await this.waitForElement(this.walletRepeatPasswordInputLocator); + await this.input(this.walletRepeatPasswordInputLocator, password); + } + async checkWalletNameHasNoError() { + this.logger.info(`WalletDetails::checkWalletNameHasNoError is called`); + await this.sleep(500); + await this.waitForElement(this.walletNameErrorLabelLocator); + const errorText = await this.getText(this.walletNameErrorLabelLocator); + return errorText.length === 0; + } + async checkWalletPaswordHasNoError() { + this.logger.info(`WalletDetails::checkWalletPaswordHasNoError is called`); + await this.sleep(500); + await this.waitForElement(this.walletPasswordErrorLabelLocator); + const errorText = await this.getText(this.walletPasswordErrorLabelLocator); + return errorText === this.defaultMessage || errorText.length === 0; + } + async checkWalletRepeatPasswordHasNoError() { + this.logger.info(`WalletDetails::checkWalletRepeatPasswordHasNoError is called`); + await this.sleep(500); + await this.waitForElement(this.walletRepeatPasswordErrorLabelLocator); + const errorText = await this.getText(this.walletRepeatPasswordErrorLabelLocator); + return errorText.length === 0; + } + async getWalletPlate() { + this.logger.info(`WalletDetails::getWalletPlate is called`); + await this.waitForElement(this.walletPlateLabelLocator); + return await this.getText(this.walletPlateLabelLocator); + } +} + +export default WalletDetails; diff --git a/packages/e2e-tests/pages/trezorConnect.page.js b/packages/e2e-tests/pages/trezorConnect.page.js new file mode 100644 index 0000000000..766c3e960d --- /dev/null +++ b/packages/e2e-tests/pages/trezorConnect.page.js @@ -0,0 +1,52 @@ +import { defaultWaitTimeout, halfSecond } from '../helpers/timeConstants.js'; +import BasePage from './basepage.js'; + +class TrezorConnect extends BasePage { + // locators + dontAskAgainCheckboxLocator = { + locator: '.custom-checkbox', + method: 'css', + }; + confirmUsingTrezorButtonLocator = { + locator: '.confirm', + method: 'css', + }; + exportTrezorButtonLocator = { + locator: '.confirm', + method: 'css', + }; + // functions + async tickCheckbox() { + this.logger.info(`TrezorConnect::tickCheckbox is called`); + const result = await this.customWaiter( + async () => { + const elAmount = await this.findElements(this.dontAskAgainCheckboxLocator); + this.logger.info(`TrezorConnect::tickCheckbox. Elements found: ${elAmount.length}`); + // this conditions was found empirically + return elAmount.length === 4; + }, + defaultWaitTimeout, + halfSecond + ); + if (result) { + const allCheckboxes = await this.findElements(this.dontAskAgainCheckboxLocator); + // this conditions was found empirically + await allCheckboxes[0].click(); + } else { + this.logger.error(`TrezorConnect::tickCheckbox A correct checkbox is not found`); + throw new Error('A correct checkbox is not found'); + } + } + async allowConnection() { + this.logger.info(`TrezorConnect::allowConnection is called`); + await this.waitForElement(this.confirmUsingTrezorButtonLocator); + await this.clickByScript(this.confirmUsingTrezorButtonLocator); + } + async allowPubKeysExport() { + this.logger.info(`TrezorConnect::allowPubKeysExport is called`); + await this.waitForElement(this.exportTrezorButtonLocator); + await this.clickByScript(this.exportTrezorButtonLocator); + } +} + +export default TrezorConnect; diff --git a/packages/e2e-tests/pages/wallet/connectorTab/connectorTab.page.js b/packages/e2e-tests/pages/wallet/connectorTab/connectorTab.page.js new file mode 100644 index 0000000000..016cbaa1bd --- /dev/null +++ b/packages/e2e-tests/pages/wallet/connectorTab/connectorTab.page.js @@ -0,0 +1,96 @@ +import { getByLocator } from '../../../utils/utils.js'; +import WalletCommonBase from '../../walletCommonBase.page.js'; +import { defaultWaitTimeout, oneSecond } from '../../../helpers/timeConstants.js'; + +class ConnectorTab extends WalletCommonBase { + // locators + connectedWalletRowLocator = { + locator: '//div[starts-with(@id, "walletRow_")]', + method: 'xpath', + }; + connectedWalletRowFirstLocator = { + locator: 'walletRow_0', + method: 'id', + }; + connectedWalletNameLabelLocator = { + locator: 'connectedWalletNameLabel', + method: 'id', + }; + connectedWalletBalanceLocator = { + locator: 'connectedWalletBalanceLabel', + method: 'id', + }; + connectedWalletDappUrlLabelLocator = { + locator: 'dAppUrlLabel', + method: 'id', + }; + removeConnectionButtonLocator = { + locator: 'removeWalletButton', + method: 'id', + }; + // functions + async getAllConnectedWallets() { + this.logger.info(`ConnectorTab::getAllConnectedWallets is called.`); + await this.driver.manage().setTimeouts({ implicit: oneSecond }); + const allWallets = await this.findElements(this.connectedWalletRowLocator); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return allWallets; + } + async getConnectedWalletInfo(walletName) { + this.logger.info(`ConnectorTab::getWalletInfo is called for the wallet "${walletName}"`); + const allWallets = await this.findElements(this.connectedWalletRowLocator); + for (const walletElem of allWallets) { + // name + const walletNameElem = await walletElem.findElement( + getByLocator(this.connectedWalletNameLabelLocator) + ); + const walletNameText = await walletNameElem.getText(); + if (walletNameText !== walletName) { + break; + } + // balance + const walletBalanceElem = await walletElem.findElement( + getByLocator(this.connectedWalletBalanceLocator) + ); + const walletBalance = Number((await walletBalanceElem.getText()).split(' ')[0]); + // dapp url + const dappUrlElem = await walletElem.findElement( + getByLocator(this.connectedWalletDappUrlLabelLocator) + ); + const dappUrl = await dappUrlElem.getText(); + + return { + walletBalance, + dappUrl, + }; + } + const errMsg = `The wallet with the name "${walletName}" is not found in the connected wallets`; + this.logger.error(`ConnectorTab::getWalletInfo ${errMsg}`); + throw new Error(errMsg); + } + async disconnectWallet(walletName, dappUrl) { + this.logger.info(`ConnectorTab::disconnectWallet is called for the wallet "${walletName}"`); + const allWallets = await this.findElements(this.connectedWalletRowLocator); + for (const walletElem of allWallets) { + const walletNameElem = await walletElem.findElement( + getByLocator(this.connectedWalletNameLabelLocator) + ); + const walletNameText = await walletNameElem.getText(); + const dappUrlElem = await walletElem.findElement( + getByLocator(this.connectedWalletDappUrlLabelLocator) + ); + const dappUrlText = await dappUrlElem.getText(); + if (walletNameText === walletName && dappUrlText === dappUrl) { + await this.hoverOnElement(walletElem); + await this.click(this.removeConnectionButtonLocator); + await this.sleep(200); + return true; + } + } + const errMsg = `The wallet with the name "${walletName}" is not found in the connected wallets`; + this.logger.error(`ConnectorTab::disconnectWallet ${errMsg}`); + throw new Error(errMsg); + } +} + +export default ConnectorTab; diff --git a/packages/e2e-tests/pages/wallet/settingsTab/blockchainSubTab.page.js b/packages/e2e-tests/pages/wallet/settingsTab/blockchainSubTab.page.js new file mode 100644 index 0000000000..60fc68f80f --- /dev/null +++ b/packages/e2e-tests/pages/wallet/settingsTab/blockchainSubTab.page.js @@ -0,0 +1,34 @@ +import SettingsTab from './settingsTab.page.js'; + +class BlockchainSubTab extends SettingsTab { + // locators + explorersDropDownLocator = { + locator: '//div[starts-with(@id, "explorerId--")]', + method: 'xpath', + }; + getExplorerMenuItem = explorer => { + return { + locator: `selectExplorer-${explorer}-menuItem`, + method: 'id', + }; + }; + // methods + async openExplorerSelection() { + this.logger.info(`BlockchainSubTab::openExplorerSelection is called`); + await this.waitForElement(this.explorersDropDownLocator); + await this.click(this.explorersDropDownLocator); + } + async pickExplorer(explorer) { + this.logger.info(`BlockchainSubTab::pickExplorer is called. Explorer: "${explorer}"`); + const explorerLocator = this.getExplorerMenuItem(explorer); + await this.scrollIntoView(explorerLocator); + await this.click(explorerLocator); + } + async selectExplorer(explorer) { + this.logger.info(`BlockchainSubTab::selectExplorer is called. Explorer: "${explorer}"`); + await this.openExplorerSelection(); + await this.pickExplorer(explorer); + } +} + +export default BlockchainSubTab; diff --git a/packages/e2e-tests/pages/wallet/settingsTab/generalSubTab.page.js b/packages/e2e-tests/pages/wallet/settingsTab/generalSubTab.page.js new file mode 100644 index 0000000000..e0f7ace878 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/settingsTab/generalSubTab.page.js @@ -0,0 +1,166 @@ +import SettingsTab from './settingsTab.page.js'; + +class GeneralSubTab extends SettingsTab { + // locators + // * language dropdown + languagesDropDownLocator = { + locator: '//div[starts-with(@id, "languageId--")]', + method: 'xpath', + }; + getLanguageMenuItem = countryCode => { + return { + locator: `selectLanguage-${countryCode}-menuItem`, + method: 'id', + }; + }; + // * fiat pairing dropdown + fiatDropDownLocator = { + locator: '//div[starts-with(@id, "coinPriceCurrencyId--")]', + method: 'xpath', + }; + getFiatMenuItem = fiatCode => { + return { + locator: `selectFiat-${fiatCode}-menuItem`, + method: 'id', + }; + }; + // * network text + networkInfoTextLocator = { + locator: 'settings:general-networkInfo-text', + method: 'id', + }; + // * current version text + versionInfoTextLocator = { + locator: 'settings:general-versionInfo-text', + method: 'id', + }; + // * commit text + commitInfoTextLocator = { + locator: 'settings:general-commitInfo-text', + method: 'id', + }; + // * links + twitterLinkLocator = { + locator: 'settings:general-twitterLink-linkButton', + method: 'id', + }; + yoroiWebsiteLinkLocator = { + locator: 'settings:general-yoroiWebsiteLink-linkButton', + method: 'id', + }; + facebookLinkLocator = { + locator: 'settings:general-facebookLink-linkButton', + method: 'id', + }; + youtubeLinkLocator = { + locator: 'settings:general-youtubeLink-linkButton', + method: 'id', + }; + telegramLinkLocator = { + locator: 'settings:general-telegramLink-linkButton', + method: 'id', + }; + mediumLinkLocator = { + locator: 'settings:general-mediumLink-linkButton', + method: 'id', + }; + githubLinkLocator = { + locator: 'settings:general-githubLink-linkButton', + method: 'id', + }; + // methods + async openLanguageSelection() { + this.logger.info(`GeneralSubTab::openLanguageSelection is called`); + await this.waitForElement(this.languagesDropDownLocator); + await this.click(this.languagesDropDownLocator); + } + async pickLanguage(countryCode) { + this.logger.info(`GeneralSubTab::pickLanguage is called. Country code: "${countryCode}"`); + const langLocator = this.getLanguageMenuItem(countryCode); + await this.scrollIntoView(langLocator); + await this.click(langLocator); + } + async selectLanguage(countryCode) { + this.logger.info(`GeneralSubTab::selectLanguage is called. Country code: "${countryCode}"`); + await this.openLanguageSelection(); + await this.pickLanguage(countryCode); + } + async openFiatSelection() { + this.logger.info(`GeneralSubTab::openFiatSelection is called`); + await this.waitForElement(this.fiatDropDownLocator); + await this.click(this.fiatDropDownLocator); + } + async pickFiat(fiatCode) { + this.logger.info(`GeneralSubTab::pickFiat is called. Country code: "${fiatCode}"`); + const fiatLocator = this.getFiatMenuItem(fiatCode); + await this.scrollIntoView(fiatLocator); + await this.click(fiatLocator); + } + async selectFiat(fiatCode) { + this.logger.info(`GeneralSubTab::selectFiat is called. Country code: "${fiatCode}"`); + await this.openFiatSelection(); + await this.pickFiat(fiatCode); + } + async getNetworkText() { + this.logger.info(`GeneralSubTab::getNetworkText is called`); + const result = await this.getText(this.networkInfoTextLocator); + this.logger.info(`GeneralSubTab::getNetworkText::result ${result}`); + return result; + } + async getCurrentVersionText() { + this.logger.info(`GeneralSubTab::getCurrentVersionText is called`); + const result = await this.getText(this.versionInfoTextLocator); + this.logger.info(`GeneralSubTab::getCurrentVersionText::result ${result}`); + return result; + } + async getCommitText() { + this.logger.info(`GeneralSubTab::getCommitText is called`); + const result = await this.getText(this.commitInfoTextLocator); + this.logger.info(`GeneralSubTab::getCommitText::result ${result}`); + return result; + } + async getTwitterLink() { + this.logger.info(`GeneralSubTab::getTwitterLink is called`); + const result = await this.getLinkFromComponent(this.twitterLinkLocator); + this.logger.info(`GeneralSubTab::getTwitterLink::result ${result}`); + return result; + } + async getYoroiWebsiteLink() { + this.logger.info(`GeneralSubTab::getYoroiWebsiteLink is called`); + const result = await this.getLinkFromComponent(this.yoroiWebsiteLinkLocator); + this.logger.info(`GeneralSubTab::getYoroiWebsiteLink::result ${result}`); + return result; + } + async getFacebookLink() { + this.logger.info(`GeneralSubTab::getFacebookLink is called`); + const result = await this.getLinkFromComponent(this.facebookLinkLocator); + this.logger.info(`GeneralSubTab::getFacebookLink::result ${result}`); + return result; + } + async getYoutubeLink() { + this.logger.info(`GeneralSubTab::getYoutubeLink is called`); + const result = await this.getLinkFromComponent(this.youtubeLinkLocator); + this.logger.info(`GeneralSubTab::getYoutubeLink::result ${result}`); + return result; + } + async getTGLink() { + this.logger.info(`GeneralSubTab::getTGLink is called`); + const result = await this.getLinkFromComponent(this.telegramLinkLocator); + this.logger.info(`GeneralSubTab::getTGLink::result ${result}`); + return result; + } + async getMediumLink() { + this.logger.info(`GeneralSubTab::getMediumLink is called`); + const result = await this.getLinkFromComponent(this.mediumLinkLocator); + this.logger.info(`GeneralSubTab::getMediumLink::result ${result}`); + return result; + } + async getGithubLink() { + this.logger.info(`GeneralSubTab::getGithubLink is called`); + const result = await this.getLinkFromComponent(this.githubLinkLocator); + this.logger.info(`GeneralSubTab::getGithubLink::result ${result}`); + return result; + } +} + +export default GeneralSubTab; diff --git a/packages/e2e-tests/pages/wallet/settingsTab/settingsTab.page.js b/packages/e2e-tests/pages/wallet/settingsTab/settingsTab.page.js new file mode 100644 index 0000000000..f22fbc1d1d --- /dev/null +++ b/packages/e2e-tests/pages/wallet/settingsTab/settingsTab.page.js @@ -0,0 +1,82 @@ +import WalletCommonBase from '../../walletCommonBase.page.js'; + +class SettingsTab extends WalletCommonBase { + // locators + // General subtab + generalSubmenuItemLocator = { + locator: 'settings-generalSubTab-button', + method: 'id', + }; + // Blockchain subtab + blockchainSubmenuItemLocator = { + locator: 'settings-blockchainSubTab-button', + method: 'id', + }; + // Wallet subtab + walletSubmenuItemLocator = { + locator: 'settings-walletSubTab-button', + method: 'id', + }; + // TOS subtab + tosSubmenuItemLocator = { + locator: 'settings-termsofuseSubTab-button', + method: 'id', + }; + // Support/Logs subtab + supportSubmenuItemLocator = { + locator: 'settings-supportSubTab-button', + method: 'id', + }; + // Level of Complexity subtab + complexitySubmenuItemLocator = { + locator: 'settings-levelofcomplexitySubTab-button', + method: 'id', + }; + // Analytics subtab + analyticsSubmenuItemLocator = { + locator: 'settings-analyticsSubTab-button', + method: 'id', + }; + + // functions + async goToGeneralSubMenu() { + this.logger.info(`SettingsTab::goToGeneralSubMenu is called`); + await this.click(this.generalSubmenuItemLocator); + } + async goToBlockchainSubMenu() { + this.logger.info(`SettingsTab::goToBlockchainSubMenu is called`); + await this.click(this.blockchainSubmenuItemLocator); + } + async goToWalletSubMenu() { + this.logger.info(`SettingsTab::goToWalletSubMenu is called`); + await this.click(this.walletSubmenuItemLocator); + } + async goToTOSSubMenu() { + this.logger.info(`SettingsTab::goToTOSSubMenu is called`); + await this.click(this.tosSubmenuItemLocator); + } + async goToSupportSubMenu() { + this.logger.info(`SettingsTab::goToSupportSubMenu is called`); + await this.click(this.supportSubmenuItemLocator); + } + async goToComplexitySubMenu() { + this.logger.info(`SettingsTab::goToComplexitySubMenu is called`); + await this.click(this.complexitySubmenuItemLocator); + } + async goToAnalyticsSubMenu() { + this.logger.info(`SettingsTab::goToAnalyticsSubMenu is called`); + await this.click(this.analyticsSubmenuItemLocator); + } + /** + * Returns text from the General tab from Settings + * @returns {Promise} + */ + async getGeneralSubTabText() { + this.logger.info(`SettingsTab::getGeneralSubTabText is called`); + const result = await this.getText(this.generalSubmenuItemLocator); + this.logger.info(`SettingsTab::getGeneralSubTabText::result ${result}`); + return result; + } +} + +export default SettingsTab; diff --git a/packages/e2e-tests/pages/wallet/settingsTab/supportSubTab.page.js b/packages/e2e-tests/pages/wallet/settingsTab/supportSubTab.page.js new file mode 100644 index 0000000000..5243bb94d7 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/settingsTab/supportSubTab.page.js @@ -0,0 +1,27 @@ +import { oneSecond } from '../../../helpers/timeConstants.js'; +import SettingsTab from './settingsTab.page.js'; + +class SupportSubTab extends SettingsTab { + // locators + faqLinkLocator = { + locator: 'settings:support-faq-link', + method: 'id', + }; + requestSupportLinkLocator = { + locator: 'settings:support-requestSupport-link', + method: 'id', + }; + // downloadLogs button + downloadLogsButtonLocator = { + locator: 'settings:support-downloadLogs-buttons', + method: 'id', + }; + // methods + async downloadLogs() { + this.logger.info(`SupportSubTab::downloadLogs is called.`); + await this.click(this.downloadLogsButtonLocator); + await this.sleep(oneSecond); + } +} + +export default SupportSubTab; diff --git a/packages/e2e-tests/pages/wallet/settingsTab/tosSubTab.page.js b/packages/e2e-tests/pages/wallet/settingsTab/tosSubTab.page.js new file mode 100644 index 0000000000..faad83eb2e --- /dev/null +++ b/packages/e2e-tests/pages/wallet/settingsTab/tosSubTab.page.js @@ -0,0 +1,46 @@ +import SettingsTab from './settingsTab.page.js'; + +class TermOfServiceAgreementSubTab extends SettingsTab { + // locator + tosTitle = { + locator: 'terms-of-service-agreement', + method: 'id', + }; + tosHeaders = { + locator: '//span/h2', + method: 'xpath', + }; + tosParagraphs = { + locator: '//span/p', + method: 'xpath', + }; + // methods + async titleIsDisplayed() { + this.logger.info(`TermOfServiceAgreementSubTab::titleIsDisplayed is called`); + const titleElem = await this.findElement(this.tosTitle); + return await titleElem.isDisplayed(); + } + async getAmountOfH2() { + this.logger.info(`TermOfServiceAgreementSubTab::getAmountOfH2 is called`); + const allH2Elems = await this.findElements(this.tosHeaders); + return allH2Elems.length; + } + async allParagraphsNotEmpty() { + this.logger.info(`TermOfServiceAgreementSubTab::allParagraphsNotEmpty is called`); + const allParagraphsElems = await this.findElements(this.tosParagraphs); + for (const pElem of allParagraphsElems) { + const pText = await pElem.getText(); + if (pText === '') { + return false; + } + } + return true; + } + async getAmountOfParagraphs() { + this.logger.info(`TermOfServiceAgreementSubTab::getAmountofParagraphs is called`); + const allParagraphsElems = await this.findElements(this.tosParagraphs); + return allParagraphsElems.length; + } +} + +export default TermOfServiceAgreementSubTab; diff --git a/packages/e2e-tests/pages/wallet/settingsTab/walletSubTab.page.js b/packages/e2e-tests/pages/wallet/settingsTab/walletSubTab.page.js new file mode 100644 index 0000000000..792e9c38f8 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/settingsTab/walletSubTab.page.js @@ -0,0 +1,167 @@ +import { Key } from 'selenium-webdriver'; +import SettingsTab from './settingsTab.page.js'; + +class WalletSubTab extends SettingsTab { + // locator + // Wallet name input + walletNameInputLocator = { + locator: 'settings:wallet:walletName-editValue-input', + method: 'id', + }; + walletNameCancelChangesButtonLocator = { + locator: 'settings:wallet:walletName-cancelChanges-button', + method: 'id', + }; + // Change password button + changePasswordButtonLocator = { + locator: 'settings:wallet-changePassword-button', + method: 'id', + }; + // Change password + changePasswordDialogLocator = { + locator: 'changePasswordDialog-dialogWindow-modalWindow', + method: 'id', + }; + // Change password dialog, Current password input + changePasswordCurrentPaswordInputLocator = { + locator: '//input[starts-with(@id, "currentPassword--")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + // Change password dialog, New password input + changePasswordNewPaswordInputLocator = { + locator: '//input[starts-with(@id, "walletPassword--")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + changePasswordNewPaswordHelpMsgTextLocator = { + locator: '//p[starts-with(@id, "walletPassword--") and contains(@id, "-helper-text")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + // Change password dialog, Repeat New password input + changePasswordRepeatNewPaswordInputLocator = { + locator: '//input[starts-with(@id, "repeatPassword--")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + changePasswordRepeatNewPaswordHelpMsgLocator = { + locator: '//p[starts-with(@id, "repeatPassword--") and contains(@id, "-helper-text")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + // Change password dialog, Save button + changePasswordSaveButtonLocator = { + locator: 'changePasswordDialog-save-button', + method: 'id', + }; + // Change password dialog, Error message + changePasswordErrorMessageLocator = { + locator: 'changePasswordDialog-errorMessage-text', + method: 'id', + }; + // Resync wallet button + resyncWalletButtonLocator = { + locator: 'settings:wallet-resyncWallet-button', + method: 'id', + }; + // Resync wallet dialog, I undestand checkbox + // Resync wallet dialog, Cancel button + // Resync wallet dialog, Resync button + // Export wallet button + exportWalletButtonLocator = { + locator: 'settings:wallet-exportWallet-button', + method: 'id', + }; + // Export wallet dialog, Public key text + // Export wallet dialog, Cross button + // Remove wallet button + removeWalletButtonLocator = { + locator: 'settings:wallet-removeWallet-button', + method: 'id', + }; + // Remove wallet dialog + removeWalletDialogLocator = { + locator: 'removeWalletDialog-dialogWindow-modalWindow', + method: 'id', + }; + // Remove wallet dialog, I have seed phrase checkbox + removeWalletAcknowledgeCheckboxLocator = { + locator: 'removeWalletDialog-acknowledgeAction-checkbox', + method: 'id', + }; + // Remove wallet dialog, Cancel button + removeWalletCancelButtonLocator = { + locator: 'removeWalletDialog-cancel-button', + method: 'id', + }; + // Remove wallet dialog, Remove button + removeWalletRemoveButtonLocator = { + locator: 'removeWalletDialog-remove-button', + method: 'id', + }; + // functions + async changeWalletName(newName, oldName, confirm = true) { + this.logger.info( + `WalletSubTab::changeWalletName is called. Name: ${newName}, confirm new name: ${confirm}` + ); + await this.click(this.walletNameInputLocator); + await this.clearInputUpdatingForm(this.walletNameInputLocator, oldName.length); + if (confirm) { + await this.input(this.walletNameInputLocator, newName + Key.RETURN); + } else { + await this.input(this.walletNameInputLocator, newName); + await this.click(this.walletNameCancelChangesButtonLocator); + } + } + async changeWalletPassword(oldPassword, newPassword, repeatNewPassword, confirm = true) { + this.logger.info( + `WalletSubTab::getWalletExportInfo is called.` + + `The old password: ${oldPassword}, the new password: ${newPassword}, the repeat new password: ${repeatNewPassword}` + ); + await this.click(this.changePasswordButtonLocator); + await this.waitForElement(this.changePasswordDialogLocator); + + await this.click(this.changePasswordCurrentPaswordInputLocator); + await this.input(this.changePasswordCurrentPaswordInputLocator, oldPassword); + + await this.click(this.changePasswordNewPaswordInputLocator); + await this.input(this.changePasswordNewPaswordInputLocator, newPassword); + + await this.click(this.changePasswordRepeatNewPaswordInputLocator); + await this.input(this.changePasswordRepeatNewPaswordInputLocator, repeatNewPassword); + + if (confirm) { + await this.click(this.changePasswordSaveButtonLocator); + } + } + async getPasswordErrorMsg() { + this.logger.info(`WalletSubTab::getPasswordErrorMsg is called.`); + await this.waitElementTextMatches(this.changePasswordErrorMessageLocator, /\w+/g); + return await this.getText(this.changePasswordErrorMessageLocator); + } + async getNewPasswordErrorMsg() { + this.logger.info(`WalletSubTab::getNewPasswordErrorMsg is called.`); + await this.waitElementTextMatches(this.changePasswordNewPaswordHelpMsgTextLocator, /\w+/g); + return await this.getText(this.changePasswordNewPaswordHelpMsgTextLocator); + } + async getRepeatNewPasswordErrorMsg() { + this.logger.info(`WalletSubTab::getRepeatNewPasswordErrorMsg is called.`); + await this.waitElementTextMatches(this.changePasswordRepeatNewPaswordHelpMsgLocator, /\w+/g); + return await this.getText(this.changePasswordRepeatNewPaswordHelpMsgLocator); + } + async getWalletExportInfo() { + this.logger.info(`WalletSubTab::getWalletExportInfo is called`); + } + async resyncWallet() { + this.logger.info(`WalletSubTab::resyncWallet is called`); + } + async removeWallet(confirm = true) { + this.logger.info(`WalletSubTab::removeWallet is called`); + await this.click(this.removeWalletButtonLocator); + await this.waitForElement(this.removeWalletDialogLocator); + if (!confirm) { + await this.click(this.removeWalletCancelButtonLocator); + } else { + await this.click(this.removeWalletAcknowledgeCheckboxLocator); + await this.click(this.removeWalletRemoveButtonLocator); + } + } +} + +export default WalletSubTab; diff --git a/packages/e2e-tests/pages/wallet/walletTab/receiveSubTab.page.js b/packages/e2e-tests/pages/wallet/walletTab/receiveSubTab.page.js new file mode 100644 index 0000000000..6a0739dbde --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/receiveSubTab.page.js @@ -0,0 +1,479 @@ +import WalletTab from './walletTab.page.js'; +import BasePage from '../../basepage.js'; +import { twoSeconds, quarterSecond } from '../../../helpers/timeConstants.js'; + +class GenerateURIModal extends BasePage { + // locators + generateURIModalLocator = { + locator: 'uriGenerateDialog-dialogWindow-modalWindow', + method: 'id', + }; + generateURIModalTitleLocator = { + locator: 'uriGenerateDialog-dialogTitle-text', + method: 'id', + }; + generateButtonLocator = { + locator: 'uriGenerateDialog-generate-button', + method: 'id', + }; + closeModalButtonLocator = { + locator: 'uriGenerateDialog-closeModal-button', + method: 'id', + }; + receiverAddressTextLocator = { + locator: '//input[starts-with(@id, "receiver--")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + amountToSendInputLocator = { + locator: '//input[starts-with(@id, "amount--")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + inputErrorMessageFieldLocator = { + locator: '//p[starts-with(@id, "amount--") and contains(@id, "-helper-text")]', + method: 'xpath', + }; + // methods + /** + * Getting a receiver address from the disabled receiver input + * @returns {Promise} A bech32 string format address + */ + async getReceiverAddress() { + this.logger.info(`ReceiveSubTab::GenerateURIModal::getReceiverAddress is called.`); + const address = await this.getAttribute(this.receiverAddressTextLocator, 'value'); + this.logger.info(`ReceiveSubTab::GenerateURIModal::getReceiverAddress::address - "${address}"`); + return address; + } + /** + * Entering amount to send + * @param {string} adaAmount Amount to send + */ + async enterReceiveAmount(adaAmount) { + this.logger.info(`ReceiveSubTab::GenerateURIModal::enterReceiveAmount is called.`); + await this.click(this.amountToSendInputLocator); + await this.input(this.amountToSendInputLocator, adaAmount); + } + /** + * Pressing the button "Generate". + * The method contains a waiter with 2 seconds timeout + */ + async generateLink() { + this.logger.info(`ReceiveSubTab::GenerateURIModal::generateLink is called.`); + const buttonIsEnabled = await this.customWaiter( + async () => { + const buttonlIsEnabled = await this.getAttribute(this.generateButtonLocator, 'disabled'); + return buttonlIsEnabled === null; + }, + twoSeconds, + quarterSecond + ); + if (buttonIsEnabled) { + await this.click(this.generateButtonLocator); + } else { + throw new Error('The Continue button is disabled'); + } + } + /** + * Getting the error message of amount input field + * @returns {Promise} + */ + async getAmountErrorMessage() { + this.logger.info(`ReceiveSubTab::GenerateURIModal::getAmountErrorMessage is called.`); + + const messageAppeared = await this.customWaiter( + async () => { + const displayedText = await this.getText(this.inputErrorMessageFieldLocator); + return displayedText !== ''; + }, + twoSeconds, + quarterSecond + ); + if (messageAppeared) { + const errMsg = await this.getText(this.inputErrorMessageFieldLocator); + this.logger.info( + `ReceiveSubTab::GenerateURIModal::getAmountErrorMessage:errMsg - "${errMsg}"` + ); + return errMsg; + } else { + return ''; + } + } +} + +class DisplayURIModal extends BasePage { + // locators + uriDisplayModalLocator = { + locator: 'uriDisplayDialog-dialogWindow-modalWindow', + method: 'id', + }; + uriDisplayModalTitleLocator = { + locator: 'uriDisplayDialog-dialogTitle-text', + method: 'id', + }; + closeModalButtonLocator = { + locator: 'uriDisplayDialog-closeModal-button', + method: 'id', + }; + linkTextLocator = { + locator: 'uriDisplayDialog-address-text', + method: 'id', + }; + copyLinkButtonLocator = { + locator: 'uriDisplayDialog-copyAddress-button', + method: 'id', + }; + // methods + /** + * Getting a generated link right from the component itself + * @returns {Promise} + */ + async getGeneratedLink() { + this.logger.info(`ReceiveSubTab::DisplayURIModal::getGeneratedLink is called.`); + return await this.getText(this.linkTextLocator); + } + /** + * Getting a generated link by clicking on the copy button near the text field. + * The address will be saved into clipboard. + */ + async copyGeneratedLink() { + this.logger.info(`ReceiveSubTab::DisplayURIModal::copyGeneratedLink is called.`); + await this.click(this.copyGeneratedLink); + } + /** + * Closing the modal window + */ + async closeModalWindow() { + this.logger.info(`ReceiveSubTab::DisplayURIModal::closeModalWindow is called.`); + await this.click(this.closeModalButtonLocator); + } +} + +class ReceiveSubTab extends WalletTab { + // locators + // * base addresses menu item + baseAddrsMenuItemLocator = { + locator: 'wallet:wallet:receive:navigationPanel-baseMenuItem-button', + method: 'id', + }; + // * base external addrs menu item + baseExternalAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-externalMenuItem-button', + method: 'id', + }; + // * base internal addrs menu item + baseInternalAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-internalMenuItem-button', + method: 'id', + }; + // * reward addresses menu item + rewardAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-rewardMenuItem-button', + method: 'id', + }; + // * address book menu item + addressBookMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-addressbookMenuItem-button', + method: 'id', + }; + // * all addrs menu item + allAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-allMenuItem-button', + method: 'id', + }; + // * unused addrs menu item + unusedAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-unusedMenuItem-button', + method: 'id', + }; + // * used addrs menu item + usedAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-usedMenuItem-button', + method: 'id', + }; + // * has balance menu item + hasBalanceAddrsMenuItemLocator = { + locator: 'wallet:receive:navigationPanel-hasbalanceMenuItem-button', + method: 'id', + }; + // * receive wallet addr + currentAddressToUseTextLocator = { + locator: 'wallet:receive:infoPanel:header-address-text', + method: 'id', + }; + // * receive wallet addr copy btn + copyCurrentAddressToUseButtonLocator = { + locator: 'wallet:receive:infoPanel:header-copyAddress-button', + method: 'id', + }; + // * receive wallet addr qr-code img + addrQrCodeImageLocator = { + locator: 'wallet:receive:infoPanel:header-addressQrCode-image', + method: 'id', + }; + // * receive wallet addr generate new addr btn + generateNewAddressButtonLocator = { + locator: 'wallet:receive:infoPanel:header-generateNewAddress-button', + method: 'id', + }; + // * generating new address error + generateNewAddrErrorLocator = { + locator: 'wallet:receive:infoPanel:header-addressError-text', + method: 'id', + }; + // * general paths for address's row + generalAddrRowLocator = { + locator: '//div[starts-with(@id, "wallet:receive:infoPanel:footer-addressRow_")]', + method: 'xpath', + }; + // * address row + addressRowLocator = rowIndex => { + return { + locator: `wallet:receive:infoPanel:footer-addressRow_${rowIndex}-box`, + method: 'id', + }; + }; + // * address row addr + addressTextInRowLocator = rowIndex => { + return { + locator: `wallet:receive:infoPanel:footer:addressRow_${rowIndex}-address-text`, + method: 'id', + }; + }; + // * address row copy addr btn + addressCopyButtonInRowLocator = rowIndex => { + return { + locator: `wallet:receive:infoPanel:footer:addressRow_${rowIndex}-copyAddress-button`, + method: 'id', + }; + }; + // * address row balance + addressBalanceTextInRowLocator = rowIndex => { + return { + locator: `wallet:receive:infoPanel:footer:addressRow_${rowIndex}-adaAmount-text`, + method: 'id', + }; + }; + // * address row generate URL btn + generateURIButtonInRowLocator = rowIndex => { + return { + locator: `wallet:receive:infoPanel:footer:addressRow_${rowIndex}-generateUrl-button`, + method: 'id', + }; + }; + // * address row verify addr btn + verifyAddressButtonInRowLocator = rowIndex => { + return { + locator: `wallet:receive:infoPanel:footer:addressRow_${rowIndex}-verifyAddress-button`, + method: 'id', + }; + }; + // methods + /** + * Generating a new address by clicking on the "Generate new address" button + * @param {number} amount Amount of addresses to generate + */ + async generateNewAddress(amount = 1) { + this.logger.info(`ReceiveSubTab::generateNewAddress is called. Amount: ${amount}`); + for (let addrIndex = 0; addrIndex < amount; addrIndex++) { + await this.click(this.generateNewAddressButtonLocator); + await this.sleep(200); + } + } + /** + * Getting an error message from the Receive tab + * @returns {Promise} + */ + async getErrorMessageText() { + this.logger.info(`ReceiveSubTab::getErrorMessageText is called.`); + return await this.getText(this.generateNewAddrErrorLocator); + } + async _selectBaseExt(subMenuItemLocator) { + await this.click(this.baseExternalAddrsMenuItemLocator); + await this.click(subMenuItemLocator); + await this.sleep(300); + } + async _selectBaseInter(subMenuItemLocator) { + await this.click(this.baseInternalAddrsMenuItemLocator); + await this.click(subMenuItemLocator); + await this.sleep(300); + } + /** + * Clicking on the "External" menu item and then clicking on the "All" menu item + */ + async selectBaseExtAllAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseExtAllAddrs is called.`); + await this._selectBaseExt(this.allAddrsMenuItemLocator); + } + /** + * Clicking on the "External" menu item and then clicking on the "Unused" menu item + */ + async selectBaseExtUnusedAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseExtUnusedAddrs is called.`); + await this._selectBaseExt(this.unusedAddrsMenuItemLocator); + } + /** + * Clicking on the "External" menu item and then clicking on the "Used" menu item + */ + async selectBaseExtUsedAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseExtUsedAddrs is called.`); + await this._selectBaseExt(this.usedAddrsMenuItemLocator); + } + /** + * Clicking on the "External" menu item and then clicking on the "Has balance" menu item + */ + async selectBaseExtHasBalanceAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseExtHasBalanceAddrs is called.`); + await this._selectBaseExt(this.hasBalanceAddrsMenuItemLocator); + } + /** + * Clicking on the "Internal" menu item and then clicking on the "All" menu item + */ + async selectBaseInterAllAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseInterAllAddrs is called.`); + await this._selectBaseInter(this.allAddrsMenuItemLocator); + } + /** + * Clicking on the "Internal" menu item and then clicking on the "Unused" menu item + */ + async selectBaseInterUnusedAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseInterUnusedAddrs is called.`); + await this._selectBaseInter(this.unusedAddrsMenuItemLocator); + } + /** + * Clicking on the "Internal" menu item and then clicking on the "Used" menu item + */ + async selectBaseInterUsedAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseInterUsedAddrs is called.`); + await this._selectBaseInter(this.usedAddrsMenuItemLocator); + } + /** + * Clicking on the "Internal" menu item and then clicking on the "Has balance" menu item + */ + async selectBaseInterHasBalanceAddrs() { + this.logger.info(`ReceiveSubTab::selectBaseInterHasBalanceAddrs is called.`); + await this._selectBaseInter(this.hasBalanceAddrsMenuItemLocator); + } + /** + * Clicking on the "Reward" menu item + */ + async selectRewardAddrs() { + this.logger.info(`ReceiveSubTab::selectRewardAddrs is called.`); + await this.click(this.rewardAddrsMenuItemLocator); + await this.sleep(300); + } + /** + * Clicking on the "Address book" menu item + */ + async selectAddressesBook() { + this.logger.info(`ReceiveSubTab::selectAddressesBook is called.`); + await this.click(this.addressBookMenuItemLocator); + await this.sleep(300); + } + /** + * Getting an amount for displayed addresses + * @returns {Promise} + */ + async getAmountOfAddresses() { + this.logger.info(`ReceiveSubTab::getAmountOfAddresses is called.`); + const allAddrs = await this.findElements(this.generalAddrRowLocator); + return allAddrs.length; + } + /** + * + * @param {number} rowIndex An index of a row in the addresses table starting from 0 + * @returns {Promise<{address: string, balance: number}>} + */ + async getAddressInfo(rowIndex) { + this.logger.info(`ReceiveSubTab::getAddressInfo is called. Row index: ${rowIndex}`); + const shortAddr = await this.getText(this.addressTextInRowLocator(rowIndex)); + const addrBalanceText = await this.getText(this.addressBalanceTextInRowLocator(rowIndex)); + if (addrBalanceText === '-') { + return { + address: shortAddr, + balance: 0, + }; + } + const regexp = /\d+(\.\d+)?/g; + const matchResult = [...addrBalanceText.matchAll(regexp)]; + const addrBalance = parseFloat(matchResult[0]); + return { + address: shortAddr, + balance: addrBalance, + }; + } + /** + * Getting a sum of addresses balances + * @returns {Promise} + */ + async getBalanceOfDisplayedAddrs() { + this.logger.info(`ReceiveSubTab::getBalanceOfDisplayedAddrs is called.`); + const addrsAmount = await this.getAmountOfAddresses(); + let balance = 0; + for (let rowIndex = 0; rowIndex < addrsAmount; rowIndex++) { + const addrInfo = await this.getAddressInfo(rowIndex); + balance = balance + addrInfo.balance; + } + return balance; + } + /** + * Pressing the Generate URI button for an address + * @param {number} rowIndex An index of a row where the button Generate URI should be pressed + * @returns {Promise} + */ + async clickGenerateURI(rowIndex) { + this.logger.info(`ReceiveSubTab::geneneratePaymentURI is called. Row index: ${rowIndex}`); + const genURIBtnLocator = this.generateURIButtonInRowLocator(rowIndex); + await this.click(genURIBtnLocator); + return new GenerateURIModal(this.driver, this.logger); + } + /** + * Getting an object of the modal window GenerateURIModal + * @returns {GenerateURIModal} + */ + getGenerateURIModal() { + this.logger.info(`ReceiveSubTab::getGenerateURIModal is called.`); + return new GenerateURIModal(this.driver, this.logger); + } + /** + * Getting an object of the modal window DisplayURIModal + * @returns {DisplayURIModal} + */ + getDisplayURIModal() { + this.logger.info(`ReceiveSubTab::getDisplayURIModal is called.`); + return new DisplayURIModal(this.driver, this.logger); + } + /** + * + * @param {number} rowIndex An index of a row in the addresses table starting from 0 + * @param {string} adaAmount ADA amount to receive + * @returns {Promise<{address: string, amount: string, genLink: string}>} + */ + async geneneratePaymentURI(rowIndex, adaAmount) { + this.logger.info( + `ReceiveSubTab::geneneratePaymentURI is called. Row index: ${rowIndex}, amount: ${adaAmount}` + ); + const genLinkModal = await this.clickGenerateURI(rowIndex); + const selectedAddress = await genLinkModal.getReceiverAddress(); + await genLinkModal.enterReceiveAmount(adaAmount); + await genLinkModal.generateLink(); + const generatedURIModal = new DisplayURIModal(this.driver, this.logger); + const generatedLink = await generatedURIModal.getGeneratedLink(); + await generatedURIModal.closeModalWindow(); + return { + address: selectedAddress, + amount: adaAmount, + genLink: generatedLink, + }; + } + /** + * Getting the latest address which is displayed at the header panel of the Receive page + * @returns {Promise} + */ + async getCurrentReceiveAddr() { + this.logger.info(`ReceiveSubTab::getCurrentReceiveAddr is called.`); + const address = await this.getText(this.currentAddressToUseTextLocator); + this.logger.info(`ReceiveSubTab::getCurrentReceiveAddr::address - "${address}"`); + return address; + } +} + +export default ReceiveSubTab; diff --git a/packages/e2e-tests/pages/wallet/walletTab/sendSubTab.page.js b/packages/e2e-tests/pages/wallet/walletTab/sendSubTab.page.js new file mode 100644 index 0000000000..506e147c24 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/sendSubTab.page.js @@ -0,0 +1,154 @@ +import WalletTab from './walletTab.page.js'; +import { twoSeconds, quarterSecond } from '../../../helpers/timeConstants.js'; + +class SendSubTab extends WalletTab { + // locators + // step 1 + // ------ + receiverAddressInputLocator = { + locator: '//input[starts-with(@id, "receiver--")]', + method: 'xpath', + }; + memoInputLocator = { + locator: 'wallet:send:enterAddressStep-enterMemo-input', + method: 'id', + }; + nextToStep2ButtonLocator = { + locator: 'wallet:send:enterAddressStep-nextToAddAssets-button', + method: 'id', + }; + // ------ + // step 2 + // ------ + amountToSendInputLocator = { + locator: '//input[starts-with(@id, "amount--")]', // unfortunately, I didn't find a way to make a proper ID + method: 'xpath', + }; + addTokenButtonLocator = { + locator: 'wallet:send:addAssetsStep-addTokens-button', + method: 'id', + }; + addNFTButtonLocator = { + locator: 'wallet:send:addAssetsStep-addNFTs-button', + method: 'id', + }; + nextToStep3ButtonLocator = { + locator: 'wallet:send:addAssetsStep-nextToConfirmTransaction-button', + method: 'id', + }; + backToStep1ButtonLocator = { + locator: 'wallet:send:addAssetsStep-backToEnterAddress-button', + method: 'id', + }; + // Tokens dialog + // NFTs dialog + // ------ + // step 3 + // ------ + receiverAddressTextLocator = { + locator: 'wallet:send:confrimTransactionStep-receiverAddress-text', + method: 'id', + }; + totalAmountToSendTextLocator = { + locator: 'wallet:send:confrimTransactionStep-totalAmount-text', + method: 'id', + }; + transactionFeeTextLocator = { + locator: 'wallet:send:confrimTransactionStep-feeAmount-text', + method: 'id', + }; + transactionAmountTextLocator = { + locator: 'wallet:send:confrimTransactionStep-amountToSend-text', + method: 'id', + }; + passwordInputLocator = { + locator: '//input[starts-with(@id, "walletPassword--")]', + method: 'xpath', + }; + passwordHelpMessageTextLocator = { + locator: '//p[starts-with(@id, "walletPassword--") and contains(@id, "-helper-text")]', + method: 'xpath', + }; + backToStep2ButtonLocator = { + locator: 'wallet:send:confrimTransactionStep-backToAddAssetsStep-button', + method: 'id', + }; + confirmTxButtonLocator = { + locator: 'wallet:send:confrimTransactionStep-confirmTransaction-button', + method: 'id', + }; + // ------ + // functions + async buttonIsEnabled(locator) { + const buttonIsEnabled = await this.customWaiter( + async () => { + const buttonlIsEnabled = await this.getAttribute(locator, 'disabled'); + return buttonlIsEnabled === null; + }, + twoSeconds, + quarterSecond + ); + + return buttonIsEnabled; + } + async enterReceiverAndMemo(receiver, memo = '', confirm = true) { + this.logger.info( + `SendSubTab::enterReceiver is called. ` + `Receiver: ${receiver}, memo: ${memo}` + ); + await this.click(this.receiverAddressInputLocator); + await this.input(this.receiverAddressInputLocator, receiver); + if (memo) { + await this.click(this.memoInputLocator); + await this.input(this.memoInputLocator, memo); + } + if (confirm) { + const nextButtonIsEnabled = await this.buttonIsEnabled(this.nextToStep2ButtonLocator); + if (nextButtonIsEnabled) { + await this.click(this.nextToStep2ButtonLocator); + } else { + throw new Error('The Next button is disabled'); + } + } + } + // It will require passing an object { : , : } + // TODO: Add posibility to add tokens and NFTs. + async addAssets(adaAmount, confirm = true) { + this.logger.info(`SendSubTab::addAssets is called. ` + `Ada amount: ${adaAmount}`); + if (adaAmount > 0) { + await this.click(this.amountToSendInputLocator); + await this.input(this.amountToSendInputLocator, adaAmount); + } + if (confirm) { + const nextButtonIsEnabled = await this.buttonIsEnabled(this.nextToStep3ButtonLocator); + if (nextButtonIsEnabled) { + await this.click(this.nextToStep3ButtonLocator); + } else { + throw new Error('The Next button is disabled'); + } + } + } + async getInfoFromConfirmTxPage() { + this.logger.info(`SendSubTab::getInfoFromConfirmTxPage is called.`); + throw new Error('The function is in development'); + } + async confirmTransaction(password, isHW = false) { + this.logger.info(`SendSubTab::confirmTransaction is called. ` + `Password: ${password}`); + if (!isHW) { + await this.click(this.passwordInputLocator); + await this.input(this.passwordInputLocator, password); + } + const nextButtonIsEnabled = await this.buttonIsEnabled(this.confirmTxButtonLocator); + if (nextButtonIsEnabled) { + await this.click(this.confirmTxButtonLocator); + } else { + throw new Error('The Confirm button is disabled'); + } + } + async getPasswordErrorMsg() { + this.logger.info(`SendSubTab::getPasswordErrorMsg is called.`); + await this.waitElementTextMatches(this.passwordHelpMessageTextLocator, /\w+/g); + return await this.getText(this.passwordHelpMessageTextLocator); + } +} + +export default SendSubTab; diff --git a/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/addMemoModal.page.js b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/addMemoModal.page.js new file mode 100644 index 0000000000..491b8bf34f --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/addMemoModal.page.js @@ -0,0 +1,73 @@ +import BasePage from '../../../basepage.js'; + +class AddMemoDialog extends BasePage { + // locators + // * modal window + addMemoDialogWindowLocator = { + locator: 'addMemoDialog-dialogWindow-modalWindow', + method: 'id', + }; + // * modal title + addMemoDialogTitleLocator = { + locator: 'addMemoDialog-dialogTitle-text', + method: 'id', + }; + // * modal close button + addMemoDialogCloseButtonLocator = { + locator: 'addMemoDialog-closeModal-button', + method: 'id', + }; + // * input + addMemoDialogInputLocator = { + locator: '//input[starts-with(@id, "memoContent--")]', + method: 'xpath', + }; + // * input error + addMemoDialogErrorTextLocator = { + locator: '//input[starts-with(@id, "memoContent--") and contains(@id, "-helper-text")]', + method: 'xpath', + }; + + // * add memo button + addMemoDialogAddButtonLocator = { + locator: 'addMemoDialog-add-button', + method: 'id', + }; + // methods + // * isDisplayed + async isDisplayed() { + this.logger.info(`AddMemoDialog::isDisplayed is called`); + try { + await this.waitForElement(this.addMemoDialogWindowLocator); + await this.waitForElement(this.addMemoDialogTitleLocator); + return true; + } catch (error) { + return false; + } + } + // * close memo modal + async closeMemoModal() { + this.logger.info(`AddMemoDialog::closeMemoModal is called`); + await this.click(this.addMemoDialogCloseButtonLocator); + } + // * enter memo + async enterMemo(memoText) { + this.logger.info(`AddMemoDialog::enterMemo is called. Memo text: ${memoText}`); + await this.click(this.addMemoDialogInputLocator); + await this.input(this.addMemoDialogInputLocator, memoText); + } + // * get error message + async getMemoErrorMsg() { + this.logger.info(`AddMemoDialog::getMemoErrorMsg is called.`); + await this.waitElementTextMatches(this.addMemoDialogErrorTextLocator, /\w+/g); + return await this.getText(this.addMemoDialogErrorTextLocator); + } + + // * press add + async pressAdd() { + this.logger.info(`AddMemoDialog::pressAdd is called.`); + await this.click(this.addMemoDialogAddButtonLocator); + } +} + +export default AddMemoDialog; diff --git a/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/editMemoModal.page.js b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/editMemoModal.page.js new file mode 100644 index 0000000000..754fa3b71f --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/editMemoModal.page.js @@ -0,0 +1,91 @@ +import { fiveSeconds, quarterSecond } from '../../../../helpers/timeConstants.js'; +import BasePage from '../../../basepage.js'; + +class EditMemoDialog extends BasePage { + // locators + // * modal window + editMemoDialogWindowLocator = { + locator: 'editMemoDialog-dialogWindow-modalWindow', + method: 'id', + }; + // * modal title + editMemoDialogTitleLocator = { + locator: 'editMemoDialog-dialogTitle-text', + method: 'id', + }; + // * modal close button + editMemoDialogCloseButtonLocator = { + locator: 'editMemoDialog-closeModal-button', + method: 'id', + }; + // * input + editMemoDialogInputLocator = { + locator: '//input[starts-with(@id, "memoContent--")]', + method: 'xpath', + }; + // * input error + editMemoDialogErrorTextLocator = { + locator: '//input[starts-with(@id, "memoContent--") and contains(@id, "-helper-text")]', + method: 'xpath', + }; + // * delete memo + editMemoDialogDeleteButtonLocator = { + locator: 'editMemoDialog:input-deleteMemo-button', + method: 'id', + }; + // * save memo button + editMemoDialogSaveButtonLocator = { + locator: 'editMemoDialog-save-button', + method: 'id', + }; + // methods + // * isDisplayed + async isDisplayed() { + this.logger.info(`EditMemoDialog::isDisplayed is called`); + try { + await this.waitForElement(this.editMemoDialogWindowLocator); + await this.waitForElement(this.editMemoDialogTitleLocator); + return true; + } catch (error) { + return false; + } + } + // * close memo modal + async closeMemoModal() { + this.logger.info(`EditMemoDialog::closeMemoModal is called`); + await this.click(this.editMemoDialogCloseButtonLocator); + } + // * enter memo + async enterMemo(memoText, oldMessage) { + this.logger.info(`EditMemoDialog::enterMemo is called. Memo text: ${memoText}`); + await this.click(this.editMemoDialogInputLocator); + await this.clearInputAll(this.editMemoDialogInputLocator); + await this.input(this.editMemoDialogInputLocator, memoText); + } + // * get error message + async getMemoErrorMsg() { + this.logger.info(`EditMemoDialog::getMemoErrorMsg is called.`); + await this.waitElementTextMatches(this.editMemoDialogErrorTextLocator, /\w+/g); + return await this.getText(this.editMemoDialogErrorTextLocator); + } + + // * press save + async pressSave() { + this.logger.info(`EditMemoDialog::pressSave is called.`); + await this.click(this.editMemoDialogSaveButtonLocator); + const modalIsNotDisplayed = await this.customWaiter( + async () => { + const modalsWebElems = await this.findElements(this.editMemoDialogWindowLocator); + return modalsWebElems.length === 0; + }, + fiveSeconds, + quarterSecond + ); + + if (!modalIsNotDisplayed) { + throw new Error('Save memo modal is still displayed after 5 seconds'); + } + } +} + +export default EditMemoDialog; diff --git a/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/exportTransactionModal.page.js b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/exportTransactionModal.page.js new file mode 100644 index 0000000000..16861820c3 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/exportTransactionModal.page.js @@ -0,0 +1,116 @@ +import BasePage from '../../../basepage.js'; +import { twoSeconds, quarterSecond } from '../../../../helpers/timeConstants.js'; + +class ExportTransactionsModal extends BasePage { + // locators + exportDialogWindowLocator = { + locator: 'exportTransactionsDialog-dialogWindow-modalWindow', + method: 'id', + }; + exportDialogTitleLocator = { + locator: 'exportTransactionsDialog-dialogTitle-text', + method: 'id', + }; + exportStartDateInputLocator = { + locator: '//div[contains(@class, "exportTransactionsDialog-startDate-datePicker")]/div/input', + method: 'xpath', + }; + exportStartDateFieldsetLocator = { + locator: + '//div[contains(@class, "exportTransactionsDialog-startDate-datePicker")]/div/fieldset', + method: 'xpath', + }; + exportEndDateInputLocator = { + locator: '//div[contains(@class, "exportTransactionsDialog-endDate-datePicker")]/div/input', + method: 'xpath', + }; + exportEndDateFiedlsetInputLocator = { + locator: '//div[contains(@class, "exportTransactionsDialog-endDate-datePicker")]/div/fieldset', + method: 'xpath', + }; + includeTxIdCheckboxLocator = { + locator: 'exportTransactionsDialog-includeTxIds-checkbox', + method: 'id', + }; + exportTransactionsButtonLocator = { + locator: 'exportTransactionsDialog-export-button', + method: 'id', + }; + exportErrorMessageLocator = { + locator: '.ErrorBlock_component', + method: 'css', + }; + // methods + async isDisplayed() { + this.logger.info(`ExportTransactionsModal::isDisplayed is called`); + try { + await this.findElement(this.exportDialogWindowLocator); + await this.findElement(this.exportDialogTitleLocator); + await this.findElement(this.exportStartDateInputLocator); + await this.findElement(this.exportEndDateInputLocator); + + return true; + } catch (error) { + this.logger.warn( + `ExportTransactionsModal::isDisplayed there is something wrong with Export Transaction Dialog` + ); + return false; + } + } + async setStartDate(dateString) { + this.logger.info(`ExportTransactionsModal::setStartDate is called`); + await this.click(this.exportStartDateInputLocator); + await this.input(this.exportStartDateInputLocator, dateString); + } + async checkStartDateErrorMsg() { + this.logger.info(`ExportTransactionsModal::checkStartDateErrorMsg is called`); + throw new Error('The function is not implemented yet'); + } + async setEndDate(dateString) { + this.logger.info(`ExportTransactionsModal::setEndDate is called`); + await this.click(this.exportEndDateInputLocator); + await this.input(this.exportEndDateInputLocator, dateString); + } + async checkEndDateErrorMsg() { + this.logger.info(`ExportTransactionsModal::checkEndDateErrorMsg is called`); + throw new Error('The function is not implemented yet'); + } + async clickIncludeTxsIDs() { + this.logger.info(`ExportTransactionsModal::tickIncludeTxsIDs is called`); + await this.click(this.includeTxIdCheckboxLocator); + } + async exportButtonIsEnabled() { + const buttonIsEnabled = await this.customWaiter( + async () => { + const buttonlIsEnabled = await this.getAttribute( + this.exportTransactionsButtonLocator, + 'disabled' + ); + return buttonlIsEnabled === null; + }, + twoSeconds, + quarterSecond + ); + + return buttonIsEnabled; + } + async exportTransactionsFile() { + this.logger.info(`ExportTransactionsModal::exportTransactionsFile is called`); + await this.click(this.exportTransactionsButtonLocator); + await this.sleep(twoSeconds + twoSeconds); + } + async getStartDateInputBorderColor() { + this.logger.info(`ExportTransactionsModal::getStartDateInputBorderColor is called`); + return await this.getCssValue(this.exportStartDateFieldsetLocator, 'border-color'); + } + async getEndDateInputBorderColor() { + this.logger.info(`ExportTransactionsModal::getEndDateInputBorderColor is called`); + return await this.getCssValue(this.exportEndDateFiedlsetInputLocator, 'border-color'); + } + async getErrorMessage() { + this.logger.info(`ExportTransactionsModal::getErrorMessage is called`); + return await this.getText(this.exportErrorMessageLocator); + } +} + +export default ExportTransactionsModal; diff --git a/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/memoWarningModal.page.js b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/memoWarningModal.page.js new file mode 100644 index 0000000000..8ee4436ef5 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/transactionsModals/memoWarningModal.page.js @@ -0,0 +1,68 @@ +import BasePage from '../../../basepage.js'; +import AddMemoDialog from './addMemoModal.page.js'; +import EditMemoDialog from './editMemoModal.page.js'; + +class MemoWarningModal extends BasePage { + // locators + // * modal window + memoWarningDialogWindowLocator = { + locator: 'memoNoExternalStorageDialog-dialogWindow-modalWindow', + method: 'id', + }; + // * modal title + memoWarningDialogTitleLocator = { + locator: 'memoNoExternalStorageDialog-dialogTitle-text', + method: 'id', + }; + // * modal close button + memoWarningDialogCloseButtonLocator = { + locator: 'memoNoExternalStorageDialog-closeModal-button', + method: 'id', + }; + // * cancelBtn + cancelButtonLocator = { + locator: 'memoNoExternalStorageDialog-cancel-button', + method: 'id', + }; + // * understandBtn + undesrtandButtonLocator = { + locator: 'memoNoExternalStorageDialog-iunderstand-button', + method: 'id', + }; + // methods + // * isDisplayed + async isDisplayed() { + this.logger.info(`MemoWarningModal::isDisplayed is called`); + try { + await this.waitForElement(this.memoWarningDialogWindowLocator); + await this.waitForElement(this.memoWarningDialogTitleLocator); + return true; + } catch (error) { + return false; + } + } + // * cancel + async pressCancel() { + this.logger.info(`MemoWarningModal::pressCancel is called`); + await this.click(this.cancelButtonLocator); + } + // * close + async closeWarningDialog() { + this.logger.info(`MemoWarningModal::closeWarningDialog is called`); + await this.click(this.memoWarningDialogCloseButtonLocator); + } + // * confirm adding + async understandAdding() { + this.logger.info(`MemoWarningModal::understandAdding is called`); + await this.click(this.undesrtandButtonLocator); + return new AddMemoDialog(this.driver, this.logger); + } + // * confirm editing + async understandEditing() { + this.logger.info(`MemoWarningModal::understandEditing is called`); + await this.click(this.undesrtandButtonLocator); + return new EditMemoDialog(this.driver, this.logger); + } +} + +export default MemoWarningModal; diff --git a/packages/e2e-tests/pages/wallet/walletTab/walletTab.page.js b/packages/e2e-tests/pages/wallet/walletTab/walletTab.page.js new file mode 100644 index 0000000000..ecde892d69 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/walletTab.page.js @@ -0,0 +1,39 @@ +import WalletCommonBase from '../../walletCommonBase.page.js'; +import { isFirefox } from '../../../utils/utils.js'; + +class WalletTab extends WalletCommonBase { + //locators + // Transaction subtab + transactionsSubmenuItemLocator = { + locator: 'wallet-summarySubTab-button', + method: 'id', + }; + // Send subtab + sendSubmenuItemLocator = { + locator: 'wallet-sendSubTab-button', + method: 'id', + }; + // Receive subtab + receiveSubmenuItemLocator = { + locator: 'wallet-receiveSubTab-button', + method: 'id', + }; + //functions + async goToTransactionsSubMenu() { + this.logger.info(`WalletTab::goToTransactionsSubMenu is called`); + await this.click(this.transactionsSubmenuItemLocator); + } + async goToSendSubMenu() { + this.logger.info(`WalletTab::goToSendSubMenu is called`); + await this.click(this.sendSubmenuItemLocator); + } + async goToReceiveSubMenu() { + this.logger.info(`WalletTab::goToReceiveSubMenu is called`); + await this.click(this.receiveSubmenuItemLocator); + if (isFirefox()) { + await this.sleep(500); + } + } +} + +export default WalletTab; diff --git a/packages/e2e-tests/pages/wallet/walletTab/walletTransactions.page.js b/packages/e2e-tests/pages/wallet/walletTab/walletTransactions.page.js new file mode 100644 index 0000000000..61b4426444 --- /dev/null +++ b/packages/e2e-tests/pages/wallet/walletTab/walletTransactions.page.js @@ -0,0 +1,460 @@ +import { + defaultWaitTimeout, + fiveSeconds, + quarterSecond, + twoSeconds, +} from '../../../helpers/timeConstants.js'; +import BasePage from '../../basepage.js'; +import WalletTab from './walletTab.page.js'; +import ExportTransactionsModal from './transactionsModals/exportTransactionModal.page.js'; +import { convertPrettyDateToNormal, convertPrettyTimeToNormal } from '../../../utils/utils.js'; +import MemoWarningModal from './transactionsModals/memoWarningModal.page.js'; + +export class TransactionsSubTab extends WalletTab { + // locators + // export button + exportTransactionsButtonLocator = { + locator: 'wallet:transactions:walletSummary-openExportWindow-button', + method: 'id', + }; + walletSummaryBoxLocator = { + locator: 'wallet:transactions-walletSummary-box', + method: 'id', + }; + walletTxListBoxLocator = { + locator: 'wallet:transaction-transactionsList-box', + method: 'id', + }; + walletTransactionsGroupBoxLocator = index => { + return { + locator: `wallet:transactions:transactionsList-transactionsGroup_${index}-box`, + method: 'id', + }; + }; + walletTransactionsGroupDateTextLocator = index => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${index}-date-text`, + method: 'id', + }; + }; + txsInGroupLocator = groupIndex => { + return { + locator: `//div[starts-with(@id, "wallet:transactions:transactionsList:transactionsGroup_${groupIndex}-transaction_")]`, + method: 'xpath', + }; + }; + txRowLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}-transaction_${txIndex}-box`, + method: 'id', + }; + }; + txTypeTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}-txType-text`, + method: 'id', + }; + }; + txTimeTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}-txTime-text`, + method: 'id', + }; + }; + txStatusTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}-txStatus-text`, + method: 'id', + }; + }; + txFeeTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}-txFee-text`, + method: 'id', + }; + }; + txAmountTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}-txAmount-text`, + method: 'id', + }; + }; + txAmountAssetsTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}-txAmountAssets-text`, + method: 'id', + }; + }; + txCertificateTextLocator = (groupIndex, txIndex, certIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo-txCertificate_${certIndex}-text`, + method: 'id', + }; + }; + txConfirmationsTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo-numberOfConfirmations-text`, + method: 'id', + }; + }; + txHashIdTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo-transactionId-text`, + method: 'id', + }; + }; + txFromAddressTextLocator = (groupIndex, txIndex, fromAddressIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo:fromAddresses:address_${fromAddressIndex}-address-text`, + method: 'id', + }; + }; + txToAddressTextLocator = (groupIndex, txIndex, toAddressIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo:toAddresses:address_${toAddressIndex}-address-text`, + method: 'id', + }; + }; + txAddMemoButtonLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo-addMemo-button`, + method: 'id', + }; + }; + txEditMemoButtonLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo-editMemo-button`, + method: 'id', + }; + }; + txMemoContentTextLocator = (groupIndex, txIndex) => { + return { + locator: `wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo-memoContent-text`, + method: 'id', + }; + }; + // 'wallet is empty' banner + walletEmptyBannerLocator = { + locator: 'walletEmptyBanner', + method: 'id', + }; + // transaction + transactionRowLocator = { + locator: '.Transaction_component', + method: 'css', + }; + transactionTxStatusLocator = { + locator: 'txStatus', + method: 'id', + }; + transactionAmountLocator = { + locator: 'transactionAmount', + method: 'id', + }; + // show more button + showMoreTxsButtonLocator = { + locator: 'wallet:transactions:transactionsList-showMoreTxs-button', + method: 'id', + }; + txsLoaderSpinnerLocator = { + locator: 'wallet:transactions:transactionsList-loadingSpinner-component', + method: 'id', + }; + // methods + async isDisplayed() { + this.logger.info(`TransactionsSubTab::isDisplayed is called`); + try { + await this.waitForElement(this.transactionsSubmenuItemLocator); + await this.waitForElement(this.walletSummaryBoxLocator); + return true; + } catch (error) { + return false; + } + } + async isWalletEmpty() { + this.logger.info(`TransactionsSubTab::isWalletEmpty is called`); + const emptyBannerIsDisplayed = await ( + await this.findElement(this.walletEmptyBannerLocator) + ).isDisplayed(); + const displayedTxs = await this.findElements(this.transactionRowLocator); + return emptyBannerIsDisplayed && displayedTxs.length == 0; + } + async __getTxsGroups() { + const locatorForAllGroups = { + locator: '//div[starts-with(@id, "wallet:transactions:transactionsList-transactionsGroup_")]', + method: 'xpath', + }; + const result = []; + const allGroups = await this.findElements(locatorForAllGroups); + for (let groupIndex = 0; groupIndex < allGroups.length; groupIndex++) { + const groupDatePrettified = await this.getText( + this.walletTransactionsGroupDateTextLocator(groupIndex) + ); + const groupDate = convertPrettyDateToNormal(groupDatePrettified); + result.push({ + groupDate, + groupIndex, + }); + } + return result; + } + async getTxHashID(groupIndex, txIndex) { + this.logger.info( + `TransactionsSubTab::getTxHashID is called. Group index: ${groupIndex}, tx index: ${txIndex}` + ); + const txHashId = await this.getText(this.txHashIdTextLocator(groupIndex, txIndex)); + this.logger.info(`TransactionsSubTab::getTxHashID::txHashId ${txHashId}`); + return txHashId; + } + /** + * The method collect all txs info inside a group + * @param {({groupDate: string, groupIndex: number})} groupObject An group object which contains such properties as groupDate and groupIndex + * @returns {Promise>} + */ + async __getAllTxsInGroup(groupObject) { + const { groupDate, groupIndex } = groupObject; + const result = []; + const allTxs = await this.findElements(this.txsInGroupLocator(groupIndex)); + for (let txIndex = 0; txIndex < allTxs.length; txIndex++) { + const txType = await this.getText(this.txTypeTextLocator(groupIndex, txIndex)); + const txTimePrettified = await this.getText(this.txTimeTextLocator(groupIndex, txIndex)); + const txTime = convertPrettyTimeToNormal(txTimePrettified); + const txDateTime = `${groupDate} ${txTime}`; + const txStatus = await this.getText(this.txStatusTextLocator(groupIndex, txIndex)); + const txFeeString = await this.getText(this.txFeeTextLocator(groupIndex, txIndex)); + let txFee = 0; + if (txFeeString !== '-') { + txFee = parseFloat(txFeeString.split(' ')[0]); + } + const txAmountString = await this.getText(this.txAmountTextLocator(groupIndex, txIndex)); + const txAmount = parseFloat(txAmountString.split(' ')[0]); + await this.click(this.txRowLocator(groupIndex, txIndex)); + const txHashId = await this.getTxHashID(groupIndex, txIndex); + await this.click(this.txRowLocator(groupIndex, txIndex)); + const txInfo = { + txType, + txTime, + txDateTime, + txStatus, + txFee, + txAmount, + txHashId, + }; + result.push(txInfo); + } + return result; + } + /** + * Getting amount of addresses in the "from" section + * @param {number} groupIndex Group index, starting from 0 (zero). Zero is the latest one + * @param {number} txIndex Tx index, starting from 0 (zero), Zero is the top one + * @returns {Promise} Amount of addresses in the "from" section + */ + async __getAmountOfFromAddresses(groupIndex, txIndex) { + const fromAddrsLocator = { + locator: `//div[starts-with(@id, "wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo:fromAddresses:address_")]`, + method: 'xpath', + }; + const result = await this.findElements(fromAddrsLocator); + return result.length; + } + /** + * Getting amount of addresses in the "to" section + * @param {number} groupIndex Group index, starting from 0 (zero). Zero is the latest one + * @param {number} txIndex Tx index, starting from 0 (zero), Zero is the top one + * @returns {Promise} Amount of addresses in the "to" section + */ + async __getAmountOfToAddresses(groupIndex, txIndex) { + const toAddrsLocator = { + locator: `//div[starts-with(@id, "wallet:transactions:transactionsList:transactionsGroup_${groupIndex}:transaction_${txIndex}:txFullInfo:toAddresses:address_")]`, + method: 'xpath', + }; + const result = await this.findElements(toAddrsLocator); + return result.length; + } + async getLastTx() { + this.logger.info(`TransactionsSubTab::getLastTx is called`); + throw new Error('The function is not implemented yet'); + } + async openExportModalWindow() { + this.logger.info(`TransactionsSubTab::openExportModalWindow is called`); + await this.click(this.exportTransactionsButtonLocator); + + return new ExportTransactionsModal(this.driver, this.logger); + } + getExportDialog() { + this.logger.info(`TransactionsSubTab::getExportDialog is called`); + return new ExportTransactionsModal(this.driver, this.logger); + } + async getTxsInfo() { + this.logger.info(`TransactionsSubTab::getTxsInfo is called`); + const allGroups = await this.__getTxsGroups(); + const allTxsInfo = []; + for (const group of allGroups) { + const txsInfoInGroup = await this.__getAllTxsInGroup(group); + allTxsInfo.push(...txsInfoInGroup); + } + return allTxsInfo; + } + async getAmountOfTxs() { + this.logger.info(`TransactionsSubTab::getAmountOfTxs is called`); + let txsAmount = 0; + const allGroups = await this.__getTxsGroups(); + for (const txGroup of allGroups) { + const allTxs = await this.findElements(this.txsInGroupLocator(txGroup.groupIndex)); + txsAmount = txsAmount + allTxs.length; + } + return txsAmount; + } + async showMoreBtnIsDisplayed() { + this.logger.info(`TransactionsSubTab::showMoreBtnIsDisplayed is called`); + await this.driver.manage().setTimeouts({ implicit: twoSeconds }); + try { + await (await this.findElement(this.showMoreTxsButtonLocator)).isDisplayed(); + this.logger.info(`TransactionsSubTab::showMoreBtnIsDisplayed is displayed`); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return true; + } catch (error) { + this.logger.warn(`TransactionsSubTab::showMoreBtnIsDisplayed is not displayed`); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return false; + } + } + async loaderIsDisplayed() { + this.logger.info(`TransactionsSubTab::loaderIsDisplayed is called`); + await this.driver.manage().setTimeouts({ implicit: twoSeconds }); + try { + await (await this.findElement(this.txsLoaderSpinnerLocator)).isDisplayed(); + this.logger.info(`TransactionsSubTab::loaderIsDisplayed is displayed`); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return true; + } catch (error) { + this.logger.warn(`TransactionsSubTab::loaderIsDisplayed is not displayed`); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + return false; + } + } + async waitLoaderIsNotDisplayed(timeout, repearPeriod) { + this.logger.info(`TransactionsSubTab::waitLoaderIsNotDisplayed is called`); + const loaderIsNotDisplayed = await this.customWaiter( + async () => { + const displayed = await this.loaderIsDisplayed(); + return !displayed; + }, + timeout, + repearPeriod + ); + this.logger.info( + `TransactionsSubTab::waitLoaderIsNotDisplayed::loaderIsNotDisplayed ${loaderIsNotDisplayed}` + ); + + return loaderIsNotDisplayed; + } + async downloadAllTxs() { + this.logger.info(`TransactionsSubTab::downloadAllTxs is called`); + while (true) { + const showMoreIsDisplayed = this.showMoreBtnIsDisplayed(); + const loaderIsDisplayed = this.loaderIsDisplayed(); + if (!(await showMoreIsDisplayed) && !(await loaderIsDisplayed)) { + break; + } + if (await showMoreIsDisplayed) { + await this.scrollIntoView(this.showMoreTxsButtonLocator); + await this.click(this.showMoreTxsButtonLocator); + await this.sleep(quarterSecond); + continue; + } + if (await loaderIsDisplayed) { + await this.scrollIntoView(this.txsLoaderSpinnerLocator); + const result = await this.waitLoaderIsNotDisplayed(fiveSeconds, quarterSecond); + if (!result) { + throw new Error(`Transactions are still loading after ${fiveSeconds / 1000} seconds`); + } + } + } + } + async __getAddrsLinks(groupIndex, txIndex, addrsAmount, getLocatorFunc) { + this.logger.info(`TransactionsSubTab::__getAddrsLinks is called`); + const links = []; + + for (let addrIndex = 0; addrIndex < addrsAmount; addrIndex++) { + const addrLocator = getLocatorFunc(groupIndex, txIndex, addrIndex); + const addrLink = await this.getLinkFromComponent(addrLocator); + links.push(addrLink); + } + + return links; + } + async clickOnTxRow(groupIndex, txIndex) { + this.logger.info( + `TransactionsSubTab::clickOnTxRow is called. Group index: ${groupIndex}, tx index: ${txIndex}` + ); + const txRowLocator = this.txRowLocator(groupIndex, txIndex); + await this.click(txRowLocator); + } + /** + * Getting all links as strings from a selected tx + * @param {number} groupIndex + * @param {number} txIndex + * @returns {Promise<{fromAddrsLinks: string[], toAddrsLinks: string[], txLink: string[]}>} + */ + async getTxURLs(groupIndex, txIndex) { + this.logger.info( + `TransactionsSubTab::getTxURLs is called. Group index: ${groupIndex}, tx index: ${txIndex}` + ); + await this.clickOnTxRow(groupIndex, txIndex); + // from addresses + const amountFromAddrs = await this.__getAmountOfFromAddresses(groupIndex, txIndex); + const fromAddrsLinks = await this.__getAddrsLinks( + groupIndex, + txIndex, + amountFromAddrs, + this.txFromAddressTextLocator + ); + // to addresses + const amountToAddrs = await this.__getAmountOfToAddresses(groupIndex, txIndex); + const toAddrsLinks = await this.__getAddrsLinks( + groupIndex, + txIndex, + amountToAddrs, + this.txToAddressTextLocator + ); + // txHash link + const txHashIdTextLocator = this.txHashIdTextLocator(groupIndex, txIndex); + const txLinkElement = await this.getWebElementAbove(txHashIdTextLocator, 2); + const txLink = [await this.getAttributeElement(txLinkElement, 'href')]; + + return { + fromAddrsLinks, + toAddrsLinks, + txLink, + }; + } + async clickAddMemo(groupIndex, txIndex) { + this.logger.info( + `TransactionsSubTab::clickAddMemo is called. Group index: ${groupIndex}, tx index: ${txIndex}` + ); + const addMemoBtnLocator = this.txAddMemoButtonLocator(groupIndex, txIndex); + await this.click(addMemoBtnLocator); + return new MemoWarningModal(this.driver, this.logger); + } + async clickEditMemo(groupIndex, txIndex) { + this.logger.info( + `TransactionsSubTab::clickEditMemo is called. Group index: ${groupIndex}, tx index: ${txIndex}` + ); + const editMemoBtnLocator = this.txEditMemoButtonLocator(groupIndex, txIndex); + await this.click(editMemoBtnLocator); + return new MemoWarningModal(this.driver, this.logger); + } + async getMemoMessage(groupIndex, txIndex) { + this.logger.info( + `TransactionsSubTab::getMemoMessage is called. Group index: ${groupIndex}, tx index: ${txIndex}` + ); + const addMemoMsgLocator = this.txMemoContentTextLocator(groupIndex, txIndex); + const result = await this.getText(addMemoMsgLocator); + this.logger.info(`TransactionsSubTab::getMemoMessage::result ${result}`); + return result; + } +} + +export default TransactionsSubTab; diff --git a/packages/e2e-tests/pages/walletCommonBase.page.js b/packages/e2e-tests/pages/walletCommonBase.page.js new file mode 100644 index 0000000000..f0270b2bba --- /dev/null +++ b/packages/e2e-tests/pages/walletCommonBase.page.js @@ -0,0 +1,267 @@ +import { halfSecond, oneMinute, oneSecond, defaultWaitTimeout } from '../helpers/timeConstants.js'; +import BasePage from './basepage.js'; + +class WalletCommonBase extends BasePage { + // locators + // + // side panel + walletTabButtonLocator = { + locator: 'settings.menu.wallet.link.label', + method: 'id', + }; + stakingTabButtonLocator = { + locator: 'sidebar.staking', + method: 'id', + }; + assetsTabButtonLocator = { + locator: 'sidebar.assets', + method: 'id', + }; + nftsTabButtonLocator = { + locator: 'sidebar.nfts', + method: 'id', + }; + votingTabButtonLocator = { + locator: 'sidebar.voting', + method: 'id', + }; + connectorTabButtonLocator = { + locator: 'connector.appNameShort', + method: 'id', + }; + settingTabButtonLocator = { + locator: 'sidebar.settings', + method: 'id', + }; + // selected wallet panel + selectedWalletButtonLocator = { + locator: '.NavWalletDetailsRevamp_contentWrapper', + method: 'css', + }; + walletNameAndPlateNumberTextLocator = { + locator: '.NavWalletDetailsRevamp_walletInfo', + method: 'css', + }; + walletBalanceTextLocator = { + locator: 'topBar:selectedWallet-availableBalance-text', + method: 'id', + }; + walletFiatBalanceTextLocator = { + locator: 'topBar:selectedWallet-availableFiatBalance-text', + method: 'id', + }; + // change wallet modal window + changeWalletDialogLocator = { + locator: 'changeWalletDialog-dialogWindow-modalWindow', + method: 'id', + }; + changeWalletDialogAddNewWalletButtonLocator = { + locator: 'changeWalletDialog-addWallet-button', + method: 'id', + }; + changeWalletDialogApplyWalletButtonLocator = { + locator: 'changeWalletDialog-applyWallet-button', + method: 'id', + }; + getWalletButtonLocator = index => { + return { + locator: `changeWalletDialog:walletsList-selectWallet_${index}-button`, + method: 'id', + }; + }; + getWalletNameLocator = index => { + return { + locator: `changeWalletDialog:walletsList:walletCard_${index}-walletName-text`, + method: 'id', + }; + }; + getWalletBalanceLocator = index => { + return { + locator: `changeWalletDialog:walletsList:walletCard_${index}-availableBalance-text`, + method: 'id', + }; + }; + getWalletTokensAmountLocator = index => { + return { + locator: `changeWalletDialog:walletsList:walletCard_${index}-walletTokensAmount-text`, + method: 'id', + }; + }; + getWalletNFTsAmountLocator = index => { + return { + locator: `changeWalletDialog:walletsList:walletCard_${index}-walletNFTsAmount-text`, + method: 'id', + }; + }; + // prepare wallet hover layout + prepareWalletBannerLocator = { + locator: '.DotFlashing_component', + method: 'css', + }; + walletIsLoadingSpinnerLocator = { + locator: '.AmountDisplay_isLoading', + method: 'css', + }; + // modal window of selecting a wallet + // "Discover a new Yoroi" modal window + dialogUpdatesTitleLocator = { + locator: 'dialog-dialogTitle-text', + method: 'id', + }; + dialogUpdatesGoToWalletButtonLocator = { + locator: 'dialog-gotothewallet-button', + method: 'id', + }; + // + // functions + async getSelectedWalletInfo() { + this.logger.info(`WalletCommonBase::getSelectedWalletInfo is called`); + + await this.waitForElement(this.walletNameAndPlateNumberTextLocator); + const rawNameAndPlateText = await this.getText(this.walletNameAndPlateNumberTextLocator); + const [walletName, walletPlate] = rawNameAndPlateText.split('\n'); + + const walletBalanceElem = await this.waitForElement(this.walletBalanceTextLocator); + const rawBalanceText = await walletBalanceElem.getText(); + const adaBalance = Number(rawBalanceText.split(' ')[0]); + + await this.waitForElement(this.walletFiatBalanceTextLocator); + const rawFiatBalanceText = await this.getText(this.walletFiatBalanceTextLocator); + const [fiatBalanceStr, fiatCurrency] = rawFiatBalanceText.split(' '); + const fiatBalance = fiatBalanceStr === '-' ? 0 : Number(fiatBalanceStr); + + const walletInfo = { + name: walletName, + plate: walletPlate, + balance: adaBalance, + fiatBalance, + fiatCurrency, + }; + this.logger.info( + `WalletCommonBase::getSelectedWalletInfo::walletInfo is ${JSON.stringify(walletInfo)}` + ); + return walletInfo; + } + async closeUpdatesModalWindow() { + this.logger.info(`WalletCommonBase::closeUpdatesModalWindow is called`); + await this.waitForElement(this.dialogUpdatesTitleLocator); + await this.waitForElement(this.dialogUpdatesGoToWalletButtonLocator); + await this.click(this.dialogUpdatesGoToWalletButtonLocator); + await this.sleep(500); + } + async waitPrepareWalletBannerIsClosed() { + this.logger.info(`WalletCommonBase::waitPrepareWalletBannerIsClosed is called`); + const state = await this.customWaiter( + async () => { + const elAmount = await this.findElements(this.prepareWalletBannerLocator); + const loadersAmount = await this.findElements(this.walletIsLoadingSpinnerLocator); + return elAmount.length === 0 && loadersAmount.length === 0; + }, + oneMinute, + halfSecond + ); + if (!state) { + this.logger.error( + `WalletCommonBase::waitPrepareWalletBannerIsClosed The prepare wallet banner is still displayed after ${ + oneMinute / 1000 + } seconds` + ); + throw new Error(`The wallet is still loading after ${oneMinute / 1000} seconds`); + } + } + async goToWalletTab() { + this.logger.info(`WalletCommonBase::goToWalletTab is called`); + await this.click(this.walletTabButtonLocator); + } + async goToStakingTab() { + this.logger.info(`WalletCommonBase::goToStakingTab is called`); + await this.click(this.stakingTabButtonLocator); + } + async goToAssetsTab() { + this.logger.info(`WalletCommonBase::goToAssetsTab is called`); + await this.click(this.assetsTabButtonLocator); + } + async goToNftsTab() { + this.logger.info(`WalletCommonBase::goToNftsTab is called`); + await this.click(this.nftsTabButtonLocator); + } + async goToVotingTab() { + this.logger.info(`WalletCommonBase::goToVotingTab is called`); + await this.click(this.votingTabButtonLocator); + } + async goToConnectorTab() { + this.logger.info(`WalletCommonBase::goToConnectorTab is called`); + await this.click(this.connectorTabButtonLocator); + } + async goToSettingsTab() { + this.logger.info(`WalletCommonBase::goToSettingsTab is called`); + await this.driver.manage().setTimeouts({ implicit: oneSecond }); + await this.click(this.settingTabButtonLocator); + await this.driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + } + async openChangeWalletModal() { + this.logger.info(`WalletCommonBase::openChangeWalletModal is called`); + const selectWalletBtnElem = await this.waitForElement(this.selectedWalletButtonLocator); + await selectWalletBtnElem.click(); + await this.waitForElement(this.changeWalletDialogLocator); + } + async addNewWallet() { + this.logger.info(`WalletCommonBase::addNewWallet is called`); + await this.openChangeWalletModal(); + await this.click(this.changeWalletDialogAddNewWalletButtonLocator); + } + async _findAndSelectWallet(walletName, totalWallets) { + this.logger.info(`WalletCommonBase::_findAndSelectWallet is called`); + for (let index = 0; index < totalWallets; index++) { + const walletNameLocator = this.getWalletNameLocator(index); + const foundWalletName = await this.getText(walletNameLocator); + if (foundWalletName === walletName) { + const walletButtonLocator = this.getWalletButtonLocator(index); + await this.click(walletButtonLocator); + this.logger.info( + `WalletCommonBase::_findAndSelectWallet with the name "${walletName}" is found and selected` + ); + return; + } + } + this.logger.warn( + `WalletCommonBase::_findAndSelectWallet with the name "${walletName}" is NOT found` + ); + } + async switchToFirstWallet() { + this.logger.info(`WalletCommonBase::switchToFirstWallet is called`); + await this.openChangeWalletModal(); + const firstWalletLocator = this.getWalletButtonLocator(0); + await this.click(firstWalletLocator); + await this.click(this.changeWalletDialogApplyWalletButtonLocator); + } + async switchToWallet(walletObject, totalWallets) { + this.logger.info(`WalletCommonBase::switchToWallet is called`); + await this.openChangeWalletModal(); + await this._findAndSelectWallet(walletObject.name, totalWallets); + await this.click(this.changeWalletDialogApplyWalletButtonLocator); + } + async getWalletInfoFromChangeWalletDialog(walletIndex) { + this.logger.info( + `WalletCommonBase::getWalletInfoFromChangeWalletDialog is called. Wallet index: ${walletIndex}` + ); + const name = await this.getText(this.getWalletNameLocator(walletIndex)); + const balanceString = (await this.getText(this.getWalletBalanceLocator(walletIndex))).split( + ' ' + )[0]; + const tokensString = await this.getText(this.getWalletTokensAmountLocator(walletIndex)); + const nftsString = await this.getText(this.getWalletNFTsAmountLocator(walletIndex)); + const balance = parseFloat(balanceString); + const tokens = parseInt(tokensString, 10); + const nfts = parseInt(nftsString, 10); + + return { + name, + balance, + tokens, + nfts, + }; + } +} + +export default WalletCommonBase; diff --git a/packages/e2e-tests/test/00_0_dontAcceptTOS.test.js b/packages/e2e-tests/test/00_0_dontAcceptTOS.test.js new file mode 100644 index 0000000000..4e0c7b1bf7 --- /dev/null +++ b/packages/e2e-tests/test/00_0_dontAcceptTOS.test.js @@ -0,0 +1,38 @@ +import { expect } from 'chai'; +import InitialStepsPage from '../pages/initialSteps.page.js'; +import BasePage from '../pages/basepage.js'; +import { getDriver } from '../utils/driverBootstrap.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; + +describe("Can't proceed without accepting the ToS", function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = getDriver(); + logger = getTestLogger(this.test.parent.title); + const basePage = new BasePage(webdriver, logger); + basePage.goToExtension(); + done(); + }); + + it('Checking the continue button', async function () { + const initialStepsPage = new InitialStepsPage(webdriver, logger); + const result = await initialStepsPage.cantProceedWithoutToS(); + expect(result, 'The continue button is enabled').to.be.true; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/00_1_changingLanguageInitSteps.test.js b/packages/e2e-tests/test/00_1_changingLanguageInitSteps.test.js new file mode 100644 index 0000000000..e48691f618 --- /dev/null +++ b/packages/e2e-tests/test/00_1_changingLanguageInitSteps.test.js @@ -0,0 +1,74 @@ +import { expect } from 'chai'; +import InitialStepsPage from '../pages/initialSteps.page.js'; +import BasePage from '../pages/basepage.js'; +import { getDriver } from '../utils/driverBootstrap.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; + +describe('Changing language on the initial screen', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = getDriver(); + logger = getTestLogger(this.test.parent.title); + const basePage = new BasePage(webdriver, logger); + basePage.goToExtension(); + done(); + }); + + const testData = [ + { + lang: 'ja-JP', + btnTransalation: '次へ', + }, + { + lang: 'zh-Hans', + btnTransalation: '继续', + }, + { + lang: 'ru-RU', + btnTransalation: 'Продолжить', + }, + { + lang: 'de-DE', + btnTransalation: 'Weiter', + }, + { + lang: 'pt-BR', + btnTransalation: 'Continuar', + }, + { + lang: 'en-US', + btnTransalation: 'Continue', + }, + ]; + + for (const testDatum of testData) { + describe(`Changing language to ${testDatum.lang}`, function () { + it('Selecting language', async function () { + const initialStepsPage = new InitialStepsPage(webdriver, logger); + await initialStepsPage.selectLanguage(testDatum.lang); + }); + + it('Checking translation on the button', async function () { + const initialStepsPage = new InitialStepsPage(webdriver, logger); + const btnText = await initialStepsPage.getContinueButtonText(); + expect(btnText).to.equal(testDatum.btnTransalation.toLocaleUpperCase()); + }); + }); + } + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/00_creatingWallet.test.js b/packages/e2e-tests/test/00_creatingWallet.test.js new file mode 100644 index 0000000000..71fcc5b3c7 --- /dev/null +++ b/packages/e2e-tests/test/00_creatingWallet.test.js @@ -0,0 +1,105 @@ +import { expect } from 'chai'; +import BasePage from '../pages/basepage.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { getPassword, getTestWalletName } from '../helpers/constants.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; +import CreateWalletStepOne from '../pages/newWalletPages/createWalletSteps/createWalletStepOne.page.js'; +import CreateWalletStepTwo from '../pages/newWalletPages/createWalletSteps/createWalletStepTwo.page.js'; +import CreateWalletStepThree from '../pages/newWalletPages/createWalletSteps/createWalletStepThree.page.js'; +import WalletDetails from '../pages/newWalletPages/walletDetails.page.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; + +describe('Creating wallet', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Selecting Create wallet', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectCreateNewWallet(); + }); + + it('Remember a seed phrase', async function () { + const createWalletStepOnePage = new CreateWalletStepOne(webdriver, logger); + await createWalletStepOnePage.continue(); + const createWalletStepTwoPage = new CreateWalletStepTwo(webdriver, logger); + await createWalletStepTwoPage.closeTipsModalWindow(); + const allWordsBlurredBefore = await createWalletStepTwoPage.recoveryPhraseIsBlurred(); + expect(allWordsBlurredBefore).to.true; + await createWalletStepTwoPage.toggleVisibilityOfRecoveryPhrase(); + const allWordsBlurredAfter = await createWalletStepTwoPage.recoveryPhraseIsBlurred(); + expect(allWordsBlurredAfter).to.false; + await createWalletStepTwoPage.saveRecoveryPhrase(); + await createWalletStepTwoPage.continue(); + }); + + it('Repeat the seed phrase', async function () { + const createWalletStepThreePage = new CreateWalletStepThree(webdriver, logger); + const recoveryPhrase = await createWalletStepThreePage.getRecoveryPhraseFromStorage(); + await createWalletStepThreePage.enterRecoveryPhrase(recoveryPhrase); + const phraseIsValid = await createWalletStepThreePage.recoveryPhraseIsValid(); + expect(phraseIsValid, 'Phrase is not valid').to.true; + await createWalletStepThreePage.continue(); + }); + + it('Enter wallet details', async function () { + const walletDetailsPage = new WalletDetails(webdriver, logger); + // close info dialog + await walletDetailsPage.closeTipsModalWindow(); + // enter wallet details + const walletName = getTestWalletName(); + const walletPassword = getPassword(); + await walletDetailsPage.enterWalletName(walletName); + await walletDetailsPage.enterWalletPassword(walletPassword); + await walletDetailsPage.repeatWalletPassword(walletPassword); + + await walletDetailsPage.saveToLocalStorage('walletName', walletName); + const walletPlate = await walletDetailsPage.getWalletPlate(); + await walletDetailsPage.saveToLocalStorage('walletPlate', walletPlate); + + const noWalletNameErrors = await walletDetailsPage.checkWalletNameHasNoError(); + expect(noWalletNameErrors, 'The wallet name has an error').to.be.true; + const noWalletPasswordError = await walletDetailsPage.checkWalletPaswordHasNoError(); + expect(noWalletPasswordError, 'The wallet password has an error').to.be.true; + const noWalletRepeatPasswordError = + await walletDetailsPage.checkWalletRepeatPasswordHasNoError(); + expect(noWalletRepeatPasswordError, 'The wallet repeat password has an error').to.be.true; + await walletDetailsPage.continue(); + }); + + it('Check new wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + await transactionsPage.closeUpdatesModalWindow(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed).to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + expect(walletInfo.balance, 'The wallet balance should be 0 (zero)').to.equal(0); + const expWalletName = await transactionsPage.getFromLocalStorage('walletName'); + const expWalletPlate = await transactionsPage.getFromLocalStorage('walletPlate'); + expect(walletInfo.name, `The wallet name should be "${expWalletName}"`).to.equal(expWalletName); + expect(walletInfo.plate, `The wallet plate should be "${expWalletPlate}"`).to.equal( + expWalletPlate + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/01_restoringWallet.test.js b/packages/e2e-tests/test/01_restoringWallet.test.js new file mode 100644 index 0000000000..1086c19f93 --- /dev/null +++ b/packages/e2e-tests/test/01_restoringWallet.test.js @@ -0,0 +1,94 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; +import RestoreWalletStepOne from '../pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js'; +import RestoreWalletStepTwo from '../pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js'; +import WalletDetails from '../pages/newWalletPages/walletDetails.page.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { getPassword } from '../helpers/constants.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import driversPoolsManager from '../utils/driversPool.js'; + +describe('Restoring 15-wallet', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Selecting Restore wallet 15-word', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectRestoreWallet(); + const restoreWalletStepOnePage = new RestoreWalletStepOne(webdriver, logger); + await restoreWalletStepOnePage.selectFifteenWordWallet(); + }); + + it('Enter the wallet seed phrase', async function () { + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + await restoreWalletStepTwoPage.enterRecoveryPhrase15Words(testWallet1.mnemonic); + await restoreWalletStepTwoPage.sleep(100); + const phraseIsVerified = await restoreWalletStepTwoPage.recoveryPhraseIsVerified(); + expect(phraseIsVerified, 'The recovery phrase is not verified').to.be.true; + await restoreWalletStepTwoPage.continue(); + }); + + it('Enter wallet details', async function () { + const walletDetailsPage = new WalletDetails(webdriver, logger); + // close info dialog + await walletDetailsPage.closeTipsModalWindow(); + // enter wallet details + const walletPassword = getPassword(); + await walletDetailsPage.enterWalletName(testWallet1.name); + await walletDetailsPage.enterWalletPassword(walletPassword); + await walletDetailsPage.repeatWalletPassword(walletPassword); + + const walletPlate = await walletDetailsPage.getWalletPlate(); + expect(walletPlate, 'Wallet plate is different from expected').to.equal(testWallet1.plate); + + await walletDetailsPage.saveToLocalStorage('walletName', testWallet1.name); + await walletDetailsPage.saveToLocalStorage('walletPlate', walletPlate); + + const noWalletNameErrors = await walletDetailsPage.checkWalletNameHasNoError(); + expect(noWalletNameErrors, 'The wallet name has an error').to.be.true; + const noWalletPasswordError = await walletDetailsPage.checkWalletPaswordHasNoError(); + expect(noWalletPasswordError, 'The wallet password has an error').to.be.true; + const noWalletRepeatPasswordError = + await walletDetailsPage.checkWalletRepeatPasswordHasNoError(); + expect(noWalletRepeatPasswordError, 'The wallet repeat password has an error').to.be.true; + await walletDetailsPage.continue(); + }); + + it('Check new wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + await transactionsPage.closeUpdatesModalWindow(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + expect(walletInfo.balance, 'The wallet balance is different').to.equal(testWallet1.balance); + const expWalletName = await transactionsPage.getFromLocalStorage('walletName'); + const expWalletPlate = await transactionsPage.getFromLocalStorage('walletPlate'); + expect(walletInfo.name, `The wallet name should be "${expWalletName}"`).to.equal(expWalletName); + expect(walletInfo.plate, `The wallet plate should be "${expWalletPlate}"`).to.equal( + expWalletPlate + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/02_restoringAlreadyExistingWallet.test.js b/packages/e2e-tests/test/02_restoringAlreadyExistingWallet.test.js new file mode 100644 index 0000000000..96ef5a4ba0 --- /dev/null +++ b/packages/e2e-tests/test/02_restoringAlreadyExistingWallet.test.js @@ -0,0 +1,100 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import WalletCommonBase from '../pages/walletCommonBase.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; +import RestoreWalletStepOne from '../pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js'; +import RestoreWalletStepTwo from '../pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { restoreWallet } from '../helpers/restoreWalletHelper.js'; +import driversPoolsManager from '../utils/driversPool.js'; + +describe('Restoring already existing wallet', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + // Restoring the same wallet again + it('Start adding new wallet', async function () { + const walletCommonBasePage = new WalletCommonBase(webdriver, logger); + await walletCommonBasePage.addNewWallet(); + }); + + it('Selecting Restore wallet 15-word', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectRestoreWallet(); + const restoreWalletStepOnePage = new RestoreWalletStepOne(webdriver, logger); + await restoreWalletStepOnePage.selectFifteenWordWallet(); + }); + + it('Enter the wallet seed phrase', async function () { + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + await restoreWalletStepTwoPage.enterRecoveryPhrase15Words(testWallet1.mnemonic); + await restoreWalletStepTwoPage.sleep(100); + const phraseIsVerified = await restoreWalletStepTwoPage.recoveryPhraseIsVerified(); + expect(phraseIsVerified, 'The recovery phrase is not verified').to.be.true; + }); + + it('Check duplicated info', async function () { + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + // the window is displayed + const duplicatedWindowIsDisplayed = + await restoreWalletStepTwoPage.duplicatedWalletDialogIsDisplayed(); + expect(duplicatedWindowIsDisplayed, 'The duplicated wallet dialog is not displayed').to.be.true; + // the wallet name is correct + const duplicatedWalletName = await restoreWalletStepTwoPage.getDuplicatedWalletName(); + expect(duplicatedWalletName, 'The duplicated wallet name is different').to.equal( + testWallet1.name + ); + // the wallet plate is correct + const duplicatedWalletPlate = await restoreWalletStepTwoPage.getDuplicatedWalletPlate(); + expect(duplicatedWalletPlate, 'The duplicated wallet plate is different').to.equal( + testWallet1.plate + ); + // the balance is correct + const duplicatedWalletBalance = await restoreWalletStepTwoPage.getDuplicatedWalletBalance(); + expect(duplicatedWalletBalance, 'The duplicated wallet balance is different').to.equal( + testWallet1.balance + ); + }); + + it('Check opening existing wallet', async function () { + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + await restoreWalletStepTwoPage.openExistingWallet(); + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + expect(walletInfo.balance, 'The wallet balance is different').to.equal(testWallet1.balance); + expect(walletInfo.name, `The wallet name should be "${testWallet1.name}"`).to.equal( + testWallet1.name + ); + expect(walletInfo.plate, `The wallet plate should be "${testWallet1.plate}"`).to.equal( + testWallet1.plate + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/04_removingWallet.test.js b/packages/e2e-tests/test/04_removingWallet.test.js new file mode 100644 index 0000000000..36a00d6a17 --- /dev/null +++ b/packages/e2e-tests/test/04_removingWallet.test.js @@ -0,0 +1,63 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import WalletSubTab from '../pages/wallet/settingsTab/walletSubTab.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; + +describe('Removing a wallet, one wallet is added', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Remove wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + const settingsWalletPage = new WalletSubTab(webdriver, logger); + await settingsWalletPage.removeWallet(); + }); + + it('Checking the app state after removing the wallet', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + const pageIsDisplayed = await addNewWalletPage.isDisplayed(); + expect(pageIsDisplayed, 'Something went during removing a wallet').to.be.true; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/05_removingWallet_2.test.js b/packages/e2e-tests/test/05_removingWallet_2.test.js new file mode 100644 index 0000000000..c3eabf4130 --- /dev/null +++ b/packages/e2e-tests/test/05_removingWallet_2.test.js @@ -0,0 +1,84 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { testWallet1, testWallet2 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { checkCorrectWalletIsDisplayed, restoreWallet } from '../helpers/restoreWalletHelper.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import WalletSubTab from '../pages/wallet/settingsTab/walletSubTab.page.js'; +import WalletCommonBase from '../pages/walletCommonBase.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; + +describe('Removing the first wallet, two wallets is added', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + // restore the second wallet + it('Restore the test wallet 2', async function () { + const walletCommonBasePage = new WalletCommonBase(webdriver, logger); + await walletCommonBasePage.addNewWallet(); + const addNewWalletPage = new AddNewWallet(webdriver, logger); + const pageIsDisplayed = await addNewWalletPage.isDisplayed(); + expect(pageIsDisplayed, 'Adding a new wallet is not displayed').to.be.true; + await restoreWallet(webdriver, logger, testWallet2, false); + }); + + // switch back to first wallet + it('Switch back to the test wallet 1', async function () { + const walletCommonBasePage = new WalletCommonBase(webdriver, logger); + await walletCommonBasePage.switchToFirstWallet(); + checkCorrectWalletIsDisplayed(webdriver, logger, testWallet1, false); + }); + + it('Remove wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + const settingsWalletPage = new WalletSubTab(webdriver, logger); + await settingsWalletPage.removeWallet(); + }); + + // check that we are returned to the second wallet + it('Checking the app state after removing the wallet', async function () { + await checkCorrectWalletIsDisplayed(webdriver, logger, testWallet2, false); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/06_renamingWallet.test.js b/packages/e2e-tests/test/06_renamingWallet.test.js new file mode 100644 index 0000000000..85a5fd5621 --- /dev/null +++ b/packages/e2e-tests/test/06_renamingWallet.test.js @@ -0,0 +1,83 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger, walletNameShortener } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import WalletSubTab from '../pages/wallet/settingsTab/walletSubTab.page.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Renaming the wallet', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + const newWalletName = 'newWalletName'; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Go to Wallet subtub in Settings', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + }); + + it('Renaming wallet', async function () { + const settingsWalletPage = new WalletSubTab(webdriver, logger); + await settingsWalletPage.changeWalletName(newWalletName, testWallet1.name); + }); + + // Check the wallet name is changed + it('Check changes', async function () { + const settingsWalletPage = new WalletSubTab(webdriver, logger); + const walletInfo = await settingsWalletPage.getSelectedWalletInfo(); + const shortedWalletName = walletNameShortener(newWalletName); + expect(walletInfo.name, `The wallet name should be "${newWalletName}"`).to.equal( + shortedWalletName + ); + await settingsWalletPage.openChangeWalletModal(); + // there is 0 (zero) because we have only one added wallet + const walletsListWalletInfo = await settingsWalletPage.getWalletInfoFromChangeWalletDialog(0); + expect( + walletsListWalletInfo.name, + `Expected wallet name "${newWalletName}" in the wallet list` + ).to.equal(newWalletName); + expect( + walletsListWalletInfo.balance, + `Expected wallet balance "${testWallet1.balance}" in the wallet list` + ).to.equal(testWallet1.balance); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/07_changingPassword.test.js b/packages/e2e-tests/test/07_changingPassword.test.js new file mode 100644 index 0000000000..212df032c7 --- /dev/null +++ b/packages/e2e-tests/test/07_changingPassword.test.js @@ -0,0 +1,162 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import WalletSubTab from '../pages/wallet/settingsTab/walletSubTab.page.js'; +import { getPassword } from '../helpers/constants.js'; +import WalletTab from '../pages/wallet/walletTab/walletTab.page.js'; +import SendSubTab from '../pages/wallet/walletTab/sendSubTab.page.js'; +import { PASSWORDS_DONT_MATCH, PASSWORD_TOO_SHORT, WRONG_PASSWORD } from '../helpers/messages.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Changing wallet password', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + }); + + const oldPassword = getPassword(); + const newPassword = getPassword(10, true); + // Cases + // Correct old password, correct new password + describe('Changing password, positive', function () { + it('Go to Settings -> Wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + }); + it('Correct old password, correct new password', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + await walletSubTabPage.changeWalletPassword(oldPassword, newPassword, newPassword); + }); + it('Go to Send page', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + await walletSubTabPage.goToWalletTab(); + const walletPage = new WalletTab(webdriver, logger); + await walletPage.goToSendSubMenu(); + }); + it('Filling send info', async function () { + const sendSubTab = new SendSubTab(webdriver, logger); + await sendSubTab.enterReceiverAndMemo(testWallet1.receiveAddress); + await sendSubTab.addAssets(1); + await sendSubTab.confirmTransaction(oldPassword); + }); + // Checking that the old password doesn't work anymore + it("Checking the old wallet doesn't work anymore", async function () { + const sendSubTab = new SendSubTab(webdriver, logger); + const realErrMsg = await sendSubTab.getPasswordErrorMsg(); + expect(realErrMsg, 'The old password still works').to.equal(WRONG_PASSWORD); + }); + }); + // Incorrect old password, correct new password + describe('Changing password, negative, incorrect old password', function () { + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + }); + it('Go to Settings -> Wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + }); + it('Changing password, incorrect old one, correct new one', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + await walletSubTabPage.changeWalletPassword(oldPassword, newPassword, newPassword); + }); + it('Checking the error message', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + const realErrMsg = await walletSubTabPage.getPasswordErrorMsg(); + expect(realErrMsg, 'The incorrect password is accepted').to.equal(WRONG_PASSWORD); + }); + }); + // Correct old password, new too short + describe('Changing password, negative, new password too short', function () { + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + }); + it('Go to Settings -> Wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + }); + it('Changing password, correct old one, new one is too short', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + await walletSubTabPage.changeWalletPassword(newPassword, 'a', newPassword); + }); + it('Checking the error message', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + const realErrMsg = await walletSubTabPage.getNewPasswordErrorMsg(); + expect(realErrMsg, 'Incorrect error is shown').to.equal(PASSWORD_TOO_SHORT); + }); + }); + // Correct old password, new and repeated passwords do not match + describe('Changing password, negative, new passwords do not match', function () { + const newPass1 = getPassword(10); + const newPass2 = getPassword(10); + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + }); + it('Go to Settings -> Wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToWalletSubMenu(); + }); + it('Changing password, correct old one, new passwords dont match', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + await walletSubTabPage.changeWalletPassword(newPassword, newPass1, newPass2); + }); + it('Checking the error message', async function () { + const walletSubTabPage = new WalletSubTab(webdriver, logger); + const realErrMsg = await walletSubTabPage.getRepeatNewPasswordErrorMsg(); + expect(realErrMsg, 'Incorrect error is shown').to.equal(PASSWORDS_DONT_MATCH); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/08_downloadingLogs.test.js b/packages/e2e-tests/test/08_downloadingLogs.test.js new file mode 100644 index 0000000000..32bfbfb285 --- /dev/null +++ b/packages/e2e-tests/test/08_downloadingLogs.test.js @@ -0,0 +1,80 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { + cleanDownloads, + getDownloadedFileContent, + getListOfDownloadedFiles, + getTestLogger, +} from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import SupportSubTab from '../pages/wallet/settingsTab/supportSubTab.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Downloading logs for support', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + cleanDownloads(); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Go to Settings -> Support', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToSupportSubMenu(); + }); + + // Click Download logs + it('Download logs for support', async function () { + const supportSubTab = new SupportSubTab(webdriver, logger); + await supportSubTab.downloadLogs(); + }); + + // Check the downloaded file + it('Checking the downloaded file', async function () { + // check file exists + const allDownloadedFiles = getListOfDownloadedFiles(); + expect(allDownloadedFiles.length).to.equal(1); + // check file name + const fileName = allDownloadedFiles[0]; + expect(fileName).to.match(/(\d+.)+\d+T(\d+.)+\d+\+\d+.\d+-yoroi\.log/gi); + // check downloaded file is not empty + const fileContent = getDownloadedFileContent(fileName); + expect(fileContent, 'Support log file is empty').to.not.be.empty; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/09_exportTransactions.test.js b/packages/e2e-tests/test/09_exportTransactions.test.js new file mode 100644 index 0000000000..2ad1b05d3e --- /dev/null +++ b/packages/e2e-tests/test/09_exportTransactions.test.js @@ -0,0 +1,105 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { + cleanDownloads, + getDownloadedFileContent, + getListOfDownloadedFiles, + getTestLogger, + getTodayStr, + parseExportedCSV, +} from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { compareExportedTxsAndDisplayedTxs } from '../helpers/customChecks.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Export transactions', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + cleanDownloads(); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + // Open the export txs modal window + it('Open the export modal window', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const exportDialog = await transactionsPage.openExportModalWindow(); + const exportDialogIsDisplayed = await exportDialog.isDisplayed(); + expect(exportDialogIsDisplayed, 'Something wrong with Export Transaction Dialog').to.be.true; + }); + // set dates + // export txs + it('Set correct dates', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const exportDialog = transactionsPage.getExportDialog(); + // mm/dd/yyyy - 11/13/2023, it is only for testWallet1 + await exportDialog.setStartDate('11132023'); + // mm/dd/yyyy - 03/08/2024, it is only for testWallet1 + await exportDialog.setEndDate('03082024'); + await exportDialog.clickIncludeTxsIDs(); + const btnEnabled = await exportDialog.exportButtonIsEnabled(); + expect(btnEnabled, 'The export button is not enabled').to.be.true; + await exportDialog.exportTransactionsFile(); + }); + // Check the exported file + it('Checking the exported file', async function () { + // check file exists + const allDownloadedFiles = getListOfDownloadedFiles(); + expect(allDownloadedFiles.length).to.equal(1); + // check file name + const fileName = allDownloadedFiles[0]; + const todayStr = getTodayStr(); + const expectedFileName = `Yoroi-Transaction-History_ADA-${testWallet1.plate}_${todayStr}.csv`; + expect(fileName, 'Exported file name is different').to.equal(expectedFileName); + // check exported file content + const fileContent = getDownloadedFileContent(fileName); + const parsedFileContent = parseExportedCSV(fileContent); + // get txs info from the transactions page + expect(parsedFileContent.length, 'Something wrong in the exported file').to.equal(2); + }); + + it('Compare displayed txs with the exported txs', async function () { + const allDownloadedFiles = getListOfDownloadedFiles(); + const fileName = allDownloadedFiles[0]; + const fileContent = getDownloadedFileContent(fileName); + const parsedFileContent = parseExportedCSV(fileContent); + + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const displayedTxs = await transactionsPage.getTxsInfo(); + compareExportedTxsAndDisplayedTxs(parsedFileContent, displayedTxs); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/10_exportTxsNegative.test.js b/packages/e2e-tests/test/10_exportTxsNegative.test.js new file mode 100644 index 0000000000..9a6207c570 --- /dev/null +++ b/packages/e2e-tests/test/10_exportTxsNegative.test.js @@ -0,0 +1,144 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { cleanDownloads, getTestLogger, getListOfDownloadedFiles } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { Colors } from '../helpers/constants.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Export transactions, negative cases', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + cleanDownloads(); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + describe('Both dates are 00/00/0000', function () { + it('Open the export modal window', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const exportDialog = await transactionsPage.openExportModalWindow(); + const exportDialogIsDisplayed = await exportDialog.isDisplayed(); + expect(exportDialogIsDisplayed, 'Something wrong with Export Transaction Dialog').to.be.true; + }); + + it('Set the date 00.00.0000 in both export fields', async function () { + const exportDialog = new TransactionsSubTab(webdriver, logger).getExportDialog(); + // mm/dd/yyyy + await exportDialog.setStartDate('00000000'); + // mm/dd/yyyy + await exportDialog.setEndDate('00000000'); + await exportDialog.clickIncludeTxsIDs(); + }); + + // Check the exported file + it('Checking the export availability', async function () { + const exportDialog = new TransactionsSubTab(webdriver, logger).getExportDialog(); + const btnEnabled = await exportDialog.exportButtonIsEnabled(); + expect(btnEnabled, 'The export button is enabled').to.be.false; + const startInputColor = await exportDialog.getStartDateInputBorderColor(); + expect(startInputColor, 'Start date input is not higlighted').to.equal(Colors.errorRed); + const endInputColor = await exportDialog.getEndDateInputBorderColor(); + expect(endInputColor, 'End date input is not higlighted').to.equal(Colors.errorRed); + }); + }); + describe('The end date is earlier then the start date', function () { + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Open the export modal window', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const exportDialog = await transactionsPage.openExportModalWindow(); + const exportDialogIsDisplayed = await exportDialog.isDisplayed(); + expect(exportDialogIsDisplayed, 'Something wrong with Export Transaction Dialog').to.be.true; + }); + + it('Set incorrect dates', async function () { + const exportDialog = new TransactionsSubTab(webdriver, logger).getExportDialog(); + // mm/dd/yyyy - 11/13/2023, it is only for testWallet1 + await exportDialog.setStartDate('03082024'); + // mm/dd/yyyy - 03/08/2024, it is only for testWallet1 + await exportDialog.setEndDate('11132023'); + await exportDialog.clickIncludeTxsIDs(); + }); + + // Check the exported file + it('Checking the export availability', async function () { + const exportDialog = new TransactionsSubTab(webdriver, logger).getExportDialog(); + const btnEnabled = await exportDialog.exportButtonIsEnabled(); + expect(btnEnabled, 'The export button is enabled').to.be.false; + const endInputColor = await exportDialog.getEndDateInputBorderColor(); + expect(endInputColor, 'End date input is not higlighted').to.equal(Colors.errorRed); + }); + }); + // 27 September 2017 (09272017) - cardano network initial release + describe('Both fields has the same date in the past, Cardano did not exist', function () { + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Open the export modal window', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const exportDialog = await transactionsPage.openExportModalWindow(); + const exportDialogIsDisplayed = await exportDialog.isDisplayed(); + expect(exportDialogIsDisplayed, 'Something wrong with Export Transaction Dialog').to.be.true; + }); + + it('Set export dates', async function () { + const exportDialog = new TransactionsSubTab(webdriver, logger).getExportDialog(); + await exportDialog.setStartDate('09252017'); + await exportDialog.setEndDate('09252017'); + await exportDialog.clickIncludeTxsIDs(); + const btnEnabled = await exportDialog.exportButtonIsEnabled(); + expect(btnEnabled, 'The export button is not enabled').to.be.true; + await exportDialog.exportTransactionsFile(); + }); + it('Checking the export', async function () { + // check file exists + const allDownloadedFiles = getListOfDownloadedFiles(); + expect(allDownloadedFiles.length, 'Exported transactions file is downloaded').to.equal(0); + const exportDialog = new TransactionsSubTab(webdriver, logger).getExportDialog(); + const errorMsg = await exportDialog.getErrorMessage(); + expect(errorMsg, 'Incorrect error message is displayed').to.equal('No transaction history.'); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/11_countTransactions.test.js b/packages/e2e-tests/test/11_countTransactions.test.js new file mode 100644 index 0000000000..0fe1dde547 --- /dev/null +++ b/packages/e2e-tests/test/11_countTransactions.test.js @@ -0,0 +1,60 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1, testWallet2 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { restoreWallet } from '../helpers/restoreWalletHelper.js'; +import driversPoolsManager from '../utils/driversPool.js'; + +const testData = [ + { + testWallet: testWallet1, + expectedTxsAmount: 2, + }, + { + testWallet: testWallet2, + expectedTxsAmount: 6, + }, +]; + +for (const testDatum of testData) { + describe('Checking amount of txs', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it(`Restore a 15-word test wallet ${testDatum.testWallet.name}`, async function () { + await restoreWallet(webdriver, logger, testDatum.testWallet); + }); + + // count displayed txs + it('Check amount of transactions', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const displayedTxsAmount = await transactionsPage.getAmountOfTxs(); + expect(displayedTxsAmount, 'Incorrect amount of txs is displayed').to.equal( + testDatum.expectedTxsAmount + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); + }); +} diff --git a/packages/e2e-tests/test/12_loadingAllTransactions.test.js b/packages/e2e-tests/test/12_loadingAllTransactions.test.js new file mode 100644 index 0000000000..08c219b2ca --- /dev/null +++ b/packages/e2e-tests/test/12_loadingAllTransactions.test.js @@ -0,0 +1,56 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { getSpendableWallet } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { restoreWallet } from '../helpers/restoreWalletHelper.js'; +import driversPoolsManager from '../utils/driversPool.js'; + +const testWallet = getSpendableWallet(); + +describe('Loading all txs', function () { + this.timeout(5 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it(`Restore a 15-word test wallet ${testWallet.name}`, async function () { + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Check amount of auto-loaded transactions', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const displayedTxsAmount = await transactionsPage.getAmountOfTxs(); + // max 20 txs are loaded automatically + expect(displayedTxsAmount, 'Incorrect amount of txs is displayed').to.equal(20); + }); + + it('Load all txs and check amount', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.downloadAllTxs(); + const displayedTxsAmount = await transactionsPage.getAmountOfTxs(); + expect(displayedTxsAmount, 'The amount of txs is different from expected').to.be.at.least( + testWallet.minTxs + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/13_generatingNewAddress.test.js b/packages/e2e-tests/test/13_generatingNewAddress.test.js new file mode 100644 index 0000000000..a3a396dc5a --- /dev/null +++ b/packages/e2e-tests/test/13_generatingNewAddress.test.js @@ -0,0 +1,56 @@ +import { expect } from 'chai'; +import BasePage from '../pages/basepage.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { getTestWalletName } from '../helpers/constants.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { createWallet } from '../helpers/restoreWalletHelper.js'; +import ReceiveSubTab from '../pages/wallet/walletTab/receiveSubTab.page.js'; + +describe('Generating a new address', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Create a 15-word wallet', async function () { + const walletName = getTestWalletName(); + await createWallet(webdriver, logger, walletName); + }); + it('Check existing addresses', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToReceiveSubMenu(); + const receivePage = new ReceiveSubTab(webdriver, logger); + const addrsAmount = await receivePage.getAmountOfAddresses(); + expect(addrsAmount, 'The amount of addresses is different from expected').to.equal(1); + }); + it('Generate a new address', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + await receivePage.generateNewAddress(); + }); + it('Check amount after generateing an address', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + const addrsAmount = await receivePage.getAmountOfAddresses(); + expect(addrsAmount, 'The amount of addresses is different from expected').to.equal(2); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/14_generatingMaxAmountAddrs.test.js b/packages/e2e-tests/test/14_generatingMaxAmountAddrs.test.js new file mode 100644 index 0000000000..c53f67b53a --- /dev/null +++ b/packages/e2e-tests/test/14_generatingMaxAmountAddrs.test.js @@ -0,0 +1,68 @@ +import { expect } from 'chai'; +import BasePage from '../pages/basepage.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { getTestWalletName } from '../helpers/constants.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { createWallet } from '../helpers/restoreWalletHelper.js'; +import ReceiveSubTab from '../pages/wallet/walletTab/receiveSubTab.page.js'; +import { MAX_ALLOWED_UNUSED_ADDRS } from '../helpers/messages.js'; + +describe('Generating a max amount of addresses', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Create a 15-word wallet', async function () { + const walletName = getTestWalletName(); + await createWallet(webdriver, logger, walletName); + }); + it('Check existing addresses', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToReceiveSubMenu(); + const receivePage = new ReceiveSubTab(webdriver, logger); + const addrsAmount = await receivePage.getAmountOfAddresses(); + expect(addrsAmount, 'The amount of addresses is different from expected').to.equal(1); + }); + it('Generate a max amount of addresses', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + await receivePage.generateNewAddress(19); + }); + it('Check amount after generating an address', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + const addrsAmount = await receivePage.getAmountOfAddresses(); + expect(addrsAmount, 'The amount of addresses is different from expected').to.equal(20); + }); + it('Generate one more address', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + await receivePage.generateNewAddress(1); + }); + it('Check the displayed error', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + const addrsAmount = await receivePage.getAmountOfAddresses(); + expect(addrsAmount, 'The amount of addresses is different from expected').to.equal(20); + const errorMsg = await receivePage.getErrorMessageText(); + expect(errorMsg, 'The error message is different').to.equal(MAX_ALLOWED_UNUSED_ADDRS); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/16_generateURILink.test.js b/packages/e2e-tests/test/16_generateURILink.test.js new file mode 100644 index 0000000000..331dd3d742 --- /dev/null +++ b/packages/e2e-tests/test/16_generateURILink.test.js @@ -0,0 +1,61 @@ +import { expect } from 'chai'; +import BasePage from '../pages/basepage.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { restoreWallet } from '../helpers/restoreWalletHelper.js'; +import { getSpendableWallet } from '../utils/testWallets.js'; +import ReceiveSubTab from '../pages/wallet/walletTab/receiveSubTab.page.js'; + +describe('Generating URL-link', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + const testWallet = getSpendableWallet(); + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Go to Receive tab', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToReceiveSubMenu(); + }); + + it('Generate payment URI', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + const amountToSend = '5'; + + const genURIInfo = await receivePage.geneneratePaymentURI(0, amountToSend); + const latestReceiverAddr = await receivePage.getCurrentReceiveAddr(); + expect(latestReceiverAddr).to.equal(genURIInfo.address); + + const [linkHeader, linkBody] = genURIInfo.genLink.split(':'); + expect(linkHeader).to.equal('web+cardano'); + + const [addressInLink, amountTextInLink] = linkBody.split('?'); + expect(addressInLink).to.equal(latestReceiverAddr); + expect(amountTextInLink).to.equal(`amount=${amountToSend}`); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/17_generateURILink_NotRealAmount.test.js b/packages/e2e-tests/test/17_generateURILink_NotRealAmount.test.js new file mode 100644 index 0000000000..db1f2138a5 --- /dev/null +++ b/packages/e2e-tests/test/17_generateURILink_NotRealAmount.test.js @@ -0,0 +1,60 @@ +import { expect } from 'chai'; +import BasePage from '../pages/basepage.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import { restoreWallet } from '../helpers/restoreWalletHelper.js'; +import { getSpendableWallet } from '../utils/testWallets.js'; +import ReceiveSubTab from '../pages/wallet/walletTab/receiveSubTab.page.js'; +import { INVALID_AMOUNT } from '../helpers/messages.js'; + +describe('Generating URL-link with really big amount', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + const testWallet = getSpendableWallet(); + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Go to Receive tab', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + await transactionsPage.goToReceiveSubMenu(); + }); + + it('Generate payment URI', async function () { + const amountToSend = '40000000000000'; + const receivePage = new ReceiveSubTab(webdriver, logger); + const generateURIModal = await receivePage.clickGenerateURI(0); + await generateURIModal.enterReceiveAmount(amountToSend); + }); + + it('Check the error is displayed', async function () { + const receivePage = new ReceiveSubTab(webdriver, logger); + const generateURIModal = receivePage.getGenerateURIModal(); + const errorMsg = await generateURIModal.getAmountErrorMessage(); + expect(errorMsg).to.equal(INVALID_AMOUNT); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/18_changingLanguageSettings.test.js b/packages/e2e-tests/test/18_changingLanguageSettings.test.js new file mode 100644 index 0000000000..5b96cdb16a --- /dev/null +++ b/packages/e2e-tests/test/18_changingLanguageSettings.test.js @@ -0,0 +1,97 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import GeneralSubTab from '../pages/wallet/settingsTab/generalSubTab.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Changing language through the Settings', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + const testData = [ + { + lang: 'ja-JP', + btnTransalation: '一般', + }, + { + lang: 'zh-Hans', + btnTransalation: '一般', + }, + { + lang: 'ru-RU', + btnTransalation: 'Общие', + }, + { + lang: 'de-DE', + btnTransalation: 'Allgemein', + }, + { + lang: 'pt-BR', + btnTransalation: 'Geral', + }, + { + lang: 'en-US', + btnTransalation: 'General', + }, + ]; + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Open General settings', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToGeneralSubMenu(); + }); + + for (const testDatum of testData) { + describe(`Changing language to ${testDatum.lang}`, function () { + it('Selecting language', async function () { + const generalSubTab = new GeneralSubTab(webdriver, logger); + await generalSubTab.selectLanguage(testDatum.lang); + }); + + it('Checking translation on the button', async function () { + const settingsPage = new SettingsTab(webdriver, logger); + const btnText = await settingsPage.getGeneralSubTabText(); + expect(btnText).to.equal(testDatum.btnTransalation); + }); + }); + } + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/19_changingFiat.test.js b/packages/e2e-tests/test/19_changingFiat.test.js new file mode 100644 index 0000000000..f32c259603 --- /dev/null +++ b/packages/e2e-tests/test/19_changingFiat.test.js @@ -0,0 +1,85 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { diffIsLess1Perc, getCurrenciesPrices, getTestLogger, roundUpCurrency } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import GeneralSubTab from '../pages/wallet/settingsTab/generalSubTab.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Changing fiat currencies', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let prices = {}; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + const testData = ['BRL', 'ETH', 'BTC', 'KRW', 'CNY', 'EUR', 'JPY', 'USD', 'ADA']; + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + prices = await getCurrenciesPrices(); + }); + + for (const testDatum of testData) { + describe(`Changing fiat currency to ${testDatum}`, function () { + it('Open General settings', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToGeneralSubMenu(); + }); + + it('Select currency', async function () { + const generalSubTab = new GeneralSubTab(webdriver, logger); + await generalSubTab.selectFiat(testDatum); + }); + + it(`Check the selected currency ${testDatum} is applied`, async function () { + const generalSubTab = new GeneralSubTab(webdriver, logger); + await generalSubTab.goToWalletTab(); + const walletInfo = await generalSubTab.getSelectedWalletInfo(); + if (testDatum === 'ADA') { + expect(walletInfo.fiatBalance, 'Fiat balance is different').to.equal(0); + } else { + expect(walletInfo.fiatCurrency, 'Fiat currency is different').to.equal(testDatum); + const expectedFiatValue = roundUpCurrency( + prices[testDatum] * walletInfo.balance, + testDatum + ); + const diffLess1Perc = diffIsLess1Perc(walletInfo.fiatBalance, expectedFiatValue); + expect(diffLess1Perc, 'Fiat difference is more than 1%').to.be.true; + } + }); + }); + } + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/20_changingCardanoExplorer.test.js b/packages/e2e-tests/test/20_changingCardanoExplorer.test.js new file mode 100644 index 0000000000..eee0bacbc3 --- /dev/null +++ b/packages/e2e-tests/test/20_changingCardanoExplorer.test.js @@ -0,0 +1,100 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import BlockchainSubTab from '../pages/wallet/settingsTab/blockchainSubTab.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Changing explorer', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + const testData = [ + { + explorerName: 'CardanoScan', + reExplorerURL: /^https:\/\/cardanoscan\.io/, + }, + { + explorerName: 'AdaStat', + reExplorerURL: /^https:\/\/adastat\.net/, + }, + { + explorerName: 'CardanoExplorer', + reExplorerURL: /^https:\/\/explorer\.cardano\.org/, + }, + { + explorerName: 'Cexplorer', + reExplorerURL: /^https:\/\/cexplorer\.io/, + }, + { + explorerName: 'Blockchair', + reExplorerURL: /^https:\/\/blockchair\.com/, + }, + ]; + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + for (const testDatum of testData) { + describe(`Changing Cardano explorer to ${testDatum.explorerName}`, function () { + it('Open Blockchain settings', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToBlockchainSubMenu(); + }); + + it('Select explorer', async function () { + const blockchainSubTab = new BlockchainSubTab(webdriver, logger); + await blockchainSubTab.selectExplorer(testDatum.explorerName); + }); + + it('Check the selected explorer is applied', async function () { + const blockchainSubTab = new BlockchainSubTab(webdriver, logger); + await blockchainSubTab.goToWalletTab(); + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const allTxLinks = await transactionsPage.getTxURLs(0, 0); + for (const key in allTxLinks) { + const links = allTxLinks[key]; + for (const link of links) { + expect(link, 'Wrong link').to.match(testDatum.reExplorerURL); + } + } + }); + }); + } + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/21_checkingTOS.test.js b/packages/e2e-tests/test/21_checkingTOS.test.js new file mode 100644 index 0000000000..a586dbfe1d --- /dev/null +++ b/packages/e2e-tests/test/21_checkingTOS.test.js @@ -0,0 +1,69 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import SettingsTab from '../pages/wallet/settingsTab/settingsTab.page.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import TermOfServiceAgreementSubTab from '../pages/wallet/settingsTab/tosSubTab.page.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Checking Term Of Service Agreement', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Open Term Of User Agreement', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToSettingsTab(); + const settingsPage = new SettingsTab(webdriver, logger); + await settingsPage.goToTOSSubMenu(); + }); + + it('Checking the Term Of User Agreement page', async function () { + const tosPage = new TermOfServiceAgreementSubTab(webdriver, logger); + const titleIsDisplayed = await tosPage.titleIsDisplayed(); + expect(titleIsDisplayed, 'The title is not displayed').to.be.true; + const h2Amount = await tosPage.getAmountOfH2(); + // we expect there are 12

elements which is equal to parts of agreement + expect(h2Amount).to.equal(12); + const paragraphsAmount = await tosPage.getAmountOfParagraphs(); + // we expect there are 41

elements + expect(paragraphsAmount).to.equal(41); + const allParagraphsNotEmpty = await tosPage.allParagraphsNotEmpty(); + expect(allParagraphsNotEmpty).to.be.true; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/22_addingMemo.test.js b/packages/e2e-tests/test/22_addingMemo.test.js new file mode 100644 index 0000000000..78923393ad --- /dev/null +++ b/packages/e2e-tests/test/22_addingMemo.test.js @@ -0,0 +1,94 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { getTestString } from '../helpers/constants.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Adding a memo to a completed Tx', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + const testMemoMessage = getTestString('', 40, true); + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + // open the latests tx + it('Expand tx', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.clickOnTxRow(0, 0); + }); + // click the memo button + // enter the memo + // confirm saving the memo + it('Add memo', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const memoWarningModal = await transactionsPage.clickAddMemo(0, 0); + const warningIsDisplayed = await memoWarningModal.isDisplayed(); + expect(warningIsDisplayed).to.be.true; + const addMemoModal = await memoWarningModal.understandAdding(); + const addMemoModalIsDisplayed = await addMemoModal.isDisplayed(); + expect(addMemoModalIsDisplayed).to.be.true; + await addMemoModal.enterMemo(testMemoMessage); + await addMemoModal.pressAdd(); + }); + // check the memo displayed message + it('Check added memo', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const memoMessage = await transactionsPage.getMemoMessage(0, 0); + const txHashId = await transactionsPage.getTxHashID(0, 0); + expect(memoMessage).to.equal(testMemoMessage); + const memosInDB = await transactionsPage.getInfoFromIndexedDB('TxMemo'); + expect(memosInDB.length).to.equal(1); + const txMemoinDB = memosInDB[0].value; + expect(txMemoinDB.Content).to.equal(testMemoMessage); + expect(txMemoinDB.TransactionHash).to.equal(txHashId); + expect(txMemoinDB.WalletId).to.equal(testWallet1.plate); + }); + // reload the page + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + }); + // check the memo displayed message again + it('Check added memo again', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.clickOnTxRow(0, 0); + const memoMessage = await transactionsPage.getMemoMessage(0, 0); + expect(memoMessage).to.equal(testMemoMessage); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/23_editMemo.test.js b/packages/e2e-tests/test/23_editMemo.test.js new file mode 100644 index 0000000000..18e3301de3 --- /dev/null +++ b/packages/e2e-tests/test/23_editMemo.test.js @@ -0,0 +1,98 @@ +import BasePage from '../pages/basepage.js'; +import { customAfterEach } from '../utils/customHooks.js'; +import TransactionsSubTab from '../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1 } from '../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../utils/utils.js'; +import { oneMinute } from '../helpers/timeConstants.js'; +import driversPoolsManager from '../utils/driversPool.js'; +import { getTestString } from '../helpers/constants.js'; +import AddNewWallet from '../pages/addNewWallet.page.js'; + +describe('Editing a memo', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + const oldMemo = 'j1hKEo4Er4FDLFAtGBo07jIcXBSOqx9D16U0sUIl'; + const newMemoMessage = getTestString('', 40, true); + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Prepare DB and storages', async function () { + const addWalletPage = new AddNewWallet(webdriver, logger); + const state = await addWalletPage.isDisplayed(); + expect(state).to.be.true; + await addWalletPage.prepareDBAndStorage('testWallet1MemoAdded'); + await addWalletPage.refreshPage(); + }); + + it('Check transactions page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + }); + + it('Expand tx', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.clickOnTxRow(0, 0); + }); + + it('Edit memo', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const memoMessage = await transactionsPage.getMemoMessage(0, 0); + expect(memoMessage).to.equal(oldMemo); + + // click edit memo + const memoWarningModal = await transactionsPage.clickEditMemo(0, 0); + const warningIsDisplayed = await memoWarningModal.isDisplayed(); + expect(warningIsDisplayed).to.be.true; + + const editMemoModal = await memoWarningModal.understandEditing(); + const editMemoModalIsDisplayed = await editMemoModal.isDisplayed(); + expect(editMemoModalIsDisplayed).to.be.true; + + await editMemoModal.enterMemo(newMemoMessage); + await editMemoModal.pressSave(); + }); + // check the memo displayed message + it('Check edited memo', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const memoMessage = await transactionsPage.getMemoMessage(0, 0); + const txHashId = await transactionsPage.getTxHashID(0, 0); + expect(memoMessage).to.equal(newMemoMessage); + const memosInDB = await transactionsPage.getInfoFromIndexedDB('TxMemo'); + expect(memosInDB.length).to.equal(1); + const txMemoinDB = memosInDB[0].value; + expect(txMemoinDB.Content).to.equal(newMemoMessage); + expect(txMemoinDB.TransactionHash).to.equal(txHashId); + expect(txMemoinDB.WalletId).to.equal(testWallet1.plate); + }); + // reload the page + it('Refresh page', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.refreshPage(); + }); + // check the memo displayed message again + it('Check edited memo again', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.clickOnTxRow(0, 0); + const memoMessage = await transactionsPage.getMemoMessage(0, 0); + expect(memoMessage).to.equal(newMemoMessage); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/blacklist/03_restoringWalletClearInputs.test.js b/packages/e2e-tests/test/blacklist/03_restoringWalletClearInputs.test.js new file mode 100644 index 0000000000..db6ec57286 --- /dev/null +++ b/packages/e2e-tests/test/blacklist/03_restoringWalletClearInputs.test.js @@ -0,0 +1,115 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import AddNewWallet from '../../pages/addNewWallet.page.js'; +import RestoreWalletStepOne from '../../pages/newWalletPages/restoreWalletSteps/restoreWalletStepOne.page.js'; +import RestoreWalletStepTwo from '../../pages/newWalletPages/restoreWalletSteps/restoreWalletStepTwo.page.js'; +import WalletDetails from '../../pages/newWalletPages/walletDetails.page.js'; +import TransactionsSubTab from '../../pages/wallet/walletTab/walletTransactions.page.js'; +import { testWallet1, testWallet2 } from '../../utils/testWallets.js'; +import { getPassword } from '../../helpers/constants.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +// The test case is based on the issue https://emurgo.atlassian.net/browse/YOEXT-811 +describe('Restoring 15-wallet, clear input and restore other 15-wallet', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Selecting Restore wallet 15-word', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectRestoreWallet(); + const restoreWalletStepOnePage = new RestoreWalletStepOne(webdriver, logger); + await restoreWalletStepOnePage.selectFifteenWordWallet(); + }); + + it('Enter the wallet seed phrase of first wallet', async function () { + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + await restoreWalletStepTwoPage.enterRecoveryPhrase15Words(testWallet1.mnemonic); + await restoreWalletStepTwoPage.sleep(100); + const phraseIsVerified = await restoreWalletStepTwoPage.recoveryPhraseIsVerified(); + expect(phraseIsVerified, 'The recovery phrase is not verified').to.be.true; + await restoreWalletStepTwoPage.continue(); + }); + + it('Check the wallet plate of the first wallet', async function () { + const walletDetailsPage = new WalletDetails(webdriver, logger); + await walletDetailsPage.closeTipsModalWindow(); + const walletPlate = await walletDetailsPage.getWalletPlate(); + expect(walletPlate, 'Wallet plate is different from expected').to.equal(testWallet1.plate); + }); + + it('Clear all inputs and restore the second wallet', async function () { + const walletDetailsPage = new WalletDetails(webdriver, logger); + await walletDetailsPage.backOnPreviousStep(); + + const restoreWalletStepTwoPage = new RestoreWalletStepTwo(webdriver, logger); + await restoreWalletStepTwoPage.clearAllInputsManually(); + + const inputsAreEmpty = await restoreWalletStepTwoPage.allInputsAreEmpty(); + expect(inputsAreEmpty, 'Seed phrase inputs are not empty').to.be.true; + + await restoreWalletStepTwoPage.enterRecoveryPhrase15Words(testWallet2.mnemonic); + const phraseIsVerified = await restoreWalletStepTwoPage.recoveryPhraseIsVerified(); + expect(phraseIsVerified, 'The recovery phrase is not verified').to.be.true; + await restoreWalletStepTwoPage.continue(); + }); + + it('Enter wallet details', async function () { + const walletDetailsPage = new WalletDetails(webdriver, logger); + const walletPassword = getPassword(); + await walletDetailsPage.enterWalletName(testWallet2.name); + await walletDetailsPage.enterWalletPassword(walletPassword); + await walletDetailsPage.repeatWalletPassword(walletPassword); + + const walletPlate = await walletDetailsPage.getWalletPlate(); + expect(walletPlate, 'Wallet plate is different from expected').to.equal(testWallet2.plate); + + await walletDetailsPage.saveToLocalStorage('walletName', testWallet2.name); + await walletDetailsPage.saveToLocalStorage('walletPlate', walletPlate); + + const noWalletNameErrors = await walletDetailsPage.checkWalletNameHasNoError(); + expect(noWalletNameErrors, 'The wallet name has an error').to.be.true; + const noWalletPasswordError = await walletDetailsPage.checkWalletPaswordHasNoError(); + expect(noWalletPasswordError, 'The wallet password has an error').to.be.true; + const noWalletRepeatPasswordError = + await walletDetailsPage.checkWalletRepeatPasswordHasNoError(); + expect(noWalletRepeatPasswordError, 'The wallet repeat password has an error').to.be.true; + await walletDetailsPage.continue(); + }); + + it('Check new wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + await transactionsPage.closeUpdatesModalWindow(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + expect(walletInfo.balance, 'The wallet balance is different').to.equal(testWallet2.balance); + const expWalletName = await transactionsPage.getFromLocalStorage('walletName'); + const expWalletPlate = await transactionsPage.getFromLocalStorage('walletPlate'); + expect(walletInfo.name, `The wallet name should be "${expWalletName}"`).to.equal(expWalletName); + expect(walletInfo.plate, `The wallet plate should be "${expWalletPlate}"`).to.equal( + expWalletPlate + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/blacklist/15_calculatingBalanceOnReceiveAddrs.test.js b/packages/e2e-tests/test/blacklist/15_calculatingBalanceOnReceiveAddrs.test.js new file mode 100644 index 0000000000..8ec24c8f52 --- /dev/null +++ b/packages/e2e-tests/test/blacklist/15_calculatingBalanceOnReceiveAddrs.test.js @@ -0,0 +1,64 @@ +import { expect } from 'chai'; +import BasePage from '../../pages/basepage.js'; +import driversPoolsManager from '../../utils/driversPool.js'; +import TransactionsSubTab from '../../pages/wallet/walletTab/walletTransactions.page.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { getSpendableWallet } from '../../utils/testWallets.js'; +import ReceiveSubTab from '../../pages/wallet/walletTab/receiveSubTab.page.js'; + +// The test case is based on the issue https://emurgo.atlassian.net/browse/YOEXT-965 +describe('Comparing balances on the top plate and on addresses', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let topPlateBalance = 0; + let balanceOnAddrs = 0; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + const testWallet = getSpendableWallet(); + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Get wallet balance', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + topPlateBalance = walletInfo.balance; + }); + + it('Get wallet balance from receive addresses', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.goToReceiveSubMenu(); + const receivePage = new ReceiveSubTab(webdriver, logger); + await receivePage.selectBaseExtHasBalanceAddrs(); + const balanceExtAddr = await receivePage.getBalanceOfDisplayedAddrs(); + await receivePage.selectBaseInterHasBalanceAddrs(); + const balanceInterAddr = await receivePage.getBalanceOfDisplayedAddrs(); + balanceOnAddrs = balanceExtAddr + balanceInterAddr; + }); + + it('Compare balances', async function () { + expect(topPlateBalance).to.equal(balanceOnAddrs); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppConnection.test.js b/packages/e2e-tests/test/dapp/dAppConnection.test.js new file mode 100644 index 0000000000..40d7e34cc3 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppConnection.test.js @@ -0,0 +1,83 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, extensionTabName, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import ConnectorTab from '../../pages/wallet/connectorTab/connectorTab.page.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, connection in extension', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + it('Connection is displayed in the extension', async function () { + // switch to the extension + await windowManager.switchTo(extensionTabName); + // go to the extension connector tab + const connectorTabPage = new ConnectorTab(webdriver, logger); + await connectorTabPage.goToConnectorTab(); + // check displayed info + const connectedWalletInfo = await connectorTabPage.getConnectedWalletInfo(testWallet1.name); + expect(connectedWalletInfo.walletBalance).to.equal(testWallet1.balance); + expect(connectedWalletInfo.dappUrl).to.equal('localhost'); + }); + + it('Disconnect the wallet', async function () { + const connectorTabPage = new ConnectorTab(webdriver, logger); + await connectorTabPage.disconnectWallet(testWallet1.name, 'localhost'); + const connectedWalletsAmount = (await connectorTabPage.getAllConnectedWallets()).length; + expect(connectedWalletsAmount).to.equal(0); + }); + + it('Check connection state in the dApp', async function () { + await windowManager.switchTo(mockDAppName); + const connectionSate = await mockedDApp.getConnectionState(); + expect(connectionSate).to.be.false; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppConnectionCancel.test.js b/packages/e2e-tests/test/dapp/dAppConnectionCancel.test.js new file mode 100644 index 0000000000..34f7fe342b --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppConnectionCancel.test.js @@ -0,0 +1,82 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName, popupConnectorName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import DAppConnectWallet from '../../pages/dapp/dAppConnectWallet.page.js'; +import { ApiErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, cancel connection', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Request connection the wallet without auth to the dapp', async function () { + await mockedDApp.requestNonAuthAccess(); + const dappConnectPage = new DAppConnectWallet(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappConnectPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + const allWallets = await dappConnectPage.getWallets(); + expect(allWallets.length).to.equal(1); + const walletInfo = await dappConnectPage.getWalletInfo(testWallet1.plate); + expect(walletInfo.walletBalance, 'The wallet balance is different').to.equal( + testWallet1.balance + ); + expect(walletInfo.walletName, `The wallet name is different`).to.equal(testWallet1.name); + expect(walletInfo.walletPlate, `The wallet plate is different`).to.equal(testWallet1.plate); + }); + + it('Close the pop-up window', async function () { + // close the pop-up window + await windowManager.closeTabWindow(popupConnectorName, mockDAppName); + // check the response + await windowManager.switchTo(mockDAppName); + const requestAccessResult = await mockedDApp.checkAccessRequest(); + expect(requestAccessResult.success).to.be.false; + expect(requestAccessResult.errMsg.code).to.equal(ApiErrorCode.Refused); + const connectionSate = await mockedDApp.getConnectionState(); + expect(connectionSate).to.be.false; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppConnectionNoWallets.test.js b/packages/e2e-tests/test/dapp/dAppConnectionNoWallets.test.js new file mode 100644 index 0000000000..ae19f0b9e4 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppConnectionNoWallets.test.js @@ -0,0 +1,96 @@ +import BasePage from '../../pages/basepage.js'; +import { getDriver } from '../../utils/driverBootstrap.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import InitialStepsPage from '../../pages/initialSteps.page.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { + WindowManager, + extensionTabName, + mockDAppName, + popupConnectorName, +} from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import ConnectorTab from '../../pages/wallet/connectorTab/connectorTab.page.js'; +import DAppConnectWallet from '../../pages/dapp/dAppConnectWallet.page.js'; + +describe('dApp, connection, no wallets', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = getDriver(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + const basePage = new BasePage(webdriver, logger); + // first open the dapp page + basePage.goToUrl(mockDAppUrl); + done(); + }); + + it('Request connection', async function () { + await mockedDApp.requestNonAuthAccess(); + const dappConnectPage = new DAppConnectWallet(webdriver, logger); + const popUpAppeared = await dappConnectPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + }); + + it('No wallet are displayed', async function () { + const dappConnectPage = new DAppConnectWallet(webdriver, logger); + const warningIsDisplayed = await dappConnectPage.noWalletsWarningIsDisplayed(); + expect(warningIsDisplayed).to.be.true; + await dappConnectPage.clickCreateWallet(); + const popUpIsClosed = await windowManager.isClosed(popupConnectorName); + expect(popUpIsClosed).to.be.true; + }); + + it('Pass initials steps and restore a wallet', async function () { + await windowManager.findNewWindowAndSwitchTo(extensionTabName); + const initialStepsPage = new InitialStepsPage(webdriver, logger); + await initialStepsPage.skipInitialSteps(); + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Try to connect the dapp the wallet again', async function () { + await windowManager.switchTo(mockDAppName); + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + it('Connection is displayed in the extension', async function () { + // switch to the extension + await windowManager.switchTo(extensionTabName); + // go to the extension connector tab + const connectorTabPage = new ConnectorTab(webdriver, logger); + await connectorTabPage.goToConnectorTab(); + // check displayed info + const connectedWalletInfo = await connectorTabPage.getConnectedWalletInfo(testWallet1.name); + expect(connectedWalletInfo.walletBalance).to.equal(testWallet1.balance); + expect(connectedWalletInfo.dappUrl).to.equal('localhost'); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppGeneral.test.js b/packages/e2e-tests/test/dapp/dAppGeneral.test.js new file mode 100644 index 0000000000..697cb4668d --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppGeneral.test.js @@ -0,0 +1,208 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces } from '../../helpers/constants.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, general functions, without pop-up', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + describe('[nested-dapp] Get balance', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Checking balance', async function () { + const balanceResponse = await mockedDApp.getBalance(); + // it is necessary to do, because the wallet balance is returned in lovelaces + // and as the String type + expect(balanceResponse.success, 'The request getBalance failed').to.be.true; + const expectedBalance = String(testWallet1.balance * adaInLovelaces); + expect(balanceResponse.retValue).to.equal(expectedBalance, `Wrong balance`); + }); + }); + + describe('[nested-dapp] Get change address', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getChangeAddress', async function () { + const changeAddressResponse = await mockedDApp.getChangeAddress(); + expect(changeAddressResponse.success, 'The request getChangeAddress failed').to.be.true; + expect(changeAddressResponse.retValue).to.be.an('string').that.is.not.empty; + }); + }); + + describe('[nested-dapp] Get extensions', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Requet getExtensions', async function () { + const extensionsResponse = await mockedDApp.getExtensions(); + expect(extensionsResponse.success, 'The request getExtensions failed').to.be.true; + expect(extensionsResponse.retValue).to.be.an('array').that.is.not.empty; + expect(extensionsResponse.retValue.length).to.equal(1); + expect(extensionsResponse.retValue[0].cip).to.equal(95); + }); + }); + + describe('[nested-dapp] Get network ID', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getNetworkId', async function () { + const networkIdResponse = await mockedDApp.getNetworkId(); + expect(networkIdResponse.success, 'The request getNetworkId failed').to.be.true; + expect(networkIdResponse.retValue).to.be.an('number'); + expect(networkIdResponse.retValue).to.be.at.most(1); + }); + }); + + describe('[nested-dapp] Get reward address', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getRewardAddresses', async function () { + const rewardAddressesResponse = await mockedDApp.getRewardAddresses(); + expect(rewardAddressesResponse.success, 'The request getRewardAddresses failed').to.be.true; + expect(rewardAddressesResponse.retValue).to.be.an('array').that.is.not.empty; + }); + }); + + describe('[nested-dapp] Get unused addresses', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUnusedAddresses', async function () { + await mockedDApp.requestUnusedAddresses(); + const unusedAddressesResponse = await mockedDApp.getAddresses(); + expect(unusedAddressesResponse.success, 'The request getUnusedAddresses failed').to.be.true; + expect(unusedAddressesResponse.retValue).to.be.an('array').that.is.not.empty; + }); + }); + + describe('[nested-dapp] Get used addresses', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUsedAddresses', async function () { + await mockedDApp.requestUsedAddresses(); + const usedAddressesResponse = await mockedDApp.getAddresses(); + expect(usedAddressesResponse.success, 'The request getUsedAddresses failed').to.be.true; + expect(usedAddressesResponse.retValue).to.be.an('array').that.is.not.empty; + }); + }); + + describe('[nested-dapp] Get used addresses, big page parameter', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUsedAddresses with too big page parameter', async function () { + const page = 10; + const limit = 5; + await mockedDApp.requestUsedAddresses(page, limit); + const usedAddressesResponse = await mockedDApp.getAddresses(); + expect(usedAddressesResponse.success, 'The request getUsedAddresses passed').to.be.false; + const responseErrMsg = usedAddressesResponse.errMsg; + expect(responseErrMsg.maxSize).to.be.at.least(1); + }); + }); + + describe('[nested-dapp] CIP-95, get public DRep key', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getPubDRepKey', async function () { + const extensionsResponse = await mockedDApp.getPubDRepKey(); + expect(extensionsResponse.success, 'The request getExtensions failed').to.be.true; + expect(extensionsResponse.retValue).to.be.an('string').that.is.not.empty; + }); + }); + + describe('[nested-dapp] CIP-95, get registered public stake key', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getRegisteredPubStakeKeys', async function () { + const extensionsResponse = await mockedDApp.getRegisteredPubStakeKeys(); + expect(extensionsResponse.success, 'The request getRegisteredPubStakeKeys failed').to.be + .true; + // update it when the SanchoNet is released + expect(extensionsResponse.retValue).to.be.an('array'); + }); + }); + + describe('[nested-dapp] CIP-95, get unregistered public stake key', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUnregisteredPubStakeKeys', async function () { + const extensionsResponse = await mockedDApp.getUnregisteredPubStakeKeys(); + expect(extensionsResponse.success, 'The request getUnregisteredPubStakeKeys failed').to.be + .true; + // update it when the SanchoNet is released + expect(extensionsResponse.retValue).to.be.an('array').that.is.not.empty; + expect(extensionsResponse.retValue.length).to.equal(1); + expect(extensionsResponse.retValue[0]).to.be.an('string').that.is.not.empty; + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppGetCollateralErrorMaxLimit.test.js b/packages/e2e-tests/test/dapp/dAppGetCollateralErrorMaxLimit.test.js new file mode 100644 index 0000000000..38067fdc5a --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppGetCollateralErrorMaxLimit.test.js @@ -0,0 +1,67 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces } from '../../helpers/constants.js'; +import { ApiErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, getCollateral, error, max limit, not auth,', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + it('Getting collateral for 6 ADA', async function () { + const collateralResponse = await mockedDApp.getCollateral(String(6 * adaInLovelaces)); + expect(collateralResponse.success, 'The request getCollateral was successful').to.be.false; + expect(collateralResponse.errMsg.code, 'A wrong error code is received').to.equal( + ApiErrorCode.InternalError + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppGetCollateralErrorNotEnoughUtxo.test.js b/packages/e2e-tests/test/dapp/dAppGetCollateralErrorNotEnoughUtxo.test.js new file mode 100644 index 0000000000..aace31ea87 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppGetCollateralErrorNotEnoughUtxo.test.js @@ -0,0 +1,77 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { createWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces, getTestWalletName } from '../../helpers/constants.js'; +import { ApiErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, getCollateral, error, empty wallet, not auth', function () { + const testWalletName = getTestWalletName(); + let newTestWallet = { + name: '', + plate: '', + balance: 0, + }; + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + const basePage = new BasePage(webdriver, logger); + basePage.goToExtension(); + done(); + }); + + it('Create an empty wallet', async function () { + newTestWallet = await createWallet(webdriver, logger, testWalletName); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, newTestWallet); + }); + + it('Getting collateral for 1 ADA', async function () { + const collateralResponse = await mockedDApp.getCollateral(String(1 * adaInLovelaces)); + expect(collateralResponse.success, 'The request getCollateral was successful').to.be.false; + expect(collateralResponse.errMsg.code, 'A wrong error code is received').to.equal( + ApiErrorCode.InternalError + ); + expect(collateralResponse.errMsg.info, 'Wrong error message is received').to.equal( + 'not enough UTXOs' + ); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppGetCollateralNoPopUp.test.js b/packages/e2e-tests/test/dapp/dAppGetCollateralNoPopUp.test.js new file mode 100644 index 0000000000..ba1bb56901 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppGetCollateralNoPopUp.test.js @@ -0,0 +1,126 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { getSpendableWallet } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces } from '../../helpers/constants.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, getCollateral, no popup, positive', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + const testWallet = getSpendableWallet(); + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet, false); + }); + + describe('[nested-dapp] Collateral, 1 ADA', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Getting collateral for 1 ADA', async function () { + const collateralResponse = await mockedDApp.getCollateral(String(1 * adaInLovelaces)); + expect(collateralResponse.success, 'The request getCollateral failed').to.be.true; + expect(collateralResponse.retValue).to.be.an('array').that.is.not.empty; + expect(collateralResponse.retValue.length).to.be.equal(1); + const receivedAmount = parseFloat(collateralResponse.retValue[0].amount) / adaInLovelaces; + expect(receivedAmount, 'returned amount is less than 1 ADA').to.be.at.least(1); + }); + }); + + describe('[nested-dapp] Collateral, 3 ADA', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Getting collateral for 3 ADA', async function () { + const collateralResponse = await mockedDApp.getCollateral(String(3 * adaInLovelaces)); + expect(collateralResponse.success, 'The request getCollateral failed').to.be.true; + expect(collateralResponse.retValue).to.be.an('array').that.is.not.empty; + expect(collateralResponse.retValue.length).to.be.equal(3); + const sumUtxosAmount = collateralResponse.retValue.reduce( + (accumulator, utxo) => accumulator + parseFloat(utxo.amount) / adaInLovelaces, + 0 + ); + expect(sumUtxosAmount, 'returned amount is less than 1 ADA').to.be.at.least(3); + }); + }); + + describe('[nested-dapp] Collateral, 5 ADA', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Getting collateral for 5 ADA', async function () { + const collateralResponse = await mockedDApp.getCollateral(String(5 * adaInLovelaces)); + expect(collateralResponse.success, 'The request getCollateral failed').to.be.true; + expect(collateralResponse.retValue).to.be.an('array').that.is.not.empty; + const sumUtxosAmount = collateralResponse.retValue.reduce( + (accumulator, utxo) => accumulator + parseFloat(utxo.amount) / adaInLovelaces, + 0 + ); + expect(sumUtxosAmount, 'returned amount is less than 5 ADA').to.be.at.least(5); + }); + }); + + describe('[nested-dapp] Collateral, amount is undefined', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Getting collateral for undefined amount', async function () { + const collateralResponse = await mockedDApp.getCollateral(); + expect(collateralResponse.success, 'The request getCollateral failed').to.be.true; + expect(collateralResponse.retValue).to.be.an('array').that.is.not.empty; + const sumUtxosAmount = collateralResponse.retValue.reduce( + (accumulator, utxo) => accumulator + parseFloat(utxo.amount) / adaInLovelaces, + 0 + ); + expect(sumUtxosAmount, 'returned amount is less than 5 ADA').to.be.at.least(5); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppGetUtxos.test.js b/packages/e2e-tests/test/dapp/dAppGetUtxos.test.js new file mode 100644 index 0000000000..88e0bbfce4 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppGetUtxos.test.js @@ -0,0 +1,104 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces } from '../../helpers/constants.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, getUtxos, nested tests', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + describe('[nested-dapp] getUtxos, 1 ADA', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUtxos for 1 ADA', async function () { + const getUtxosResponse = await mockedDApp.getUTXOs(String(1 * adaInLovelaces)); + expect(getUtxosResponse.success, 'The request getUtxos failed').to.be.true; + expect(getUtxosResponse.retValue).to.be.an('array').that.is.not.empty; + for (const utxo of getUtxosResponse.retValue) { + const adaAmount = parseFloat(utxo.amount) / adaInLovelaces; + expect(adaAmount).to.be.at.least(1); + } + }); + }); + + describe('[nested-dapp] getUtxos, more than have', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUtxos for 6 ADA', async function () { + const getUtxosResponse = await mockedDApp.getUTXOs(String(6 * adaInLovelaces), false); + expect(getUtxosResponse.success, 'The request getUtxos failed').to.be.true; + expect(getUtxosResponse.retValue).to.equal(null); + }); + }); + + describe('[nested-dapp] getUtxos, no amount in the request', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request getUtxos with undefined amount', async function () { + const getUtxosResponse = await mockedDApp.getUTXOs(); + expect(getUtxosResponse.success, 'The request getUtxos failed').to.be.true; + expect(getUtxosResponse.retValue).to.be.an('array').that.is.not.empty; + const sumUtxosAmount = getUtxosResponse.retValue.reduce( + (accumulator, utxo) => accumulator + parseFloat(utxo.amount), + 0 + ); + const sumInAda = sumUtxosAmount / adaInLovelaces; + expect(sumInAda).to.equal(testWallet1.balance); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppGetUtxosEmptyWallet.test.js b/packages/e2e-tests/test/dapp/dAppGetUtxosEmptyWallet.test.js new file mode 100644 index 0000000000..fa9ef303ee --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppGetUtxosEmptyWallet.test.js @@ -0,0 +1,69 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { getTestWalletName } from '../../helpers/constants.js'; +import { createWallet } from '../../helpers/restoreWalletHelper.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, getUtxos, empty wallet, not auth', function () { + const testWalletName = getTestWalletName(); + let newTestWallet = { + name: '', + plate: '', + balance: 0, + }; + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Create an empty wallet', async function () { + newTestWallet = await createWallet(webdriver, logger, testWalletName); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, newTestWallet); + }); + + it('Request getUtxos', async function () { + const getUtxosResponse = await mockedDApp.getUTXOs(); + expect(getUtxosResponse.success, 'The request getUtxos failed').to.be.true; + expect(getUtxosResponse.retValue).to.be.an('array').that.is.empty; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppIsEnabled.test.js b/packages/e2e-tests/test/dapp/dAppIsEnabled.test.js new file mode 100644 index 0000000000..19a8bacfb2 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppIsEnabled.test.js @@ -0,0 +1,69 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, isEnabled, not auth', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Checking isEnabled before connection', async function () { + const isEnabledReponse = await mockedDApp.isEnabled(); + expect(isEnabledReponse.success).to.be.true; + expect(isEnabledReponse.retValue).to.be.false; + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + it('Checking isEnabled after connection', async function () { + const isEnabledReponse = await mockedDApp.isEnabled(); + expect(isEnabledReponse.success).to.be.true; + expect(isEnabledReponse.retValue).to.be.true; + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppSignData.test.js b/packages/e2e-tests/test/dapp/dAppSignData.test.js new file mode 100644 index 0000000000..3f767ebdb0 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppSignData.test.js @@ -0,0 +1,159 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName, popupConnectorName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import DAppSignData from '../../pages/dapp/dAppSignData.page.js'; +import { getPassword } from '../../helpers/constants.js'; +import { DataSignErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, signData', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + describe('[nested-dapp] Positive case', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send sign data request', async function () { + const testMessage = 'test message sign data'; + await mockedDApp.requestUsedAddresses(); + await mockedDApp.requestSigningData(testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + // sign data request + await dappSignDataPage.enterPassword(getPassword()); + await dappSignDataPage.confirmSigning(); + }); + + it('Check sign data response', async function () { + // wait pop-up window is closed + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + // check sign data response + const signDataResponse = await mockedDApp.getSigningDataResult(); + expect(signDataResponse.success).to.be.true; + const retValue = signDataResponse.retValue; + expect('key' in retValue).to.be.true; + expect('signature' in retValue).to.be.true; + }); + }); + + describe('[nested-dapp] Cancel signing', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send sign data request', async function () { + const testMessage = 'test message sign data'; + await mockedDApp.requestUsedAddresses(); + await mockedDApp.requestSigningData(testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + }); + + it('Cancel signing data and check response', async function () { + const dappSignDataPage = new DAppSignData(webdriver, logger); + await dappSignDataPage.cancelSigning(); + // wait pop-up window is closed + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + // check sign data response + const signDataResponse = await mockedDApp.getSigningDataResult(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.UserDeclined); + }); + }); + + describe('[nested-dapp] Close pop-up', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send sign data request', async function () { + const testMessage = 'test message sign data'; + await mockedDApp.requestUsedAddresses(); + await mockedDApp.requestSigningData(testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + }); + + it('Close pop-up and check response', async function () { + await windowManager.closeTabWindow(popupConnectorName, mockDAppName); + const signDataResponse = await mockedDApp.getSigningDataResult(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.UserDeclined); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppSignDataCIP95.test.js b/packages/e2e-tests/test/dapp/dAppSignDataCIP95.test.js new file mode 100644 index 0000000000..1869dbb0ca --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppSignDataCIP95.test.js @@ -0,0 +1,249 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName, popupConnectorName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import DAppSignData from '../../pages/dapp/dAppSignData.page.js'; +import { getPassword } from '../../helpers/constants.js'; +import { DataSignErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, CIP-95, signData', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet1); + }); + + describe('[nested-dapp] DRepIdHex', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send cip95 sign data request, DRepIdHex', async function () { + const testMessage = 'test message sign data'; + // get dRepID + const dRepIdResponse = await mockedDApp.getPubDRepKey(true); + await mockedDApp.requestSigningDataCIP95(dRepIdResponse.retValue.dRepIDHex, testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + // sign data request + await dappSignDataPage.enterPassword(getPassword()); + await dappSignDataPage.confirmSigning(); + }); + + it('Check cip95 sign data response', async function () { + // wait pop-up window is closed + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + // check sign data response + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.true; + const retValue = signDataResponse.retValue; + expect('key' in retValue).to.be.true; + expect('signature' in retValue).to.be.true; + }); + }); + + describe('[nested-dapp] Regular address HEX', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send cip95 sign data request, regular address HEX', async function () { + const testMessage = 'test message sign data'; + await mockedDApp.requestUsedAddresses(); + const addressesResponse = await mockedDApp.getAddresses(); + const address = addressesResponse.retValue[0]; + + await mockedDApp.requestSigningDataCIP95(address, testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + // sign data request + await dappSignDataPage.enterPassword(getPassword()); + await dappSignDataPage.confirmSigning(); + }); + + it('Check cip95 sign data response', async function () { + // wait pop-up window is closed + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + // check sign data response + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.true; + const retValue = signDataResponse.retValue; + expect('key' in retValue).to.be.true; + expect('signature' in retValue).to.be.true; + }); + }); + + describe('[nested-dapp] Invalid address, DRepIDBech32', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send and check cip95 sign data request, DRepIDBech32', async function () { + const testMessage = 'test message sign data'; + const dRepIdResponse = await mockedDApp.getPubDRepKey(true); + await mockedDApp.requestSigningDataCIP95(dRepIdResponse.retValue.dRepIDBech32, testMessage); + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.AddressNotPK); + }); + }); + + describe('[nested-dapp] Invalid address, other wallet DRepID', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send and check cip95 sign data request, other wallet DRepID', async function () { + const testMessage = 'test message sign data'; + await mockedDApp.requestSigningDataCIP95( + 'bb72e2c1796ba57bc7bdb19b7bb59d6c711f17fdda768aff91882078', + testMessage + ); + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.AddressNotPK); + }); + }); + + describe('[nested-dapp] Invalid address, empty string', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send and check cip95 sign data request, empty string', async function () { + const testMessage = 'test message sign data'; + await mockedDApp.requestSigningDataCIP95('', testMessage); + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.AddressNotPK); + }); + }); + + describe('[nested-dapp] Cancel signing', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send cip95 sign data request, DRepIdHex', async function () { + const testMessage = 'test message sign data'; + // get dRepID + const dRepIdResponse = await mockedDApp.getPubDRepKey(true); + await mockedDApp.requestSigningDataCIP95(dRepIdResponse.retValue.dRepIDHex, testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + }); + + it('Cancel signing data and check response', async function () { + const dappSignDataPage = new DAppSignData(webdriver, logger); + await dappSignDataPage.cancelSigning(); + // wait pop-up window is closed + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + // check sign data response + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.UserDeclined); + }); + }); + + describe('[nested-dapp] Close pop-up', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Send cip95 sign data request, DRepIdHex', async function () { + const testMessage = 'test message sign data'; + // get dRepID + const dRepIdResponse = await mockedDApp.getPubDRepKey(true); + await mockedDApp.requestSigningDataCIP95(dRepIdResponse.retValue.dRepIDHex, testMessage); + // wait for window + const dappSignDataPage = new DAppSignData(webdriver, logger); + // the window focus is switched to the pop-up here + const popUpAppeared = await dappSignDataPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSignDataPage.waitingConnectorIsReady(); + // check that the message is correct + const displayedMessage = await dappSignDataPage.getDisplayedMessage(); + expect(displayedMessage).to.equal(testMessage); + }); + + it('Close pop-up and check response', async function () { + await windowManager.closeTabWindow(popupConnectorName, mockDAppName); + // check sign data response + const signDataResponse = await mockedDApp.getSigningDataCIP95Result(); + expect(signDataResponse.success).to.be.false; + expect(signDataResponse.errMsg.code).to.equal(DataSignErrorCode.UserDeclined); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppSignTx.test.js b/packages/e2e-tests/test/dapp/dAppSignTx.test.js new file mode 100644 index 0000000000..a4a3a66c57 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppSignTx.test.js @@ -0,0 +1,260 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { getSpendableWallet } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName, popupConnectorName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces, getPassword } from '../../helpers/constants.js'; +import DAppSignTx from '../../pages/dapp/dAppSignTx.page.js'; +import { TxSignErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, signTx, intrawallet Tx', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = new WindowManager(webdriver, logger); + let mockServer = null; + let mockedDApp = new MockDAppWebpage(webdriver, logger); + let expectedFee = 0; + let receiverAddr = ''; + const testWallet = getSpendableWallet(); + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet, false); + }); + + describe('[nested-dapp] Positive case', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request signTx', async function () { + // get a receiver address + await mockedDApp.requestUnusedAddresses(); + const unusedAddresses = await mockedDApp.getAddresses(); + receiverAddr = unusedAddresses.retValue[0]; + const requestedAmount = String(1 * adaInLovelaces); + // send sign request with 1 ada + const { txFee } = await mockedDApp.requestSigningTx(requestedAmount, receiverAddr); + expectedFee = txFee; + }); + + it('Checking Sign Tx pop-up appeared', async function () { + // wait for the pop-up appears + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const popUpAppeared = await dappSingTxPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSingTxPage.waitingConnectorIsReady(); + }); + + it('Checking info on Details page', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + // check data on the Details page + const displayedTotalAmount = await dappSingTxPage.getTotalAmount(); + const displayedFee = await dappSingTxPage.getFee(); + const displayedTotalNumber = parseFloat(displayedTotalAmount); + const displayedFeeNumber = parseFloat(displayedFee); + const storedFeeNumber = parseFloat(expectedFee) / adaInLovelaces; + expect(displayedFeeNumber, 'Displayed fee is different from expected').to.equal( + storedFeeNumber + ); + // because it is intrawallet tx only fee + 0 is displayed in the total amount + expect(displayedTotalNumber, 'Displayed total is different from expected').to.equal( + storedFeeNumber + ); + }); + + it('Checking info on UTxOs page', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + await dappSingTxPage.switchToUtxosTab(); + const outputsInfo = await dappSingTxPage.getOutputsInfo(); + const filteredAddrs = outputsInfo.yourAddrs.filter( + addrInfo => addrInfo.addr === receiverAddr + ); + expect(filteredAddrs, 'Receiver address is not in outputs').to.be.an('array').that.is.not + .empty; + expect(filteredAddrs.length, 'Receiver address appears several times').to.equal(1); + const addrAssets = filteredAddrs[0].assets; + expect(addrAssets, 'No tokens for the receiver address').to.be.an('array').that.is.not.empty; + const filteredAddrAssets = addrAssets.filter(assetInfo => assetInfo.tokenName === 'ADA'); + expect(filteredAddrAssets.length, 'No ADA token for the receiver address').to.equal(1); + expect( + filteredAddrAssets[0].tokenAmount, + 'Different amount for the receiver address' + ).to.equal(1); + }); + + it('Checking info on Connection page', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const connectionInfo = await dappSingTxPage.getConnectionInfo(); + expect(connectionInfo.pageUrl).to.equal('localhost'); + expect(connectionInfo.walletName).to.equal(testWallet.name); + expect(connectionInfo.walletPlate).to.equal(testWallet.plate); + }); + + it('Sign tx and check response', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + await dappSingTxPage.switchToDetailsTab(); + await dappSingTxPage.enterPassword(getPassword()); + await dappSingTxPage.confirmSigning(); + + // pop up is closed, switching to dapp + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + + // check sign data response + const signTxResponse = await mockedDApp.getSigningTxResult(); + expect(signTxResponse.success).to.be.true; + expect(signTxResponse.retValue).to.be.an('string').that.is.not.empty; + }); + }); + + describe('[nested-dapp] Cancel Transaction', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request signTx', async function () { + // get a receiver address + await mockedDApp.requestUnusedAddresses(); + const unusedAddresses = await mockedDApp.getAddresses(); + const receiverAddr = unusedAddresses.retValue[0]; + const requestedAmount = String(1 * adaInLovelaces); + // send sign request with 1 ada + await mockedDApp.requestSigningTx(requestedAmount, receiverAddr); + }); + + it('Checking Sign Tx pop-up appeared', async function () { + // wait for the pop-up appears + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const popUpAppeared = await dappSingTxPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSingTxPage.waitingConnectorIsReady(); + }); + + it('Cancel signing tx and check response', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + await dappSingTxPage.switchToDetailsTab(); + await dappSingTxPage.cancelSigning(); + + // pop up is closed, switching to dapp + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + + // check sign data response + const signTxResponse = await mockedDApp.getSigningTxResult(); + expect(signTxResponse.success).to.be.false; + expect(signTxResponse.errMsg.code).to.equal(TxSignErrorCode.UserDeclined); + }); + }); + + describe('[nested-dapp] Close pop-up', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request signTx', async function () { + // get a receiver address + await mockedDApp.requestUnusedAddresses(); + const unusedAddresses = await mockedDApp.getAddresses(); + const receiverAddr = unusedAddresses.retValue[0]; + const requestedAmount = String(1 * adaInLovelaces); + // send sign request with 1 ada + await mockedDApp.requestSigningTx(requestedAmount, receiverAddr); + }); + + it('Checking Sign Tx pop-up appeared', async function () { + // wait for the pop-up appears + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const popUpAppeared = await dappSingTxPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSingTxPage.waitingConnectorIsReady(); + }); + + it('Close the pop-up and check response', async function () { + await windowManager.closeTabWindow(popupConnectorName, mockDAppName); + + // check sign data response + const signTxResponse = await mockedDApp.getSigningTxResult(); + expect(signTxResponse.success).to.be.false; + expect(signTxResponse.errMsg.code).to.equal(TxSignErrorCode.UserDeclined); + }); + }); + + describe('[nested-dapp] Incorrect Transaction', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request signTx for incorrect Tx', async function () { + // send sign request with incorrect request + const uTxHex = + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; + await mockedDApp.requestSigningTxHex(uTxHex); + }); + + it('Checking Sign Tx pop-up appeared', async function () { + // wait for the pop-up appears + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const popUpAppeared = await dappSingTxPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSingTxPage.waitingConnectorIsReady(); + }); + + it('Incorrect Tx, check response', async function () { + // there should be no pop-up + // just response with an error "Not suitable data is sent" + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const errorMessage = await dappSingTxPage.getErrorMessage(); + expect(errorMessage, 'Something wrong with the error message').to.equal( + 'Unable to parse input transaction.' + ); + + await windowManager.closeTabWindow(popupConnectorName, mockDAppName); + // check sign data response + const signTxResponse = await mockedDApp.getSigningTxResult(); + expect(signTxResponse.success).to.be.false; + expect(signTxResponse.errMsg.code).to.equal(TxSignErrorCode.UserDeclined); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppSubmitTx.test.js b/packages/e2e-tests/test/dapp/dAppSubmitTx.test.js new file mode 100644 index 0000000000..31e22ba819 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppSubmitTx.test.js @@ -0,0 +1,157 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach, customBeforeNestedDAppTest } from '../../utils/customHooks.js'; +import { getSpendableWallet } from '../../utils/testWallets.js'; +import { expect } from 'chai'; +import { getTestLogger } from '../../utils/utils.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import { WindowManager, mockDAppName, popupConnectorName } from '../../helpers/windowManager.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { connectNonAuth } from '../../helpers/mock-dApp-webpage/dAppHelper.js'; +import { adaInLovelaces, getPassword } from '../../helpers/constants.js'; +import DAppSignTx from '../../pages/dapp/dAppSignTx.page.js'; +import { signTxWithCSL } from '../../helpers/mock-dApp-webpage/dAppTxHelper.js'; +import { ApiErrorCode, TxSendErrorCode } from '../../helpers/mock-dApp-webpage/cip30Errors.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, submitTx', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = new WindowManager(webdriver, logger); + let mockServer = null; + let mockedDApp = new MockDAppWebpage(webdriver, logger); + let uTxHex = ''; + let witnessSet = ''; + const testWallet = getSpendableWallet(); + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Connect the wallet without auth to the dapp', async function () { + await connectNonAuth(webdriver, logger, windowManager, mockedDApp, testWallet, false); + }); + + describe('[nested-dapp] Submit Tx, positive', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request signTx', async function () { + // get a receiver address + await mockedDApp.requestUnusedAddresses(); + const unusedAddresses = await mockedDApp.getAddresses(); + const receiverAddr = unusedAddresses.retValue[0]; + const requestedAmount = String(1 * adaInLovelaces); + // send sign request with 1 ada + const signingRequest = await mockedDApp.requestSigningTx(requestedAmount, receiverAddr); + uTxHex = signingRequest.uTxHex; + }); + + it('Sign tx and check response', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const popUpAppeared = await dappSingTxPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSingTxPage.waitingConnectorIsReady(); + await dappSingTxPage.enterPassword(getPassword()); + await dappSingTxPage.confirmSigning(); + + // pop up is closed, switching to dapp + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + + // check sign data response + const signTxResponse = await mockedDApp.getSigningTxResult(); + expect(signTxResponse.success).to.be.true; + expect(signTxResponse.retValue).to.be.an('string').that.is.not.empty; + witnessSet = signTxResponse.retValue; + }); + + it('Submit Tx and check response', async function () { + const signedTxHex = signTxWithCSL(uTxHex, witnessSet); + const submitResponse = await mockedDApp.submitTx(signedTxHex); + expect(submitResponse.success, 'Submit Tx request failed').to.be.true; + expect(submitResponse.retValue).to.be.an('string').that.is.not.empty; + }); + }); + + describe('[nested-dapp] Submit Tx, undefined Tx', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Submit Tx with undefined and check response', async function () { + const submitResponse = await mockedDApp.submitTx(undefined); + expect(submitResponse.success, 'Submit Tx request pass').to.be.false; + expect(submitResponse.errMsg.code).to.equal(ApiErrorCode.InternalError); + }); + }); + + describe('[nested-dapp] Submit Tx, unsigned Tx', function () { + before(async function () { + await customBeforeNestedDAppTest(this, windowManager); + }); + + it('Request signTx', async function () { + // get a receiver address + await mockedDApp.requestUnusedAddresses(); + const unusedAddresses = await mockedDApp.getAddresses(); + const receiverAddr = unusedAddresses.retValue[0]; + const requestedAmount = String(1 * adaInLovelaces); + // send sign request with 1 ada + const signingRequest = await mockedDApp.requestSigningTx(requestedAmount, receiverAddr); + uTxHex = signingRequest.uTxHex; + }); + + it('Sign tx', async function () { + const dappSingTxPage = new DAppSignTx(webdriver, logger); + const popUpAppeared = await dappSingTxPage.popUpIsDisplayed(windowManager); + expect(popUpAppeared, 'The connector pop-up is not displayed').to.be.true; + await dappSingTxPage.waitingConnectorIsReady(); + await dappSingTxPage.enterPassword(getPassword()); + await dappSingTxPage.confirmSigning(); + + // pop up is closed, switching to dapp + const result = await windowManager.isClosed(popupConnectorName); + expect(result, 'The window|tab is still opened').to.be.true; + await windowManager.switchTo(mockDAppName); + }); + + it('Submit Tx and check response', async function () { + const submitResponse = await mockedDApp.submitTx(uTxHex); + expect(submitResponse.success, 'Submit Tx request pass').to.be.false; + expect(submitResponse.errMsg.code).to.equal(TxSendErrorCode.Failure); + }); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/dapp/dAppYoroiInfo.test.js b/packages/e2e-tests/test/dapp/dAppYoroiInfo.test.js new file mode 100644 index 0000000000..d4be6b0529 --- /dev/null +++ b/packages/e2e-tests/test/dapp/dAppYoroiInfo.test.js @@ -0,0 +1,63 @@ +import BasePage from '../../pages/basepage.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { expect } from 'chai'; +import { testWallet1 } from '../../utils/testWallets.js'; +import { getTestLogger } from '../../utils/utils.js'; +import { getMockServer, mockDAppUrl } from '../../helpers/mock-dApp-webpage/mockServer.js'; +import { WindowManager, mockDAppName } from '../../helpers/windowManager.js'; +import { MockDAppWebpage } from '../../helpers/mock-dApp-webpage/mockedDApp.js'; +import { yoroiObject } from '../../helpers/constants.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; +import { restoreWallet } from '../../helpers/restoreWalletHelper.js'; +import driversPoolsManager from '../../utils/driversPool.js'; + +describe('dApp, Yoroi object in Cardano', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let windowManager = null; + let mockServer = null; + let mockedDApp = null; + + before(function (done) { + webdriver = driversPoolsManager.getDriverFromPool(); + mockServer = getMockServer({}); + const wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + windowManager.init(); + const dappLogger = getTestLogger('dApp', this.test.parent.title); + mockedDApp = new MockDAppWebpage(webdriver, dappLogger); + logger = getTestLogger(this.test.parent.title); + done(); + }); + + it('Restore a 15-word wallet', async function () { + await restoreWallet(webdriver, logger, testWallet1); + }); + + it('Open a dapp page', async function () { + await windowManager.openNewTab(mockDAppName, mockDAppUrl); + }); + + it('Check Yoroi object in Cardano', async function () { + const yoroiObjectResponse = await mockedDApp.getYoroiObject(); + expect(yoroiObjectResponse.success, 'Error happened while receiving "yoroi" object').to.be.true; + expect(yoroiObjectResponse.retValue, 'An empty object is returned').to.be.an('object').that.is + .not.empty; + expect(yoroiObjectResponse.retValue.name).to.equal(yoroiObject.name); + expect(yoroiObjectResponse.retValue.apiVersion).to.equal(yoroiObject.apiVersion); + expect(yoroiObjectResponse.retValue.icon).to.equal(yoroiObject.icon); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(function (done) { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + mockServer.close(); + done(); + }); +}); diff --git a/packages/e2e-tests/test/hw/connectTrezorWallet.test.js b/packages/e2e-tests/test/hw/connectTrezorWallet.test.js new file mode 100644 index 0000000000..f0a8d53d77 --- /dev/null +++ b/packages/e2e-tests/test/hw/connectTrezorWallet.test.js @@ -0,0 +1,106 @@ +import { expect } from 'chai'; +import { getDriver } from '../../utils/driverBootstrap.js'; +import { customAfterEach } from '../../utils/customHooks.js'; +import { getTestLogger } from '../../utils/utils.js'; +import { TrezorEmulatorController } from '../../helpers/trezorEmulatorController.js'; +import { runAndPrepareTrezor } from '../../helpers/trezorHelper.js'; +import { + WindowManager, + extensionTabName, + trezorConnectTabName, +} from '../../helpers/windowManager.js'; +import { testWalletTrezor } from '../../utils/testWallets.js'; +import BasePage from '../../pages/basepage.js'; +import InitialStepsPage from '../../pages/initialSteps.page.js'; +import AddNewWallet from '../../pages/addNewWallet.page.js'; +import TrezorConnect from '../../pages/trezorConnect.page.js'; +import TransactionsSubTab from '../../pages/wallet/walletTab/walletTransactions.page.js'; +import { oneMinute } from '../../helpers/timeConstants.js'; + +describe('Connect Trezor HW wallet', function () { + this.timeout(2 * oneMinute); + let webdriver = null; + let logger = null; + let trezorLogger = null; + let trezorController = null; + let wmLogger = null; + let windowManager = null; + + before(function (done) { + webdriver = getDriver(); + logger = getTestLogger(this.test.parent.title); + trezorLogger = getTestLogger('trezor', this.test.parent.title); + trezorController = new TrezorEmulatorController(trezorLogger); + wmLogger = getTestLogger('windowManager', this.test.parent.title); + windowManager = new WindowManager(webdriver, wmLogger); + const basePage = new BasePage(webdriver, logger); + basePage.goToExtension(); + done(); + }); + + it('Initials steps', async function () { + await windowManager.init(); + const initialStepsPage = new InitialStepsPage(webdriver, logger); + await initialStepsPage.skipInitialSteps(); + }); + + it('Trezor initialization', async function () { + await runAndPrepareTrezor(trezorController, testWalletTrezor.mnemonic); + }); + + it('Selecting Connect HW wallet', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.selectConnectHW(); + await addNewWalletPage.selectCardanoNetwork(); + await addNewWalletPage.selectTrezorHW(); + await addNewWalletPage.confirmChecking(); + await addNewWalletPage.connectTrezor(); + }); + + it('Approve connection', async function () { + await windowManager.findNewWindowAndSwitchTo(trezorConnectTabName); + const trezorConnectPage = new TrezorConnect(webdriver, logger); + await trezorConnectPage.tickCheckbox(); + await trezorConnectPage.allowConnection(); + await trezorConnectPage.allowPubKeysExport(); + await windowManager.waitForClosingAndSwitchTo(trezorConnectTabName, extensionTabName); + }); + + it('Enter wallet details', async function () { + const addNewWalletPage = new AddNewWallet(webdriver, logger); + await addNewWalletPage.enterHWWalletName(testWalletTrezor.name); + await addNewWalletPage.saveHWInfo(); + }); + + it('Check new wallet', async function () { + const transactionsPage = new TransactionsSubTab(webdriver, logger); + await transactionsPage.waitPrepareWalletBannerIsClosed(); + await transactionsPage.closeUpdatesModalWindow(); + const txPageIsDisplayed = await transactionsPage.isDisplayed(); + expect(txPageIsDisplayed, 'The transactions page is not displayed').to.be.true; + const walletInfo = await transactionsPage.getSelectedWalletInfo(); + expect(walletInfo.walletBalance, 'The wallet balance is different').to.equal( + testWalletTrezor.balance + ); + expect(walletInfo.walletName, `The wallet name should be "${testWalletTrezor.name}"`).to.equal( + testWalletTrezor.name + ); + expect( + walletInfo.walletPlate, + `The wallet plate should be "${testWalletTrezor.plate}"` + ).to.equal(testWalletTrezor.plate); + }); + + afterEach(function (done) { + customAfterEach(this, webdriver, logger); + done(); + }); + + after(async function () { + const basePage = new BasePage(webdriver, logger); + basePage.closeBrowser(); + await trezorController.bridgeStop(); + await trezorController.emulatorStop(); + trezorController.closeWsConnection(); + }); +}); diff --git a/packages/e2e-tests/utils/customHooks.js b/packages/e2e-tests/utils/customHooks.js new file mode 100644 index 0000000000..0b05f1126c --- /dev/null +++ b/packages/e2e-tests/utils/customHooks.js @@ -0,0 +1,30 @@ +import BasePage from '../pages/basepage.js'; +import { mockDAppName, popupConnectorName } from '../helpers/windowManager.js'; + +export const customAfterEach = async (mochaContext, webdriver, logger) => { + if (mochaContext.currentTest.isFailed()) { + const basepage = new BasePage(webdriver, logger); + // preparing test name + const curTestTitle = mochaContext.currentTest.title; + const testsNameAndTestIndex = mochaContext.currentTest.parent.tests + .map((testCase, testIndex) => [testCase.title, testIndex]) + .filter(testData => testData[0] === curTestTitle)[0]; + const testCaseNameWithNumberInTestSuite = `${testsNameAndTestIndex[1]}_${testsNameAndTestIndex[0]}`; + // taking page screenshot + basepage.takeScreenshot(mochaContext.test.parent.title, testCaseNameWithNumberInTestSuite); + // taking page snapshot + basepage.takeSnapshot(mochaContext.test.parent.title, testCaseNameWithNumberInTestSuite); + // taking browser console logs + basepage.getBrowserLogs(mochaContext.test.parent.title, testCaseNameWithNumberInTestSuite); + } +}; + +export const customBeforeNestedDAppTest = async (mochaContext, windowManager) => { + const parentTitle = mochaContext.currentTest.parent.title; + if (parentTitle.includes('nested-dapp')) { + const popupIsClosed = await windowManager.isClosed(popupConnectorName); + if (!popupIsClosed) { + await windowManager.closeTabWindow(popupConnectorName, mockDAppName); + } + } +}; diff --git a/packages/e2e-tests/utils/driverBootstrap.js b/packages/e2e-tests/utils/driverBootstrap.js new file mode 100644 index 0000000000..7b65532541 --- /dev/null +++ b/packages/e2e-tests/utils/driverBootstrap.js @@ -0,0 +1,135 @@ +import { Builder, logging } from 'selenium-webdriver'; +import chrome from 'selenium-webdriver/chrome.js'; +import firefox from 'selenium-webdriver/firefox.js'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { + chromeExtIdUrl, + firefoxBin, + firefoxExtIdUrl, + firefoxUuidMapping, + TargetBrowser, +} from '../helpers/constants.js'; +import { getDownloadsDir, getTargetBrowser, isBrave, isChrome, isFirefox } from './utils.js'; + +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const __projectRoot = path.resolve(__dirname, '../..'); +const __extensionDir = path.resolve(__projectRoot, 'yoroi-extension'); + +export const getExtensionUrl = () => { + if (isChrome() || isBrave()) { + /** + * Extension id is deterministically calculated based on pubKey used to generate the crx file + * so we can just hardcode this value if we keep e2etest-key.pem file + * https://stackoverflow.com/a/10089780/3329806 + */ + return `${chromeExtIdUrl}/main_window.html`; + } + return `${firefoxExtIdUrl}/main_window.html`; +}; + +// builders +const getBraveBuilder = () => { + return new Builder() + .forBrowser(TargetBrowser.Chrome) + .setLoggingPrefs(prefs) + .setChromeOptions( + new chrome.Options() + .setChromeBinaryPath('/usr/bin/brave-browser') + .addArguments( + '--no-sandbox', // Disables the sandbox for all process types that are normally sandboxed. Meant to be used as a browser-level switch for testing purposes only + '--disable-gpu', // Disables GPU hardware acceleration. If software renderer is not in place, then the GPU process won't launch + '--disable-dev-shm-usage', // The /dev/shm partition is too small in certain VM environments, causing Chrome to fail or crash + '--disable-setuid-sandbox', // Disable the setuid sandbox (Linux only) + '--start-maximized', // Starts the browser maximized, regardless of any previous settings + '--headless=new', // Runs the browser in the headless mode + ) + .addExtensions(path.resolve(__extensionDir, 'Yoroi-test.crx')) + ); +}; + +const getChromeBuilder = () => { + const downloadsDir = getDownloadsDir(); + return new Builder() + .forBrowser(TargetBrowser.Chrome) + .setLoggingPrefs(prefs) + .setChromeOptions( + new chrome.Options() + .addExtensions(path.resolve(__extensionDir, 'Yoroi-test.crx')) + .addArguments( + '--no-sandbox', + '--disable-gpu', + '--disable-dev-shm-usage', + '--disable-setuid-sandbox', + '--start-maximized', + // '--headless=new', // Runs the browser in the headless mode + ) + .setUserPreferences({ 'download.default_directory': downloadsDir }) + ); +}; + +const getFirefoxBuilder = () => { + const downloadsDir = getDownloadsDir(); + const options = new firefox.Options() + // .addArguments('--headless') // Runs the browser in the headless mode + /** + * For Firefox it is needed to use "Firefox for Developers" to load the unsigned extensions + * Set the FIREFOX_BIN env variable to the "Firefox for Developers" executable + */ + .setBinary(firefoxBin) + /** + * Firefox disallows unsigned extensions by default. We solve this through a config change + * The proper way to do this is to use the "temporary addon" feature of Firefox + * However, our version of selenium doesn't support this yet + * The config is deprecated and may be removed in the future. + */ + .setPreference('xpinstall.signatures.required', false) + .setPreference('devtools.console.stdout.content', true) + .setPreference('extensions.webextensions.uuids', firefoxUuidMapping) + .setPreference('browser.download.folderList', 2) + .setPreference('browser.download.manager.showWhenStarting', false) + .setPreference('browser.download.dir', downloadsDir) + .setPreference( + 'browser.helperApps.neverAsk.saveToDisk', + 'application/csv, text/csv, application/pdfss, text/csv, application/excel' + ) + .setPreference('browser.download.manager.showAlertOnComplete', false) + .addExtensions(path.resolve(__extensionDir, 'Yoroi.xpi')); + + return new Builder() + .withCapabilities({ + chromeOptions: { + args: ['start-maximized'], + }, + }) + .forBrowser(TargetBrowser.FF) + .setFirefoxOptions(options); +}; + +// getting a builder according to a set browser +export const getBuilder = () => { + switch (getTargetBrowser()) { + case TargetBrowser.Brave: { + return getBraveBuilder(); + } + case TargetBrowser.FF: { + return getFirefoxBuilder(); + } + default: { + return getChromeBuilder(); + } + } +}; +// getting a driver +export const getDriver = () => { + const driver = getBuilder().build(); + driver.manage().setTimeouts({ implicit: 10000 }); + if (isFirefox()) { + driver.manage().window().maximize(); + } + return driver; +}; diff --git a/packages/e2e-tests/utils/driversPool.js b/packages/e2e-tests/utils/driversPool.js new file mode 100644 index 0000000000..028fe67915 --- /dev/null +++ b/packages/e2e-tests/utils/driversPool.js @@ -0,0 +1,75 @@ +import { getBuilder } from './driverBootstrap.js'; +import { getTargetBrowser, getTestLogger } from './utils.js'; +import { TargetBrowser } from '../helpers/constants.js'; +import BasePage from '../pages/basepage.js'; +import InitialStepsPage from '../pages/initialSteps.page.js'; +import { defaultWaitTimeout } from '../helpers/timeConstants.js'; + +let instance = null; +let poolOfDrivers = []; + +class DriversManager { + constructor() { + if (instance) { + throw new Error('New instance cannot be created!'); + } + + instance = this; + } + + buildDriver() { + const driver = getBuilder().build(); + driver.manage().setTimeouts({ implicit: defaultWaitTimeout }); + if (getTargetBrowser() === TargetBrowser.FF) { + driver.manage().window().maximize(); + } + return driver; + } + + addNewDriverToPool() { + const newDriver = this.buildDriver(); + poolOfDrivers.push(newDriver); + + return newDriver; + } + + createPoolOfDrivers(driversAmount) { + for (let index = 0; index < driversAmount; index++) { + this.addNewDriverToPool(); + } + } + + async prepareExtension(driver) { + const logger = getTestLogger(`DriversManager_${Date.now()}`, 'DriversManager'); + const basePage = new BasePage(driver, logger); + await basePage.goToExtension(); + const initialStepsPage = new InitialStepsPage(driver, logger); + return initialStepsPage.skipInitialSteps(); + } + + prepareExtensions() { + const prepExtPromisesArr = []; + for (const driver of poolOfDrivers) { + prepExtPromisesArr.push(this.prepareExtension(driver)); + } + Promise.all(prepExtPromisesArr); + } + + getDriverFromPool() { + const driver = poolOfDrivers.shift(); + const newDriver = this.addNewDriverToPool(); + this.prepareExtension(newDriver); + + return driver; + } + + async closeAllUnused() { + for (const driver of poolOfDrivers) { + await driver.quit(); + } + } +} + +const driversPoolsManager = Object.freeze(new DriversManager()); + +export default driversPoolsManager; diff --git a/packages/e2e-tests/utils/hooks.mjs b/packages/e2e-tests/utils/hooks.mjs new file mode 100644 index 0000000000..ae1ec30fcb --- /dev/null +++ b/packages/e2e-tests/utils/hooks.mjs @@ -0,0 +1,27 @@ +import driversPoolsManager from './driversPool.js'; +import { defaultWaitTimeout } from '../helpers/timeConstants.js'; + +export const mochaHooks = { + beforeAll(done) { + this.timeout(defaultWaitTimeout); + driversPoolsManager.createPoolOfDrivers(2); + driversPoolsManager.prepareExtensions(); + done(); + }, + async beforeEach(done) { + // Check for nested descibe sections in case if any tests failed in a main describe + const grandParent = this.currentTest.parent.parent; + if (grandParent?.tests.some(test => test.state === 'failed')) { + this.skip(); + } + // Skip subsequent tests if the describe block failed + if (this.currentTest.parent.tests.some(test => test.state === 'failed')) { + this.skip(); + } + done(); + }, + afterAll(done) { + driversPoolsManager.closeAllUnused(); + done(); + }, +}; diff --git a/packages/e2e-tests/utils/testWallets.js b/packages/e2e-tests/utils/testWallets.js new file mode 100644 index 0000000000..01639cc364 --- /dev/null +++ b/packages/e2e-tests/utils/testWallets.js @@ -0,0 +1,47 @@ +import { getTargetBrowser } from './utils.js'; +import { TargetBrowser } from '../helpers/constants.js'; + +export const testWallet1 = Object.freeze({ + name: 'TestWallet1', + plate: 'JPAX-4675', + mnemonic: process.env.FIRST_SMOKE_TEST_WALLET, + balance: 4.828823, + receiveAddress: + 'addr1q98tt4wxnt32h3fn63xkzh4q7ah57v330v40mc2e9ale5jp4ytssp23mthvgruacyluaa0f868fffgnch75082k8awhsmrz6qx', +}); +export const testWallet2 = Object.freeze({ + name: 'TestWallet2Static', + plate: 'XONT-4910', + mnemonic: process.env.SECOND_STATIC_TEST_WALLET, + balance: 6.527639, +}); +export const testWallet3 = Object.freeze({ + name: 'TW_Chrome', + plate: 'XZHD-1651', + mnemonic: process.env.SECOND_SMOKE_TEST_WALLET, + minTxs: 250, +}); +export const testWallet4 = Object.freeze({ + name: 'TW_FF', + plate: 'CJBE-8896', + mnemonic: process.env.SECOND_SMOKE_TEST_WALLET_FF, + minTxs: 97, +}); +export const testWalletTrezor = Object.freeze({ + name: 'TrezorEmul', + plate: 'PXCA-2349', + mnemonic: 'lyrics tray aunt muffin brisk ensure wedding cereal capital path replace weasel', + deviceId: '6495958994A4025BB5EE1DB0', + balance: 0, +}); + +export const getSpendableWallet = () => { + const browserName = getTargetBrowser(); + if (browserName === TargetBrowser.Chrome) { + return testWallet3; + } else if (browserName === TargetBrowser.FF) { + return testWallet4; + } else { + throw new Error(`There is no a separate wallet for the browser "${browserName}"`); + } +}; diff --git a/packages/e2e-tests/utils/utils.js b/packages/e2e-tests/utils/utils.js new file mode 100644 index 0000000000..691cceece1 --- /dev/null +++ b/packages/e2e-tests/utils/utils.js @@ -0,0 +1,268 @@ +import { By } from 'selenium-webdriver'; +import { dbSnapshotsDir, TargetBrowser, testRunDir } from '../helpers/constants.js'; +import * as fs from 'node:fs'; +import path from 'path'; +import pkg from 'simple-node-logger'; +import axios from 'axios'; +const { createSimpleFileLogger } = pkg; + +export function getMethod(locatorMethod) { + switch (locatorMethod) { + case 'id': { + return By.id; + } + case 'xpath': { + return By.xpath; + } + case 'name': { + return By.name; + } + case 'className': { + return By.className; + } + case 'linkText': { + return By.linkText; + } + case 'js': { + return By.js; + } + case 'partialLinkText': { + return By.partialLinkText; + } + default: { + return By.css; + } + } +} + +export const getByLocator = locator => getMethod(locator.method)(locator.locator); + +export const getTargetBrowser = () => process.env.TARGETBROWSER; + +export const isFirefox = () => getTargetBrowser() === TargetBrowser.FF; +export const isChrome = () => getTargetBrowser() === TargetBrowser.Chrome; +export const isBrave = () => getTargetBrowser() === TargetBrowser.Brave; + +export const createTestRunDataDir = testSuiteName => { + const clearedTestSuiteName = testSuiteName.replace(/[ |,]/gi, '_'); + const testsDataDir = testRunDir(getTargetBrowser()); + const fullPath = path.resolve(testsDataDir, clearedTestSuiteName); + if (!fs.existsSync(fullPath)) { + fs.mkdirSync(fullPath, { recursive: true }); + } + return fullPath; +}; + +export const sleep = milliseconds => { + return new Promise(resolve => setTimeout(resolve, milliseconds)); +}; + +export const getTestLogger = (logFileName, dir) => { + let testsDataDir = ''; + if (dir) { + testsDataDir = createTestRunDataDir(dir); + } else { + testsDataDir = createTestRunDataDir(logFileName); + } + const clearedLogFileName = logFileName.replace(/[ |,]/gi, '_'); + const fullPath = path.resolve(testsDataDir, clearedLogFileName + '.log'); + const simpleLogger = createSimpleFileLogger(fullPath); + return simpleLogger; +}; + +export const walletNameShortener = walletName => { + if (walletName.length > 15) { + return walletName.slice(0, 12) + '...'; + } + return walletName; +}; + +export const checkIfElementsInArrayAreUnique = function (arr) { + return new Set(arr).size === arr.length; +}; + +export const getCircularReplacer = () => { + const seen = new WeakSet(); + return (key, value) => { + if (typeof value === 'object' && value !== null) { + if (seen.has(value)) { + return; + } + seen.add(value); + } + return value; + }; +}; + +export const getDownloadsDir = () => { + const testRunDataDir = testRunDir(getTargetBrowser()); + const fullPath = path.resolve(testRunDataDir, 'downloads'); + if (!fs.existsSync(fullPath)) { + fs.mkdirSync(fullPath, { recursive: true }); + } + + return fullPath; +}; + +export const getListOfDownloadedFiles = () => { + const downloadsDir = getDownloadsDir(); + + return fs.readdirSync(downloadsDir); +}; + +export const getFileContent = (fileName, fileDir) => { + const fullPath = path.resolve(fileDir, fileName); + const data = fs.readFileSync(fullPath, 'utf8'); + + return data; +}; + +export const getDownloadedFileContent = fileName => { + const fullPath = path.resolve(getDownloadsDir(), fileName); + const data = fs.readFileSync(fullPath, 'utf8'); + + return data; +}; + +export const cleanDownloads = () => { + const allDownloadedFiles = getListOfDownloadedFiles(); + for (const fileName of allDownloadedFiles) { + const fullPath = path.resolve(getDownloadsDir(), fileName); + fs.unlinkSync(fullPath); + } +}; + +/** + * The function return the current date in the format "yyyy-mm-dd" + * @returns {string} + */ +export const getTodayStr = () => { + return getDateStr(0); +}; + +export const getDateStr = (daysFromToday = 0) => { + const todayDateObj = new Date(); + const year = todayDateObj.getFullYear(); + const month = `0${todayDateObj.getMonth() + 1}`.slice(-2); + const day = `0${todayDateObj.getDate() + daysFromToday}`.slice(-2); + + return `${year}-${month}-${day}`; +}; + +export const strNumberToNumber = strNumber => { + let result = 0; + if (strNumber !== '') { + result = parseFloat(strNumber); + } + return result; +}; + +export const parseExportedCSV = fileContent => { + const lines = fileContent.split('\n'); + const result = []; + for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) { + if (lineIndex === 0) { + continue; + } + const rowData = lines[lineIndex].split(','); + const cleanRowData = rowData.map(rowDatum => rowDatum.slice(1, -1)); + const [ + txType, + inAmountString, + , + outAmountString, + , + feeAmountString, + , + exchange, + tradeGroup, + comment, + date, + txHashId, + ] = cleanRowData; + if (comment.includes('Staking Reward Epoch')) { + continue; + } + + const inAmount = strNumberToNumber(inAmountString); + const outAmount = strNumberToNumber(outAmountString); + const feeAmount = strNumberToNumber(feeAmountString); + + result.push({ + txType, + inAmount, + outAmount, + feeAmount, + exchange, + tradeGroup, + comment, + date, + txHashId, + }); + } + return result; +}; + +/** + * + * @param {string} prettyDate Accepts a date parameter as a string in from "Today", "Yesterday", "March 11, 2024" + * @returns {string} A date in the format "yyyy-mm-dd" + */ +export const convertPrettyDateToNormal = prettyDate => { + if (prettyDate === 'Today') { + return getDateStr(0); + } + if (prettyDate === 'Yesterday') { + return getDateStr(-1); + } + + const todayDateObj = new Date(prettyDate); + const year = todayDateObj.getFullYear(); + const month = `0${todayDateObj.getMonth() + 1}`.slice(-2); + const day = `0${todayDateObj.getDate()}`.slice(-2); + + return `${year}-${month}-${day}`; +}; + +export const convertPrettyTimeToNormal = prettyTime => { + const [time, modifier] = prettyTime.split(' '); + let [hours, minutes] = time.split(':'); + if (hours === '12') { + hours = '00'; + } + if (modifier === 'PM') { + hours = parseInt(hours, 10) + 12; + } + return `${hours}:${minutes}:00`; +}; + +export const roundUpCurrency = (value, fiatCurrency) => { + const cryptoFiats = ['ETH', 'BTC']; + if (cryptoFiats.includes(fiatCurrency)) { + return Number(parseFloat(value).toFixed(6)); + } else { + return Number(parseFloat(value).toFixed(2)); + } +}; + +export const diffIsLess1Perc = (valueA, valueB) => { + const valueA1Perc = valueA * 0.01; + return valueB >= valueA - valueA1Perc && valueB <= valueA + valueA1Perc; +}; + +export const getSnapshotObjectFromJSON = dbSnapshotName => { + const dbSnapshotPath = path.resolve(dbSnapshotsDir, dbSnapshotName); + const fileContent = getFileContent(dbSnapshotPath); + return JSON.parse(fileContent); +}; + +export const getCurrenciesPrices = async () => { + try { + const reqResponse = await axios.get( + 'https://iohk-mainnet.yoroiwallet.com/api/price/ADA/current' + ); + return reqResponse.data.ticker.prices; + } catch (error) { + throw new Error(`Error happen while getting currencies prices. Error: ${error}`); + } +}; diff --git a/packages/yoroi-connector/.gitignore b/packages/yoroi-connector/.gitignore deleted file mode 100644 index b7b8b7b7ed..0000000000 --- a/packages/yoroi-connector/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules -npm-debug.log -.DS_Store -.vscode/ -*.pem -build/ -*.zip -*.xpi \ No newline at end of file diff --git a/packages/yoroi-connector/README.md b/packages/yoroi-connector/README.md deleted file mode 100644 index f827636944..0000000000 --- a/packages/yoroi-connector/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Yoroi dApp Connector - -This project is used only as an example application. - -All related to the dApp is moved to the folder `packages/yoroi-extension/app/connector`. - -### Testing - -1. Build the test version of the extension. (Read how to build the test app [here](../yoroi-extension/docs/TEST.md#e2e-tests)) -2. Use `npm run test:run:e2e:dApp:chrome` to run all dApp-connector related tests - -### Running dApp example page - -1. Install node modules -2. Run example for cardano network `npm run cardano` diff --git a/packages/yoroi-connector/build.js b/packages/yoroi-connector/build.js deleted file mode 100644 index 985abcdd70..0000000000 --- a/packages/yoroi-connector/build.js +++ /dev/null @@ -1,61 +0,0 @@ -const rimraf = require("rimraf"); -const fse = require('fs-extra'); -const genManifest = require('./manifest/manifest.template.js'); -const package = require('./package.json'); -const argv = require('minimist')(process.argv.slice(2)); - -rimraf.sync("./build"); -fse.mkdirSync("./build"); -fse.mkdirSync("./build/img"); - -const extensionId = argv.yoroiExtensionId; -const extensionIdHeader = `var extensionId = "${extensionId}";\r\n`; - -/// need to both copy the src file and expose the extension ID to it -function copyFileSrc(name) { - const file = `./src/${name}`; - const data = fse.readFileSync(`./src/${name}`); //read existing contents into data - const fd = fse.openSync(`./build/${name}`, 'w+'); - - // expose extension ID for build - fse.writeSync(fd, extensionIdHeader, 0, extensionIdHeader.length, 0); - // add content for file - fse.writeSync(fd, data, 0, data.length, extensionIdHeader.length); - fse.close(fd); -} - -fse.readdirSync('./src').forEach(file => copyFileSrc(file)); - -const isNightly = extensionId === 'poonlenmfdfbjfeeballhiibknlknepo'; - -const icons = isNightly - ? { - '16': 'img/nightly-16.png', - '48': 'img/nightly-48.png', - '128': 'img/nightly-128.png', - } - : { - '16': 'img/icon-16.png', - '48': 'img/icon-48.png', - '128': 'img/icon-128.png', - }; -Object.values(icons).forEach(path => fse.copyFileSync(`./${path}`, `./build/${path}`)); - -const manifest = genManifest({ - displayName: isNightly - ? 'Yoroi dApp Connector Nightly' - : 'Yoroi dApp Connector', - version: package.version, - icons: isNightly - ? { - '16': 'img/nightly-16.png', - '48': 'img/nightly-48.png', - '128': 'img/nightly-128.png', - } - : { - '16': 'img/icon-16.png', - '48': 'img/icon-48.png', - '128': 'img/icon-128.png', - }, -}); -fse.writeFileSync('./build/manifest.json', JSON.stringify(manifest, null, 2)); diff --git a/packages/yoroi-connector/example-cardano/bootstrap.js b/packages/yoroi-connector/example-cardano/bootstrap.js deleted file mode 100644 index 7934d627e8..0000000000 --- a/packages/yoroi-connector/example-cardano/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ -// A dependency graph that contains any wasm must all be imported -// asynchronously. This `bootstrap.js` file does the single async import, so -// that no one else needs to worry about it again. -import("./index.js") - .catch(e => console.error("Error importing `index.js`:", e)); diff --git a/packages/yoroi-connector/example-cardano/coreUtils.js b/packages/yoroi-connector/example-cardano/coreUtils.js deleted file mode 100644 index 8b5ed9fc6e..0000000000 --- a/packages/yoroi-connector/example-cardano/coreUtils.js +++ /dev/null @@ -1,9 +0,0 @@ -// @flow - -export function bytesToHex(bytes) { - return Buffer.from(bytes).toString('hex'); -} - -export function hexToBytes(hex) { - return Buffer.from(hex, 'hex'); -} \ No newline at end of file diff --git a/packages/yoroi-connector/example-cardano/favicon.ico b/packages/yoroi-connector/example-cardano/favicon.ico deleted file mode 100644 index 0f480dd073..0000000000 Binary files a/packages/yoroi-connector/example-cardano/favicon.ico and /dev/null differ diff --git a/packages/yoroi-connector/example-cardano/index.html b/packages/yoroi-connector/example-cardano/index.html deleted file mode 100644 index 77784a2eb2..0000000000 --- a/packages/yoroi-connector/example-cardano/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - Cardano Test dApp - - -

-
-

Cardano dApp Example

-
-
-
-
-
-
-  Request identification

- -
-
- Connected to: ABCD-1234 - -
- -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- - -
-
- -
- -
- -
-
- - - - - diff --git a/packages/yoroi-connector/example-cardano/index.js b/packages/yoroi-connector/example-cardano/index.js deleted file mode 100644 index 43586058ac..0000000000 --- a/packages/yoroi-connector/example-cardano/index.js +++ /dev/null @@ -1,1124 +0,0 @@ -import * as CardanoWasm from "@emurgo/cardano-serialization-lib-browser"; -import { textPartFromWalletChecksumImagePart } from "@emurgo/cip4-js"; -import { createIcon } from "@download/blockies"; -import { getTtl } from "./utils"; -import { Bech32Prefix } from "../../yoroi-extension/app/config/stringConfig"; -import { bytesToHex, hexToBytes } from "./coreUtils"; - -const get = (selector) => document.querySelector(selector); -const getAll = (selector) => document.querySelectorAll(selector); - -const cardanoAccessBtnRow = get("#request-button-row"); -const cardanoAuthCheck = get("#check-identification"); -const cardanoAccessBtn = get("#request-access"); -const connectionStatus = get("#connection-status"); -const walletPlateSpan = get("#wallet-plate"); -const walletIconSpan = get("#wallet-icon"); -const getUnUsedAddresses = get("#get-unused-addresses"); -const getUsedAddresses = get("#get-used-addresses"); -const getChangeAddress = get("#get-change-address"); -const getRewardAddresses = get("#get-reward-addresses"); -const getAccountBalance = get("#get-balance"); -const isEnabledBtn = get("#is-enabled"); -const getUtxos = get("#get-utxos"); -const submitTx = get("#submit-tx"); -const signTx = get("#sign-tx"); -const showUtxos = get("#show-utxos"); -const getCollateralUtxos = get("#get-collateral-utxos"); -const signData = get("#sign-data"); -const alertEl = get("#alert"); -const spinner = get("#spinner"); -const utxosContainer = get("#utxos"); -const getNFTs = get("#nfts"); -const getNetworkId = get("#get-network-id"); - -let accessGranted = false; -let cardanoApi; -let returnType = "cbor"; -let utxos; -let selectedUtxoIdx = 0; -let usedAddresses; -let unusedAddresses; -let changeAddress; -let unsignedTransactionHex; -let transactionHex; - -function isCBOR() { - return returnType === "cbor"; -} - -const mkcolor = (primary, secondary, spots) => ({ primary, secondary, spots }); -const COLORS = [ - mkcolor("#E1F2FF", "#17D1AA", "#A80B32"), - mkcolor("#E1F2FF", "#FA5380", "#0833B2"), - mkcolor("#E1F2FF", "#F06EF5", "#0804F7"), - mkcolor("#E1F2FF", "#EBB687", "#852D62"), - mkcolor("#E1F2FF", "#F59F9A", "#085F48"), -]; - -function createBlockiesIcon(seed) { - const colorIdx = hexToBytes(seed)[0] % COLORS.length; - const color = COLORS[colorIdx]; - return createIcon({ - seed, - size: 7, - scale: 5, - bgcolor: color.primary, - color: color.secondary, - spotcolor: color.spots, - }); -} - -toggleSpinner("show"); - -function onApiConnectied(api) { - toggleSpinner("hide"); - let walletDisplay = "an anonymous Yoroi Wallet"; - - api.experimental.setReturnType(returnType); - - const auth = api.experimental.auth && api.experimental.auth(); - const authEnabled = auth && auth.isEnabled(); - - if (authEnabled) { - const walletId = auth.getWalletId(); - const pubkey = auth.getWalletPubkey(); - console.log( - "Auth acquired successfully: ", - JSON.stringify({ walletId, pubkey }) - ); - const walletPlate = textPartFromWalletChecksumImagePart(walletId); - walletDisplay = `Yoroi Wallet ${walletPlate}`; - walletIconSpan.appendChild(createBlockiesIcon(walletId)); - } - - alertSuccess(`You have access to ${walletDisplay} now`); - walletPlateSpan.innerHTML = walletDisplay; - toggleConnectionUI("status"); - accessGranted = true; - window.cardanoApi = cardanoApi = api; - - api.experimental.onDisconnect(() => { - alertWarning(`Disconnected from ${walletDisplay}`); - toggleConnectionUI("button"); - walletPlateSpan.innerHTML = ""; - walletIconSpan.innerHTML = ""; - }); - - if (authEnabled) { - console.log("Testing auth signatures"); - const messageJson = JSON.stringify({ - type: "this is a random test message object", - rndValue: Math.random(), - }); - const messageHex = bytesToHex(messageJson); - console.log( - "Signing randomized message: ", - JSON.stringify({ - messageJson, - messageHex, - }) - ); - const start = performance.now(); - auth.signHexPayload(messageHex).then( - (sig) => { - const elapsed = performance.now() - start; - console.log(`Signature created in ${elapsed} ms`); - console.log("Signature received: ", sig); - console.log("Verifying signature against the message"); - auth.checkHexPayload(messageHex, sig).then( - (r) => { - console.log("Signature matches message: ", r); - }, - (e) => { - console.error("Sig check failed", e); - } - ); - }, - (err) => { - console.error("Sig failed", err); - } - ); - } -} - -function reduceWasmMultiasset(multiasset, reducer, initValue) { - let result = initValue; - if (multiasset) { - const policyIds = multiasset.keys(); - for (let i = 0; i < policyIds.len(); i++) { - const policyId = policyIds.get(i); - const assets = multiasset.get(policyId); - const assetNames = assets.keys(); - for (let j = 0; j < assetNames.len(); j++) { - const name = assetNames.get(j); - const amount = assets.get(name); - const policyIdHex = bytesToHex(policyId.to_bytes()); - const encodedName = bytesToHex(name.name()); - result = reducer(result, { - policyId: policyIdHex, - name: encodedName, - amount: amount.to_str(), - assetId: `${policyIdHex}.${encodedName}`, - }); - } - } - } - return result; -} - -cardanoAccessBtn.addEventListener("click", () => { - toggleSpinner("show"); - const requestIdentification = cardanoAuthCheck.checked; - cardano.yoroi.enable({ requestIdentification }).then( - function (api) { - onApiConnectied(api); - }, - function (err) { - toggleSpinner("hide"); - alertError(`Error: ${JSON.stringify(err)}`); - } - ); -}); - -isEnabledBtn.addEventListener("click", () => { - window.cardano.yoroi.isEnabled().then(function (isEnabled) { - alertSuccess(`Is Yoroi connection enabled: ${isEnabled}`); - }); -}); - -getNetworkId.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - } else { - toggleSpinner("show"); - cardanoApi.getNetworkId().then((networkId) => { - console.log("[getNetworkId]", networkId); - toggleSpinner("hide"); - }); - } -}); - -getAccountBalance.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - } else { - toggleSpinner("show"); - const tokenId = "*"; - cardanoApi.getBalance(tokenId).then(function (balance) { - console.log("[getBalance]", balance); - toggleSpinner("hide"); - let balanceJson = balance; - if (isCBOR()) { - if (tokenId !== "*") { - alertSuccess(`Asset Balance: ${balance} (asset: ${tokenId})`); - return; - } - const value = CardanoWasm.Value.from_bytes(hexToBytes(balance)); - balanceJson = { default: value.coin().to_str() }; - balanceJson.assets = reduceWasmMultiasset( - value.multiasset(), - (res, asset) => { - res[asset.assetId] = asset.amount; - return res; - }, - {} - ); - } - alertSuccess( - `Account Balance:
${JSON.stringify(balanceJson, null, 2)}
` - ); - }); - } -}); - -function addressesFromCborIfNeeded(addresses) { - return isCBOR() - ? addresses.map((a) => - CardanoWasm.Address.from_bytes(hexToBytes(a)).to_bech32() - ) - : addresses; -} - -function addressToCbor(address) { - return bytesToHex(CardanoWasm.Address.from_bech32(address).to_bytes()); -} - -getUnUsedAddresses.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - } else { - toggleSpinner("show"); - cardanoApi.getUnusedAddresses().then(function (addresses) { - toggleSpinner("hide"); - if (addresses.length === 0) { - alertWarning("No unused addresses"); - return; - } - addresses = addressesFromCborIfNeeded(addresses); - unusedAddresses = addresses; - alertSuccess(`Address: `); - alertEl.innerHTML = - "

Unused addresses:

" +
-        JSON.stringify(addresses, undefined, 2) +
-        "
"; - }); - } -}); - -getUsedAddresses.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - } else { - toggleSpinner("show"); - cardanoApi - .getUsedAddresses({ page: 0, limit: 5 }) - .then(function (addresses) { - toggleSpinner("hide"); - if (addresses.length === 0) { - alertWarning("No used addresses"); - return; - } - usedAddresses = addressesFromCborIfNeeded(addresses); - alertSuccess(`Address: ${usedAddresses.concat(",")}`); - alertEl.innerHTML = - "

Used addresses:

" +
-          JSON.stringify(usedAddresses, undefined, 2) +
-          "
"; - }); - } -}); - -getChangeAddress.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - } else { - toggleSpinner("show"); - cardanoApi.getChangeAddress().then(function (address) { - toggleSpinner("hide"); - if (address.length === 0) { - alertWarning("No change addresses"); - return; - } - changeAddress = addressesFromCborIfNeeded([address])[0]; - alertSuccess(`Address: `); - alertEl.innerHTML = - "

Change address:

" +
-        JSON.stringify(address, undefined, 2) +
-        "
"; - }); - } -}); - -getRewardAddresses.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - } else { - toggleSpinner("show"); - cardanoApi.getRewardAddresses().then(function (addresses) { - toggleSpinner("hide"); - if (addresses.length === 0) { - alertWarning("No change addresses"); - return; - } - addresses = addressesFromCborIfNeeded(addresses); - alertSuccess(`Address: ${addresses.concat(",")}`); - alertEl.innerHTML = - "

Reward addresses:

" +
-        JSON.stringify(addresses, undefined, 2) +
-        "
"; - }); - } -}); - -function mapCborUtxos(cborUtxos) { - return cborUtxos.map((hex) => { - const u = CardanoWasm.TransactionUnspentOutput.from_bytes(hexToBytes(hex)); - const input = u.input(); - const output = u.output(); - const txHash = bytesToHex(input.transaction_id().to_bytes()); - const txIndex = input.index(); - const value = output.amount(); - return { - utxo_id: `${txHash}${txIndex}`, - tx_hash: txHash, - tx_index: txIndex, - receiver: output.address().to_bech32(), - amount: value.coin().to_str(), - assets: reduceWasmMultiasset( - value.multiasset(), - (res, asset) => { - res.push(asset); - return res; - }, - [] - ), - }; - }); -} - -function valueRequestObjectToWasmHex(requestObj) { - const { amount, assets } = requestObj; - const result = CardanoWasm.Value.new( - CardanoWasm.BigNum.from_str(String(amount)) - ); - if (assets != null) { - if (typeof assets !== "object") { - throw "Assets is expected to be an object like `{ [policyId]: { [assetName]: amount } }`"; - } - const wmasset = CardanoWasm.MultiAsset.new(); - for (const [policyId, assets2] of Object.entries(assets)) { - if (typeof assets2 !== "object") { - throw "Assets is expected to be an object like `{ [policyId]: { [assetName]: amount } }`"; - } - const wassets = CardanoWasm.Assets.new(); - for (const [assetName, amount] of Object.entries(assets2)) { - wassets.insert( - CardanoWasm.AssetName.new(hexToBytes(assetName)), - CardanoWasm.BigNum.from_str(String(amount)) - ); - } - wmasset.insert( - CardanoWasm.ScriptHash.from_bytes(hexToBytes(policyId)), - wassets - ); - } - result.set_multiasset(wmasset); - } - return bytesToHex(result.to_bytes()); -} - -window._getUtxos = function (value) { - if (!accessGranted) { - alertError("Should request access first"); - return; - } - toggleSpinner("show"); - if (value != null && typeof value !== "string") { - value = valueRequestObjectToWasmHex(value); - } - cardanoApi.getUtxos(value).then(utxosResponse => { - toggleSpinner('hide'); - if (utxosResponse == null || utxosResponse.length === 0) { - alertWarrning('NO UTXOS'); - } else { - utxos = isCBOR() ? mapCborUtxos(utxosResponse) : utxosResponse; - alertSuccess( - `

UTxO (${utxos.length}):

` +
-          JSON.stringify(utxos, undefined, 2) +
-          "
" - ); - } - }); -}; - -getUtxos.addEventListener("click", () => { - window._getUtxos(); -}); - -submitTx.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - return; - } - if (!transactionHex) { - alertError("Should sign tx first"); - return; - } - - toggleSpinner("show"); - cardanoApi - .submitTx(transactionHex) - .then((txId) => { - toggleSpinner("hide"); - alertSuccess(`Transaction ${txId} submitted`); - }) - .catch((error) => { - toggleSpinner("hide"); - alertWarning(`Transaction submission failed: ${JSON.stringify(error)}`); - }); -}); - -const AMOUNT_TO_SEND = "1000000"; -const SEND_TO_ADDRESS = - "addr_test1qz8xh9w6f2vdnp89xzqlxnusldhz6kdm4rp970gl8swwjjkr3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0q4lztj0"; - -signTx.addEventListener("click", () => { - toggleSpinner("show"); - - if (!accessGranted) { - alertError("Should request access first"); - return; - } - - if (!unsignedTransactionHex) { - if (!utxos) { - alertError("Should request utxos first"); - return; - } - - if (!changeAddress) { - alertError("Should request change address first"); - } - - const txBuilder = CardanoWasm.TransactionBuilder.new( - CardanoWasm.TransactionBuilderConfigBuilder.new() - // all of these are taken from the mainnet genesis settings - // linear fee parameters (a*size + b) - .fee_algo( - CardanoWasm.LinearFee.new( - CardanoWasm.BigNum.from_str("44"), - CardanoWasm.BigNum.from_str("155381") - ) - ) - .coins_per_utxo_word(CardanoWasm.BigNum.from_str("34482")) - .pool_deposit(CardanoWasm.BigNum.from_str("500000000")) - .key_deposit(CardanoWasm.BigNum.from_str("2000000")) - .max_value_size(5000) - .max_tx_size(16384) - .build() - ); - - // add a keyhash input - for ADA held in a Shelley-era normal address (Base, Enterprise, Pointer) - const utxo = utxos.reduce( - (prev, curr) => BigInt(prev.amount) > BigInt(curr.amount) ? prev : curr - ); - - const assets = CardanoWasm.MultiAsset.new(); - for (const asset of utxo.assets) { - const policyId = CardanoWasm.ScriptHash.from_hex(asset.policyId); - const policyContent = assets.get(policyId) || CardanoWasm.Assets.new(); - policyContent.insert( - CardanoWasm.AssetName.new(Buffer.from(asset.name, 'hex')), - CardanoWasm.BigNum.from_str(asset.amount) - ); - assets.insert(policyId, policyContent); - } - - const addr = CardanoWasm.Address.from_bech32(utxo.receiver); - - const baseAddr = CardanoWasm.BaseAddress.from_address(addr); - const keyHash = baseAddr.payment_cred().to_keyhash(); - txBuilder.add_key_input( - keyHash, - CardanoWasm.TransactionInput.new( - CardanoWasm.TransactionHash.from_bytes(hexToBytes(utxo.tx_hash)), // tx hash - utxo.tx_index // index - ), - CardanoWasm.Value.new_with_assets( - CardanoWasm.BigNum.from_str(utxo.amount), - assets - ) - ); - - const shelleyOutputAddress = - CardanoWasm.Address.from_bech32(SEND_TO_ADDRESS); - const shelleyChangeAddress = CardanoWasm.Address.from_bech32(changeAddress); - - // add output to the tx - txBuilder.add_output( - CardanoWasm.TransactionOutput.new( - shelleyOutputAddress, - CardanoWasm.Value.new(CardanoWasm.BigNum.from_str(AMOUNT_TO_SEND)) - ) - ); - - const ttl = getTtl(); - txBuilder.set_ttl(ttl); - - // calculate the min fee required and send any change to an address - txBuilder.add_change_if_needed(shelleyChangeAddress); - - unsignedTransactionHex = bytesToHex(txBuilder.build_tx().to_bytes()); - } - - // Experimental feature, false by default, in which case only the witness set is returned. - const returnTx = true; - - cardanoApi - .signTx({ - tx: unsignedTransactionHex, - returnTx, - }) - .then((responseHex) => { - toggleSpinner("hide"); - console.log(`[signTx] response: ${responseHex}`); - - if (returnTx) { - const signedTx = CardanoWasm.Transaction.from_bytes( - hexToBytes(responseHex) - ); - const wit = signedTx.witness_set(); - - const wkeys = wit.vkeys(); - for (let i = 0; i < wkeys.len(); i++) { - const wk = wkeys.get(i); - const vk = wk.vkey(); - console.log(`[signTx] wit vkey ${i}:`, { - vkBytes: bytesToHex(vk.to_bytes()), - vkPubBech: vk.public_key().to_bech32(), - vkPubHashBech: vk - .public_key() - .hash() - .to_bech32(Bech32Prefix.PAYMENT_KEY_HASH), - }); - } - - transactionHex = responseHex; - } else { - const witnessSet = CardanoWasm.TransactionWitnessSet.from_bytes( - hexToBytes(responseHex) - ); - const tx = CardanoWasm.Transaction.from_bytes( - hexToBytes(unsignedTransactionHex) - ); - const transaction = CardanoWasm.Transaction.new( - tx.body(), - witnessSet, - tx.auxiliary_data() - ); - transactionHex = bytesToHex(transaction.to_bytes()); - } - - unsignedTransactionHex = null; - alertSuccess("Signing tx succeeded: " + transactionHex); - }) - .catch((error) => { - console.error(error); - toggleSpinner("hide"); - alertWarning("Signing tx fails"); - }); -}); -showUtxos.addEventListener("click", () => { - if (!accessGranted) { - alertError("Should request access first"); - return; - } - - if (!utxos || utxos.length === 0) { - alertError("Should request utxos first"); - return; - } - - hideAlert(); - renderUtxo(); -}); - -function alertError(text) { - toggleSpinner("hide"); - alertEl.className = "alert alert-danger overflow-auto"; - alertEl.innerHTML = text; -} - -function alertSuccess(text) { - alertEl.className = "alert alert-success overflow-auto"; - alertEl.innerHTML = text; -} - -function hideAlert() { - alertEl.className = "d-none"; - alert.innerHTML = ""; -} - -function alertWarning(text) { - alertEl.className = "alert alert-warning"; - alertEl.innerHTML = text; -} - -function toggleSpinner(status) { - if (status === "show") { - spinner.className = "spinner-border"; - alertEl.className = "d-none"; - } else { - spinner.className = "d-none"; - } -} - -function toggleConnectionUI(status) { - if (status === "button") { - connectionStatus.classList.add("d-none"); - cardanoAccessBtnRow.classList.remove("d-none"); - } else { - cardanoAccessBtnRow.classList.add("d-none"); - connectionStatus.classList.remove("d-none"); - } -} - -function selectUtxo(e) { - if (!e.target.id) { - alertError("Invalid idx"); - return; - } - selectedUtxoIdx = e.target.id; - hideAlert(); - renderUtxo(); -} - -function renderUtxo() { - let utxosHTML = ""; - for (let idx in utxos) { - const utxo = utxos[idx]; - const amountInADA = Number(utxo.amount) / 1000000; - const numOfAssets = utxo.assets.length; - - utxosHTML += ` -
  • -

    ${utxo.utxo_id.slice(0, 25)}

    -
    - ${numOfAssets ? `${utxo.assets.length} Assets` : ''} - ${amountInADA} ADA -
    -
  • - `; - } - - utxosHTML += ` - - - `; - utxosContainer.innerHTML = utxosHTML; - utxosContainer.classList.remove("d-none"); - utxosContainer.classList.add( - "d-block", - "list-group", - "list-group-numbered", - "mb-5" - ); - // Add select utxo handler for each list item - getAll(".utxo-item").forEach((el) => { - el.addEventListener("click", selectUtxo); - }); - - // Add event handler for create tx button - get("#create-tx").addEventListener("click", createTxHandler); -} - -function createTxHandler(e) { - toggleSpinner("show"); - - if (!accessGranted) { - alertError("Should request access first"); - return; - } - - if (!utxos || utxos.length === 0) { - alertError("Should request utxos first"); - return; - } - - if (!usedAddresses || usedAddresses.length === 0) { - alertError("Should request used addresses first"); - return; - } - - const selectedUtxo = utxos[selectedUtxoIdx]; - if (!selectedUtxo) { - alertError("No utxo selected"); - return; - } - - console.log("[createTx] Including random utxo input: ", selectedUtxo); - - const usedAddress = usedAddresses[0]; - const keyHash = CardanoWasm.BaseAddress.from_address( - CardanoWasm.Address.from_bech32(usedAddress) - ) - .payment_cred() - .to_keyhash(); - - const keyHashBech = keyHash.to_bech32(Bech32Prefix.PAYMENT_KEY_HASH); - - const scripts = CardanoWasm.NativeScripts.new(); - scripts.add( - CardanoWasm.NativeScript.new_script_pubkey( - CardanoWasm.ScriptPubkey.new(keyHash) - ) - ); - scripts.add( - CardanoWasm.NativeScript.new_timelock_start( - CardanoWasm.TimelockStart.new(42) - ) - ); - - const mintScript = CardanoWasm.NativeScript.new_script_all( - CardanoWasm.ScriptAll.new(scripts) - ); - const mintScriptHex = bytesToHex(mintScript.to_bytes()); - - function convertAssetNameToHEX(name) { - return bytesToHex(name); - } - - const tokenAssetName = "V42"; - const nftAssetName = `V42/NFT#${Math.floor(Math.random() * 1000000000)}`; - const tokenAssetNameHex = convertAssetNameToHEX(tokenAssetName); - const nftAssetNameHex = convertAssetNameToHEX(nftAssetName); - - const expectedPolicyId = bytesToHex(mintScript.hash().to_bytes()); - - console.log("[createTx] Including mint request: ", { - keyHashBech, - mintScriptHex, - assetNameHex: tokenAssetNameHex, - expectedPolicyId, - }); - - let receiver = get('#create-tx-receiver').value || selectedUtxo.receiver; - const outputHex = bytesToHex( - CardanoWasm.TransactionOutput.new( - CardanoWasm.Address.from_bech32(receiver), - CardanoWasm.Value.new(CardanoWasm.BigNum.from_str("1000000")) - ).to_bytes() - ); - - const includeInputs = []; - const includeOutputs = []; - const includeTargets = []; - - let targetAddress = receiver; - let targetDataHash = null; - - /****** FLAGS ******/ - let includeDefaultInputs = true; - let includeDefaultOutputs = true; - let includeDefaultTargets = true; - let includeAssetTargets = true; - //-----------------// - const nativeScriptInputUtxoId = null; - const plutusScriptInputUtxoId = null; - const createPlutusTarget = false; - /****** ******/ - - if (includeDefaultInputs) { - includeInputs.push(selectedUtxo.utxo_id); - } - - // noinspection StatementWithEmptyBodyJS - if (includeDefaultOutputs) { - includeOutputs.push(outputHex); - } - - // noinspection PointlessBooleanExpressionJS - if (nativeScriptInputUtxoId != null) { - const nscripts = CardanoWasm.NativeScripts.new(); - nscripts.add( - CardanoWasm.NativeScript.new_timelock_start( - CardanoWasm.TimelockStart.new(1234) - ) - ); - nscripts.add( - CardanoWasm.NativeScript.new_timelock_start( - CardanoWasm.TimelockStart.new(1) - ) - ); - const nativeScript = CardanoWasm.NativeScript.new_script_all( - CardanoWasm.ScriptAll.new(nscripts) - ); - - const scriptHash = nativeScript.hash(); - console.log( - `[createTx] Native script hash: ${bytesToHex(scriptHash.to_bytes())}` - ); - const nativeScriptAddress = CardanoWasm.EnterpriseAddress.new( - 0, - CardanoWasm.StakeCredential.from_scripthash(scriptHash) - ) - .to_address() - .to_bech32(); - console.log(`[createTx] Native script address: ${nativeScriptAddress}`); - - includeInputs.push({ - id: nativeScriptInputUtxoId, - witness: { - nativeScript: bytesToHex(nativeScript.to_bytes()), - }, - }); - } - - // noinspection PointlessBooleanExpressionJS - if (plutusScriptInputUtxoId != null || createPlutusTarget) { - const plutusScript = CardanoWasm.PlutusScript.from_bytes( - hexToBytes("4e4d01000033222220051200120011") - ); - - const plutusScriptHash = plutusScript.hash(); - console.log( - `[createTx] Plutus script hash: ${bytesToHex( - plutusScriptHash.to_bytes() - )}` - ); - const plutusScriptAddress = CardanoWasm.EnterpriseAddress.new( - 0, - CardanoWasm.StakeCredential.from_scripthash(plutusScriptHash) - ) - .to_address() - .to_bech32(); - console.log(`[createTx] Plutus script address: ${plutusScriptAddress}`); - - const datum = CardanoWasm.PlutusData.new_empty_constr_plutus_data( - CardanoWasm.BigNum.zero() - ); - const datumHash = bytesToHex( - CardanoWasm.hash_plutus_data(datum).to_bytes() - ); - console.log(`[createTx] Plutus datum hash: ${datumHash}`); - - if (createPlutusTarget) { - targetAddress = plutusScriptAddress; - targetDataHash = datumHash; - } - - // noinspection PointlessBooleanExpressionJS - if (plutusScriptInputUtxoId != null) { - const redeemer = CardanoWasm.Redeemer.new( - CardanoWasm.RedeemerTag.new_spend(), - CardanoWasm.BigNum.zero(), - CardanoWasm.PlutusData.new_empty_constr_plutus_data( - CardanoWasm.BigNum.zero() - ), - CardanoWasm.ExUnits.new( - CardanoWasm.BigNum.from_str("1700"), - CardanoWasm.BigNum.from_str("476468") - ) - ); - - includeInputs.push({ - id: plutusScriptInputUtxoId, - witness: { - plutusScript: bytesToHex(plutusScript.to_bytes()), - datum: bytesToHex(datum.to_bytes()), - redeemer: bytesToHex(redeemer.to_bytes()), - }, - }); - } - } - - if (includeDefaultTargets) { - includeTargets.push({ - address: targetAddress, - value: "2000000", - dataHash: targetDataHash, - mintRequest: [ - { - script: mintScriptHex, - assetName: tokenAssetNameHex, - amount: "42", - }, - { - script: mintScriptHex, - storeScriptOnChain: true, - assetName: nftAssetNameHex, - metadata: { - tag: 721, - json: JSON.stringify({ - name: nftAssetName, - description: `V42 NFT Collection`, - mediaType: "image/png", - image: "ipfs://QmRhTTbUrPYEw3mJGGhQqQST9k86v1DPBiTTWJGKDJsVFw", - files: [ - { - name: nftAssetName, - mediaType: "image/png", - src: "ipfs://QmRhTTbUrPYEw3mJGGhQqQST9k86v1DPBiTTWJGKDJsVFw", - }, - ], - }), - }, - }, - ], - }); - } - - const txReq = { - validityIntervalStart: 2000, - includeInputs, - includeOutputs, - includeTargets, - }; - - if (includeAssetTargets) { - const utxosWithAssets = utxos.filter((u) => u.assets.length > 0); - const utxoWithAssets = - utxosWithAssets[Math.floor(Math.random() * utxosWithAssets.length)]; - - if (utxoWithAssets) { - const asset = utxoWithAssets.assets[0]; - console.log("[createTx] Including asset:", asset); - txReq.includeTargets.push({ - // do not specify value, the connector will use minimum value - address: receiver, - assets: { - [asset.assetId]: "1", - }, - ensureRequiredMinimalValue: true, - }); - } - } - - cardanoApi.experimental - .createTx(txReq, true) - .then((txHex) => { - const createdTx = CardanoWasm.Transaction.from_bytes(Buffer.from(txHex, 'hex')); - // add `keyHash`, which is one of the conditions of the witness script, to - // required signers list of the created tx, so that later the sign tx API will - // sign with this key - const createdBody = createdTx.body(); - const requiredSigners = CardanoWasm.Ed25519KeyHashes.new(); - requiredSigners.add(keyHash); - createdBody.set_required_signers(requiredSigners); - const newTx = CardanoWasm.Transaction.new( - createdBody, - createdTx.witness_set(), - createdTx.auxiliary_data(), - ); - - toggleSpinner("hide"); - alertSuccess(`

    Creating tx succeeds: ${txHex}

    `); - unsignedTransactionHex = newTx.to_hex(); - }) - .catch((error) => { - console.error(error); - toggleSpinner("hide"); - alertWarning("Creating tx fails"); - }); -} - -getCollateralUtxos.addEventListener("click", () => { - toggleSpinner("show"); - - if (!accessGranted) { - alertError("Should request access first"); - return; - } - - const amount = "4900000"; - cardanoApi - .getCollateralUtxos( - Buffer.from( - CardanoWasm.Value.new(CardanoWasm.BigNum.from_str(amount)).to_bytes() - ).toString("hex") - ) - .then(utxosResponse => { - toggleSpinner('hide'); - if (utxosResponse == null || utxosResponse.length === 0) { - alertWarrning('NO COLLATERAL UTXOS'); - } else { - let utxos = isCBOR() ? mapCborUtxos(utxosResponse) : utxosResponse; - alertSuccess( - `

    Collateral UTxO (${utxos.length}):

    ` +
    -          JSON.stringify(utxos, undefined, 2) +
    -          '
    ' - ); - } - }) - .catch((error) => { - console.error(error); - toggleSpinner("hide"); - alertWarning( - `Getting collateral UTXOs tx fails: ${JSON.stringify(error)}` - ); - }); -}); - -signData.addEventListener("click", () => { - toggleSpinner("show"); - - if (!accessGranted) { - alertError("Should request access first"); - return; - } - - let address; - if (usedAddresses && usedAddresses.length > 0) { - address = usedAddresses[0]; - } else if (unusedAddresses && unusedAddresses.length > 0) { - address = unusedAddresses[0]; - } else { - alertError("Should request used or unused addresses first"); - return; - } - - if (isCBOR()) { - address = addressToCbor(address); - } - - const payload = get("#sign-data-payload").value; - let payloadHex; - if (payload.startsWith("0x")) { - payloadHex = Buffer.from(payload.replace("^0x", ""), "hex").toString("hex"); - } else { - payloadHex = Buffer.from(payload, "utf8").toString("hex"); - } - - console.log("[signData][address] ", address); - cardanoApi - .signData(address, payloadHex) - .then((sig) => { - alertSuccess("Signature:" + JSON.stringify(sig)); - }) - .catch((error) => { - console.error(error); - alertError(error.info); - }) - .then(() => { - toggleSpinner("hide"); - }); -}); - -getNFTs.addEventListener("click", async () => { - toggleSpinner("show"); - - if (!accessGranted) { - alertError("Should request access first"); - return; - } - - try { - const response = await cardanoApi.experimental.listNFTs(); - renderJonsResponse(`NFTs (${Object.keys(response).length})`, response); - } catch (error) { - console.error(error); - alertError(error.message); - } - toggleSpinner("hide"); -}); - -function renderJonsResponse(title, response) { - alertSuccess( - `

    ${title}:

    ` +
    -      JSON.stringify(response, undefined, 2) +
    -      "
    " - ); -} - -const onload = () => { - if (typeof window.cardano === "undefined") { - alertError("Cardano API not found"); - } else { - console.log("Cardano API detected, checking connection status"); - cardano.yoroi - .enable({ requestIdentification: true, onlySilent: true }) - .then( - (api) => { - console.log("successful silent reconnection"); - onApiConnectied(api); - }, - (err) => { - if (String(err).includes("onlySilent:fail")) { - console.log("no silent re-connection available"); - } else { - console.error( - "Silent reconnection failed for unknown reason!", - err - ); - } - toggleSpinner("hide"); - toggleConnectionUI("button"); - } - ); - } -}; - -setTimeout(onload, 100); diff --git a/packages/yoroi-connector/example-cardano/package-lock.json b/packages/yoroi-connector/example-cardano/package-lock.json deleted file mode 100644 index 0ea367687a..0000000000 --- a/packages/yoroi-connector/example-cardano/package-lock.json +++ /dev/null @@ -1,6618 +0,0 @@ -{ - "name": "test-cardano-dapp", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "test-cardano-dapp", - "version": "0.1.0", - "dependencies": { - "@download/blockies": "1.0.3", - "@emurgo/cip4-js": "1.0.6", - "bignumber.js": "9.0.1" - }, - "bin": { - "test-cardano-dapp": ".bin/test-cardano-dapp.js" - }, - "devDependencies": { - "@emurgo/cardano-serialization-lib-browser": "11.1.1-alpha.1", - "copy-webpack-plugin": "^5.0.0", - "webpack": "^4.29.3", - "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.5" - } - }, - "node_modules/@download/blockies": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@download/blockies/-/blockies-1.0.3.tgz", - "integrity": "sha512-iGDh2M6pFuXg9kyW+U//963LKylSLFpLG5hZvUppCjhkiDwsYquQPyamxCQlLASYySS3gGKAki2eWG9qIHKCew==" - }, - "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.1.1-alpha.1", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.1.1-alpha.1.tgz", - "integrity": "sha512-R/pVuu9fvnL11eUJ/5O9UDKhwSsAZKlEqKl2hfDoq69giBcsrlFohVrhZFiDt6Nuyic9k5XfsNMCXjYxKJJ3qQ==", - "dev": true - }, - "node_modules/@emurgo/cip4-js": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@emurgo/cip4-js/-/cip4-js-1.0.6.tgz", - "integrity": "sha512-8fM3LeK1USLsECSHd+6Rj+RV306pQmZ35LtC7jHHM7V7dMfUE8B4r/rFSoYUjNU/58T/8+Hgt0QhjEYDWMviwQ==", - "dependencies": { - "blake2b": "2.1.3", - "buffer-crc32": "0.2.13", - "fnv-plus": "1.3.1" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", - "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "optional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", - "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.4", - "util": "^0.10.4" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", - "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/blake2b": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", - "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", - "dependencies": { - "blake2b-wasm": "^1.1.0", - "nanoassert": "^1.0.0" - } - }, - "node_modules/blake2b-wasm": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", - "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", - "dependencies": { - "nanoassert": "^1.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "optional": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dev": true, - "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/cyclist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", - "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", - "dev": true - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dev": true, - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "deprecated": "This module is no longer supported.", - "dev": true - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/fnv-plus": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz", - "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==" - }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true - }, - "node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-data-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "dev": true, - "optional": true - }, - "node_modules/nanoassert": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", - "integrity": "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==" - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.1", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sockjs-client/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "dev": true - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "dev": true - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "dev": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.2" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", - "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "peerDependencies": { - "webpack": "4.x.x" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-log/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } -} diff --git a/packages/yoroi-connector/example-cardano/package.json b/packages/yoroi-connector/example-cardano/package.json deleted file mode 100644 index 7e0674079d..0000000000 --- a/packages/yoroi-connector/example-cardano/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "test-cardano-dapp", - "version": "0.1.0", - "description": "test dApp to interact with the Yoroi dApp Connector", - "main": "index.js", - "bin": { - "test-cardano-dapp": ".bin/test-cardano-dapp.js" - }, - "scripts": { - "build": "webpack --config webpack.config.js", - "start": "webpack-dev-server" - }, - "devDependencies": { - "@emurgo/cardano-serialization-lib-browser": "11.1.1-alpha.1", - "webpack": "^4.29.3", - "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.5", - "copy-webpack-plugin": "^5.0.0" - }, - "dependencies": { - "@emurgo/cip4-js": "1.0.6", - "@download/blockies": "1.0.3", - "bignumber.js": "9.0.1" - } -} diff --git a/packages/yoroi-connector/example-cardano/subpage.html b/packages/yoroi-connector/example-cardano/subpage.html deleted file mode 100644 index 7d58463526..0000000000 --- a/packages/yoroi-connector/example-cardano/subpage.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Cardano Test dApp - - -
    -
    -

    Cardano dApp Example / Cardano

    -
    -
    -
    -
    -
    -
    -  Request identification

    - -
    -
    - Connected to: ABCD-1234 - -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - Go back to main page -
    - -
    - - - - - diff --git a/packages/yoroi-connector/example-cardano/utils.js b/packages/yoroi-connector/example-cardano/utils.js deleted file mode 100644 index 10e3fd7fba..0000000000 --- a/packages/yoroi-connector/example-cardano/utils.js +++ /dev/null @@ -1,122 +0,0 @@ -import BigNumber from 'bignumber.js'; - -export function getTtl() { - const fullConfig = [ - { - "StartAt": 0, - "ChainNetworkId": "0", - "ByronNetworkId": 1097911063, - "GenesisDate": "1563999616000", - "SlotsPerEpoch": 21600, - "SlotDuration": 20 - }, - { - "StartAt": 74, - "SlotsPerEpoch": 432000, - "SlotDuration": 1, - "PerEpochPercentageReward": 69344, - "LinearFee": { - "coefficient": "44", - "constant": "155381" - }, - "MinimumUtxoVal": "1000000", - "PoolDeposit": "500000000", - "KeyDeposit": "2000000" - } - ] - /* mainnet: - const fullConfig = [ - { - "StartAt": 0, - "ChainNetworkId": "1", - "ByronNetworkId": 764824073, - "GenesisDate": "1506203091000", - "SlotsPerEpoch": 21600, - "SlotDuration": 20 - }, - { - "StartAt": 208, - "SlotsPerEpoch": 432000, - "SlotDuration": 1, - "PerEpochPercentageReward": 69344, - "LinearFee": { - "coefficient": "44", - "constant": "155381" - }, - "MinimumUtxoVal": "1000000", - "PoolDeposit": "500000000", - "KeyDeposit": "2000000" - } - ] - */ - const defaultTtlOffset = 7200; - const timeToSlot = genTimeToSlot(fullConfig); - const absSlotNumber = new BigNumber(timeToSlot({ - time: new Date(), - }).slot); - - return absSlotNumber.plus(defaultTtlOffset).toNumber(); -} - -function genTimeToSlot( - config/*: $ReadOnlyArray<$ReadOnly<{ - StartAt?: number, - GenesisDate?: string, - SlotsPerEpoch?: number, - SlotDuration?: number, - ..., - }>>*/, -)/*: TimeToAbsoluteSlotFunc */ { - return (request/*: TimeToAbsoluteSlotRequest*/) => { - const { GenesisDate, } = config[0]; - if (GenesisDate == null) throw new Error(`${nameof(genTimeToSlot)} missing genesis params`); - let SlotDuration = config[0].SlotDuration; - let SlotsPerEpoch = config[0].SlotsPerEpoch; - let timeLeftToTip = ( - request.time.getTime() - new Date(Number.parseInt(GenesisDate, 10)).getTime() - ); - let slotCount = 0; - - // for pairs of config changes (x, x+1), get the time between these pairs - for (let i = 0; i < config.length - 1; i++) { - const start = config[i].StartAt; - if (start === undefined) { - throw new Error(`${nameof(genTimeToSlot)} missing start`); - } - const end = config[i + 1].StartAt; - if (end === undefined) { - throw new Error(`${nameof(genTimeToSlot)} missing end`); - } - const numEpochs = end - start; - - if (SlotDuration == null || SlotsPerEpoch == null) throw new Error(`${nameof(genTimeToSlot)} missing params`); - - // queried time is before the next protocol parameter choice - if (timeLeftToTip < (SlotsPerEpoch * SlotDuration * 1000) * numEpochs) { - break; - } - slotCount += SlotsPerEpoch * numEpochs; - timeLeftToTip -= (SlotsPerEpoch * SlotDuration * 1000) * numEpochs; - - if (config[i + 1].SlotDuration !== undefined) { - SlotDuration = config[i + 1].SlotDuration; - } - if (config[i + 1].SlotsPerEpoch !== undefined) { - SlotsPerEpoch = config[i + 1].SlotsPerEpoch; - } - } - - if (SlotDuration == null || SlotsPerEpoch == null) throw new Error(`${nameof(genTimeToSlot)} missing params`); - - // find how many slots since the last update - const secondsSinceLastUpdate = timeLeftToTip / 1000; - slotCount += Math.floor(secondsSinceLastUpdate / SlotDuration); - - const msIntoSlot = timeLeftToTip % 1000; - const secondsIntoSlot = secondsSinceLastUpdate % SlotDuration; - return { - slot: slotCount, - msIntoSlot: (1000 * secondsIntoSlot) + msIntoSlot, - }; - }; -} diff --git a/packages/yoroi-connector/example-cardano/webpack.config.js b/packages/yoroi-connector/example-cardano/webpack.config.js deleted file mode 100644 index 3ccc8345c5..0000000000 --- a/packages/yoroi-connector/example-cardano/webpack.config.js +++ /dev/null @@ -1,14 +0,0 @@ -const CopyWebpackPlugin = require("copy-webpack-plugin"); -const path = require('path'); - -module.exports = { - entry: "./bootstrap.js", - output: { - path: path.resolve(__dirname, "dist"), - filename: "bootstrap.js", - }, - mode: "development", - plugins: [ - new CopyWebpackPlugin(['index.html', 'favicon.ico']) - ], -}; diff --git a/packages/yoroi-connector/img/favicon_erg-nightly.svg b/packages/yoroi-connector/img/favicon_erg-nightly.svg deleted file mode 100644 index 5c9fdb9805..0000000000 --- a/packages/yoroi-connector/img/favicon_erg-nightly.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - favicon/erg-nightly - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-connector/img/favicon_erg.svg b/packages/yoroi-connector/img/favicon_erg.svg deleted file mode 100644 index 6078272670..0000000000 --- a/packages/yoroi-connector/img/favicon_erg.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - favicon/erg - - - - \ No newline at end of file diff --git a/packages/yoroi-connector/img/icon-128.png b/packages/yoroi-connector/img/icon-128.png deleted file mode 100644 index 6316dbf230..0000000000 Binary files a/packages/yoroi-connector/img/icon-128.png and /dev/null differ diff --git a/packages/yoroi-connector/img/icon-16.png b/packages/yoroi-connector/img/icon-16.png deleted file mode 100644 index 4dcb697a75..0000000000 Binary files a/packages/yoroi-connector/img/icon-16.png and /dev/null differ diff --git a/packages/yoroi-connector/img/icon-48.png b/packages/yoroi-connector/img/icon-48.png deleted file mode 100644 index c9baeec561..0000000000 Binary files a/packages/yoroi-connector/img/icon-48.png and /dev/null differ diff --git a/packages/yoroi-connector/img/nightly-128.png b/packages/yoroi-connector/img/nightly-128.png deleted file mode 100644 index 8e2082e5d9..0000000000 Binary files a/packages/yoroi-connector/img/nightly-128.png and /dev/null differ diff --git a/packages/yoroi-connector/img/nightly-16.png b/packages/yoroi-connector/img/nightly-16.png deleted file mode 100644 index fbf1cd7e47..0000000000 Binary files a/packages/yoroi-connector/img/nightly-16.png and /dev/null differ diff --git a/packages/yoroi-connector/img/nightly-48.png b/packages/yoroi-connector/img/nightly-48.png deleted file mode 100644 index 78a726be4c..0000000000 Binary files a/packages/yoroi-connector/img/nightly-48.png and /dev/null differ diff --git a/packages/yoroi-connector/manifest/manifest.template.js b/packages/yoroi-connector/manifest/manifest.template.js deleted file mode 100644 index 5edc695679..0000000000 --- a/packages/yoroi-connector/manifest/manifest.template.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = ({ - displayName, - version, - icons, -}) => ({ - "name": displayName, - "version": version, - "description": "Allows the Yoroi extension to interface with dApps", - "background": { - "scripts": ["background.js"], - "persistent": false - }, - "content_scripts": [ - { - "matches": [ - "file://*/*", - "http://*/*", - "https://*/*" - ], - "js": [ - "inject.js" - ], - "run_at": "document_start", - "all_frames": true - } - ], - icons, - "manifest_version": 2, - "browser_action": { - "default_title": displayName, - default_icon: icons, - }, - "content_security_policy": "default-src 'none'; script-src 'self';" -}); diff --git a/packages/yoroi-connector/package-lock.json b/packages/yoroi-connector/package-lock.json deleted file mode 100644 index 470a2dc732..0000000000 --- a/packages/yoroi-connector/package-lock.json +++ /dev/null @@ -1,694 +0,0 @@ -{ - "name": "yoroi-connector", - "version": "0.8.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "yoroi-connector", - "version": "0.8.0", - "devDependencies": { - "crx": "5.0.1", - "fs-extra": "9.1.0", - "minimist": "1.2.5", - "rimraf": "3.0.2" - } - }, - "node_modules/archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^2.6.3", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/compress-commons/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/compress-commons/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "dependencies": { - "buffer": "^5.1.0" - } - }, - "node_modules/crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", - "dev": true, - "dependencies": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/crx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/crx/-/crx-5.0.1.tgz", - "integrity": "sha512-n/PzBx/fR1+xZCiJBats9y5zw/a+YBcoJ0ABnUaY56xb1RpXuFhsiCMpNY6WjVtylLzhUUXSWsbitesVg7v2vg==", - "dev": true, - "dependencies": { - "archiver": "^3.0.3", - "commander": "^2.20.0", - "node-rsa": "^1.0.5", - "pbf": "^3.2.0" - }, - "bin": { - "crx": "src/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/node-rsa": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", - "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", - "dev": true, - "dependencies": { - "asn1": "^0.2.4" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pbf": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", - "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", - "dev": true, - "dependencies": { - "ieee754": "^1.1.12", - "resolve-protobuf-schema": "^2.1.0" - }, - "bin": { - "pbf": "bin/pbf" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/resolve-protobuf-schema": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", - "dev": true, - "dependencies": { - "protocol-buffers-schema": "^3.3.1" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 6" - } - } - } -} diff --git a/packages/yoroi-connector/package.json b/packages/yoroi-connector/package.json deleted file mode 100644 index c31c3dcb00..0000000000 --- a/packages/yoroi-connector/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "yoroi-connector", - "version": "0.8.0", - "description": "", - "scripts": { - "keygen": "crx keygen", - "cardano": "npm start --prefix example-cardano", - "prod:compress": "node ../../scripts/compress", - "prod:custom": "node ./build.js", - "prod:nightly": "npm run prod:custom -- --yoroiExtensionId=poonlenmfdfbjfeeballhiibknlknepo && npm run prod:compress -- --env 'nightly' --app-id 'yoroi-connector-nightly' --zip-only --codebase 'https://yoroiwallet.com/dw/yoroi-ergo-connector-nightly.crx' --key ./keys/nightly-key.pem", - "prod:stable": "npm run prod:custom -- --yoroiExtensionId=ffnbelfdoeiohenkjibnmadjiehjhajb && npm run prod:compress -- --env '' --app-id 'yoroi-connector' --zip-only --codebase 'https://yoroiwallet.com/dw/yoroi-ergo-connector.crx' --key ./keys/production-key.pem" - }, - "devDependencies": { - "crx": "5.0.1", - "fs-extra": "9.1.0", - "minimist": "1.2.5", - "rimraf": "3.0.2" - } -} diff --git a/packages/yoroi-extension/.babelrc.js b/packages/yoroi-extension/.babelrc.js index ef5c4f527d..d00a7b5260 100644 --- a/packages/yoroi-extension/.babelrc.js +++ b/packages/yoroi-extension/.babelrc.js @@ -10,7 +10,6 @@ const nodePlugins = { ['module-resolver', { alias: { 'cardano-wallet-browser': 'cardano-wallet', - '@emurgo/js-chain-libs': '@emurgo/js-chain-libs-node', '@emurgo/cardano-serialization-lib-browser': '@emurgo/cardano-serialization-lib-nodejs', '@emurgo/cardano-message-signing-browser': '@emurgo/cardano-message-signing-nodejs', '@emurgo/cross-csl-browser': '@emurgo/cross-csl-nodejs', @@ -45,7 +44,7 @@ module.exports = function (api /*: ApiType */) /*: * */ { plugins: [ '@babel/plugin-proposal-nullish-coalescing-operator', '@babel/plugin-proposal-optional-chaining', - 'nameof-js', + 'babel-plugin-ts-nameof', [ '@babel/plugin-proposal-decorators', { @@ -76,7 +75,6 @@ module.exports = function (api /*: ApiType */) /*: * */ { '@babel/plugin-proposal-export-namespace-from', ], env: { - cucumber: nodePlugins, test: nodePlugins, jest: nodePlugins, } diff --git a/packages/yoroi-extension/.eslintignore b/packages/yoroi-extension/.eslintignore index 6367f4b6d5..44b1080348 100644 --- a/packages/yoroi-extension/.eslintignore +++ b/packages/yoroi-extension/.eslintignore @@ -1,3 +1,11 @@ -node_modules -/chrome/content-scripts +ampli +build +chrome/content-scripts +config +dev +docs +flow flow-typed +ledger +node_modules +translations diff --git a/packages/yoroi-extension/.eslintrc.js b/packages/yoroi-extension/.eslintrc.js index 5cddf7290f..1f5ac1a54f 100644 --- a/packages/yoroi-extension/.eslintrc.js +++ b/packages/yoroi-extension/.eslintrc.js @@ -25,7 +25,7 @@ module.exports = { 'comma-dangle': 'off', 'generator-star-spacing': 'off', 'import/no-unresolved': ['error', { - ignore: ['js-chain-libs', 'cardano-wallet-browser'] + ignore: ['cardano-wallet-browser'] }], 'import/no-extraneous-dependencies': 'off', 'import/no-dynamic-require': 'off', @@ -66,6 +66,7 @@ module.exports = { 'react/state-in-constructor': ['warn', 'never'], 'react/jsx-props-no-spreading': 0, 'react/jsx-curly-newline': 0, + 'react/jsx-tag-spacing': 0, 'class-methods-use-this': 0, 'no-continue': 0, 'no-duplicate-imports': 0, @@ -86,7 +87,7 @@ module.exports = { 'arrow-body-style': 0, 'key-spacing': 1, 'no-empty-function': 1, - 'max-len': ['warn', { code: 120 }], + 'max-len': 0, 'no-useless-escape': 1, 'prefer-const': 1, 'object-curly-spacing': 1, @@ -111,6 +112,9 @@ module.exports = { 2, { object: 'TrezorConnect', message: 'Use TrezorWrapper instead to minimize Trezor iframe lifespan', }, ], + 'import/no-unused-modules': [1, { unusedExports: true }], + 'camelcase': 0, + 'react/jsx-curly-brace-presence': 0, }, plugins: [ 'import', diff --git a/packages/yoroi-extension/app/App.js b/packages/yoroi-extension/app/App.js index 12aa34f154..d673c45e94 100644 --- a/packages/yoroi-extension/app/App.js +++ b/packages/yoroi-extension/app/App.js @@ -10,7 +10,6 @@ import { Routes } from './Routes'; import { locales, translations } from './i18n/translations'; import type { StoresMap } from './stores'; import type { ActionsMap } from './actions'; -import { changeToplevelTheme, MuiThemes } from './styles/utils'; import ThemeManager from './ThemeManager'; import environment from './environment'; import MaintenancePage from './containers/MaintenancePage'; @@ -21,6 +20,7 @@ import { ColorModeProvider } from './styles/context/mode'; import { CssBaseline } from '@mui/material'; import { globalStyles } from './styles/globalStyles'; import Support from './components/widgets/Support'; +import { changeToplevelTheme, MuiThemes } from './styles/themes'; // https://github.com/yahoo/react-intl/wiki#loading-locale-data addLocaleData(locales); diff --git a/packages/yoroi-extension/app/Routes.js b/packages/yoroi-extension/app/Routes.js index 84f5eed0ed..1f2f97ffa8 100644 --- a/packages/yoroi-extension/app/Routes.js +++ b/packages/yoroi-extension/app/Routes.js @@ -2,7 +2,7 @@ import type { Node } from 'react'; import type { StoresMap } from './stores/index'; import type { ActionsMap } from './actions/index'; -import type { StoresAndActionsProps } from './types/injectedPropsType'; +import type { StoresAndActionsProps } from './types/injectedProps.types'; import type { ConfigType } from '../config/config-types'; import { Route, Redirect, Switch } from 'react-router-dom'; import { ROUTES } from './routes-config'; @@ -29,6 +29,9 @@ import SwapPageContainer from './containers/swap/SwapPageContainer'; import AssetsWrapper from './containers/wallet/AssetsWrapper'; import NFTsWrapper from './containers/wallet/NFTsWrapper'; import SwapProvider from './containers/swap/SwapProvider'; +import { Stack } from '@mui/material'; +import LoadingSpinner from './components/widgets/LoadingSpinner'; +import FullscreenLayout from './components/layout/FullscreenLayout'; // PAGES const LanguageSelectionPagePromise = () => import('./containers/profile/LanguageSelectionPage'); @@ -93,9 +96,6 @@ const StakingDashboardPage = React.lazy(StakingDashboardPagePromise); const CardanoStakingPagePromise = () => import('./containers/wallet/staking/CardanoStakingPage'); const CardanoStakingPage = React.lazy(CardanoStakingPagePromise); -const NoticeBoardPagePromise = () => import('./containers/notice-board/NoticeBoardPage'); -const NoticeBoardPage = React.lazy(NoticeBoardPagePromise); - const ComplexityLevelSettingsPagePromise = () => import('./containers/settings/categories/ComplexityLevelSettingsPage'); const ComplexityLevelSettingsPage = React.lazy(ComplexityLevelSettingsPagePromise); @@ -134,6 +134,9 @@ const SwapPage = React.lazy(SwapPagePromise); const SwapOrdersPagePromise = () => import('./containers/swap/orders/OrdersPage'); const SwapOrdersPage = React.lazy(SwapOrdersPagePromise); +const ExchangeEndPagePromise = () => import('./containers/ExchangeEndPage'); +const ExchangeEndPage = React.lazy(ExchangeEndPagePromise); + export const LazyLoadPromises: Array<() => any> = [ AddAnotherWalletPromise, StakingPageContentPromise, @@ -159,7 +162,6 @@ export const LazyLoadPromises: Array<() => any> = [ ReceivePromise, StakingDashboardPagePromise, CardanoStakingPagePromise, - NoticeBoardPagePromise, VotingPageContentPromise, ComplexityLevelSettingsPagePromise, ComplexityLevelPagePromise, @@ -176,12 +178,12 @@ export const LazyLoadPromises: Array<() => any> = [ SwapOrdersPagePromise, OptForAnalyticsPagePromise, AnalyticsSettingsPagePromise, + ExchangeEndPagePromise, ]; // populated by ConfigWebpackPlugin declare var CONFIG: ConfigType; -/* eslint-disable max-len */ export const Routes = (stores: StoresMap, actions: ActionsMap): Node => ( @@ -301,11 +303,6 @@ export const Routes = (stores: StoresMap, actions: ActionsMap): Node => ( path={ROUTES.OAUTH_FROM_EXTERNAL.DROPBOX} component={props => } /> - } - /> ( path={ROUTES.REVAMP.CATALYST_VOTING} component={props => } /> + } + /> @@ -474,11 +476,18 @@ const NFTsSubPages = (stores, actions) => ( export function wrapSwap(swapProps: StoresAndActionsProps, children: Node): Node { const queryClient = new QueryClient(); + const loader = ( + + + + + + ); return ( - {children} + {children} diff --git a/packages/yoroi-extension/app/actions/ada/hw-connect-actions.js b/packages/yoroi-extension/app/actions/ada/hw-connect-actions.js index 1e2201ecf8..ceb51eec02 100644 --- a/packages/yoroi-extension/app/actions/ada/hw-connect-actions.js +++ b/packages/yoroi-extension/app/actions/ada/hw-connect-actions.js @@ -1,6 +1,5 @@ // @flow import { AsyncAction, Action } from '../lib/Action'; -import type { RestoreModeType } from '../common/wallet-restore-actions'; // ======= HARDWARE WALLET CONNECT ACTIONS ======= @@ -8,7 +7,6 @@ export default class HWConnectActions { init: Action = new Action(); cancel: Action = new Action(); submitCheck: Action = new Action(); - setMode: Action = new Action(); goBackToCheck: Action = new Action(); submitConnect: AsyncAction = new AsyncAction(); submitSave: AsyncAction = new AsyncAction(); diff --git a/packages/yoroi-extension/app/actions/ada/index.js b/packages/yoroi-extension/app/actions/ada/index.js index e1313b72d0..bea5ee7284 100644 --- a/packages/yoroi-extension/app/actions/ada/index.js +++ b/packages/yoroi-extension/app/actions/ada/index.js @@ -1,6 +1,5 @@ // @flow import AdaWalletsActions from './ada-wallets-actions'; -import PaperWalletsActions from './paper-wallets-actions'; import HWConnectActions from './hw-connect-actions'; import TrezorSendActions from './trezor-send-actions'; import LedgerSendActions from './ledger-send-actions'; @@ -10,7 +9,6 @@ import VotingActions from './voting-actions'; export type AdaActionsMap = {| wallets: AdaWalletsActions, - paperWallets: PaperWalletsActions, trezorConnect: HWConnectActions, trezorSend: TrezorSendActions, ledgerConnect: HWConnectActions, @@ -22,7 +20,6 @@ export type AdaActionsMap = {| const adaActionsMap: AdaActionsMap = Object.freeze({ wallets: new AdaWalletsActions(), - paperWallets: new PaperWalletsActions(), trezorConnect: new HWConnectActions(), trezorSend: new TrezorSendActions(), ledgerConnect: new HWConnectActions(), diff --git a/packages/yoroi-extension/app/actions/ada/paper-wallets-actions.js b/packages/yoroi-extension/app/actions/ada/paper-wallets-actions.js deleted file mode 100644 index 3cf751bd89..0000000000 --- a/packages/yoroi-extension/app/actions/ada/paper-wallets-actions.js +++ /dev/null @@ -1,22 +0,0 @@ -// @flow -import { Action, AsyncAction, } from '../lib/Action'; -import type { PdfGenStepType } from '../../api/ada/paperWallet/paperWalletPdf'; - -// ======= PAPER WALLET ACTIONS ======= - -export default class PaperWalletsActions { - submitInit: Action<{| - numAddresses: number, - printAccountPlate: boolean, - |}> = new Action(); - submitUserPassword: AsyncAction<{| userPassword: string |}> = new AsyncAction(); - submitCreate: Action = new Action(); - backToCreate: Action = new Action(); - submitVerify: Action = new Action(); - createPaperWallet: Action= new Action(); - createPdfDocument: AsyncAction= new AsyncAction(); - setPdfRenderStatus: Action<{| status: PdfGenStepType |}> = new Action(); - setPdf: Action<{| pdf: Blob |}> = new Action(); - downloadPaperWallet: Action = new Action(); - cancel: Action= new Action(); -} diff --git a/packages/yoroi-extension/app/actions/common/wallet-restore-actions.js b/packages/yoroi-extension/app/actions/common/wallet-restore-actions.js index 2d68d0378f..b34b85c555 100644 --- a/packages/yoroi-extension/app/actions/common/wallet-restore-actions.js +++ b/packages/yoroi-extension/app/actions/common/wallet-restore-actions.js @@ -9,19 +9,12 @@ export type WalletRestoreMeta = {| walletPassword: string, |}; -export type PaperWalletRestoreMeta = {| - ...WalletRestoreMeta, - paperPassword: string, -|}; - // BIP44 , PAPER export type RestoreModeType = | {| type: 'bip44', extra: void, - length: - | typeof config.wallets.WALLET_RECOVERY_PHRASE_WORD_COUNT - | typeof config.wallets.DAEDALUS_RECOVERY_PHRASE_WORD_COUNT, + length: typeof config.wallets.WALLET_RECOVERY_PHRASE_WORD_COUNT, |} | {| type: 'cip1852', @@ -36,28 +29,20 @@ export type RestoreModeType = // but we did allow paper wallet restoration type: 'bip44' | 'cip1852', extra: 'paper', - length: - | typeof config.wallets.YOROI_PAPER_RECOVERY_PHRASE_WORD_COUNT - | typeof config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT, + length: typeof config.wallets.YOROI_PAPER_RECOVERY_PHRASE_WORD_COUNT, chain?: number, |} | {| type: 'bip44' | 'cip1852', extra: 'ledger' | 'trezor', - |} - | {| - type: 'cip1852', - extra: 'privateKey', - derivationLevel: number, |}; export default class WalletRestoreActions { - submitFields: AsyncAction = new AsyncAction(); + submitFields: AsyncAction = new AsyncAction(); startRestore: AsyncAction = new AsyncAction(); restoreWallet: AsyncAction = new AsyncAction(); verifyMnemonic: AsyncAction = new AsyncAction(); startCheck: AsyncAction = new AsyncAction(); - setMode: Action = new Action(); reset: Action = new Action(); back: Action = new Action(); transferFromLegacy: AsyncAction = new AsyncAction(); diff --git a/packages/yoroi-extension/app/actions/common/yoroi-transfer-actions.js b/packages/yoroi-extension/app/actions/common/yoroi-transfer-actions.js index 8cf819dce4..884716e3d4 100644 --- a/packages/yoroi-extension/app/actions/common/yoroi-transfer-actions.js +++ b/packages/yoroi-extension/app/actions/common/yoroi-transfer-actions.js @@ -1,15 +1,12 @@ // @flow import { AsyncAction, Action } from '../lib/Action'; -import type { RestoreModeType } from './wallet-restore-actions'; import type { Address, Addressing } from '../../api/ada/lib/storage/models/PublicDeriver/interfaces'; import type { NetworkRow } from '../../api/ada/lib/storage/database/primitives/tables'; export default class YoroiTransferActions { - startTransferFunds: Action<{| - source: RestoreModeType, - |}> = new Action(); + startTransferFunds: Action = new Action(); setupTransferFundsWithPaperMnemonic: Action<{| recoveryPhrase: string, paperPassword: string, diff --git a/packages/yoroi-extension/app/actions/index.js b/packages/yoroi-extension/app/actions/index.js index cea490e719..9be733a5cc 100644 --- a/packages/yoroi-extension/app/actions/index.js +++ b/packages/yoroi-extension/app/actions/index.js @@ -6,7 +6,6 @@ import DialogsActions from './dialogs-actions'; import NotificationsActions from './notifications-actions'; import LoadingActions from './loading-actions'; import MemosActions from './memos-actions'; -import NoticeBoard from './notice-board-actions'; import WalletActions from './wallet-actions'; import AddressesActions from './common/addresses-actions'; import TransactionsActions from './common/transactions-actions'; @@ -32,7 +31,6 @@ export type ActionsMap = {| yoroiTransfer: YoroiTransferActions, memos: MemosActions, loading: LoadingActions, - noticeBoard: NoticeBoard, wallets: WalletActions, addresses: AddressesActions, transactions: TransactionsActions, @@ -55,7 +53,6 @@ const actionsMap: ActionsMap = Object.freeze({ yoroiTransfer: new YoroiTransferActions(), memos: new MemosActions(), loading: new LoadingActions(), - noticeBoard: new NoticeBoard(), wallets: new WalletActions(), addresses: new AddressesActions(), walletRestore: new WalletRestoreActions(), diff --git a/packages/yoroi-extension/app/actions/notice-board-actions.js b/packages/yoroi-extension/app/actions/notice-board-actions.js deleted file mode 100644 index 77b4155f67..0000000000 --- a/packages/yoroi-extension/app/actions/notice-board-actions.js +++ /dev/null @@ -1,8 +0,0 @@ -// @flow -import { AsyncAction } from './lib/Action'; - -// ======= NOTICE-BOARD ACTIONS ======= - -export default class NoticeBoardActions { - loadMore: AsyncAction = new AsyncAction(); -} diff --git a/packages/yoroi-extension/app/actions/notifications-actions.js b/packages/yoroi-extension/app/actions/notifications-actions.js index a9214f8345..48c6a50307 100644 --- a/packages/yoroi-extension/app/actions/notifications-actions.js +++ b/packages/yoroi-extension/app/actions/notifications-actions.js @@ -1,6 +1,6 @@ // @flow import { Action } from './lib/Action'; -import type { Notification } from '../types/notificationType'; +import type { Notification } from '../types/notification.types'; // ======= NOTIFICATIONS ACTIONS ======= diff --git a/packages/yoroi-extension/app/api/ada/index.js b/packages/yoroi-extension/app/api/ada/index.js index ed25b04d86..df1d832b06 100644 --- a/packages/yoroi-extension/app/api/ada/index.js +++ b/packages/yoroi-extension/app/api/ada/index.js @@ -1,19 +1,10 @@ // @flow -import moment from 'moment'; import BigNumber from 'bignumber.js'; import type { lf$Database } from 'lovefield'; import { fullErrStr, Logger, stringifyData, stringifyError } from '../../utils/logging'; import CardanoByronTransaction from '../../domain/CardanoByronTransaction'; import CardanoShelleyTransaction from '../../domain/CardanoShelleyTransaction'; -import { - ChainDerivations, - CoinTypes, - HARD_DERIVATION_START, - STAKING_KEY_INDEX, - WalletTypePurpose, -} from '../../config/numbersConfig'; -import type { Network, } from '../../../config/config-types'; -import { createHardwareWallet, createStandardBip44Wallet, } from './lib/storage/bridge/walletBuilder/byron'; +import { ChainDerivations, CoinTypes, HARD_DERIVATION_START, WalletTypePurpose, } from '../../config/numbersConfig'; import { createHardwareCip1852Wallet, createStandardCip1852Wallet, } from './lib/storage/bridge/walletBuilder/shelley'; import type { ReferenceTx } from './lib/storage/bridge/updateTransactions'; import { @@ -33,7 +24,6 @@ import { import type { TransactionMetadata } from './lib/storage/bridge/metadataUtils'; import { createMetadata } from './lib/storage/bridge/metadataUtils'; -import { Bip44Wallet, } from './lib/storage/models/Bip44Wallet/wrapper'; import { Cip1852Wallet, } from './lib/storage/models/Cip1852Wallet/wrapper'; import type { HWFeatures, } from './lib/storage/database/walletTypes/core/tables'; import { Bip44DerivationLevels, flattenInsertTree, } from './lib/storage/database/walletTypes/bip44/api/utils'; @@ -42,7 +32,12 @@ import { CoreAddressTypes, TxStatusCodes, } from './lib/storage/database/primiti import type { NetworkRow, TokenRow, } from './lib/storage/database/primitives/tables'; import { TransactionType } from './lib/storage/database/primitives/tables'; import { PublicDeriver, } from './lib/storage/models/PublicDeriver/index'; -import { asDisplayCutoff, asGetAllUtxos, asHasLevels, } from './lib/storage/models/PublicDeriver/traits'; +import { + asDisplayCutoff, + asGetAllUtxos, + asHasLevels, + asHasUtxoChains, +} from './lib/storage/models/PublicDeriver/traits'; import { ConceptualWallet } from './lib/storage/models/ConceptualWallet/index'; import type { IHasLevels } from './lib/storage/models/ConceptualWallet/interfaces'; import type { @@ -65,13 +60,13 @@ import type { BaseGetTransactionsRequest, GetForeignAddressesRequest, GetForeignAddressesResponse, - GetTransactionsRequestOptions, RefreshPendingTransactionsRequest, RefreshPendingTransactionsResponse, RemoveAllTransactionsRequest, RemoveAllTransactionsResponse, } from '../common/index'; import { builtSendTokenList, hasSendAllDefault } from '../common/index'; +import type { TxOutput } from './transactions/shelley/transactions'; import { newAdaUnsignedTx as shelleyNewAdaUnsignedTx, newAdaUnsignedTxForConnector as shelleyNewAdaUnsignedTxForConnector, @@ -80,14 +75,7 @@ import { } from './transactions/shelley/transactions'; import { generateAdaMnemonic, generateWalletRootKey, } from './lib/cardanoCrypto/cryptoWallet'; import { v4PublicToV2, } from './lib/cardanoCrypto/utils'; -import { isValidBip39Mnemonic, } from '../common/lib/crypto/wallet'; -import { generateByronPlate } from './lib/cardanoCrypto/plate'; -import { - isValidEnglishAdaPaperMnemonic, - scramblePaperAdaMnemonic, - unscramblePaperAdaMnemonic, -} from './lib/cardanoCrypto/paperWallet'; -import Notice from '../../domain/Notice'; +import { isValidBip39Mnemonic, } from './lib/cardanoCrypto/wallet'; import type { CardanoSignTransaction } from 'trezor-connect-flow'; import { createTrezorSignTxPayload, } from './transactions/shelley/trezorTx'; import { createLedgerSignTxPayload, } from './transactions/shelley/ledgerTx'; @@ -102,7 +90,6 @@ import { import LocalizableError from '../../i18n/LocalizableError'; import { scanBip44Account, } from '../common/lib/restoration/bip44'; import { v2genAddressBatchFunc, } from './restoration/byron/scan'; -import { scanShelleyCip1852Account } from './restoration/shelley/scan'; import type { CardanoAddressedUtxo, CardanoUtxoScriptWitness, @@ -120,6 +107,7 @@ import type { AccountStateFunc, AddressUtxoFunc, BestBlockFunc, + FilterFunc, GetRecentTransactionHashesFunc, GetTransactionsByHashesFunc, HistoryFunc, @@ -131,22 +119,22 @@ import type { SignedResponse, TokenInfoFunc, } from './lib/state-fetch/types'; -import type { FilterFunc, } from '../common/lib/state-fetch/currencySpecificTypes'; import { getChainAddressesForDisplay, } from './lib/storage/models/utils'; -import { getAllAddressesForDisplay, rawGetAddressRowsForWallet, } from './lib/storage/bridge/traitUtils'; +import { + getAllUsedAddresses, + getAllAddressesForDisplay, + rawGetAddressRowsForWallet, +} from './lib/storage/bridge/traitUtils'; import { asAddressedUtxo, - cardanoValueFromMultiToken, + cardanoMinAdaRequiredFromAssets_coinsPerWord, convertAdaTransactionsToExportRows, multiTokenFromCardanoValue, multiTokenFromRemote, } from './transactions/utils'; -import type { PdfGenStepType } from './paperWallet/paperWalletPdf'; -import { generateAdaPaperPdf } from './paperWallet/paperWalletPdf'; import type { TransactionExportRow } from '../export'; import { RustModule } from './lib/cardanoCrypto/rustLoader'; -import type { WalletChecksum } from '@emurgo/cip4-js'; import type { CreateWalletRequest, CreateWalletResponse, @@ -170,48 +158,21 @@ import type { PersistedSubmittedTransaction } from '../localStorage'; import type { ForeignUtxoFetcher } from '../../connector/stores/ConnectorStore'; import type WalletTransaction from '../../domain/WalletTransaction'; import { derivePrivateByAddressing, derivePublicByAddressing } from './lib/cardanoCrypto/deriveByAddressing'; +import TimeUtils from './lib/storage/bridge/timeUtils'; // ADA specific Request / Response params -// createAdaPaper - -export type CreateAdaPaperRequest = {| - password: string, - numAddresses?: number, - network: $ReadOnly, -|}; -export type AdaPaper = {| - addresses: Array, - scrambledWords: Array, - plate: WalletChecksum, -|}; -export type CreateAdaPaperFunc = ( - request: CreateAdaPaperRequest -) => Promise; - -// createAdaPaperPdf - -export type CreateAdaPaperPdfRequest = {| - paper: AdaPaper, - network: Network, - printAccountPlate?: boolean, - updateStatus?: PdfGenStepType => boolean, +export type AddressDetails = {| + ...Address, ...Value, ...Addressing, ...UsedStatus, ...AddressType, |}; -export type CreateAdaPaperPdfResponse = ?Blob; -export type CreateAdaPaperPdfFunc = ( - request: CreateAdaPaperPdfRequest -) => Promise; - // getAllAddressesForDisplay export type GetAllAddressesForDisplayRequest = {| publicDeriver: IPublicDeriver<>, type: CoreAddressT, |}; -export type GetAllAddressesForDisplayResponse = Array<{| - ...Address, ...Value, ...Addressing, ...UsedStatus, ...AddressType, -|}>; +export type GetAllAddressesForDisplayResponse = Array; export type GetAllAddressesForDisplayFunc = ( request: GetAllAddressesForDisplayRequest ) => Promise; @@ -223,9 +184,7 @@ export type GetChainAddressesForDisplayRequest = {| chainsRequest: IHasUtxoChainsRequest, type: CoreAddressT, |}; -export type GetChainAddressesForDisplayResponse = Array<{| - ...Address, ...AddressType, ...Value, ...Addressing, ...UsedStatus -|}>; +export type GetChainAddressesForDisplayResponse = Array; export type GetChainAddressesForDisplayFunc = ( request: GetChainAddressesForDisplayRequest ) => Promise; @@ -244,18 +203,6 @@ export type AdaGetTransactionsRequest = {| getTransactionHistory: HistoryFunc, |}; -// notices -export type GetNoticesRequestOptions = GetTransactionsRequestOptions; - -export type GetNoticesResponse = {| - notices: Array, - total: number, -|}; - -export type GetNoticesFunc = ( - request: GetNoticesRequestOptions -) => Promise; - // signAndBroadcast export type SignAndBroadcastRequest = {| @@ -376,9 +323,6 @@ export type CreateUnsignedTxForConnectorRequest = {| |}; export type CreateUnsignedTxResponse = HaskellShelleyTxSignRequest; export type CreateVotingRegTxResponse = HaskellShelleyTxSignRequest; -export type CreateUnsignedTxFunc = ( - request: CreateUnsignedTxRequest -) => Promise; // createUnsignedTxForUtxos @@ -430,6 +374,11 @@ export type CreateVotingRegTxRequest = {| ledgerNanoWallet: LedgerNanoCatalystRegistrationTxSignData, |}; +export type CreateSimpleTxRequest = {| + publicDeriver: IPublicDeriver & IGetAllUtxos & IHasUtxoChains, + entries: Array, + metadata: RustModule.WalletV4.AuxiliaryData, +|}; export type CreateDelegationTxResponse = {| signTxRequest: HaskellShelleyTxSignRequest, @@ -479,28 +428,6 @@ export type SaveLastReceiveAddressIndexFunc = ( request: SaveLastReceiveAddressIndexRequest ) => Promise; -// isValidPaperMnemonic - -export type IsValidPaperMnemonicRequest = {| - mnemonic: string, - numberOfWords: number, -|}; -export type IsValidPaperMnemonicResponse = boolean; -export type IsValidPaperMnemonicFunc = ( - request: IsValidPaperMnemonicRequest -) => IsValidPaperMnemonicResponse; - -// unscramblePaperMnemonic - -export type UnscramblePaperMnemonicRequest = {| - mnemonic: string, - numberOfWords: number, - password?: string, -|}; -export type UnscramblePaperMnemonicResponse = [?string, number]; -export type UnscramblePaperMnemonicFunc = ( - request: UnscramblePaperMnemonicRequest -) => UnscramblePaperMnemonicResponse; // generateWalletRecoveryPhrase @@ -514,7 +441,6 @@ export type GenerateWalletRecoveryPhraseFunc = ( export type RestoreWalletForTransferRequest = {| accountPubKey: RustModule.WalletV4.Bip32PublicKey, - transferSource: 'cip1852' | 'bip44', accountIndex: number, checkAddressesInUse: FilterFunc, network: $ReadOnly, @@ -579,60 +505,11 @@ export type GetTransactionRowsToExportFunc = ( request: GetTransactionRowsToExportRequest ) => Promise; -export const DEFAULT_ADDRESSES_PER_PAPER = 1; - export const FETCH_TXS_BATCH_SIZE = 20; +const MIN_REORG_OUTPUT_AMOUNT = '1000000'; export default class AdaApi { - // noinspection JSMethodCanBeStatic - createAdaPaper( - request: CreateAdaPaperRequest - ): AdaPaper { - const words = generateAdaMnemonic(); - const rootPk = generateWalletRootKey(words.join(' ')); - const scrambledWords = scramblePaperAdaMnemonic( - words.join(' '), - request.password - ).split(' '); - - const config = getCardanoHaskellBaseConfig( - request.network - ).reduce((acc, next) => Object.assign(acc, next), {}); - - const { addresses, plate } = generateByronPlate( - rootPk, - 0, // paper wallets always use account 0 - request.numAddresses != null ? request.numAddresses : DEFAULT_ADDRESSES_PER_PAPER, - config.ByronNetworkId - ); - return { addresses, scrambledWords, plate }; - } - - async createAdaPaperPdf( - { - paper, - network, - printAccountPlate, - updateStatus - }: CreateAdaPaperPdfRequest - ): Promise { - const { addresses, scrambledWords, plate } = paper; - // noinspection UnnecessaryLocalVariableJS - const res : Promise = generateAdaPaperPdf({ - words: scrambledWords, - addresses, - plate: printAccountPlate === true ? plate : undefined, - network, - }, s => { - Logger.info('[PaperWalletRender] ' + s); - if (updateStatus) { - updateStatus(s); - } - }); - return res; - } - /** * addresses get cutoff if there is a DisplayCutoff set */ @@ -820,51 +697,8 @@ export default class AdaApi { } } - async getNotices( - request: GetNoticesRequestOptions - ): Promise { - Logger.debug(`${nameof(AdaApi)}::${nameof(this.getNotices)} called`); - try { - let next = 0; - const dummyNotices = [ - new Notice({ id: (next++).toString(), kind: 2, date: new Date() }), - new Notice({ id: (next++).toString(), kind: 0, date: moment().subtract(1, 'seconds').toDate() }), - new Notice({ id: (next++).toString(), kind: 1, date: moment().subtract(5, 'seconds').toDate() }), - new Notice({ id: (next++).toString(), kind: 2, date: moment().subtract(40, 'seconds').toDate() }), - new Notice({ id: (next++).toString(), kind: 3, date: moment().subtract(1, 'minutes').toDate() }), - new Notice({ id: (next++).toString(), kind: 4, date: moment().subtract(2, 'minutes').toDate() }), - new Notice({ id: (next++).toString(), kind: 5, date: moment().subtract(5, 'minutes').toDate() }), - new Notice({ id: (next++).toString(), kind: 6, date: moment().subtract(15, 'minutes').toDate() }), - new Notice({ id: (next++).toString(), kind: 7, date: moment().subtract(30, 'minutes').toDate() }), - new Notice({ id: (next++).toString(), kind: 7, date: moment().subtract(88, 'minutes').toDate() }), - new Notice({ id: (next++).toString(), kind: 0, date: moment().subtract(10, 'hours').toDate() }), - new Notice({ id: (next++).toString(), kind: 3, date: moment().subtract(1, 'days').toDate() }), - new Notice({ id: (next++).toString(), kind: 4, date: moment().subtract(1, 'days').toDate() }), - new Notice({ id: (next++).toString(), kind: 1, date: new Date(2019, 11, 5, 10, 15, 20) }), - new Notice({ id: (next++).toString(), kind: 5, date: new Date(2019, 11, 5, 8, 20, 20) }), - new Notice({ id: (next++).toString(), kind: 3, date: new Date(2019, 11, 4, 2, 15, 20) }), - new Notice({ id: (next++).toString(), kind: 7, date: new Date(2019, 11, 4, 10, 40, 20) }), - new Notice({ id: (next++).toString(), kind: 6, date: new Date(2019, 11, 4, 18, 55, 29) }), - new Notice({ id: (next++).toString(), kind: 0, date: new Date(2019, 11, 2, 10, 45, 20) }), - new Notice({ id: (next++).toString(), kind: 7, date: new Date(2019, 11, 1, 10, 18, 20) }), - ]; - const { skip = 0, limit } = request; - return { - notices: dummyNotices.slice(skip, limit), - total: dummyNotices.length - }; - } catch (error) { - Logger.error(`${nameof(AdaApi)}::${nameof(this.getNotices)} error: ` + stringifyError(error)); - if (error instanceof LocalizableError) throw error; - throw new GenericApiError(); - } - } - async createWallet( - request: {| - mode: 'bip44' | 'cip1852', - ...CreateWalletRequest, - |}, + request: CreateWalletRequest, ): Promise { // creating a wallet is the same as restoring a wallet return await this.restoreWallet(request); @@ -1410,18 +1244,12 @@ export default class AdaApi { throw new Error(`Value is required for a valid tx output, got: ${JSON.stringify(target)}`); } } else { - RustModule.WasmScope(Scope => { - // ensureRequiredMinimalValue is true - const minAmount = Scope.WalletV4.min_ada_required( - cardanoValueFromMultiToken(amount), - dataHash != null, - RustModule.WalletV4.BigNum.from_str(protocolParams.coinsPerUtxoWord), - ); - if ((new BigNumber(minAmount.to_str())).gt(new BigNumber(target.value ?? '0'))) { - amount = makeMultiToken(minAmount.to_str()); - }; - }); + const minAmount = + cardanoMinAdaRequiredFromAssets_coinsPerWord(amount, new BigNumber(protocolParams.coinsPerUtxoWord)); + if (minAmount.gt(target.value ?? '0')) { + amount = makeMultiToken(minAmount.toString()); + } } outputs.push({ address: target.address, @@ -1490,9 +1318,10 @@ export default class AdaApi { Logger.debug(`${nameof(AdaApi)}::${nameof(this.createDelegationTx)} called`); try { - const config = getCardanoHaskellBaseConfig( - request.publicDeriver.getParent().getNetworkInfo() - ).reduce((acc, next) => Object.assign(acc, next), {}); + const { publicDeriver } = request; + const networkInfo = publicDeriver.getParent().getNetworkInfo(); + const config = getCardanoHaskellBaseConfig(networkInfo) + .reduce((acc, next) => Object.assign(acc, next), {}); const protocolParams = { keyDeposit: config.KeyDeposit, @@ -1500,10 +1329,10 @@ export default class AdaApi { linearFeeConstant: config.LinearFee.constant, coinsPerUtxoWord: config.CoinsPerUtxoWord, poolDeposit: config.PoolDeposit, - networkId: request.publicDeriver.getParent().networkInfo.NetworkId, + networkId: networkInfo.NetworkId, }; - const publicKeyDbRow = await request.publicDeriver.getPublicKey(); + const publicKeyDbRow = await publicDeriver.getPublicKey(); if (publicKeyDbRow.IsEncrypted) { throw new Error(`${nameof(AdaApi)}::${nameof(this.createDelegationTx)} public key is encrypted`); } @@ -1511,11 +1340,11 @@ export default class AdaApi { Buffer.from(publicKeyDbRow.Hash, 'hex') ); - const stakingKeyDbRow = await request.publicDeriver.getStakingKey(); + const stakingKeyDbRow = await publicDeriver.getStakingKey(); const stakingKey = derivePublicByAddressing({ addressing: stakingKeyDbRow.addressing, startingFrom: { - level: request.publicDeriver.getParent().getPublicDeriverLevel(), + level: publicDeriver.getParent().getPublicDeriverLevel(), key: publicKey, }, }).to_raw_key(); @@ -1526,9 +1355,9 @@ export default class AdaApi { request.poolRequest ); - const allUtxo = await request.publicDeriver.getAllUtxos(); + const allUtxo = await publicDeriver.getAllUtxos(); const addressedUtxo = asAddressedUtxo(allUtxo); - const changeAddr = await getReceiveAddress(request.publicDeriver); + const changeAddr = await getReceiveAddress(publicDeriver); if (changeAddr == null) { throw new Error(`${nameof(this.createDelegationTx)} no internal addresses left. Should never happen`); } @@ -1559,16 +1388,16 @@ export default class AdaApi { amount: new BigNumber(token.TokenList.Amount), networkId: token.Token.NetworkId, })), - request.publicDeriver.getParent().getDefaultToken() + publicDeriver.getParent().getDefaultToken() )), - new MultiToken([], request.publicDeriver.getParent().getDefaultToken()) + publicDeriver.getParent().getDefaultMultiToken() ); const differenceAfterTx = getDifferenceAfterTx( unsignedTx, allUtxo, stakingKey, - request.publicDeriver.getParent().getDefaultToken(), + publicDeriver.getParent().getDefaultToken(), ); const totalAmountToDelegate = utxoSum @@ -1592,7 +1421,7 @@ export default class AdaApi { ChainNetworkId: Number.parseInt(config.ChainNetworkId, 10), KeyDeposit: new BigNumber(config.KeyDeposit), PoolDeposit: new BigNumber(config.PoolDeposit), - NetworkId: request.publicDeriver.getParent().getNetworkInfo().NetworkId, + NetworkId: networkInfo.NetworkId, }, neededStakingKeyHashes: { neededHashes: new Set([stakeCredentialHex]), @@ -1770,6 +1599,73 @@ export default class AdaApi { } } + async createSimpleTx( + request: CreateSimpleTxRequest, + ): Promise { + Logger.debug(`${nameof(AdaApi)}::${nameof(this.createSimpleTx)} called`); + + try { + const fullConfig = getCardanoHaskellBaseConfig(request.publicDeriver.getParent().getNetworkInfo()); + const config = fullConfig.reduce((acc, next) => Object.assign(acc, next), {}); + + const protocolParams = { + keyDeposit: config.KeyDeposit, + linearFeeCoefficient: config.LinearFee.coefficient, + linearFeeConstant: config.LinearFee.constant, + coinsPerUtxoWord: config.CoinsPerUtxoWord, + poolDeposit: config.PoolDeposit, + networkId: request.publicDeriver.getParent().networkInfo.NetworkId, + }; + + const allUtxo = await request.publicDeriver.getAllUtxos(); + const addressedUtxo = asAddressedUtxo(allUtxo); + const changeAddr = await getReceiveAddress(request.publicDeriver); + if (changeAddr == null) { + throw new Error(`${nameof(this.createSimpleTx)} no internal addresses left. Should never happen`); + } + const absSlotNumber = new BigNumber(TimeUtils.timeToAbsoluteSlot(fullConfig, new Date())); + + const unsignedTx = await shelleyNewAdaUnsignedTx( + request.entries, + { + address: changeAddr.addr.Hash, + addressing: changeAddr.addressing, + }, + addressedUtxo, + absSlotNumber, + protocolParams, + [], + [], + false, + request.metadata, + ); + + return new HaskellShelleyTxSignRequest({ + senderUtxos: unsignedTx.senderUtxos, + unsignedTx: unsignedTx.txBuilder, + changeAddr: unsignedTx.changeAddr, + metadata: request.metadata, + networkSettingSnapshot: { + ChainNetworkId: Number.parseInt(config.ChainNetworkId, 10), + KeyDeposit: new BigNumber(config.KeyDeposit), + PoolDeposit: new BigNumber(config.PoolDeposit), + NetworkId: request.publicDeriver.getParent().getNetworkInfo().NetworkId, + }, + neededStakingKeyHashes: { + neededHashes: new Set(), + wits: new Set(), + }, + trezorTCatalystRegistrationTxSignData: undefined, + ledgerNanoCatalystRegistrationTxSignData: undefined, + }); + } catch (error) { + Logger.error(`${nameof(AdaApi)}::${nameof(this.createSimpleTx)} error: ` + stringifyError(error)); + if (error instanceof LocalizableError) throw error; + throw new GenericApiError(); + } + + } + async createVotingRegTx( request: CreateVotingRegTxRequest ): Promise { @@ -1883,18 +1779,6 @@ export default class AdaApi { return isValidBip39Mnemonic(request.mnemonic, request.numberOfWords); } - isValidPaperMnemonic( - request: IsValidPaperMnemonicRequest - ): IsValidPaperMnemonicResponse { - return isValidEnglishAdaPaperMnemonic(request.mnemonic, request.numberOfWords); - } - - unscramblePaperMnemonic( - request: UnscramblePaperMnemonicRequest - ): UnscramblePaperMnemonicResponse { - return unscramblePaperAdaMnemonic(request.mnemonic, request.numberOfWords, request.password); - } - generateWalletRecoveryPhrase(): Promise { Logger.debug(`${nameof(AdaApi)}::${nameof(this.generateWalletRecoveryPhrase)} called`); try { @@ -1916,10 +1800,7 @@ export default class AdaApi { * Creates wallet and saves result to DB */ async restoreWallet( - request: {| - mode: 'bip44' | 'cip1852', - ...RestoreWalletRequest, - |} + request: RestoreWalletRequest ): Promise { Logger.debug(`${nameof(AdaApi)}::${nameof(this.restoreWallet)} called`); const { recoveryPhrase, walletName, walletPassword, } = request; @@ -1931,57 +1812,25 @@ export default class AdaApi { // Note: we only restore for 0th account const rootPk = generateWalletRootKey(recoveryPhrase); const newPubDerivers = []; - if (request.mode === 'bip44') { - const wallet = await createStandardBip44Wallet({ - db: request.db, - rootPk: RustModule.WalletV2.Bip44RootPrivateKey.new( - RustModule.WalletV2.PrivateKey.from_hex( - Buffer.from(rootPk.as_bytes()).toString('hex') - ), - RustModule.WalletV2.DerivationScheme.v2() - ), - password: walletPassword, - accountIndex: request.accountIndex, - walletName, - accountName: '', // set account name empty now - network: request.network, - }); - - const bip44Wallet = await Bip44Wallet.createBip44Wallet( - request.db, - wallet.bip44WrapperRow, - ); - for (const pubDeriver of wallet.publicDeriver) { - newPubDerivers.push(await PublicDeriver.createPublicDeriver( - pubDeriver.publicDeriverResult, - bip44Wallet, - )); - } - } else if (request.mode === 'cip1852') { - const wallet = await createStandardCip1852Wallet({ - db: request.db, - rootPk, - password: walletPassword, - accountIndex: request.accountIndex, - walletName, - accountName: '', // set account name empty now - network: request.network, - }); - - const cip1852Wallet = await Cip1852Wallet.createCip1852Wallet( - request.db, - wallet.cip1852WrapperRow, - ); - for (const pubDeriver of wallet.publicDeriver) { - newPubDerivers.push(await PublicDeriver.createPublicDeriver( - pubDeriver.publicDeriverResult, - cip1852Wallet, - )); - } - } else { - throw new Error(`${nameof(this.restoreWallet)} unknown restoration mode`); + const wallet = await createStandardCip1852Wallet({ + db: request.db, + rootPk, + password: walletPassword, + accountIndex: request.accountIndex, + walletName, + accountName: '', // set account name empty now + network: request.network, + }); + const cip1852Wallet = await Cip1852Wallet.createCip1852Wallet( + request.db, + wallet.cip1852WrapperRow, + ); + for (const pubDeriver of wallet.publicDeriver) { + newPubDerivers.push(await PublicDeriver.createPublicDeriver( + pubDeriver.publicDeriverResult, + cip1852Wallet, + )); } - Logger.debug(`${nameof(AdaApi)}::${nameof(this.restoreWallet)} success`); return { publicDerivers: newPubDerivers, @@ -2002,6 +1851,7 @@ export default class AdaApi { /** * Restore all addresses like restoreWallet() but do not touch storage. */ + // paper async restoreWalletForTransfer( request: RestoreWalletForTransferRequest ): Promise { @@ -2032,50 +1882,26 @@ export default class AdaApi { return Promise.resolve(); }; - let insertTree; - if (request.transferSource === 'bip44') { - const key = RustModule.WalletV2.Bip44AccountPublic.new( - v4PublicToV2(request.accountPubKey), - RustModule.WalletV2.DerivationScheme.v2(), - ); - insertTree = await scanBip44Account({ - network: request.network, - generateInternalAddresses: v2genAddressBatchFunc( - key.bip44_chain(false), - config.ByronNetworkId, - ), - generateExternalAddresses: v2genAddressBatchFunc( - key.bip44_chain(true), - config.ByronNetworkId, - ), - lastUsedInternal: -1, - lastUsedExternal: -1, - checkAddressesInUse, - addByHash, - type: CoreAddressTypes.CARDANO_LEGACY, - }); - } else if (request.transferSource === 'cip1852') { - const stakingKey = request.accountPubKey - .derive(ChainDerivations.CHIMERIC_ACCOUNT) - .derive(STAKING_KEY_INDEX) - .to_raw_key(); - - const cip1852InsertTree = await scanShelleyCip1852Account({ - network: request.network, - accountPublicKey: Buffer.from(request.accountPubKey.as_bytes()).toString('hex'), - lastUsedInternal: -1, - lastUsedExternal: -1, - checkAddressesInUse, - addByHash, - stakingKey, - }); - - insertTree = cip1852InsertTree.filter(child => ( - child.index === ChainDerivations.EXTERNAL || child.index === ChainDerivations.INTERNAL - )); - } else { - throw new Error(`${nameof(this.restoreWalletForTransfer)} unexpected wallet type ${request.transferSource}`); - } + const key = RustModule.WalletV2.Bip44AccountPublic.new( + v4PublicToV2(request.accountPubKey), + RustModule.WalletV2.DerivationScheme.v2(), + ); + const insertTree = await scanBip44Account({ + network: request.network, + generateInternalAddresses: v2genAddressBatchFunc( + key.bip44_chain(false), + config.ByronNetworkId, + ), + generateExternalAddresses: v2genAddressBatchFunc( + key.bip44_chain(true), + config.ByronNetworkId, + ), + lastUsedInternal: -1, + lastUsedExternal: -1, + checkAddressesInUse, + addByHash, + type: CoreAddressTypes.CARDANO_LEGACY, + }); const flattenedTree = flattenInsertTree(insertTree); const addressResult = []; @@ -2130,18 +1956,6 @@ export default class AdaApi { accountPubKey: request.bip44AccountPubKey, accountIndex: request.accountIndex, checkAddressesInUse: request.checkAddressesInUse, - transferSource: 'bip44', - network: request.network, - }); - - // it's possible that wallet software created the Shelley wallet off the bip44 path - // instead of the cip1852 path like required in the CIP1852 spec - // so just in case, we check these addresses also - const wrongCip1852Addresses = await this.restoreWalletForTransfer({ - accountPubKey: request.bip44AccountPubKey, - accountIndex: request.accountIndex, - checkAddressesInUse: request.checkAddressesInUse, - transferSource: 'cip1852', network: request.network, }); @@ -2171,7 +1985,6 @@ export default class AdaApi { const addresses = [ ...bip44Addresses.addresses, - ...wrongCip1852Addresses.addresses, ].map(address => ({ address: address.address, addressing: { @@ -2239,84 +2052,43 @@ export default class AdaApi { ): Promise { try { Logger.debug(`${nameof(AdaApi)}::${nameof(this.createHardwareWallet)} called`); - const config = getCardanoHaskellBaseConfig( - request.network - ).reduce((acc, next) => Object.assign(acc, next), {}); - if (request.addressing.startLevel !== Bip44DerivationLevels.PURPOSE.level) { throw new Error(`${nameof(AdaApi)}::${nameof(this.createHardwareWallet)} bad addressing start level`); } - if (request.addressing.path[0] === WalletTypePurpose.BIP44) { - const wallet = await createHardwareWallet({ - db: request.db, - settings: RustModule.WalletV2.BlockchainSettings.from_json({ - protocol_magic: config.ByronNetworkId - }), - accountPublicKey: RustModule.WalletV2.Bip44AccountPublic.new( - RustModule.WalletV2.PublicKey.from_hex(request.publicKey), - RustModule.WalletV2.DerivationScheme.v2() - ), - accountIndex: request.addressing.path[ - Bip44DerivationLevels.ACCOUNT.level - request.addressing.startLevel - ], - walletName: request.walletName, - accountName: '', - hwWalletMetaInsert: request.hwFeatures, - network: request.network, - }); - - const bip44Wallet = await Bip44Wallet.createBip44Wallet( - request.db, - wallet.bip44WrapperRow, - ); - - if (wallet.publicDeriver.length !== 1) { - throw new Error(`${nameof(AdaApi)}::${nameof(this.createHardwareWallet)} should only do 1 HW derivation at a time`); - } - const pubDeriverResult = wallet.publicDeriver[0].publicDeriverResult; - const newPubDeriver = await PublicDeriver.createPublicDeriver( - pubDeriverResult, - bip44Wallet, - ); - Logger.debug(`${nameof(AdaApi)}::${nameof(this.restoreWallet)} success`); - return { - publicDeriver: newPubDeriver, - }; + if (request.addressing.path[0] !== WalletTypePurpose.CIP1852) { + throw new Error(`${nameof(this.createHardwareWallet)} unknown restoration mode`); } - if (request.addressing.path[0] === WalletTypePurpose.CIP1852) { - const wallet = await createHardwareCip1852Wallet({ - db: request.db, - accountPublicKey: RustModule.WalletV4.Bip32PublicKey.from_bytes( - Buffer.from(request.publicKey, 'hex') - ), - accountIndex: request.addressing.path[ - Bip44DerivationLevels.ACCOUNT.level - request.addressing.startLevel + const wallet = await createHardwareCip1852Wallet({ + db: request.db, + accountPublicKey: RustModule.WalletV4.Bip32PublicKey.from_bytes( + Buffer.from(request.publicKey, 'hex') + ), + accountIndex: request.addressing.path[ + Bip44DerivationLevels.ACCOUNT.level - request.addressing.startLevel ], - walletName: request.walletName, - accountName: '', - hwWalletMetaInsert: request.hwFeatures, - network: request.network, - }); + walletName: request.walletName, + accountName: '', + hwWalletMetaInsert: request.hwFeatures, + network: request.network, + }); - const cip1852Wallet = await Cip1852Wallet.createCip1852Wallet( - request.db, - wallet.cip1852WrapperRow, - ); + const cip1852Wallet = await Cip1852Wallet.createCip1852Wallet( + request.db, + wallet.cip1852WrapperRow, + ); - if (wallet.publicDeriver.length !== 1) { - throw new Error(`${nameof(AdaApi)}::${nameof(this.createHardwareWallet)} should only do 1 HW derivation at a time`); - } - const pubDeriverResult = wallet.publicDeriver[0].publicDeriverResult; - const newPubDeriver = await PublicDeriver.createPublicDeriver( - pubDeriverResult, - cip1852Wallet, - ); - Logger.debug(`${nameof(AdaApi)}::${nameof(this.restoreWallet)} success`); - return { - publicDeriver: newPubDeriver, - }; + if (wallet.publicDeriver.length !== 1) { + throw new Error(`${nameof(AdaApi)}::${nameof(this.createHardwareWallet)} should only do 1 HW derivation at a time`); } - throw new Error(`${nameof(this.createHardwareWallet)} unknown restoration mode`); + const pubDeriverResult = wallet.publicDeriver[0].publicDeriverResult; + const newPubDeriver = await PublicDeriver.createPublicDeriver( + pubDeriverResult, + cip1852Wallet, + ); + Logger.debug(`${nameof(AdaApi)}::${nameof(this.restoreWallet)} success`); + return { + publicDeriver: newPubDeriver, + }; } catch (error) { Logger.error(`${nameof(AdaApi)}::${nameof(this.createHardwareWallet)} error: ` + stringifyError(error)); @@ -2351,8 +2123,6 @@ export default class AdaApi { publicDeriver: PublicDeriver<>, signRequest: HaskellShelleyTxSignRequest, txId: string, - defaultNetworkId: number, - defaultToken: $ReadOnly, ): Promise<{| transaction: CardanoShelleyTransaction, usedUtxos: Array<{| txHash: string, index: number |}> @@ -2388,13 +2158,7 @@ export default class AdaApi { const ownAddresses = new Set( utxoAddresses.map(a => a.Hash) ); - const amount = new MultiToken( - [], - { - defaultNetworkId, - defaultIdentifier: defaultToken.Identifier, - }, - ); + const amount = publicDeriver.getParent().getDefaultMultiToken(); for (const input of signRequest.inputs()) { amount.joinSubtractMutable(input.value); } @@ -2555,6 +2319,66 @@ export default class AdaApi { } return utxos; } + + async createReorgTx( + publicDeriver: PublicDeriver<>, + usedUtxoIds: Array, + reorgTargetAmount: string, + utxos: Array, + submittedTxs: Array, + reorgTargetAddress?: string, + ): Promise<{| + unsignedTx: HaskellShelleyTxSignRequest, + collateralOutputAddressSet: Set, + |}> { + const network = publicDeriver.getParent().getNetworkInfo(); + + const withUtxos = asGetAllUtxos(publicDeriver); + if (withUtxos == null) { + throw new Error(`missing utxo functionality`); + } + + const withHasUtxoChains = asHasUtxoChains(withUtxos); + if (withHasUtxoChains == null) { + throw new Error(`missing chains functionality`); + } + + const fullConfig = getCardanoHaskellBaseConfig(network); + const absSlotNumber = new BigNumber(TimeUtils.timeToAbsoluteSlot(fullConfig, new Date())); + const targetAddress = reorgTargetAddress ?? (await getAllUsedAddresses(publicDeriver))[0]; + if (targetAddress == null) { + throw new Error('unexpected: no target address or used addresses available'); + } + const reorgOutputValue = BigNumber + .max(reorgTargetAmount, MIN_REORG_OUTPUT_AMOUNT) + .toString(); + const includeTargets = [{ + address: targetAddress, + isForeign: false, + value: reorgOutputValue, + }]; + const collateralOutputAddressSet = new Set([targetAddress]); + const dontUseUtxoIds = new Set(usedUtxoIds); + const unsignedTx = await this.createUnsignedTxForConnector( + { + publicDeriver: withHasUtxoChains, + absSlotNumber, + cardanoTxRequest: { + includeTargets, + }, + utxos: (await this.addressedUtxosWithSubmittedTxs( + utxos, + publicDeriver, + submittedTxs, + )).filter(utxo => !dontUseUtxoIds.has(utxo.utxo_id)), + // we already factored in submitted transactions above, no need to handle it + // any more, so just use an empty array here + submittedTxs: [], + }, + null, + ); + return { unsignedTx, collateralOutputAddressSet }; + } } // ========== End of class AdaApi ========= diff --git a/packages/yoroi-extension/app/api/ada/index.test.js b/packages/yoroi-extension/app/api/ada/index.test.js index 7116caf1ba..3725ba6be1 100644 --- a/packages/yoroi-extension/app/api/ada/index.test.js +++ b/packages/yoroi-extension/app/api/ada/index.test.js @@ -1,5 +1,5 @@ // @flow -import './lib/test-config'; +import './lib/test-config.forTests'; import { schema } from 'lovefield'; import type { lf$Database } from 'lovefield'; import AdaApi from './index'; @@ -10,11 +10,6 @@ import { silenceLogsForTesting, } from '../../utils/logging'; -import type { - FilterUsedRequest, - FilterUsedResponse, -} from '../common/lib/state-fetch/currencySpecificTypes'; - import { loadLovefieldDB, } from './lib/storage/database/index'; @@ -24,613 +19,614 @@ import { networks, } from './lib/storage/database/prepackaged/networks'; import BigNumber from 'bignumber.js'; +import type { FilterUsedRequest, FilterUsedResponse } from './lib/state-fetch/types'; let db: lf$Database; -beforeAll(async () => { - await RustModule.load(); - db = await loadLovefieldDB(schema.DataStoreType.MEMORY); - silenceLogsForTesting(); -}); +describe('app/api/ada/index', () => { + beforeAll(async () => { + await RustModule.load(); + db = await loadLovefieldDB(schema.DataStoreType.MEMORY); + silenceLogsForTesting(); + }); -test('Restore wallet', async () => { - const restoreRequest = { - db, - recoveryPhrase: TX_TEST_MNEMONIC_1, - walletName: 'mywallet', - walletPassword: '123', - network: networks.CardanoMainnet, - accountIndex: HARD_DERIVATION_START + 0, - mode: 'bip44', - }; + test('Restore wallet', async () => { + const restoreRequest = { + db, + recoveryPhrase: TX_TEST_MNEMONIC_1, + walletName: 'mywallet', + walletPassword: '123', + network: networks.CardanoMainnet, + accountIndex: HARD_DERIVATION_START + 0, + }; - const response = await AdaApi.prototype.restoreWallet(restoreRequest); - expect(response.publicDerivers.length).toEqual(1); - const pubDeriver = response.publicDerivers[0]; - const asGetPublicKeyInstance = asGetPublicKey(pubDeriver); - expect(asGetPublicKeyInstance != null).toEqual(true); - if (asGetPublicKeyInstance != null) { - const pubKey = await asGetPublicKeyInstance.getPublicKey(); - const plate = legacyWalletChecksum(pubKey.Hash); - expect(plate.TextPart).toEqual('DBJL-9530'); - } -}); + const response = await AdaApi.prototype.restoreWallet(restoreRequest); + expect(response.publicDerivers.length).toEqual(1); + const pubDeriver = response.publicDerivers[0]; + const asGetPublicKeyInstance = asGetPublicKey(pubDeriver); + expect(asGetPublicKeyInstance != null).toEqual(true); + if (asGetPublicKeyInstance != null) { + const pubKey = await asGetPublicKeyInstance.getPublicKey(); + const plate = legacyWalletChecksum(pubKey.Hash); + expect(plate.TextPart).toEqual('SKLE-8430'); + } + }); -test('Restore wallet for transfer', async () => { - async function checkAddressesInUse(_body: FilterUsedRequest): Promise { - return []; - } + test('Restore wallet for transfer', async () => { + async function checkAddressesInUse(_body: FilterUsedRequest): Promise { + return []; + } - const recoveryPhrase = TX_TEST_MNEMONIC_1; + const recoveryPhrase = TX_TEST_MNEMONIC_1; - const accountIndex = HARD_DERIVATION_START + 0; - const response = await AdaApi.prototype.restoreWalletForTransfer({ - accountPubKey: generateWalletRootKey(recoveryPhrase) - .derive(WalletTypePurpose.BIP44) - .derive(CoinTypes.CARDANO) - .derive(accountIndex) - .to_public(), - checkAddressesInUse, - accountIndex, - transferSource: 'bip44', - network: networks.CardanoMainnet, - }); + const accountIndex = HARD_DERIVATION_START + 0; + const response = await AdaApi.prototype.restoreWalletForTransfer({ + accountPubKey: generateWalletRootKey(recoveryPhrase) + .derive(WalletTypePurpose.BIP44) + .derive(CoinTypes.CARDANO) + .derive(accountIndex) + .to_public(), + checkAddressesInUse, + accountIndex, + network: networks.CardanoMainnet, + }); - expect(response).toEqual(RESTORED_ADDRESSES); -}); + expect(response).toEqual(RESTORED_ADDRESSES); + }); -const TX_TEST_MNEMONIC_1 = 'prevent company field green slot measure chief hero apple task eagle sunset endorse dress seed'; + const TX_TEST_MNEMONIC_1 = 'prevent company field green slot measure chief hero apple task eagle sunset endorse dress seed'; -const RESTORED_ADDRESSES = { - addresses: [{ - address: 'Ae2tdPwUPEZCfyggUgSxD1E5UCx5f5hrXCdvQjJszxE7epyZ4ox9vRNUbHf', - addressing: { - startLevel: 3, - path: [2147483648, 0, 0] - } - }, { - address: 'Ae2tdPwUPEZFXnw5T5aXoaP28yw4mRLeYomaG9mPGCFbPUtw368ZWYKp1zM', - addressing: { - startLevel: 3, - path: [2147483648, 0, 1] - } - }, { - address: 'Ae2tdPwUPEZ8gpDazyi8VtcGMnMrkpKxts6ppCT45mdT6WMZEwHXs7pP8Tg', - addressing: { - startLevel: 3, - path: [2147483648, 0, 2] - } - }, { - address: 'Ae2tdPwUPEZBFhEBZgvm3fQeuW2zBPochfQehFtXn6tCRQy7zsQ9Px88jsH', - addressing: { - startLevel: 3, - path: [2147483648, 0, 3] - } - }, { - address: 'Ae2tdPwUPEZ6tzHKyuMLL6bh1au5DETgb53PTmJAN9aaCLtaUTWHvrS2mxo', - addressing: { - startLevel: 3, - path: [2147483648, 0, 4] - } - }, { - address: 'Ae2tdPwUPEYxzZH7sSyyXK6DDmjCxRajXUXFqbEjtxfPN7HZzQfXr4hxKwT', - addressing: { - startLevel: 3, - path: [2147483648, 0, 5] - } - }, { - address: 'Ae2tdPwUPEZMUQdcxu6AEoq9wzL8mtSCKhWUNhYjXqq1aenwimnLaCit1FY', - addressing: { - startLevel: 3, - path: [2147483648, 0, 6] - } - }, { - address: 'Ae2tdPwUPEYw9VvB1BQqgGd8XzNfgz4mv9gBjB9P8EtvPQfz4D8Gt4xnQog', - addressing: { - startLevel: 3, - path: [2147483648, 0, 7] - } - }, { - address: 'Ae2tdPwUPEYxYn4T89ffVqpDwqwsMDAZTcfnWBqAkjoem5sgaVKGU3FUB2E', - addressing: { - startLevel: 3, - path: [2147483648, 0, 8] - } - }, { - address: 'Ae2tdPwUPEZBZ9aYboQuf5PFcjuZRCosBhLkUCxSQw1vqk3iyK5qGo5CJWe', - addressing: { - startLevel: 3, - path: [2147483648, 0, 9] - } - }, { - address: 'Ae2tdPwUPEZ4yCaYs3j7pPPaM9iA3KLruJkKjmUBBLKYzpJUHutWdS6EkKa', - addressing: { - startLevel: 3, - path: [2147483648, 0, 10] - } - }, { - address: 'Ae2tdPwUPEZ5zV8wqC9gPvkDtr2MS3Ys2vQbyPdM4wsdnzevbqnaJFg62hk', - addressing: { - startLevel: 3, - path: [2147483648, 0, 11] - } - }, { - address: 'Ae2tdPwUPEZAD1KmgTQ4zS6Q5s4VXWDXqB3ZmM1abQGoyrGN8qCsZyXc3vf', - addressing: { - startLevel: 3, - path: [2147483648, 0, 12] - } - }, { - address: 'Ae2tdPwUPEZ1SFwQMGroCTabfCPJ1RiK8D2F11C1vTMi14tX1XK2uogRWqM', - addressing: { - startLevel: 3, - path: [2147483648, 0, 13] - } - }, { - address: 'Ae2tdPwUPEZJ8CiSFVipoupUVBGRAVbmbpmKPCXsExcwzZd6FcNpAcExY1r', - addressing: { - startLevel: 3, - path: [2147483648, 0, 14] - } - }, { - address: 'Ae2tdPwUPEZCeLRPNcreMQAAfJFs9ZzBeFK9pUXhMnL3ooQP9TajasVsYKK', - addressing: { - startLevel: 3, - path: [2147483648, 0, 15] - } - }, { - address: 'Ae2tdPwUPEZGvzYwTSUZhTxDviZSKqLZDYVkcT4rLqckFXvdTMv21CinTCd', - addressing: { - startLevel: 3, - path: [2147483648, 0, 16] - } - }, { - address: 'Ae2tdPwUPEZKEsQJxXQvRJHLCWRGFQNWFgHhroEw9GGXV25wRBH8TAmwCRi', - addressing: { - startLevel: 3, - path: [2147483648, 0, 17] - } - }, { - address: 'Ae2tdPwUPEZ6u2i2u4iLhd9Rq4rUBsVaMpqQWuTCXMitMmugcsr9iANjNEE', - addressing: { - startLevel: 3, - path: [2147483648, 0, 18] - } - }, { - address: 'Ae2tdPwUPEYxsngJhnW49jrmGuaCvQK34Hqrnx5w5SWxgfjDkSDcnrRdT5G', - addressing: { - startLevel: 3, - path: [2147483648, 0, 19] - } - }, { - address: 'Ae2tdPwUPEZ3Kt2BJnDMQggxEA4c9MTagByH41rJkv2k82dBch2nqMAdyHJ', - addressing: { - startLevel: 3, - path: [2147483648, 1, 0] - } - }, { - address: 'Ae2tdPwUPEYzRJEAdyX24mYTmKx8dMHYQgxkBcgnsdFHPPvmySMS9cspZmj', - addressing: { - startLevel: 3, - path: [2147483648, 1, 1] - } - }, { - address: 'Ae2tdPwUPEZ5yxTy5wcVmUXP5xkkDSXfrgqWp8Px6knmUiFjJEytBGXfWoS', - addressing: { - startLevel: 3, - path: [2147483648, 1, 2] - } - }, { - address: 'Ae2tdPwUPEZ3pKEVL1tMmz8EzaE9Hyn2cVJKf3TFVCjw7xeLFBdJngUXPXG', - addressing: { - startLevel: 3, - path: [2147483648, 1, 3] - } - }, { - address: 'Ae2tdPwUPEZLhFMGWjMpCWwsUiN58DkKmtg6r7dFJfXhmUyzNGPb2Crg141', - addressing: { - startLevel: 3, - path: [2147483648, 1, 4] - } - }, { - address: 'Ae2tdPwUPEZBTYWkpudmAYdyQM9CHcV9orEVnVSan6EP2xNApB5bLE1XsKF', - addressing: { - startLevel: 3, - path: [2147483648, 1, 5] - } - }, { - address: 'Ae2tdPwUPEYzdEoDVNdvLz6kFgVsjEyUJ1z3mHzAT1HotQk31tRvGNM4tge', - addressing: { - startLevel: 3, - path: [2147483648, 1, 6] - } - }, { - address: 'Ae2tdPwUPEZ2NvzdECB18z3SBTc8SVvx1PJuxPKsnncygEZeeKNaAeBeLDg', - addressing: { - startLevel: 3, - path: [2147483648, 1, 7] - } - }, { - address: 'Ae2tdPwUPEZ3iMfnFWSM3zeqpNwAdT62jNgiA27x1ZEacpfVbViYWb7gyNP', - addressing: { - startLevel: 3, - path: [2147483648, 1, 8] - } - }, { - address: 'Ae2tdPwUPEYykz6FbkuRf9ScRwZc8F1xobMPyzECjsdMyqobn2tVpL6pdDW', - addressing: { - startLevel: 3, - path: [2147483648, 1, 9] - } - }, { - address: 'Ae2tdPwUPEZ8SUET76NhRhJ6TNLW48csZ4e87hu6JYobQvVTKSYDMPBU5Xa', - addressing: { - startLevel: 3, - path: [2147483648, 1, 10] - } - }, { - address: 'Ae2tdPwUPEZBryPRKuib729PQNSBxzgXsTVwmg3CWQjZaAS7pj4WZNa3VR6', - addressing: { - startLevel: 3, - path: [2147483648, 1, 11] - } - }, { - address: 'Ae2tdPwUPEZ6yyMqXFEYmLvqXqktpU8LR6oW8qVbaap7R2YJGc9xDbs2Eb6', - addressing: { - startLevel: 3, - path: [2147483648, 1, 12] - } - }, { - address: 'Ae2tdPwUPEZ4gRK6Qhj3Mo4tSU4LkRiqVgsQm6rg8YBGC6fqVLNqA9REr7c', - addressing: { - startLevel: 3, - path: [2147483648, 1, 13] - } - }, { - address: 'Ae2tdPwUPEZ3xWm3GHFVNtVWcnyTGpSF6AjyhZJY3DuSGvf3WvwLzkBisFw', - addressing: { - startLevel: 3, - path: [2147483648, 1, 14] - } - }, { - address: 'Ae2tdPwUPEZL9BqYXyY6zQQoatsWbkcN6g46NfvCfaE8mQppcVgentdAXeo', - addressing: { - startLevel: 3, - path: [2147483648, 1, 15] - } - }, { - address: 'Ae2tdPwUPEYzxRSsoqFY2Ym7zQfSdosY1bdK8KZTEjPjcobHd3GbZ3qZpvB', - addressing: { - startLevel: 3, - path: [2147483648, 1, 16] - } - }, { - address: 'Ae2tdPwUPEZEdntBfWRH5ucNrQd7RwPjZ2QZEkxJbsJDBrCGnTtjqfb8Aph', - addressing: { - startLevel: 3, - path: [2147483648, 1, 17] - } - }, { - address: 'Ae2tdPwUPEZKDMDuUZBUSokAzeJwNpqHorYEPuycXBMMFameoVFkxwpLheC', - addressing: { - startLevel: 3, - path: [2147483648, 1, 18] - } - }, { - address: 'Ae2tdPwUPEZ2E4XNPVarvndsmkC8n2vS9rXJfCxny9oVacViLRDpeKioaAc', - addressing: { - startLevel: 3, - path: [2147483648, 1, 19] - } - }] -}; - -test('create tx', async () => { - const createTxRequest = { - absSlotNumber: new BigNumber('70858976'), - receivers: [ - { - address: '00ca292fa69ed94a6fbaa4747797dc08a0c0b0831a83d960a320179ab2c3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e' - }, - { - address: '005ef516805e1fed9d3aa2c78c7599e931cd9c5d914c372eb2728006cfc3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e', - addressing: { - path: [ - 2147485500, - 2147485463, - 2147483648, - 1, - 585 - ], - startLevel: 1 - } + const RESTORED_ADDRESSES = { + addresses: [{ + address: 'Ae2tdPwUPEZCfyggUgSxD1E5UCx5f5hrXCdvQjJszxE7epyZ4ox9vRNUbHf', + addressing: { + startLevel: 3, + path: [2147483648, 0, 0] } - ], - network: { - NetworkId: 300, - NetworkName: 'Cardano Legacy Testnet', - Backend: { - BackendService: 'https://testnet-backend.yoroiwallet.com', - WebSocket: 'wss://testnet-backend.yoroiwallet.com:443', - TokenInfoService: 'https://stage-cdn.yoroiwallet.com' - }, - BaseConfig: [ + }, { + address: 'Ae2tdPwUPEZFXnw5T5aXoaP28yw4mRLeYomaG9mPGCFbPUtw368ZWYKp1zM', + addressing: { + startLevel: 3, + path: [2147483648, 0, 1] + } + }, { + address: 'Ae2tdPwUPEZ8gpDazyi8VtcGMnMrkpKxts6ppCT45mdT6WMZEwHXs7pP8Tg', + addressing: { + startLevel: 3, + path: [2147483648, 0, 2] + } + }, { + address: 'Ae2tdPwUPEZBFhEBZgvm3fQeuW2zBPochfQehFtXn6tCRQy7zsQ9Px88jsH', + addressing: { + startLevel: 3, + path: [2147483648, 0, 3] + } + }, { + address: 'Ae2tdPwUPEZ6tzHKyuMLL6bh1au5DETgb53PTmJAN9aaCLtaUTWHvrS2mxo', + addressing: { + startLevel: 3, + path: [2147483648, 0, 4] + } + }, { + address: 'Ae2tdPwUPEYxzZH7sSyyXK6DDmjCxRajXUXFqbEjtxfPN7HZzQfXr4hxKwT', + addressing: { + startLevel: 3, + path: [2147483648, 0, 5] + } + }, { + address: 'Ae2tdPwUPEZMUQdcxu6AEoq9wzL8mtSCKhWUNhYjXqq1aenwimnLaCit1FY', + addressing: { + startLevel: 3, + path: [2147483648, 0, 6] + } + }, { + address: 'Ae2tdPwUPEYw9VvB1BQqgGd8XzNfgz4mv9gBjB9P8EtvPQfz4D8Gt4xnQog', + addressing: { + startLevel: 3, + path: [2147483648, 0, 7] + } + }, { + address: 'Ae2tdPwUPEYxYn4T89ffVqpDwqwsMDAZTcfnWBqAkjoem5sgaVKGU3FUB2E', + addressing: { + startLevel: 3, + path: [2147483648, 0, 8] + } + }, { + address: 'Ae2tdPwUPEZBZ9aYboQuf5PFcjuZRCosBhLkUCxSQw1vqk3iyK5qGo5CJWe', + addressing: { + startLevel: 3, + path: [2147483648, 0, 9] + } + }, { + address: 'Ae2tdPwUPEZ4yCaYs3j7pPPaM9iA3KLruJkKjmUBBLKYzpJUHutWdS6EkKa', + addressing: { + startLevel: 3, + path: [2147483648, 0, 10] + } + }, { + address: 'Ae2tdPwUPEZ5zV8wqC9gPvkDtr2MS3Ys2vQbyPdM4wsdnzevbqnaJFg62hk', + addressing: { + startLevel: 3, + path: [2147483648, 0, 11] + } + }, { + address: 'Ae2tdPwUPEZAD1KmgTQ4zS6Q5s4VXWDXqB3ZmM1abQGoyrGN8qCsZyXc3vf', + addressing: { + startLevel: 3, + path: [2147483648, 0, 12] + } + }, { + address: 'Ae2tdPwUPEZ1SFwQMGroCTabfCPJ1RiK8D2F11C1vTMi14tX1XK2uogRWqM', + addressing: { + startLevel: 3, + path: [2147483648, 0, 13] + } + }, { + address: 'Ae2tdPwUPEZJ8CiSFVipoupUVBGRAVbmbpmKPCXsExcwzZd6FcNpAcExY1r', + addressing: { + startLevel: 3, + path: [2147483648, 0, 14] + } + }, { + address: 'Ae2tdPwUPEZCeLRPNcreMQAAfJFs9ZzBeFK9pUXhMnL3ooQP9TajasVsYKK', + addressing: { + startLevel: 3, + path: [2147483648, 0, 15] + } + }, { + address: 'Ae2tdPwUPEZGvzYwTSUZhTxDviZSKqLZDYVkcT4rLqckFXvdTMv21CinTCd', + addressing: { + startLevel: 3, + path: [2147483648, 0, 16] + } + }, { + address: 'Ae2tdPwUPEZKEsQJxXQvRJHLCWRGFQNWFgHhroEw9GGXV25wRBH8TAmwCRi', + addressing: { + startLevel: 3, + path: [2147483648, 0, 17] + } + }, { + address: 'Ae2tdPwUPEZ6u2i2u4iLhd9Rq4rUBsVaMpqQWuTCXMitMmugcsr9iANjNEE', + addressing: { + startLevel: 3, + path: [2147483648, 0, 18] + } + }, { + address: 'Ae2tdPwUPEYxsngJhnW49jrmGuaCvQK34Hqrnx5w5SWxgfjDkSDcnrRdT5G', + addressing: { + startLevel: 3, + path: [2147483648, 0, 19] + } + }, { + address: 'Ae2tdPwUPEZ3Kt2BJnDMQggxEA4c9MTagByH41rJkv2k82dBch2nqMAdyHJ', + addressing: { + startLevel: 3, + path: [2147483648, 1, 0] + } + }, { + address: 'Ae2tdPwUPEYzRJEAdyX24mYTmKx8dMHYQgxkBcgnsdFHPPvmySMS9cspZmj', + addressing: { + startLevel: 3, + path: [2147483648, 1, 1] + } + }, { + address: 'Ae2tdPwUPEZ5yxTy5wcVmUXP5xkkDSXfrgqWp8Px6knmUiFjJEytBGXfWoS', + addressing: { + startLevel: 3, + path: [2147483648, 1, 2] + } + }, { + address: 'Ae2tdPwUPEZ3pKEVL1tMmz8EzaE9Hyn2cVJKf3TFVCjw7xeLFBdJngUXPXG', + addressing: { + startLevel: 3, + path: [2147483648, 1, 3] + } + }, { + address: 'Ae2tdPwUPEZLhFMGWjMpCWwsUiN58DkKmtg6r7dFJfXhmUyzNGPb2Crg141', + addressing: { + startLevel: 3, + path: [2147483648, 1, 4] + } + }, { + address: 'Ae2tdPwUPEZBTYWkpudmAYdyQM9CHcV9orEVnVSan6EP2xNApB5bLE1XsKF', + addressing: { + startLevel: 3, + path: [2147483648, 1, 5] + } + }, { + address: 'Ae2tdPwUPEYzdEoDVNdvLz6kFgVsjEyUJ1z3mHzAT1HotQk31tRvGNM4tge', + addressing: { + startLevel: 3, + path: [2147483648, 1, 6] + } + }, { + address: 'Ae2tdPwUPEZ2NvzdECB18z3SBTc8SVvx1PJuxPKsnncygEZeeKNaAeBeLDg', + addressing: { + startLevel: 3, + path: [2147483648, 1, 7] + } + }, { + address: 'Ae2tdPwUPEZ3iMfnFWSM3zeqpNwAdT62jNgiA27x1ZEacpfVbViYWb7gyNP', + addressing: { + startLevel: 3, + path: [2147483648, 1, 8] + } + }, { + address: 'Ae2tdPwUPEYykz6FbkuRf9ScRwZc8F1xobMPyzECjsdMyqobn2tVpL6pdDW', + addressing: { + startLevel: 3, + path: [2147483648, 1, 9] + } + }, { + address: 'Ae2tdPwUPEZ8SUET76NhRhJ6TNLW48csZ4e87hu6JYobQvVTKSYDMPBU5Xa', + addressing: { + startLevel: 3, + path: [2147483648, 1, 10] + } + }, { + address: 'Ae2tdPwUPEZBryPRKuib729PQNSBxzgXsTVwmg3CWQjZaAS7pj4WZNa3VR6', + addressing: { + startLevel: 3, + path: [2147483648, 1, 11] + } + }, { + address: 'Ae2tdPwUPEZ6yyMqXFEYmLvqXqktpU8LR6oW8qVbaap7R2YJGc9xDbs2Eb6', + addressing: { + startLevel: 3, + path: [2147483648, 1, 12] + } + }, { + address: 'Ae2tdPwUPEZ4gRK6Qhj3Mo4tSU4LkRiqVgsQm6rg8YBGC6fqVLNqA9REr7c', + addressing: { + startLevel: 3, + path: [2147483648, 1, 13] + } + }, { + address: 'Ae2tdPwUPEZ3xWm3GHFVNtVWcnyTGpSF6AjyhZJY3DuSGvf3WvwLzkBisFw', + addressing: { + startLevel: 3, + path: [2147483648, 1, 14] + } + }, { + address: 'Ae2tdPwUPEZL9BqYXyY6zQQoatsWbkcN6g46NfvCfaE8mQppcVgentdAXeo', + addressing: { + startLevel: 3, + path: [2147483648, 1, 15] + } + }, { + address: 'Ae2tdPwUPEYzxRSsoqFY2Ym7zQfSdosY1bdK8KZTEjPjcobHd3GbZ3qZpvB', + addressing: { + startLevel: 3, + path: [2147483648, 1, 16] + } + }, { + address: 'Ae2tdPwUPEZEdntBfWRH5ucNrQd7RwPjZ2QZEkxJbsJDBrCGnTtjqfb8Aph', + addressing: { + startLevel: 3, + path: [2147483648, 1, 17] + } + }, { + address: 'Ae2tdPwUPEZKDMDuUZBUSokAzeJwNpqHorYEPuycXBMMFameoVFkxwpLheC', + addressing: { + startLevel: 3, + path: [2147483648, 1, 18] + } + }, { + address: 'Ae2tdPwUPEZ2E4XNPVarvndsmkC8n2vS9rXJfCxny9oVacViLRDpeKioaAc', + addressing: { + startLevel: 3, + path: [2147483648, 1, 19] + } + }] + }; + + test('create tx', async () => { + const createTxRequest = { + absSlotNumber: new BigNumber('70858976'), + receivers: [ { - StartAt: 0, - ChainNetworkId: '0', - ByronNetworkId: 1097911063, - GenesisDate: '1563999616000', - SlotsPerEpoch: 21600, - SlotDuration: 20 + address: '00ca292fa69ed94a6fbaa4747797dc08a0c0b0831a83d960a320179ab2c3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e' }, { - StartAt: 74, - SlotsPerEpoch: 432000, - SlotDuration: 1, - PerEpochPercentageReward: 69344, - LinearFee: { - coefficient: '44', - constant: '155381' - }, - CoinsPerUtxoWord: '34482', - MinimumUtxoVal: '1000000', - PoolDeposit: '500000000', - KeyDeposit: '2000000' + address: '005ef516805e1fed9d3aa2c78c7599e931cd9c5d914c372eb2728006cfc3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e', + addressing: { + path: [ + 2147485500, + 2147485463, + 2147483648, + 1, + 585 + ], + startLevel: 1 + } } ], - CoinType: 2147485463, - Fork: 0 - }, - defaultToken: { - defaultNetworkId: 300, - defaultIdentifier: '' - }, - utxos: [ - { - amount: '10000000', - receiver: '6085abf3eca55024aa1c22b944599b5e890ec12dfb19941229da4ba293', - tx_hash: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c', - tx_index: 1, - utxo_id: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c1', - addressing: { - path: [ - 2147485500, - 2147485463, - 2147483648, - 0, - 0 - ], - startLevel: 1 + network: { + NetworkId: 300, + NetworkName: 'Cardano Legacy Testnet', + Backend: { + BackendService: 'https://testnet-backend.yoroiwallet.com', + TokenInfoService: 'https://stage-cdn.yoroiwallet.com' }, - assets: [ + BaseConfig: [ { - amount: '45000000', - assetId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c.474f4c44', - policyId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c', - name: '474f4c44' + StartAt: 0, + ChainNetworkId: '0', + ByronNetworkId: 1097911063, + GenesisDate: '1563999616000', + SlotsPerEpoch: 21600, + SlotDuration: 20 }, - ] - }, - ], - tokens: [ - { - token: { - TokenId: 4, - NetworkId: 300, - IsDefault: true, - IsNFT: false, - Identifier: '', - Digest: -6.1389758346808205e-55, - Metadata: { - type: 'Cardano', - policyId: '', - assetName: '', - ticker: 'TADA', - longName: null, - numberOfDecimals: 6 - } - }, - amount: '1000000', - shouldSendAll: false - } - ], - metadata: undefined, - } - const response = await AdaApi.prototype.createUnsignedTxForUtxos(createTxRequest); - - expect(response.senderUtxos).toEqual( - [ - { - amount: '10000000', - receiver: '6085abf3eca55024aa1c22b944599b5e890ec12dfb19941229da4ba293', - tx_hash: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c', - tx_index: 1, - utxo_id: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c1', - addressing: { - path: [ - 2147485500, - 2147485463, - 2147483648, - 0, - 0 - ], - startLevel: 1 - }, - assets: [ { - amount: '45000000', - assetId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c.474f4c44', - policyId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c', - name: '474f4c44' - }, - ] - }, - ] - ); - expect(response.changeAddr.length).toBe(1); - - expect(response.changeAddr[0].address).toBe( - '005ef516805e1fed9d3aa2c78c7599e931cd9c5d914c372eb2728006cfc3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e' - ); - expect(response.changeAddr[0].addressing).toEqual( - { - path: [ - 2147485500, - 2147485463, - 2147483648, - 1, - 585 - ], - startLevel: 1 - } - ); - expect(response.changeAddr[0].values.values).toEqual( - [ - { - identifier: '', - networkId: 300, - amount: new BigNumber('8812631') + StartAt: 74, + SlotsPerEpoch: 432000, + SlotDuration: 1, + PerEpochPercentageReward: 69344, + LinearFee: { + coefficient: '44', + constant: '155381' + }, + CoinsPerUtxoWord: '34482', + MinimumUtxoVal: '1000000', + PoolDeposit: '500000000', + KeyDeposit: '2000000' + } + ], + CoinType: 2147485463, + Fork: 0 }, - { - amount: new BigNumber('45000000'), - identifier: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c.474f4c44', - networkId: 300, + defaultToken: { + defaultNetworkId: 300, + defaultIdentifier: '' }, - ] - ); - - expect(response.unsignedTx.get_fee_if_set()?.to_str()).toEqual('187369'); - - function cmpOutputs(o1: any, o2: any): number { - if (o1.address > o2.address) { - return 1; - } - if (o1.address < o2.address) { - return -1; - } - return Number(o1.amount.coin) - Number(o2.amount.coin); - } - - const txJson = JSON.parse(response.unsignedTx.build_tx().to_json()); - const ref = { - auxiliary_data: null, - body: { - auxiliary_data_hash: null, - certs: null, - collateral: null, - collateral_return: null, - current_treasury_value: null, - donation: null, - fee: '187369', - inputs: [ - { - index: 1, - transaction_id: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c' - } - ], - mint: null, - network_id: null, - outputs: [ + utxos: [ { - address: 'addr_test1qr9zjtaxnmv55ma65368097upzsvpvyrr2pajc9ryqte4vkr3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qfwzsgx', - amount: { - coin: '1000000', - multiasset: null + amount: '10000000', + receiver: '6085abf3eca55024aa1c22b944599b5e890ec12dfb19941229da4ba293', + tx_hash: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c', + tx_index: 1, + utxo_id: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c1', + addressing: { + path: [ + 2147485500, + 2147485463, + 2147483648, + 0, + 0 + ], + startLevel: 1 }, - plutus_data: null, - script_ref: null + assets: [ + { + amount: '45000000', + assetId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c.474f4c44', + policyId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c', + name: '474f4c44' + }, + ] }, + ], + tokens: [ { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '1000000', - multiasset: null + token: { + TokenId: 4, + NetworkId: 300, + IsDefault: true, + IsNFT: false, + Identifier: '', + Digest: -6.1389758346808205e-55, + Metadata: { + type: 'Cardano', + policyId: '', + assetName: '', + ticker: 'TADA', + longName: null, + logo: null, + numberOfDecimals: 6 + } }, - plutus_data: null, - script_ref: null - }, + amount: '1000000', + shouldSendAll: false + } + ], + metadata: undefined, + } + const response = await AdaApi.prototype.createUnsignedTxForUtxos(createTxRequest); + + expect(response.senderUtxos).toEqual( + [ { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '1000000', - multiasset: null + amount: '10000000', + receiver: '6085abf3eca55024aa1c22b944599b5e890ec12dfb19941229da4ba293', + tx_hash: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c', + tx_index: 1, + utxo_id: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c1', + addressing: { + path: [ + 2147485500, + 2147485463, + 2147483648, + 0, + 0 + ], + startLevel: 1 }, - plutus_data: null, - script_ref: null + assets: [ + { + amount: '45000000', + assetId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c.474f4c44', + policyId: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c', + name: '474f4c44' + }, + ] }, + ] + ); + expect(response.changeAddr.length).toBe(1); + + expect(response.changeAddr[0].address).toBe( + '005ef516805e1fed9d3aa2c78c7599e931cd9c5d914c372eb2728006cfc3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e' + ); + expect(response.changeAddr[0].addressing).toEqual( + { + path: [ + 2147485500, + 2147485463, + 2147483648, + 1, + 585 + ], + startLevel: 1 + } + ); + expect(response.changeAddr[0].values.values).toEqual( + [ { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '1000000', - multiasset: null - }, - plutus_data: null, - script_ref: null + identifier: '', + networkId: 300, + amount: new BigNumber('8812631') }, { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '1000000', - multiasset: null - }, - plutus_data: null, - script_ref: null + amount: new BigNumber('45000000'), + identifier: 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c.474f4c44', + networkId: 300, }, - { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '1000000', - multiasset: null + ] + ); + + expect(response.unsignedTx.get_fee_if_set()?.to_str()).toEqual('187369'); + + function cmpOutputs(o1: any, o2: any): number { + if (o1.address > o2.address) { + return 1; + } + if (o1.address < o2.address) { + return -1; + } + return Number(o1.amount.coin) - Number(o2.amount.coin); + } + + const txJson = JSON.parse(response.unsignedTx.build_tx().to_json()); + const ref = { + auxiliary_data: null, + body: { + auxiliary_data_hash: null, + certs: null, + collateral: null, + collateral_return: null, + current_treasury_value: null, + donation: null, + fee: '187369', + inputs: [ + { + index: 1, + transaction_id: 'fa489b6c954ff298ab307a7433f33fa508a3504de04190533a5541905728292c' + } + ], + mint: null, + network_id: null, + outputs: [ + { + address: 'addr_test1qr9zjtaxnmv55ma65368097upzsvpvyrr2pajc9ryqte4vkr3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qfwzsgx', + amount: { + coin: '1000000', + multiasset: null + }, + plutus_data: null, + script_ref: null }, - plutus_data: null, - script_ref: null - }, - { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '1155080', - multiasset: { - 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c': { - '474f4c44': '45000000', - }, + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '1000000', + multiasset: null }, + plutus_data: null, + script_ref: null }, - plutus_data: null, - script_ref: null, - }, - { - address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', - amount: { - coin: '2657551', - multiasset: null + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '1000000', + multiasset: null + }, + plutus_data: null, + script_ref: null }, - plutus_data: null, - script_ref: null - } - ], - reference_inputs: null, - required_signers: null, - script_data_hash: null, - total_collateral: null, - ttl: '70866176', - update: null, - validity_start_interval: null, - voting_procedures: null, - voting_proposals: null, - withdrawals: null - }, - is_valid: true, - witness_set: { - bootstraps: null, - native_scripts: null, - plutus_data: null, - plutus_scripts: null, - redeemers: null, - vkeys: null - } - }; - txJson.body.outputs.sort(cmpOutputs); - ref.body.outputs.sort(cmpOutputs); - expect(txJson).toEqual(ref); + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '1000000', + multiasset: null + }, + plutus_data: null, + script_ref: null + }, + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '1000000', + multiasset: null + }, + plutus_data: null, + script_ref: null + }, + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '1000000', + multiasset: null + }, + plutus_data: null, + script_ref: null + }, + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '1155080', + multiasset: { + 'c85f714f2187021c7bab53741f659d0c5b1a6e7529d32b7794ff051c': { + '474f4c44': '45000000', + }, + }, + }, + plutus_data: null, + script_ref: null, + }, + { + address: 'addr_test1qp00295qtc07m8f65trccaveaycum8zaj9xrwt4jw2qqdn7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qn97ahn', + amount: { + coin: '2657551', + multiasset: null + }, + plutus_data: null, + script_ref: null + } + ], + reference_inputs: null, + required_signers: null, + script_data_hash: null, + total_collateral: null, + ttl: '70866176', + update: null, + validity_start_interval: null, + voting_procedures: null, + voting_proposals: null, + withdrawals: null + }, + is_valid: true, + witness_set: { + bootstraps: null, + native_scripts: null, + plutus_data: null, + plutus_scripts: null, + redeemers: null, + vkeys: null + } + }; + txJson.body.outputs.sort(cmpOutputs); + ref.body.outputs.sort(cmpOutputs); + expect(txJson).toEqual(ref); + }); }); diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.test.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.test.js index 323797ebd9..a1c096c5cb 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.test.js @@ -1,5 +1,5 @@ // @flow -import '../test-config'; +import '../test-config.forTests'; import { RustModule } from './rustLoader'; import { CatalystLabels, generateRegistration } from './catalyst'; @@ -16,10 +16,9 @@ test('Generate Catalyst registration tx', async () => { Buffer.from('4820f7ce221e177c8eae2b2ee5c1f1581a0d88ca5c14329d8f2389e77a465655c27662621bfb99cb9445bf8114cc2a630afd2dd53bc88c08c5f2aed8e9c7cb89', 'hex') ); - // eslint-disable-next-line max-len // stake_test1uzhr5zn6akj2affzua8ylcm8t872spuf5cf6tzjrvnmwemcehgcjm (e0ae3a0a7aeda4aea522e74e4fe36759fca80789a613a58a4364f6ecef) const address = Scope.WalletV4.RewardAddress.new( - Scope.WalletV4.NetworkInfo.testnet().network_id(), + Scope.WalletV4.NetworkInfo.testnet_preprod().network_id(), Scope.WalletV4.Credential.from_keyhash(stakePrivateKey.to_public().hash()), ); diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/cryptoWallet.test.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/cryptoWallet.test.js index 5edd6014a7..c22ee419f2 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/cryptoWallet.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/cryptoWallet.test.js @@ -1,5 +1,5 @@ // @flow -import '../test-config'; +import '../test-config.forTests'; import { RustModule } from './rustLoader'; import { generateLedgerWalletRootKey } from './cryptoWallet'; import { diff --git a/packages/yoroi-extension/app/api/common/lib/crypto/keys/keyRepository.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/keyRepository.js similarity index 98% rename from packages/yoroi-extension/app/api/common/lib/crypto/keys/keyRepository.js rename to packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/keyRepository.js index b3331c002a..1e2c23e94f 100644 --- a/packages/yoroi-extension/app/api/common/lib/crypto/keys/keyRepository.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/keyRepository.js @@ -13,7 +13,7 @@ import type { import { KeyKind, } from './types'; -import { RustModule } from '../../../../ada/lib/cardanoCrypto/rustLoader'; +import { RustModule } from '../rustLoader'; import type { BIP32Interface } from 'bip32'; import { fromBase58, fromPublicKey } from 'bip32'; import { decode, encode } from 'bs58check'; diff --git a/packages/yoroi-extension/app/api/common/lib/crypto/keys/path.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/path.js similarity index 100% rename from packages/yoroi-extension/app/api/common/lib/crypto/keys/path.js rename to packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/path.js diff --git a/packages/yoroi-extension/app/api/common/lib/crypto/keys/types.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/types.js similarity index 100% rename from packages/yoroi-extension/app/api/common/lib/crypto/keys/types.js rename to packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/keys/types.js diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.js index 198bc5b6ae..224ea2acdd 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.js @@ -1,36 +1,18 @@ // @flow -import cryptoRandomString from 'crypto-random-string'; import { - entropyToMnemonic, mnemonicToEntropy, - wordlists, } from 'bip39'; import { Logger, stringifyError } from '../../../../utils/logging'; -import * as unorm from 'unorm'; -import { pbkdf2Sync as pbkdf2 } from 'pbkdf2'; - import { RustModule } from './rustLoader'; import { isValidBip39Mnemonic -} from '../../../common/lib/crypto/wallet'; +} from './wallet'; import config from '../../../../config'; -/** - * Variation of the mnemonic to seed as defined by BIP39 - * https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#from-mnemonic-to-seed - */ -const mnemonicToSeedHex = (mnemonic: string, password: ?string): string => { - const mnemonicBuffer = Buffer.from(unorm.nfkd(mnemonic), 'utf8'); - const salt = 'mnemonic' + (unorm.nfkd(password) || ''); - const saltBuffer = Buffer.from(salt, 'utf8'); - // note: we use a 32-byte key length instead of 64 like in the bip39 specification - return pbkdf2(mnemonicBuffer, saltBuffer, 2048, 32, 'sha512').toString('hex'); -}; - -// Legacy +// paper /** Check validity of paper mnemonic (including checksum) */ export const isValidEnglishAdaPaperMnemonic = ( phrase: string, @@ -49,7 +31,7 @@ export const isValidEnglishAdaPaperMnemonic = ( return false; }; -// Legacy +// paper /** Check validity of paper mnemonic (including checksum) */ export const unscramblePaperAdaMnemonic = ( phrase: string, @@ -58,37 +40,6 @@ export const unscramblePaperAdaMnemonic = ( ): [?string, number] => { const words = phrase.split(' '); if (words.length === numberOfWords) { - if (numberOfWords === config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT) { - if (password != null) { - throw new Error( - `Password is not expected for a ${config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT}-word paper!` - ); - } - const [scrambledMnemonics, passwordMnemonics] = [words.slice(0, 18), words.slice(18)]; - try { - password = mnemonicToSeedHex(passwordMnemonics.join(' ')); - const entropy = mnemonicToEntropy( - scrambledMnemonics.join(' ') - ); - - const mnemonics = RustModule.WasmScope(Scope => { - const newEntropy = Scope.WalletV2.paper_wallet_unscramble( - Buffer.from(entropy, 'hex'), - password || '' - ); - - return newEntropy.to_english_mnemonics(); - }); - - return [ - mnemonics, - config.wallets.DAEDALUS_RECOVERY_PHRASE_WORD_COUNT - ]; - } catch (e) { - Logger.error('Failed to unscramble paper mnemonic! ' + stringifyError(e)); - return [undefined, 0]; - } - } if (numberOfWords === config.wallets.YOROI_PAPER_RECOVERY_PHRASE_WORD_COUNT) { if (password == null) { throw new Error( @@ -118,17 +69,3 @@ export const unscramblePaperAdaMnemonic = ( } return [undefined, 0]; }; - -/** Scramble provided mnemonic with the provided password */ -export const scramblePaperAdaMnemonic = ( - phrase: string, - password: string, -): string => { - const salt = new Uint8Array(Buffer.from(cryptoRandomString({ length: 2 * 8 }), 'hex')); - const entropy = RustModule.WasmScope(Scope => { - const walletEntropy = Scope.WalletV2.Entropy.from_english_mnemonics(phrase); - const bytes = Scope.WalletV2.paper_wallet_scramble(walletEntropy, salt, password); - return Buffer.from(bytes) - }); - return entropyToMnemonic(entropy, wordlists.ENGLISH); -}; diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.test.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.test.js index d050e6a9f6..610c3b3179 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/paperWallet.test.js @@ -1,18 +1,15 @@ // @flow -import '../test-config'; +import '../test-config.forTests'; import { schema } from 'lovefield'; -import { validateMnemonic } from 'bip39'; import { generateWalletRootKey, } from './cryptoWallet'; import { isValidEnglishAdaPaperMnemonic, unscramblePaperAdaMnemonic, - scramblePaperAdaMnemonic, } from './paperWallet'; import { RustModule } from './rustLoader'; -import { generateByronPlate } from './plate'; import { silenceLogsForTesting, } from '../../../../utils/logging'; @@ -22,53 +19,12 @@ import { import config from '../../../../config'; import { networks } from '../storage/database/prepackaged/networks'; -const VALID_DD_PAPER = { - words: 'fire shaft radar three ginger receive result phrase song staff scorpion food undo will have expire nice uncle dune until lift unlock exist step world slush disagree', - address: 'DdzFFzCqrht2FYx935sAdqdEF61gS2L5ENNYqFHgMwfP8833zyfyBDtZC193Lx9CB1LCpYtSBUhnkaCn1Q55Xrah2wcKowiddT2VJrv6', - privateKey: '456603a7dabcdaf92bc04bb868f0cd5bb409e377c319505aace318e49cebe30c76e36d7005a04bfa99769c9f40d7c172ce3960cc96489d8b96faa8d758f594a77003f41b9be4f637289b1124a560690e43f418fda994cb4f6dee3b43965b6b95', -}; -const INVALID_DD_PAPER_1 = - 'shaft fire radar three ginger receive result phrase song staff scorpion food undo will have expire nice uncle dune until lift unlock exist step world slush disagree'; -const INVALID_DD_PAPER_2 = - 'shaft radar fire three ginger receive result phrase song staff scorpion food undo will have expire nice uncle dune until lift unlock exist step world disagree slush'; - beforeAll(async () => { await RustModule.load(); await loadLovefieldDB(schema.DataStoreType.MEMORY); silenceLogsForTesting(); }); -test('Is valid Daedalus paper mnemonic', () => { - // Note: expect these to print error to console - - expect(isValidEnglishAdaPaperMnemonic( - VALID_DD_PAPER.words, - config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT - )).toEqual(true); - // fails if length parameter is incorrect - expect(isValidEnglishAdaPaperMnemonic(VALID_DD_PAPER.words, 30)).toEqual(false); - - // TODO: why did we need two tests for this? - expect(isValidEnglishAdaPaperMnemonic( - INVALID_DD_PAPER_1, - config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT - )).toEqual(false); - expect(isValidEnglishAdaPaperMnemonic( - INVALID_DD_PAPER_2, - config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT - )).toEqual(false); -}); - -test('Unscramble Daedalus paper produces 12 valid words', async () => { - const [words, count] = unscramblePaperAdaMnemonic( - VALID_DD_PAPER.words, - config.wallets.DAEDALUS_PAPER_RECOVERY_PHRASE_WORD_COUNT - ); - expect(count).toEqual(config.wallets.DAEDALUS_RECOVERY_PHRASE_WORD_COUNT); - if (words == null) throw new Error('failed to unscramble in test'); - expect(validateMnemonic(words)).toEqual(true); -}); - const VALID_YOROI_PAPER = { originalWords: 'business sight another write gadget near where hollow insane dynamic grain hurt slim clip require', password: 'testpasswordtest', @@ -95,20 +51,6 @@ test('Is valid Yoroi paper mnemonic', () => { )).toEqual(false); }); -test('Scramble then unscramble Yoroi paper wallet is no-op', () => { - const password = 'testpasswordtest'; - const scrambled = scramblePaperAdaMnemonic( - VALID_YOROI_PAPER.originalWords, - password, - ); - const [words] = unscramblePaperAdaMnemonic( - scrambled, - config.wallets.YOROI_PAPER_RECOVERY_PHRASE_WORD_COUNT, - password - ); - expect(words).toEqual(VALID_YOROI_PAPER.originalWords); -}); - test('Unscramble Yoroi paper matches expected address', async () => { const [words] = unscramblePaperAdaMnemonic( VALID_YOROI_PAPER.scrambledWords, @@ -120,17 +62,9 @@ test('Unscramble Yoroi paper matches expected address', async () => { if (baseConfig.ByronNetworkId == null) { throw new Error(`missing Byron network id`); } - const { ByronNetworkId } = baseConfig; expect(words).toBeTruthy(); if (words != null) { const rootPk = generateWalletRootKey(words); expect(Buffer.from(rootPk.as_bytes()).toString('hex')).toEqual(VALID_YOROI_PAPER.privateKey); - const plate = generateByronPlate( - rootPk, - 0, // account index - 1, // address count - ByronNetworkId - ); - expect(plate.addresses[0]).toEqual(VALID_YOROI_PAPER.byronAddress); } }); diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/plate.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/plate.js index bde2e02caa..887e4f56d7 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/plate.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/plate.js @@ -1,49 +1,21 @@ // @flow import { RustModule } from './rustLoader'; -import { v2genAddressBatchFunc } from '../../restoration/byron/scan'; import type { GenerateAddressFunc } from '../../../common/lib/restoration/bip44AddressScan'; import { - HARD_DERIVATION_START, - CoinTypes, - WalletTypePurpose, ChainDerivations, + CoinTypes, + HARD_DERIVATION_START, STAKING_KEY_INDEX, + WalletTypePurpose, } from '../../../../config/numbersConfig'; -import { walletChecksum, legacyWalletChecksum } from '@emurgo/cip4-js'; -import type { PlateResponse } from '../../../common/lib/crypto/plate'; +import type { WalletChecksum } from '@emurgo/cip4-js'; +import { walletChecksum } from '@emurgo/cip4-js'; -export const generateByronPlate = ( - rootPk: RustModule.WalletV4.Bip32PrivateKey, - accountIndex: number, - count: number, - byronNetworkMagic: number, -): PlateResponse => { - const accountKey = rootPk - .derive(WalletTypePurpose.BIP44) - .derive(CoinTypes.CARDANO) - .derive(accountIndex + HARD_DERIVATION_START); - const accountPublic = accountKey.to_public(); - const chainKey = accountPublic.derive(ChainDerivations.EXTERNAL); - - const plate = legacyWalletChecksum( - Buffer.from(accountPublic.as_bytes()).toString('hex') - ); - - const addresses = RustModule.WasmScope(Scope => { - const generateAddressFunc = v2genAddressBatchFunc( - Scope.WalletV2.Bip44ChainPublic.new( - Scope.WalletV2.PublicKey.from_hex( - Buffer.from(chainKey.as_bytes()).toString('hex') - ), - Scope.WalletV2.DerivationScheme.v2() - ), - byronNetworkMagic - ); - return generateAddressFunc([...Array(count).keys()]); - }); - return { addresses, plate }; -}; +export type PlateResponse = {| + addresses: Array, + plate: WalletChecksum +|}; export const generateShelleyPlate = ( rootPk: RustModule.WalletV4.Bip32PrivateKey, diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.js index a1f9188285..7ee6e1ea13 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.js @@ -1,7 +1,6 @@ // @flow import typeof * as WasmV2 from 'cardano-wallet-browser'; -import typeof * as WasmV3 from '@emurgo/js-chain-libs/js_chain_libs'; import type { BigNum, LinearFee, @@ -10,6 +9,7 @@ import type { import typeof * as WasmV4 from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; import typeof * as WasmMessageSigning from '@emurgo/cardano-message-signing-browser/cardano_message_signing'; import typeof * as CrossCsl from '@emurgo/cross-csl-browser'; +import BigNumber from 'bignumber.js'; // TODO: unmagic the constants const MAX_VALUE_BYTES = 5000; @@ -148,7 +148,6 @@ function createWasmScope(): {| class Module { _wasmv2: WasmV2; - _wasmv3: WasmV3; _wasmv4: WasmV4; _messageSigning: WasmMessageSigning; _crossCsl: CrossCsl; @@ -156,14 +155,11 @@ class Module { async load(flags: Array = []): Promise { if ( this._wasmv2 != null - || this._wasmv3 != null || this._wasmv4 != null || this._messageSigning != null || this._crossCsl != null ) return; this._wasmv2 = await import('cardano-wallet-browser'); - // this is used only by the now defunct jormungandr wallet - this._wasmv3 = ((null: any): WasmV3); this._wasmv4 = await import('@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'); if (flags.includes('dontLoadMessagesSigning')) { this._messageSigning = ((null: any): WasmMessageSigning); @@ -235,15 +231,24 @@ class Module { return scopedResult.result; } + ScopeMonad(callback: Module => T): WasmMonad { + const WS = this.WasmScope.bind(this); + function InternalMonad(mapper: Module => K): WasmMonad { + return { + // $FlowIgnore[escaped-generic] + wasmMap: f => InternalMonad(M => f(mapper(M), M)), + // $FlowIgnore[escaped-generic] + unwrap: f => WS(M => f(mapper(M), M)), + } + } + return InternalMonad(callback); + } + // Need to expose through a getter to get Flow to detect the type correctly get WalletV2(): WasmV2 { return this._wasmv2; } // Need to expose through a getter to get Flow to detect the type correctly - get WalletV3(): WasmV3 { - return this._wasmv3; - } - // Need to expose through a getter to get Flow to detect the type correctly get WalletV4(): WasmV4 { return this._wasmv4; } @@ -297,12 +302,22 @@ class Module { maxTxBytes, } = params; const w4 = this.WalletV4; + + // Inlined to avoid dependency cycles + // LEGACY + const coinsPerUtxoByte = w4.BigNum.from_str( + new BigNumber(coinsPerUtxoWord.to_str()) + .div(8) + .integerValue(BigNumber.ROUND_FLOOR) + .toString(), + ); + return w4.TransactionBuilder.new( w4.TransactionBuilderConfigBuilder.new() .fee_algo(linearFee) .pool_deposit(poolDeposit) .key_deposit(keyDeposit) - .coins_per_utxo_word(coinsPerUtxoWord) + .coins_per_utxo_byte(coinsPerUtxoByte) .max_value_size(maxValueBytes ?? MAX_VALUE_BYTES) .max_tx_size(maxTxBytes ?? MAX_TX_BYTES) .ex_unit_prices(w4.ExUnitPrices.new( @@ -325,5 +340,10 @@ class Module { } } +export type WasmMonad = {| + wasmMap(f: (T, Module) => R): WasmMonad; + unwrap(f: (T, Module) => R): R; +|} + // Need this otherwise Wallet's flow type isn't properly exported export const RustModule: Module = new Module(); diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.test.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.test.js index ed39f70a19..8ef3303897 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoader.test.js @@ -1,5 +1,5 @@ // @flow -import '../test-config'; +import '../test-config.forTests'; import { RustModule } from './rustLoader'; import { bytesToHex } from '../../../../coreUtils'; @@ -19,3 +19,14 @@ test('Wasm Scope Simple Address Convert', async () => { expect(scopeResult.scopeSize).toEqual(1); expect(scopeResult.scopeIsFree).toEqual(true); }); + +test('Wasm Scope Monad Simple Address Convert', async () => { + + const addr = 'addr1qf2w3pe8jsyvr9kutpv6e0rzuaym7dvq0rrz9699a7y3wwvz6g3gz764vxla692p4ttcekdw0smpedxuqq7a8t8sv3usrcv98z'; + const addressFixedDirectly = bytesToHex(RustModule.WalletV4.Address.from_bech32(addr).to_bytes()); + const addressFixedInScope = RustModule + .ScopeMonad(Module => Module.WalletV4.Address.from_bech32(addr)) + .wasmMap(a => a.to_bytes()) + .unwrap(bytes => bytesToHex(bytes)); + expect(addressFixedInScope).toEqual(addressFixedDirectly); +}); diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoaderForBackground.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoaderForBackground.js index 161bb200d6..c5c0bcfb56 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoaderForBackground.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/rustLoaderForBackground.js @@ -1,15 +1,23 @@ // @flow +/******************************** + LOADED IN `webpack/*Config.js`! + ********************************/ + // Somehow the dyanmic imports in `rustLoader.js` do not work in the background // service worker. This module replaces `rustLoader.js` in the background service // worker with the help of webpack NormalModuleReplacementPlugin. // Note this won't work even here: // import * as WasmV2 from 'cardano-wallet-browser'; -import type { BigNum, LinearFee, TransactionBuilder } from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; - +import type { + BigNum, + LinearFee, + TransactionBuilder +} from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; import * as WasmV4 from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; import * as WasmMessageSigning from '@emurgo/cardano-message-signing-browser/cardano_message_signing'; import * as CrossCslBrowser from '@emurgo/cross-csl-browser'; +import BigNumber from 'bignumber.js'; // TODO: unmagic the constants const MAX_VALUE_BYTES = 5000; @@ -270,12 +278,21 @@ class Module { maxTxBytes, } = params; const w4 = this.WalletV4; + + // LEGACY + const coinsPerUtxoByte = w4.BigNum.from_str( + new BigNumber(coinsPerUtxoWord.to_str()) + .div(8) + .integerValue(BigNumber.ROUND_FLOOR) + .toString(), + ); + return w4.TransactionBuilder.new( w4.TransactionBuilderConfigBuilder.new() .fee_algo(linearFee) .pool_deposit(poolDeposit) .key_deposit(keyDeposit) - .coins_per_utxo_word(coinsPerUtxoWord) + .coins_per_utxo_byte(coinsPerUtxoByte) .max_value_size(maxValueBytes ?? MAX_VALUE_BYTES) .max_tx_size(maxTxBytes ?? MAX_TX_BYTES) .ex_unit_prices(w4.ExUnitPrices.new( diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/utils.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/utils.js index c2f4fc8ed1..d52760d404 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/utils.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/utils.js @@ -1,11 +1,7 @@ // @flow import { RustModule } from './rustLoader'; -import { PublicDeriver } from '../storage/models/PublicDeriver'; -import { generateWalletRootKey as cardanoGenerateWalletRootKey } from './cryptoWallet'; -import { CoinTypes, WalletTypePurpose } from '../../../../config/numbersConfig'; -import type { NetworkRow } from '../storage/database/primitives/tables'; -import { asGetPublicKey } from '../storage/models/PublicDeriver/traits'; +import { bytesToHex, hexToBytes } from '../../../../coreUtils'; export function v4PublicToV2( v4Key: RustModule.WalletV4.Bip32PublicKey @@ -13,39 +9,30 @@ export function v4PublicToV2( return RustModule.WalletV2.PublicKey.from_hex(Buffer.from(v4Key.as_bytes()).toString('hex')); } -export async function isWalletExist( - publicDerivers: Array>, - mode: 'bip44' | 'cip1852', - recoveryPhrase: string, - accountIndex: number, - selectedNetwork: $ReadOnly -): Promise | void> { - if (mode !== 'bip44' && mode !== 'cip1852') { - throw new Error(`${nameof(isWalletExist)} unknown restoration mode`); - } - const rootPk = cardanoGenerateWalletRootKey(recoveryPhrase); - // BIP44 - const purpose = mode === 'cip1852' ? WalletTypePurpose.CIP1852 : WalletTypePurpose.BIP44; - const accountPublicKey = rootPk - .derive(purpose) - .derive(CoinTypes.CARDANO) - .derive(accountIndex) - .to_public(); - const publicKey = Buffer.from(accountPublicKey.as_bytes()).toString('hex'); +export function addressHexToBech32(hex: string): string { + return RustModule.WasmScope(Module => + Module.WalletV4.Address.from_hex(hex).to_bech32()); +} + +export function addressBech32ToHex(bech32: string): string { + return RustModule.WasmScope(Module => + Module.WalletV4.Address.from_bech32(bech32).to_hex()); +} + +export function transactionHexToWitnessSet(txHex: string): string { + return RustModule.WasmScope(Module => + bytesToHex(Module.WalletV4.FixedTransaction.from_hex(txHex).raw_witness_set())); +} + +export function transactionHexToHash(txHex: string): string { + return RustModule.WasmScope(Module => + Module.WalletV4.hash_transaction(Module.WalletV4.FixedTransaction.from_hex(txHex).body()).to_hex()); +} - for (const deriver of publicDerivers) { - const withPubKey = asGetPublicKey(deriver); - if (withPubKey == null) return; - const existedPublicKey = await withPubKey.getPublicKey(); - const walletNetwork = deriver.getParent().getNetworkInfo(); - /** - * We will still allow to restore the wallet on a different networks even they are - * sharing the same recovery phrase but we are treating them differently - */ - if ( - publicKey === existedPublicKey.Hash && - walletNetwork.NetworkId === selectedNetwork.NetworkId - ) - return deriver; - } +export function transactionHexReplaceWitnessSet(txHex: string, witnessSetHex: string): string { + return RustModule.WasmScope(Module => { + const fixedTransaction = Module.WalletV4.FixedTransaction.from_hex(txHex); + fixedTransaction.set_witness_set(hexToBytes(witnessSetHex)); + return fixedTransaction.to_hex(); + }); } diff --git a/packages/yoroi-extension/app/api/common/lib/crypto/wallet.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/wallet.js similarity index 100% rename from packages/yoroi-extension/app/api/common/lib/crypto/wallet.js rename to packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/wallet.js diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/IFetcher.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/IFetcher.types.js similarity index 55% rename from packages/yoroi-extension/app/api/ada/lib/state-fetch/IFetcher.js rename to packages/yoroi-extension/app/api/ada/lib/state-fetch/IFetcher.types.js index 70c520081b..66f0e68ab9 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/IFetcher.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/IFetcher.types.js @@ -1,31 +1,46 @@ // @flow import type { - AddressUtxoRequest, AddressUtxoResponse, - HistoryRequest, HistoryResponse, - RewardHistoryRequest, RewardHistoryResponse, - AccountStateRequest, AccountStateResponse, - SignedRequest, SignedResponse, - PoolInfoRequest, PoolInfoResponse, - CatalystRoundInfoRequest, CatalystRoundInfoResponse, - BestBlockRequest, BestBlockResponse, - TokenInfoRequest, TokenInfoResponse, - MultiAssetRequest, MultiAssetMintMetadataResponse, - GetUtxoDataRequest, GetUtxoDataResponse, - GetLatestBlockBySlotReq, GetLatestBlockBySlotRes, - GetRecentTransactionHashesRequest, GetRecentTransactionHashesResponse, - GetTransactionsByHashesRequest, GetTransactionsByHashesResponse, MultiAssetSupplyResponse, + AddressUtxoRequest, + AddressUtxoResponse, + HistoryRequest, + HistoryResponse, + RewardHistoryRequest, + RewardHistoryResponse, + AccountStateRequest, + AccountStateResponse, + SignedRequest, + SignedResponse, + PoolInfoRequest, + PoolInfoResponse, + CatalystRoundInfoRequest, + CatalystRoundInfoResponse, + BestBlockRequest, + BestBlockResponse, + TokenInfoRequest, + TokenInfoResponse, + MultiAssetRequest, + MultiAssetMintMetadataResponse, + GetUtxoDataRequest, + GetUtxoDataResponse, + GetLatestBlockBySlotReq, + GetLatestBlockBySlotRes, + GetRecentTransactionHashesRequest, + GetRecentTransactionHashesResponse, + GetTransactionsByHashesRequest, + GetTransactionsByHashesResponse, + MultiAssetSupplyResponse, + FilterUsedRequest, + FilterUsedResponse, + GetSwapFeeTiersFunc, GetTransactionSlotsByHashesResponse, SignedBatchRequest, } from './types'; -import type { - FilterUsedRequest, FilterUsedResponse, -} from '../../../common/lib/state-fetch/currencySpecificTypes'; export interface IFetcher { getUTXOsForAddresses(body: AddressUtxoRequest): Promise; getTransactionsHistoryForAddresses(body: HistoryRequest): Promise; getRewardHistory(body: RewardHistoryRequest): Promise; getBestBlock(body: BestBlockRequest): Promise; - sendTx(body: SignedRequest): Promise; + sendTx(body: SignedRequest | SignedBatchRequest): Promise; getAccountState(body: AccountStateRequest): Promise; getPoolInfo(body: PoolInfoRequest): Promise; getCatalystRoundInfo(body: CatalystRoundInfoRequest): Promise; @@ -41,5 +56,8 @@ export interface IFetcher { : GetRecentTransactionHashesRequest => Promise; getTransactionsByHashes : GetTransactionsByHashesRequest => Promise; - + getTransactionSlotsByHashes + : GetTransactionsByHashesRequest => Promise; + getSwapFeeTiers + : GetSwapFeeTiersFunc; } diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.js index 35dbeac829..30f79b14b5 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.js @@ -40,13 +40,14 @@ import type { GetTransactionsByHashesResponse, GetTransactionsByHashesFunc, MultiAssetSupplyResponse, + FilterUsedRequest, + FilterUsedResponse, + FilterFunc, + GetSwapFeeTiersFunc, GetTransactionSlotsByHashesResponse, GetTransactionSlotsByHashesFunc, SignedBatchRequest, } from './types'; -import type { - FilterFunc, FilterUsedRequest, FilterUsedResponse, -} from '../../../common/lib/state-fetch/currencySpecificTypes'; import LocalizableError from '../../../../i18n/LocalizableError'; -import type { IFetcher } from './IFetcher'; +import type { IFetcher } from './IFetcher.types'; import { chunk } from 'lodash'; import { @@ -110,6 +111,14 @@ export class BatchedFetcher implements IFetcher { )(body) ); + getTransactionSlotsByHashes + : GetTransactionsByHashesRequest => Promise + = (body) => ( + batchGetTransactionSlotsByHashes( + this.baseFetcher.getTransactionSlotsByHashes + )(body) + ); + getRewardHistory: RewardHistoryRequest => Promise = (body) => ( batchGetRewardHistory( this.baseFetcher.getRewardHistory @@ -121,9 +130,8 @@ export class BatchedFetcher implements IFetcher { this.baseFetcher.getBestBlock(body) ) - sendTx: SignedRequest => Promise = (body) => ( + sendTx: (SignedRequest | SignedBatchRequest) => Promise = (body) => ( // We don't batch transaction sending (it's just a single request) - // TODO: Should we support batching a list of transactions? this.baseFetcher.sendTx(body) ) @@ -189,6 +197,11 @@ export class BatchedFetcher implements IFetcher { // Todo: Implement batching as the max slots per request is 50 this.baseFetcher.getLatestBlockBySlot(body) ) + + getSwapFeeTiers: GetSwapFeeTiersFunc = async (body) => ( + // No batching for fee tiers + this.baseFetcher.getSwapFeeTiers(body) + ) } /** Sum up the UTXO for a list of addresses by batching backend requests */ @@ -292,15 +305,31 @@ function batchGetTransactionsByHashes( return async function( body: GetTransactionsByHashesRequest ): Promise { - let txs = []; - for (const txHashes of chunk(body.txHashes, 100)) { - const batchResult = await getTransactionsByHashes({ + const promises = chunk(body.txHashes, 100).map(txHashes => { + return getTransactionsByHashes({ txHashes, network: body.network, }); - txs = [ ...txs, ...batchResult ]; - } - return txs; + }); + const resultChunks = await Promise.all(promises); + return resultChunks.reduce((res, entry) => ([ ...res, ...entry ]), ([]: GetTransactionsByHashesResponse)); + }; +} + +function batchGetTransactionSlotsByHashes( + getTransactionSlotsByHashes: GetTransactionSlotsByHashesFunc, +): GetTransactionSlotsByHashesFunc { + return async function( + body: GetTransactionsByHashesRequest + ): Promise { + const promises = chunk(body.txHashes, 100).map(txHashes => { + return getTransactionSlotsByHashes({ + txHashes, + network: body.network, + }); + }); + const resultChunks = await Promise.all(promises); + return resultChunks.reduce((res, entry) => ({ ...res, ...entry }), ({}: GetTransactionSlotsByHashesResponse)); }; } diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.test.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.test.js index c7249ebb73..0ba5cc60f2 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/batchedFetcher.test.js @@ -1,6 +1,6 @@ // @flow -import '../test-config'; +import '../test-config.forTests'; import { RustModule } from '../cardanoCrypto/rustLoader'; import { @@ -8,7 +8,7 @@ import { } from './batchedFetcher'; import { genGetTransactionsHistoryForAddresses, -} from './mockNetwork'; +} from './mockNetwork.forTests'; import { generateWalletRootKey, } from '../cardanoCrypto/cryptoWallet'; diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/mockNetwork.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/mockNetwork.forTests.js similarity index 98% rename from packages/yoroi-extension/app/api/ada/lib/state-fetch/mockNetwork.js rename to packages/yoroi-extension/app/api/ada/lib/state-fetch/mockNetwork.forTests.js index f8c8501af5..b14b1f8390 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/mockNetwork.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/mockNetwork.forTests.js @@ -2,55 +2,52 @@ import BigNumber from 'bignumber.js'; import type { - HistoryRequest, - HistoryResponse, - HistoryFunc, - BestBlockRequest, - BestBlockResponse, - BestBlockFunc, - AddressUtxoRequest, - AddressUtxoResponse, - AddressUtxoFunc, - RewardHistoryFunc, + AccountStateFunc, AccountStateRequest, AccountStateResponse, - AccountStateFunc, + AddressUtxoFunc, + AddressUtxoRequest, + AddressUtxoResponse, + BestBlockFunc, + BestBlockRequest, + BestBlockResponse, + FilterFunc, + FilterUsedRequest, + FilterUsedResponse, + GetRecentTransactionHashesFunc, + GetRecentTransactionHashesRequest, + GetRecentTransactionHashesResponse, + GetTransactionsByHashesFunc, + GetTransactionsByHashesRequest, + GetTransactionsByHashesResponse, + HistoryFunc, + HistoryRequest, + HistoryResponse, + MultiAssetMintMetadataFunc, + MultiAssetSupplyFunc, + PoolInfoFunc, PoolInfoRequest, PoolInfoResponse, - PoolInfoFunc, RemoteTransaction, + RemoteTransactionInput, RemoteUnspentOutput, + RewardHistoryFunc, SignedRequestInternal, - RemoteTransactionInput, TokenInfoFunc, - MultiAssetMintMetadataFunc, - GetTransactionsByHashesRequest, - GetTransactionsByHashesResponse, - GetTransactionsByHashesFunc, - GetRecentTransactionHashesRequest, - GetRecentTransactionHashesResponse, - GetRecentTransactionHashesFunc, - MultiAssetSupplyFunc, } from './types'; -import type { - FilterUsedRequest, FilterUsedResponse, FilterFunc, -} from '../../../common/lib/state-fetch/currencySpecificTypes'; +import { ShelleyCertificateTypes } from './types'; import { RollbackApiError, } from '../../../common/errors'; -import { toEnterprise, addressToKind, toHexOrBase58 } from '../storage/bridge/utils'; -import { CoreAddressTypes } from '../storage/database/primitives/enums'; +import { addressToKind, toEnterprise, toHexOrBase58 } from '../storage/bridge/utils'; import type { CoreAddressT } from '../storage/database/primitives/enums'; -import { - mnemonicToEntropy -} from 'bip39'; -import { - WalletTypePurpose, -} from '../../../../config/numbersConfig'; +import { CoreAddressTypes } from '../storage/database/primitives/enums'; +import { mnemonicToEntropy } from 'bip39'; +import { WalletTypePurpose, } from '../../../../config/numbersConfig'; import type { NetworkRow } from '../storage/database/primitives/tables'; import { RustModule } from '../cardanoCrypto/rustLoader'; import { generateLedgerWalletRootKey } from '../cardanoCrypto/cryptoWallet'; -import { networks, getCardanoHaskellBaseConfig } from '../storage/database/prepackaged/networks'; +import { getCardanoHaskellBaseConfig, networks } from '../storage/database/prepackaged/networks'; import { bech32 } from 'bech32'; import { Bech32Prefix } from '../../../../config/stringConfig'; import { parseTokenList } from '../../transactions/utils'; @@ -65,7 +62,7 @@ import type { UtxoDiffSincePointRequest } from '@emurgo/yoroi-lib/dist/utxo/models'; import { UtxoApiResult, } from '@emurgo/yoroi-lib/dist/utxo/models'; -import { ShelleyCertificateTypes } from './types'; +import { forceNonNull, last } from '../../../../coreUtils'; function byronAddressToHex(byronAddrOrHex: string): string { if (RustModule.WalletV4.ByronAddress.is_valid(byronAddrOrHex)) { @@ -554,8 +551,8 @@ export function toRemoteByronTx( blockchain: Array, request: SignedRequestInternal, ): RemoteTransaction { - const signedTx = RustModule.WalletV4.Transaction - .from_bytes(Buffer.from(request.signedTx, 'base64')); + const tx = Array.isArray(request.signedTx) ? forceNonNull(last(request.signedTx)) : request.signedTx; + const signedTx = RustModule.WalletV4.Transaction.from_bytes(Buffer.from(tx, 'base64')); const body = signedTx.body(); const hash = Buffer.from(RustModule.WalletV4.hash_transaction(body).to_bytes()).toString('hex'); diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/remoteFetcher.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/remoteFetcher.js index d0ec19a55d..faf70f86ce 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/remoteFetcher.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/remoteFetcher.js @@ -29,13 +29,19 @@ import type { GetRecentTransactionHashesRequest, GetRecentTransactionHashesResponse, GetTransactionsByHashesRequest, - GetTransactionsByHashesResponse, MultiAssetSupplyResponse, + GetTransactionsByHashesResponse, + MultiAssetSupplyResponse, + FilterUsedRequest, + FilterUsedResponse, + GetSwapFeeTiersFunc, + GetSwapFeeTiersRequest, + GetSwapFeeTiersResponse, GetTransactionSlotsByHashesResponse, SignedBatchRequest, } from './types'; -import type { FilterUsedRequest, FilterUsedResponse, } from '../../../common/lib/state-fetch/currencySpecificTypes'; -import type { IFetcher } from './IFetcher'; +import type { IFetcher } from './IFetcher.types'; import axios from 'axios'; +import type { $AxiosError } from 'axios'; import { Logger, stringifyError } from '../../../../utils/logging'; import { CheckAddressesInUseApiError, @@ -51,19 +57,63 @@ import { SendTransactionApiError, GetUtxoDataError, } from '../../../common/errors'; -import { RustModule } from '../cardanoCrypto/rustLoader'; import type { ConfigType } from '../../../../../config/config-types'; import { bech32, } from 'bech32'; -import { bytesToHex } from '../../../../coreUtils'; +import { addressBech32ToHex } from '../cardanoCrypto/utils'; +import { bytesToBase64, forceNonNull, last } from '../../../../coreUtils'; // populated by ConfigWebpackPlugin declare var CONFIG: ConfigType; -/** - * Makes calls to Yoroi backend service - * https://github.com/Emurgo/yoroi-graphql-migration-backend - */ +export const sendTx: ({| + body: SignedRequest | SignedBatchRequest, + lastLaunchVersion: string, + currentLocale: string, + errorHandler?: $AxiosError => void, +|}) => Promise = ({ + body, + lastLaunchVersion, + currentLocale, + errorHandler, +}) => { + // $FlowIgnore[prop-missing] + const txs: Array<{| encodedTx: Uint8Array, id: string |}> = body.txs ?? [body]; + if (txs.length === 0) throw new Error('At least one transaction is required for submit'); + const signedTx64: Array = txs.map(t => bytesToBase64(t.encodedTx)); + const { BackendService } = body.network.Backend; + if (BackendService == null) throw new Error(`${nameof(sendTx)} missing backend url`); + return axios( + `${BackendService}/api/txs/signed`, + { + method: 'post', + timeout: 2 * CONFIG.app.walletRefreshInterval, + data: ({ + signedTx: signedTx64 + }: SignedRequestInternal), + headers: { + 'yoroi-version': lastLaunchVersion, + 'yoroi-locale': currentLocale, + } + } + ).then(() => ({ + txId: forceNonNull(last(txs)).id, + })).catch((error) => { + if (errorHandler != null) { + errorHandler(error); + } + const err = { + msg: error.message, + res: error.response?.data || null, + } + Logger.error(`${nameof(RemoteFetcher)}::${nameof(sendTx)} error: ${stringifyError(err)}`); + if (error.request.response.includes('Invalid witness')) { + throw new InvalidWitnessError(); + } + throw new SendTransactionApiError(); + }); +} + export class RemoteFetcher implements IFetcher { getLastLaunchVersion: () => string; @@ -103,9 +153,7 @@ export class RemoteFetcher implements IFetcher { }); return result.map(utxo => { if (utxo.receiver.startsWith('addr')) { - const fixedAddr = RustModule.WasmScope(Module => bytesToHex( - Module.WalletV4.Address.from_bech32(utxo.receiver).to_bytes() - )); + const fixedAddr = addressBech32ToHex(utxo.receiver); return { ...utxo, receiver: fixedAddr, @@ -263,6 +311,26 @@ export class RemoteFetcher implements IFetcher { }); } + getTransactionSlotsByHashes + : GetTransactionsByHashesRequest => Promise + = (body) => { + const { network, txHashes } = body; + const { BackendService } = network.Backend; + if (BackendService == null) throw new Error(`${nameof(this.getTransactionsByHashes)} missing backend url`); + return axios( + `${BackendService}/api/v2.1/tx/status`, + { + method: 'post', + timeout: 2 * CONFIG.app.walletRefreshInterval, + data: { txHashes }, + headers: { + 'yoroi-version': this.getLastLaunchVersion(), + 'yoroi-locale': this.getCurrentLocale() + } + } + ).then(response => response.data?.slot ?? {}); + } + getRewardHistory: RewardHistoryRequest => Promise = (body) => { const { network, ...rest } = body; const { BackendService } = network.Backend; @@ -305,38 +373,12 @@ export class RemoteFetcher implements IFetcher { }); } - sendTx: SignedRequest => Promise = (body) => { - const signedTx64 = Buffer.from(body.encodedTx).toString('base64'); - const { BackendService } = body.network.Backend; - if (BackendService == null) throw new Error(`${nameof(this.sendTx)} missing backend url`); - return axios( - `${BackendService}/api/txs/signed`, - { - method: 'post', - timeout: 2 * CONFIG.app.walletRefreshInterval, - data: ({ - signedTx: signedTx64 - }: SignedRequestInternal), - headers: { - 'yoroi-version': this.getLastLaunchVersion(), - 'yoroi-locale': this.getCurrentLocale() - } - } - ).then(() => ({ - txId: body.id - })) - .catch((error) => { - const err = { - msg: error.message, - res: error.response?.data || null, - } - - Logger.error(`${nameof(RemoteFetcher)}::${nameof(this.sendTx)} error: ${stringifyError(err)}`); - if (error.request.response.includes('Invalid witness')) { - throw new InvalidWitnessError(); - } - throw new SendTransactionApiError(); - }); + sendTx: (SignedRequest | SignedBatchRequest) => Promise = (body) => { + return sendTx({ + body, + lastLaunchVersion: this.getLastLaunchVersion(), + currentLocale: this.getCurrentLocale(), + }); } checkAddressesInUse: FilterUsedRequest => Promise = (body) => { @@ -442,7 +484,10 @@ export class RemoteFetcher implements IFetcher { if (resp.data.ticker?.value) { v.ticker = resp.data.ticker.value; } - if (v.name || v.decimals || v.ticker) { + if (resp.data.logo?.value) { + v.logo = resp.data.logo.value; + } + if (v.name || v.decimals || v.ticker || v.logo) { res[resp.data.subject] = v; } @@ -557,4 +602,20 @@ export class RemoteFetcher implements IFetcher { } }); } + + getSwapFeeTiers: GetSwapFeeTiersFunc = async (body: GetSwapFeeTiersRequest): Promise => { + const { BackendService } = body.network.Backend; + if (BackendService == null) throw new Error(`${nameof(this.getSwapFeeTiers)} missing backend url`); + return await axios( + `${BackendService}/api/v2.1/swap/feesInfo`, + { + method: 'get', + } + ).then(response => response.data) + .catch((error) => { + Logger.error(`${nameof(RemoteFetcher)}::${nameof(this.getCatalystRoundInfo)} error: ` + stringifyError(error)); + throw new GetCatalystRoundInfoApiError(); + }); + } + } diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/types.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/types.js index b6755f083c..70d9ba80fe 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/types.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/types.js @@ -2,6 +2,7 @@ import typeof { MIRPot } from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; import type { BackendNetworkInfo } from '../../../common/lib/state-fetch/types'; +import type { NetworkRow } from '../storage/database/primitives/tables'; // getUTXOsForAddresses @@ -44,13 +45,20 @@ export type BestBlockFunc = (body: BestBlockRequest) => Promise, |}; export type SignedRequest = {| ...BackendNetworkInfo, id: string, encodedTx: Uint8Array, |}; +export type SignedBatchRequest = {| + ...BackendNetworkInfo, + txs: Array<{| + id: string, + encodedTx: Uint8Array, + |}> +|}; export type SignedResponse = {| txId: string, |}; export type SendFunc = (body: SignedRequest) => Promise; @@ -88,30 +96,25 @@ export const RemoteTransactionTypes: RemoteTransactionTypeT = Object.freeze({ byron: 'byron', shelley: 'shelley', }); +export type RemoteAsset = { + +amount: string, + +assetId: string, + +policyId: string, + +name: string, + ... +}; export type RemoteTransactionInput = {| +id: string, +index: number, // index of output we're consuming +txHash: string, // tx that created output we're consuming +address: string, +amount: string, - +assets: $ReadOnlyArray<$ReadOnly<{ - +amount: string, - +assetId: string, - +policyId: string, - +name: string, - ... - }>>, + +assets: $ReadOnlyArray<$ReadOnly>, |}; export type RemoteTransactionOutput = {| +address: string, +amount: string, - +assets: $ReadOnlyArray<$ReadOnly<{ - +amount: string, - +assetId: string, - +policyId: string, - +name: string, - ... - }>>, + +assets: $ReadOnlyArray<$ReadOnly>, |}; /** @@ -149,13 +152,7 @@ export type RemoteUnspentOutput = {| +tx_index: number, +receiver: string, +amount: string, - +assets: $ReadOnlyArray<$ReadOnly<{ - +amount: string, - +assetId: string, - +policyId: string, - +name: string, - ... - }>>, + +assets: $ReadOnlyArray<$ReadOnly>, // +block_num: number, |}; @@ -172,6 +169,18 @@ export const ShelleyCertificateTypes = Object.freeze({ PoolRetirement: 'PoolRetirement', GenesisKeyDelegation: 'GenesisKeyDelegation', MoveInstantaneousRewardsCert: 'MoveInstantaneousRewardsCert', + Registration: 'Registration', + Unregistration: 'Unregistration', + VoteDelegation: 'VoteDelegation', + StakeVoteDelegation: 'StakeVoteDelegation', + StakeRegistrationDelegation: 'StakeRegistrationDelegation', + VoteRegistrationDelegation: 'VoteRegistrationDelegation', + StakeVoteRegistrationDelegation: 'StakeVoteRegistrationDelegation', + AuthCommitteeHot: 'AuthCommitteeHot', + ResignCommitteeCold: 'ResignCommitteeCold', + RegisterDrep: 'RegisterDrep', + UnregisterDrep: 'UnregisterDrep', + UpdateDrep: 'UpdateDrep', }); export type RemoteStakeRegistrationCert = {| @@ -223,6 +232,81 @@ export type RemoteMoveInstantaneousRewardsCert = {| +pot: $Values, +rewards: {| [stake_credential: string]: string /* coin */ |}, |}; +export type RegistrationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +coin: string, +|}; +export type UnregistrationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +coin: string, +|}; +export type VoteDelegationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +drep: Drep, +|}; +export type StakeVoteDelegationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +drep: Drep, + +poolKeyHash: string | null, +|}; +export type StakeRegistrationDelegationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +coin: string, + +poolKeyHash: string | null, +|}; +export type VoteRegistrationDelegationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +drep: Drep, + +coin: string +|}; +export type Drep = {| + +type: 'addr_keyhash' | 'scripthash' | 'abstain' | 'no_confidence', + +addrKeyHash: string | null, + +scriptHash: string | null, +|}; +export type StakeVoteRegistrationDelegationCert = {| + +addrKeyHash: string | null, + +scriptHash: string | null, + +poolKeyHash: string | null, + +drep: Drep, + +coin: string, +|}; +export type AuthCommitteeHotCert = {| + +coldAddrKeyHash: string | null, + +coldScriptHash: string | null, + +hotdAddrKeyHash: string | null, + +hotScriptHash: string | null, +|}; +export type ResignCommitteeColdCert = {| + +coldAddrKeyHash: string | null, + +coldScriptHash: string | null, +|}; +type Anchor = {| + +anchor_url: string, + +anchor_data_hash: string, +|}; +export type RegisterDrepCert = {| + +drepAddrKeyHash: string | null, + +drepScriptHash: string | null, + +coin: string, + +anchor: Anchor | null +|}; +export type UnregisterDrepCert = {| + +drepAddrKeyHash: string | null, + +drepScriptHash: string | null, + +coin: string, +|}; +export type UpdateDrepCert = {| + +drepAddrKeyHash: string | null, + +drepScriptHash: string | null, + +anchor: Anchor | null, +|}; export type RemoteCertificate = {| certIndex: number, ...({| @@ -246,6 +330,42 @@ export type RemoteCertificate = {| |} | {| +kind: typeof ShelleyCertificateTypes.MoveInstantaneousRewardsCert, ...RemoteMoveInstantaneousRewardsCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.Registration, + ...RegistrationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.Unregistration, + ...UnregistrationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.VoteDelegation, + ...VoteDelegationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.StakeVoteDelegation, + ...StakeVoteDelegationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.StakeRegistrationDelegation, + ...StakeRegistrationDelegationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.VoteRegistrationDelegation, + ...VoteRegistrationDelegationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.StakeVoteRegistrationDelegation, + ...StakeVoteRegistrationDelegationCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.AuthCommitteeHot, + ...AuthCommitteeHotCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.ResignCommitteeCold, + ...ResignCommitteeColdCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.RegisterDrep, + ...RegisterDrepCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.UnregisterDrep, + ...UnregisterDrepCert, + |} | {| + +kind: typeof ShelleyCertificateTypes.UpdateDrep, + ...UpdateDrepCert, |}) |}; @@ -316,6 +436,7 @@ export type RemoteTokenInfo = {| +name?: string, +decimals?: number, +ticker?: string, + +logo?: string, |}; export type TokenInfoResponse = {| [key: string]: (RemoteTokenInfo | null), @@ -454,3 +575,24 @@ export type GetTransactionsByHashesResponse = Array; export type GetTransactionsByHashesFunc = ( body: GetTransactionsByHashesRequest ) => Promise; + +export type GetTransactionSlotsByHashesResponse = { [string]: string }; + +export type GetTransactionSlotsByHashesFunc = ( + body: GetTransactionsByHashesRequest +) => Promise; + +export type FilterUsedRequest = {| + network: $ReadOnly, + addresses: Array, +|}; +export type FilterUsedResponse = Array; +export type FilterFunc = (body: FilterUsedRequest) => Promise; + +export type GetSwapFeeTiersRequest = BackendNetworkInfo; + +export type GetSwapFeeTiersResponse = { [string]: any }; + +export type GetSwapFeeTiersFunc = ( + body: GetSwapFeeTiersRequest +) => Promise; diff --git a/packages/yoroi-extension/app/api/ada/lib/state-fetch/utxoApi.js b/packages/yoroi-extension/app/api/ada/lib/state-fetch/utxoApi.js index 452de56bbd..a04850748e 100644 --- a/packages/yoroi-extension/app/api/ada/lib/state-fetch/utxoApi.js +++ b/packages/yoroi-extension/app/api/ada/lib/state-fetch/utxoApi.js @@ -1,5 +1,4 @@ // @flow -import axios from 'axios'; import { BatchedEmurgoUtxoApi, EmurgoUtxoApi @@ -9,7 +8,7 @@ import type { UtxoApiContract } from '@emurgo/yoroi-lib/dist/utxo/api'; export default class UtxoApi extends BatchedEmurgoUtxoApi { // so that the unit tests can override it with mocks static utxoApiFactory: (string) => UtxoApiContract = (backendServiceUrl) => - new EmurgoUtxoApi(axios, backendServiceUrl + '/api/', true); + new EmurgoUtxoApi(backendServiceUrl + '/api/', true); constructor(backendServiceUrl: string) { const utxoApi = UtxoApi.utxoApiFactory(backendServiceUrl); diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/adaMigration.js b/packages/yoroi-extension/app/api/ada/lib/storage/adaMigration.js index 55e61bd041..6935a41df7 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/adaMigration.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/adaMigration.js @@ -25,7 +25,7 @@ import { asGetAllUtxos, asHasLevels, } from './models/PublicDeriver/traits'; import { ConceptualWallet, isLedgerNanoWallet, } from './models/ConceptualWallet/index'; import { loadWalletsFromStorage } from './models/load'; import environment from '../../../../environment'; -import { KeyKind } from '../../../common/lib/crypto/keys/types'; +import { KeyKind } from '../cardanoCrypto/keys/types'; import { getLocalItem, removeLocalItem, } from '../../../localStorage/primitives'; import { isCardanoHaskell, networks } from './database/prepackaged/networks'; import { getAllSchemaTables, raii, } from './database/utils'; @@ -197,6 +197,7 @@ async function bip44Migration( * This migrates to a new storage format to allow multiple wallets and different kinds of wallets * see v2 storage spec for more details */ +// legacy migration export async function storageV2Migration( persistentDb: lf$Database, ): Promise { diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/delegationUtils.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/delegationUtils.js index 8b79b9cbd5..7ae1645505 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/delegationUtils.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/delegationUtils.js @@ -1,40 +1,40 @@ // @flow import BigNumber from 'bignumber.js'; -import { - getCertificates, -} from '../models/utils'; import { RustModule } from '../../cardanoCrypto/rustLoader'; -import { - asGetAllUtxos, -} from '../models/PublicDeriver/traits'; -import { - PublicDeriver, -} from '../models/PublicDeriver/index'; -import { - normalizeToAddress, - unwrapStakingKey, -} from './utils'; -import { TxStatusCodes, } from '../database/primitives/enums'; -import type { CertificateInsert } from '../database/primitives/tables'; -import type { - GetDelegatedBalanceRequest, - GetDelegatedBalanceResponse, - GetCurrentDelegationRequest, - GetCurrentDelegationResponse, - PoolTuples, -} from '../../../../common/lib/storage/bridge/delegationUtils'; -import typeof { CertificateKind } from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; -import type { - IGetStakingKey, - IGetAllUtxosResponse, -} from '../models/PublicDeriver/interfaces'; -import type { - CertificateForKey, -} from '../database/primitives/api/read'; -import { - MultiToken, -} from '../../../../common/lib/MultiToken'; +import { asGetAllUtxos, } from '../models/PublicDeriver/traits'; +import { PublicDeriver, } from '../models/PublicDeriver/index'; +import { normalizeToAddress, unwrapStakingKey, } from './utils'; +import type { IGetAllUtxosResponse, IGetStakingKey, } from '../models/PublicDeriver/interfaces'; +import { MultiToken, } from '../../../../common/lib/MultiToken'; + +export type GetDelegatedBalanceRequest = {| + publicDeriver: PublicDeriver<> & IGetStakingKey, + rewardBalance: MultiToken, + stakingAddress: string, + delegation: string | null, + allRewards: string | null, + stakeRegistered: ?boolean, +|}; +export type GetDelegatedBalanceResponse = {| + utxoPart: MultiToken, + accountPart: MultiToken, + delegation: string | null, + allRewards: string | null, + stakeRegistered: ?boolean, +|}; +export type GetDelegatedBalanceFunc = ( + request: GetDelegatedBalanceRequest +) => Promise; +export type RewardHistoryRequest = string; +export type RewardHistoryResponse = Array<[ + number, // epoch + MultiToken, // amount + string, // poolHash +]>; +export type RewardHistoryFunc = ( + request: RewardHistoryRequest +) => Promise; export async function getDelegatedBalance( request: GetDelegatedBalanceRequest, @@ -105,7 +105,7 @@ export async function getUtxoDelegatedBalance( ): Promise { const withUtxos = asGetAllUtxos(publicDeriver); if (withUtxos == null) { - return new MultiToken([], publicDeriver.getParent().getDefaultToken()); + return publicDeriver.getParent().getDefaultMultiToken(); } const basePubDeriver = withUtxos; @@ -128,166 +128,12 @@ export async function getUtxoDelegatedBalance( })), publicDeriver.getParent().getDefaultToken() )), - new MultiToken([], publicDeriver.getParent().getDefaultToken()) + publicDeriver.getParent().getDefaultMultiToken(), ); return utxoSum; } -export async function getCertificateHistory(request: {| - publicDeriver: PublicDeriver<> & IGetStakingKey, - stakingKeyAddressId: number, - kindFilter: Array<$Values>, -|}): Promise> { - // recall: results are sorted by block & tx & cert index order (DESC) - const allDelegations = await getCertificates( - request.publicDeriver.getDb(), - [request.stakingKeyAddressId] - ); - - const filteredList = []; - for (const delegation of allDelegations) { - const block = delegation.block; - if (block == null) { - continue; - } - - // only look at successful txs - if (delegation.transaction.Status !== TxStatusCodes.IN_BLOCK) { - continue; - } - const kind = delegation.certificate.Kind; - if (!request.kindFilter.includes(kind)) { - continue; - } - - filteredList.push(delegation); - } - return filteredList; -} - - -export async function getCurrentDelegation( - request: GetCurrentDelegationRequest, -): Promise { - const delegations = await getCertificateHistory({ - publicDeriver: request.publicDeriver, - stakingKeyAddressId: request.stakingKeyAddressId, - kindFilter: [ - // note: we don't care about stake registration - // since it doesn't actually change what pool you're delegating to - // stake deregistration, on the other hand, undelegates you from the pool - RustModule.WalletV4.CertificateKind.StakeDeregistration, - RustModule.WalletV4.CertificateKind.StakeDelegation - ] - }); - - const result = { - currEpoch: undefined, - prevEpoch: undefined, - prevPrevEpoch: undefined, - prevPrevPrevEpoch: undefined, - fullHistory: delegations, - }; - const seenPools = new Set(); - for (const delegation of delegations) { - const block = delegation.block; - if (block == null) continue; // should never happen - const relativeSlot = request.toRelativeSlotNumber(block.SlotNum); - - // recall: undelegation is an empty array - // so this code handles undelegation as well - const pools = certificateToPoolList( - delegation.certificate.Payload, - delegation.certificate.Kind - ); - pools.forEach(pool => seenPools.add(pool[0])); - // calculate which certificate was active at the end of each epoch - if (result.currEpoch == null && relativeSlot.epoch <= request.currentEpoch) { - result.currEpoch = { - ...delegation, - pools, - }; - } - if (result.prevEpoch == null && relativeSlot.epoch <= request.currentEpoch - 1) { - result.prevEpoch = { - ...delegation, - pools, - }; - } - if (result.prevPrevEpoch == null && relativeSlot.epoch <= request.currentEpoch - 2) { - result.prevPrevEpoch = { - ...delegation, - pools, - }; - } - if (result.prevPrevPrevEpoch == null && relativeSlot.epoch <= request.currentEpoch - 3) { - result.prevPrevPrevEpoch = { - ...delegation, - pools, - }; - break; - } - } - return { - ...result, - allPoolIds: Array.from(seenPools) - }; -} - -export type GetRegistrationHistoryRequest = {| - publicDeriver: PublicDeriver<> & IGetStakingKey, - stakingKeyAddressId: number, -|}; -export type GetRegistrationHistoryResponse = {| - current: boolean, - fullHistory: Array, -|}; -export type GetRegistrationHistoryFunc = ( - request: GetRegistrationHistoryRequest -) => Promise; - -export async function getRegistrationHistory( - request: GetRegistrationHistoryRequest, -): Promise { - const delegations = await getCertificateHistory({ - publicDeriver: request.publicDeriver, - stakingKeyAddressId: request.stakingKeyAddressId, - kindFilter: [ - RustModule.WalletV4.CertificateKind.StakeDeregistration, - RustModule.WalletV4.CertificateKind.StakeRegistration - ] - }); - - const result = { - current: ( - delegations.length === 0 - ? false - : delegations[0].certificate.Kind === RustModule.WalletV4.CertificateKind.StakeRegistration - ), - fullHistory: delegations, - }; - - return result; -} - -export function certificateToPoolList( - certificateHex: string, - kind: $PropertyType, -): Array { - return RustModule.WasmScope(Scope => { - if (kind === Scope.WalletV4.CertificateKind.StakeDeregistration) return [] - if (kind === Scope.WalletV4.CertificateKind.StakeDelegation) { - const cert = Scope.WalletV4.StakeDelegation.from_bytes(Buffer.from(certificateHex, 'hex')); - return [ - [Buffer.from(cert.pool_keyhash().to_bytes()).toString('hex'), 1] - ]; - } - - throw new Error(`${nameof(certificateToPoolList)} unexpected certificate kind ${kind}`); - }); -} - export function createCertificate( stakingKey: RustModule.WalletV4.PublicKey, isRegistered: boolean, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/multiwallet.test.js.snap b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/multiwallet.test.js.snap index 5dea294f46..f90a5a1577 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/multiwallet.test.js.snap +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/multiwallet.test.js.snap @@ -675,6 +675,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -691,6 +692,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -707,6 +709,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -723,6 +726,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -739,6 +743,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/shelley.test.js.snap b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/shelley.test.js.snap index f363e019d5..b90a6ca342 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/shelley.test.js.snap +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/shelley.test.js.snap @@ -506,6 +506,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -522,6 +523,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -538,6 +540,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -554,6 +557,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -570,6 +574,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/simpleTxs.test.js.snap b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/simpleTxs.test.js.snap index 1a13b8da0d..a30a1888bf 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/simpleTxs.test.js.snap +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/simpleTxs.test.js.snap @@ -475,7 +475,7 @@ Array [ Object { "BlockId": 3, "BlockTime": 2019-09-13T16:38:26.000Z, - "Digest": -4.164813625888883e-46, + "Digest": -8.002987964192862e-80, "Hash": "a9835cc1e0f9b6c239aec4c446a6e181b7db6a80ad53cc0b04f70c6b85e9ba27", "Height": 435653, "SlotNum": 435653, @@ -483,7 +483,7 @@ Array [ Object { "BlockId": 4, "BlockTime": 2019-09-13T16:38:26.000Z, - "Digest": -8.002987964192862e-80, + "Digest": -4.164813625888883e-46, "Hash": "a9835cc1e0f9b6c239aec4c446a6e181b7db6a80ad53cc0b04f70c6b85e9ba27", "Height": 435653, "SlotNum": 435653, @@ -510,6 +510,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -526,6 +527,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -542,6 +544,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -558,6 +561,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -574,6 +578,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -624,25 +629,25 @@ Array [ "TokenListItemId": 6, }, Object { - "Amount": "1100000", + "Amount": "900000", "ListId": 6, "TokenId": 1, "TokenListItemId": 7, }, Object { - "Amount": "900000", + "Amount": "700000", "ListId": 7, "TokenId": 1, "TokenListItemId": 8, }, Object { - "Amount": "900000", + "Amount": "1100000", "ListId": 8, "TokenId": 1, "TokenListItemId": 9, }, Object { - "Amount": "700000", + "Amount": "900000", "ListId": 9, "TokenId": 1, "TokenListItemId": 10, @@ -677,24 +682,24 @@ Array [ }, Object { "BlockId": 3, - "Digest": 1.9060984568373646e-36, + "Digest": 8.523899123970679e-80, "ErrorMessage": null, "Extra": null, - "Hash": "29f2fe214ec2c9b05773a689eca797e903adeaaf51dfe20782a4bf401e7ed547", + "Hash": "29f2fe214ec2c9b05773a689eca797e903adeaaf51dfe20782a4bf401e7ed548", "LastUpdateTime": 1568392706000, - "Ordinal": 0, + "Ordinal": 1, "Status": 1, "TransactionId": 3, "Type": 0, }, Object { "BlockId": 4, - "Digest": 8.523899123970679e-80, + "Digest": 1.9060984568373646e-36, "ErrorMessage": null, "Extra": null, - "Hash": "29f2fe214ec2c9b05773a689eca797e903adeaaf51dfe20782a4bf401e7ed548", + "Hash": "29f2fe214ec2c9b05773a689eca797e903adeaaf51dfe20782a4bf401e7ed547", "LastUpdateTime": 1568392706000, - "Ordinal": 1, + "Ordinal": 0, "Status": 1, "TransactionId": 4, "Type": 0, @@ -722,18 +727,18 @@ Array [ "UtxoTransactionInputId": 2, }, Object { - "AddressId": 21, + "AddressId": 20, "IndexInOwnTx": 0, - "IndexInParentTx": 0, + "IndexInParentTx": 1, "ParentTxHash": "29f2fe214ec2c9b05773a689eca797e903adeaaf51dfe20782a4bf401e7ed546", "TokenListId": 6, "TransactionId": 3, "UtxoTransactionInputId": 3, }, Object { - "AddressId": 20, + "AddressId": 21, "IndexInOwnTx": 0, - "IndexInParentTx": 1, + "IndexInParentTx": 0, "ParentTxHash": "29f2fe214ec2c9b05773a689eca797e903adeaaf51dfe20782a4bf401e7ed546", "TokenListId": 8, "TransactionId": 4, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/status.test.js.snap b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/status.test.js.snap index fdc62c54a8..41b2624a2e 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/status.test.js.snap +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/__snapshots__/status.test.js.snap @@ -964,6 +964,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -980,6 +981,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -996,6 +998,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -1012,6 +1015,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -1028,6 +1032,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -2193,6 +2198,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -2209,6 +2215,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -2225,6 +2232,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -2241,6 +2249,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -2257,6 +2266,7 @@ Array [ "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/common.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/common.forTests.js similarity index 96% rename from packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/common.js rename to packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/common.forTests.js index 16c690472e..fd15347194 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/common.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/common.forTests.js @@ -22,6 +22,7 @@ import type { NetworkRow } from '../../database/primitives/tables'; const privateDeriverPassword = 'greatest_password_ever'; +// bip44 export async function setup( db: lf$Database, walletMnemonic: string, @@ -33,6 +34,7 @@ export async function setup( throw new Error(`${nameof(setup)} Unexpected purpose ` + purposeForTest); } +// bip44 export async function setupBip44( db: lf$Database, walletMnemonic: string, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/multiwallet.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/multiwallet.test.js index c96a2f8769..ff964cf4da 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/multiwallet.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/multiwallet.test.js @@ -4,17 +4,17 @@ import BigNumber from 'bignumber.js'; import { schema, } from 'lovefield'; -import '../../../test-config'; +import '../../../test-config.forTests'; import type { RemoteTransaction } from '../../../state-fetch/types'; import { setup, -} from './common'; +} from './common.forTests'; import { ABANDON_SHARE, TX_TEST_MNEMONIC_1, mockDate, filterDbSnapshot, -} from '../../../../../jestUtils'; +} from '../../../../../jestUtils.forTests'; import { HARD_DERIVATION_START, WalletTypePurpose, @@ -31,7 +31,7 @@ import { MockUtxoApi, genGetRecentTransactionHashes, genGetTransactionsByHashes, genGetMultiAssetSupply, genGetTransactionsHistoryForAddresses, -} from '../../../state-fetch/mockNetwork'; +} from '../../../state-fetch/mockNetwork.forTests'; import { loadLovefieldDB } from '../../database/index'; import { @@ -233,6 +233,7 @@ async function checkPub1HasTx( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -352,6 +353,7 @@ async function checkPub2HasTx( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/shelley.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/shelley.test.js index d20e999b32..f099aa9177 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/shelley.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/shelley.test.js @@ -4,17 +4,17 @@ import BigNumber from 'bignumber.js'; import { schema, } from 'lovefield'; -import '../../../test-config'; +import '../../../test-config.forTests'; import type { RemoteTransaction } from '../../../state-fetch/types'; import { setup, -} from './common'; +} from './common.forTests'; import { ABANDON_SHARE, TX_TEST_MNEMONIC_1, mockDate, filterDbSnapshot, -} from '../../../../../jestUtils'; +} from '../../../../../jestUtils.forTests'; import { genCheckAddressesInUse, genGetBestBlock, @@ -24,7 +24,7 @@ import { MockUtxoApi, genGetRecentTransactionHashes, genGetTransactionsByHashes, genGetMultiAssetSupply, genGetTransactionsHistoryForAddresses, -} from '../../../state-fetch/mockNetwork'; +} from '../../../state-fetch/mockNetwork.forTests'; import { HARD_DERIVATION_START, WalletTypePurpose, @@ -304,6 +304,7 @@ async function syncingSimpleTransaction( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -418,6 +419,7 @@ async function syncingSimpleTransaction( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -462,6 +464,7 @@ async function syncingSimpleTransaction( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/simpleTxs.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/simpleTxs.test.js index fa14df528c..cff387d9a1 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/simpleTxs.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/simpleTxs.test.js @@ -4,18 +4,18 @@ import BigNumber from 'bignumber.js'; import { schema, } from 'lovefield'; -import '../../../test-config'; +import '../../../test-config.forTests'; import type { RemoteTransaction } from '../../../state-fetch/types'; import { setup, -} from './common'; +} from './common.forTests'; import { ABANDON_SHARE, TX_TEST_MNEMONIC_1, mockDate, filterDbSnapshot, compareObject, -} from '../../../../../jestUtils'; +} from '../../../../../jestUtils.forTests'; import { genCheckAddressesInUse, genGetBestBlock, @@ -25,7 +25,7 @@ import { MockUtxoApi, genGetRecentTransactionHashes, genGetTransactionsByHashes, genGetMultiAssetSupply, genGetTransactionsHistoryForAddresses, -} from '../../../state-fetch/mockNetwork'; +} from '../../../state-fetch/mockNetwork.forTests'; import { HARD_DERIVATION_START, WalletTypePurpose, @@ -396,6 +396,7 @@ async function syncingSimpleTransaction( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -518,6 +519,7 @@ async function syncingSimpleTransaction( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -562,6 +564,7 @@ async function syncingSimpleTransaction( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -903,6 +906,7 @@ async function utxoCreatedAndUsed( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -947,6 +951,7 @@ async function utxoCreatedAndUsed( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/status.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/status.test.js index 7d145a75d3..e939c16ad4 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/status.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/status.test.js @@ -4,17 +4,17 @@ import BigNumber from 'bignumber.js'; import { schema, } from 'lovefield'; -import '../../../test-config'; +import '../../../test-config.forTests'; import type { RemoteTransaction, RemoteTxBlockMeta, } from '../../../state-fetch/types'; import { setup, -} from './common'; +} from './common.forTests'; import { ABANDON_SHARE, TX_TEST_MNEMONIC_1, mockDate, filterDbSnapshot, -} from '../../../../../jestUtils'; +} from '../../../../../jestUtils.forTests'; import { genCheckAddressesInUse, genGetBestBlock, @@ -24,7 +24,7 @@ import { MockUtxoApi, genGetRecentTransactionHashes, genGetTransactionsByHashes, genGetMultiAssetSupply, genGetTransactionsHistoryForAddresses, -} from '../../../state-fetch/mockNetwork'; +} from '../../../state-fetch/mockNetwork.forTests'; import { loadLovefieldDB } from '../../database/index'; import { HARD_DERIVATION_START, @@ -470,6 +470,7 @@ async function baseTest( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -608,6 +609,7 @@ async function baseTest( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -675,6 +677,7 @@ async function baseTest( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -801,6 +804,7 @@ async function baseTest( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -868,6 +872,7 @@ async function baseTest( Identifier: '', Metadata: { assetName: '', + logo: null, longName: null, numberOfDecimals: 6, policyId: '', @@ -1004,6 +1009,7 @@ async function baseTest( type: 'Cardano', policyId: '', assetName: '', + logo: null, ticker: 'ADA', longName: null, numberOfDecimals: 6 diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/utxo.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/utxo.test.js index a46b324587..bb6652ba96 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/utxo.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/tests/utxo.test.js @@ -4,16 +4,16 @@ import BigNumber from 'bignumber.js'; import { schema, } from 'lovefield'; -import '../../../test-config'; +import '../../../test-config.forTests'; import type { RemoteTransaction } from '../../../state-fetch/types'; import { setup, -} from './common'; +} from './common.forTests'; import { ABANDON_SHARE, TX_TEST_MNEMONIC_1, mockDate, -} from '../../../../../jestUtils'; +} from '../../../../../jestUtils.forTests'; import { genCheckAddressesInUse, genGetBestBlock, @@ -23,7 +23,7 @@ import { MockUtxoApi, genGetRecentTransactionHashes, genGetTransactionsByHashes, genGetMultiAssetSupply, genGetTransactionsHistoryForAddresses, -} from '../../../state-fetch/mockNetwork'; +} from '../../../state-fetch/mockNetwork.forTests'; import { HARD_DERIVATION_START, WalletTypePurpose, @@ -347,6 +347,7 @@ async function syncingSimpleTransaction( policyId: '', assetName: '', ticker: 'ADA', + logo: null, longName: null, numberOfDecimals: 6 }, @@ -385,6 +386,7 @@ async function syncingSimpleTransaction( policyId: '', assetName: '', ticker: 'ADA', + logo: null, longName: null, numberOfDecimals: 6 }, @@ -467,6 +469,7 @@ async function syncingSimpleTransaction( policyId: '', assetName: '', ticker: 'ADA', + logo: null, longName: null, numberOfDecimals: 6 }, @@ -505,6 +508,7 @@ async function syncingSimpleTransaction( policyId: '', assetName: '', ticker: 'ADA', + logo: null, longName: null, numberOfDecimals: 6 }, @@ -543,6 +547,7 @@ async function syncingSimpleTransaction( policyId: '', assetName: '', ticker: 'ADA', + logo: null, longName: null, numberOfDecimals: 6 }, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/timeUtils.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/timeUtils.js index 19dd612e00..b239a2284e 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/timeUtils.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/timeUtils.js @@ -1,64 +1,168 @@ // @flow import type { CardanoHaskellConfig } from '../database/primitives/tables'; +import { fail } from '../../../../../coreUtils'; +import { cardanoHaskellConfigCombine } from '../database/prepackaged/networks'; -import { - genTimeToSlot as baseGenTimeToSlot, - genCurrentEpochLength as baseGenCurrentEpochLength, - genCurrentSlotLength as baseGenCurrentSlotLength, - genTimeSinceGenesis as baseGenTimeSinceGenesis, - genToRealTime as baseGenToRealTime, - genToRelativeSlotNumber as baseGenToRelativeSlotNumber, - genToAbsoluteSlotNumber as baseGenToAbsoluteSlotNumber, -} from '../../../../common/lib/storage/bridge/timeUtils'; -import type { - TimeToAbsoluteSlotFunc, - CurrentSlotLengthFunc, - CurrentEpochLengthFunc, - TimeSinceGenesisFunc, - ToRealTimeFunc, - ToRelativeSlotNumberFunc, - ToAbsoluteSlotNumberFunc, -} from '../../../../common/lib/storage/bridge/timeUtils'; - -export async function genToAbsoluteSlotNumber( - config: $ReadOnlyArray, -): Promise { - return baseGenToAbsoluteSlotNumber(config); -} +export type RelativeSlot = {| epoch: number, slot: number |}; -export async function genToRelativeSlotNumber( - config: $ReadOnlyArray, -): Promise { - return baseGenToRelativeSlotNumber(config); +/** + * @return {Array<[startEpoch: number, endEpoch: number, nextConfig: CardanoHaskellConfig]>} + */ +function createEraBoundaries(config: $ReadOnlyArray): Array<[number, number, CardanoHaskellConfig]> { + const res: Array<[number, number, CardanoHaskellConfig]> = []; + for (let i = 0; i < config.length - 1; i++) { + res.push([ + config[i].StartAt ?? fail(`${nameof(createEraBoundaries)} missing start`), + config[i + 1].StartAt ?? fail(`${nameof(createEraBoundaries)} missing end`), + config[i + 1], + ]); + } + return res; } -export async function genTimeToSlot( - config: $ReadOnlyArray, -): Promise { - return baseGenTimeToSlot(config); -} +export default class TimeUtils { -export async function genCurrentEpochLength( - config: $ReadOnlyArray, -): Promise { - return baseGenCurrentEpochLength(config); -} + static toAbsoluteSlotNumber( + config: $ReadOnlyArray, + relativeSlot: RelativeSlot, + ): number { + let SlotsPerEpoch = config[0].SlotsPerEpoch ?? fail(`${nameof(TimeUtils.toAbsoluteSlotNumber)} missing slots per epoch`); + let slotCount = 0; + let epochsLeft = relativeSlot.epoch; -export async function genCurrentSlotLength( - config: $ReadOnlyArray, -): Promise { - return baseGenCurrentSlotLength(config); -} + // for pairs of config changes (x, x+1), get the time between these pairs + for (const [startEpoch, endEpoch, nextConfig] of createEraBoundaries(config)) { -export async function genTimeSinceGenesis( - config: $ReadOnlyArray, -): Promise { - return baseGenTimeSinceGenesis(config); -} + // queried time is before the next protocol parameter choice + if (endEpoch > relativeSlot.epoch) { + break; + } + + const numEpochs = endEpoch - startEpoch; + + slotCount += SlotsPerEpoch * numEpochs; + epochsLeft -= numEpochs; + + SlotsPerEpoch = nextConfig.SlotsPerEpoch ?? SlotsPerEpoch; + } + // find how many slots in the epochs since the last update + const slotsLeft = SlotsPerEpoch * epochsLeft; + return slotCount + slotsLeft + relativeSlot.slot; + } + + static toRelativeSlotNumber( + config: $ReadOnlyArray, + absoluteSlot: number, + ): RelativeSlot { + let SlotsPerEpoch = config[0].SlotsPerEpoch ?? fail(`${nameof(TimeUtils.toRelativeSlotNumber)} missing slots per epoch`); + let epochCount = 0; + let slotsLeft = absoluteSlot; + + // for pairs of config changes (x, x+1), get the time between these pairs + for (const [startEpoch, endEpoch, nextConfig] of createEraBoundaries(config)) { + + const numEpochs = endEpoch - startEpoch; + + // queried time is before the next protocol parameter choice + if (slotsLeft < SlotsPerEpoch * numEpochs) { + break; + } + + slotsLeft -= SlotsPerEpoch * numEpochs; + epochCount += numEpochs; + + SlotsPerEpoch = nextConfig.SlotsPerEpoch ?? SlotsPerEpoch; + } + // find how many slots in the epochs since the last update + return { + epoch: epochCount + Math.floor(slotsLeft / SlotsPerEpoch), + slot: slotsLeft % SlotsPerEpoch, + }; + } + + static timeToAbsoluteSlot( + config: $ReadOnlyArray, + time: Date, + ): number { + let GenesisDate = config[0].GenesisDate ?? fail(`${nameof(TimeUtils.timeToAbsoluteSlot)} missing genesis date`); + let SlotDuration = config[0].SlotDuration ?? fail(`${nameof(TimeUtils.timeToAbsoluteSlot)} missing slot duration`); + let SlotsPerEpoch = config[0].SlotsPerEpoch ?? fail(`${nameof(TimeUtils.timeToAbsoluteSlot)} missing slots per epoch`); + let timeLeftToTip = (time.getTime() - new Date(Number.parseInt(GenesisDate, 10)).getTime()); + let slotCount = 0; + + // for pairs of config changes (x, x+1), get the time between these pairs + for (const [startEpoch, endEpoch, nextConfig] of createEraBoundaries(config)) { + + const numEpochs = endEpoch - startEpoch; + + // queried time is before the next protocol parameter choice + if (timeLeftToTip < (SlotsPerEpoch * SlotDuration * 1000) * numEpochs) { + break; + } + + slotCount += SlotsPerEpoch * numEpochs; + timeLeftToTip -= (SlotsPerEpoch * SlotDuration * 1000) * numEpochs; + + SlotDuration = nextConfig.SlotDuration ?? SlotDuration; + SlotsPerEpoch = nextConfig.SlotsPerEpoch ?? SlotsPerEpoch; + } + // find how many slots since the last update + const secondsSinceLastUpdate = timeLeftToTip / 1000; + return slotCount + Math.floor(secondsSinceLastUpdate / SlotDuration); + } + + static secondsSinceGenesis( + config: $ReadOnlyArray, + absoluteSlotNum: number, + ): number { + let SlotDuration = config[0].SlotDuration ?? fail(`${nameof(TimeUtils.secondsSinceGenesis)} missing slot duration`); + let SlotsPerEpoch = config[0].SlotsPerEpoch ?? fail(`${nameof(TimeUtils.secondsSinceGenesis)} missing slots per epoch`); + let time = 0; + let slotsLeft = absoluteSlotNum; + + // for pairs of config changes (x, x+1), get the time between these pairs + for (const [startEpoch, endEpoch, nextConfig] of createEraBoundaries(config)) { + + const numEpochs = endEpoch - startEpoch; + + // queried time is before the next protocol parameter choice + if (slotsLeft < SlotsPerEpoch * numEpochs) { + break; + } + + time += (SlotsPerEpoch * SlotDuration) * numEpochs; + slotsLeft -= SlotsPerEpoch * numEpochs; + + SlotDuration = nextConfig.SlotDuration ?? SlotDuration; + SlotsPerEpoch = nextConfig.SlotsPerEpoch ?? SlotsPerEpoch; + } + // add seconds into the current update + return time + (slotsLeft * SlotDuration); + } + + static absoluteSlotToTime( + config: $ReadOnlyArray, + absoluteSlotNum: number, + ): Date { + const { GenesisDate } = config[0]; + if (GenesisDate == null) throw new Error(`${nameof(TimeUtils.absoluteSlotToTime)} missing genesis start date`); + const secondsSinceGenesis = TimeUtils.secondsSinceGenesis(config, absoluteSlotNum); + const time = (new Date(Number.parseInt(GenesisDate, 10)).getTime() + (1000 * secondsSinceGenesis)); + return new Date(time); + } + + static currentEpochSlots( + config: $ReadOnlyArray, + ): number { + return cardanoHaskellConfigCombine(config).SlotsPerEpoch + ?? fail(`${nameof(TimeUtils.currentEpochSlots)} missing slots per epoch`); + } -export async function genToRealTime( - config: $ReadOnlyArray, -): Promise { - return baseGenToRealTime(config); + static currentSlotSeconds( + config: $ReadOnlyArray, + ): number { + return cardanoHaskellConfigCombine(config).SlotDuration + ?? fail(`${nameof(TimeUtils.currentSlotSeconds)} missing slot duration`); + } } diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/traitUtils.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/traitUtils.js index 0d3f8e6dc4..7fb9dd6e00 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/traitUtils.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/traitUtils.js @@ -1,50 +1,28 @@ // @flow -import type { - lf$Transaction, -} from 'lovefield'; +import type { lf$Transaction, } from 'lovefield'; -import { - asDisplayCutoff, - asGetAllUtxos, - asGetAllAccounting, - asHasLevels, -} from '../models/PublicDeriver/traits'; +import { asDisplayCutoff, asGetAllAccounting, asGetAllUtxos, asHasLevels, } from '../models/PublicDeriver/traits'; import { PublicDeriver } from '../models/PublicDeriver/index'; import type { + Address, + Addressing, + AddressType, IPublicDeriver, - Address, AddressType, Value, Addressing, UsedStatus, + UsedStatus, + Value, } from '../models/PublicDeriver/interfaces'; import { ConceptualWallet } from '../models/ConceptualWallet/index'; -import { - getAllSchemaTables, - raii, - mapToTables, -} from '../database/utils'; -import { - GetAddress, - GetPathWithSpecific, - GetToken, - AssociateToken, -} from '../database/primitives/api/read'; -import type { - AddressRow, - TokenRow, - TokenListRow, -} from '../database/primitives/tables'; -import type { - CoreAddressT -} from '../database/primitives/enums'; -import { - GetDerivationSpecific, -} from '../database/walletTypes/common/api/read'; -import { - GetUtxoTxOutputsWithTx, -} from '../database/transactionModels/utxo/api/read'; -import { - rawGetAddressesForDisplay, -} from '../models/utils'; +import { getAllSchemaTables, mapToTables, raii, } from '../database/utils'; +import { GetAddress, GetPathWithSpecific, } from '../database/primitives/api/read'; +import type { AddressRow, } from '../database/primitives/tables'; +import type { CoreAddressT } from '../database/primitives/enums'; +import { CoreAddressTypes } from '../database/primitives/enums'; +import { GetDerivationSpecific, } from '../database/walletTypes/common/api/read'; +import { GetUtxoTxOutputsWithTx, } from '../database/transactionModels/utxo/api/read'; +import { rawGetAddressesForDisplay, } from '../models/utils'; +import { getOutputAddressesInSubmittedTxs } from '../../../../localStorage'; export async function rawGetAllAddressesForDisplay( tx: lf$Transaction, @@ -324,6 +302,25 @@ export async function getAddressRowsForWallet( return [...result.utxoAddresses, ...result.accountingAddresses]; } +export async function getAllAddresses(wallet: PublicDeriver<>, usedFilter: boolean): Promise { + const addresses = await getAddressRowsForWallet({ publicDeriver: wallet }); + return addresses + .filter(a => a.IsUsed === usedFilter && a.Type === CoreAddressTypes.CARDANO_BASE) + .map(a => a.Hash); +} + +export async function getAllUsedAddresses( + wallet: PublicDeriver<>, +): Promise { + const usedAddresses = await getAllAddresses(wallet, true); + const outputAddressesInSubmittedTxs = new Set( + await getOutputAddressesInSubmittedTxs(wallet.publicDeriverId) + ); + const usedInSubmittedTxs = (await getAllAddresses(wallet, false)) + .filter(address => outputAddressesInSubmittedTxs.has(address)); + return [...usedAddresses, ...usedInSubmittedTxs]; +} + export async function rawGetAddressRowsForWallet( tx: lf$Transaction, deps: {| @@ -381,33 +378,3 @@ export async function rawGetAddressRowsForWallet( accountingAddresses, }; } - -export async function buildTokenMap( - request: {| - publicDeriver: IPublicDeriver, - tokenListIds: Array, - |}, -): Promise<$ReadOnlyArray<{| - TokenList: $ReadOnly, - Token: $ReadOnly, -|}>> { - const deps = Object.freeze({ - AssociateToken, - GetToken, - }); - const depTables = Object - .keys(deps) - .map(key => deps[key]) - .flatMap(table => getAllSchemaTables(request.publicDeriver.getDb(), table)); - return await raii>( - request.publicDeriver.getDb(), - depTables, - async tx => await deps.AssociateToken.join( - request.publicDeriver.getDb(), tx, - { - listIds: request.tokenListIds, - networkId: request.publicDeriver.getParent().getNetworkInfo().NetworkId, - } - ) - ); -} diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/updateTransactions.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/updateTransactions.js index cdeaed3771..11ebc8778b 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/updateTransactions.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/updateTransactions.js @@ -73,9 +73,6 @@ import { import type { UserAnnotation, } from '../../../transactions/types'; -import type { - ToAbsoluteSlotNumberFunc, -} from '../../../../common/lib/storage/bridge/timeUtils'; import type { UtxoTransactionInputInsert, UtxoTransactionOutputInsert, } from '../database/transactionModels/utxo/tables'; @@ -114,9 +111,7 @@ import type { CardanoByronTxIO, CardanoShelleyTxIO } from '../database/transacti import { rawGetAddressRowsForWallet, } from './traitUtils'; -import { - genToAbsoluteSlotNumber, -} from './timeUtils'; +import TimeUtils from './timeUtils'; import { rawGenHashToIdsFunc, rawGenFindOwnAddress, } from '../../../../common/lib/storage/bridge/hashMapper'; @@ -140,26 +135,21 @@ import type { MultiAssetMintMetadataResponse, MultiAssetSupplyResponse, TxSummary, - HistoryFunc, + HistoryFunc, FilterFunc, } from '../../state-fetch/types'; import { ShelleyCertificateTypes, RemoteTransactionTypes, } from '../../state-fetch/types'; -import type { - FilterFunc, -} from '../../../../common/lib/state-fetch/currencySpecificTypes'; import { addressToKind, } from './utils'; import { RustModule } from '../../cardanoCrypto/rustLoader'; import { Bech32Prefix } from '../../../../../config/stringConfig'; -import { - MultiToken, -} from '../../../../common/lib/MultiToken'; import type { DefaultTokenEntry, } from '../../../../common/lib/MultiToken'; import { UtxoStorageApi } from '../models/utils'; -import { bytesToHex, createFilterUniqueBy, hexToBytes } from '../../../../../coreUtils'; +import { bytesToHex, createFilterUniqueBy, hexToBytes, listValues } from '../../../../../coreUtils'; +import type { RelativeSlot } from './timeUtils'; type TxData = {| addressLookupMap: Map, @@ -264,6 +254,7 @@ export async function rawGetTransactions( ...UserAnnotation, |}>, |}> { + const { publicDeriver } = request; const { addresses, txIds, @@ -277,7 +268,7 @@ export async function rawGetTransactions( GetDerivationSpecific: deps.GetDerivationSpecific, GetCertificates: deps.GetCertificates, }, - { publicDeriver: request.publicDeriver }, + { publicDeriver }, derivationTables, ); const blockMap = new Map>(); @@ -291,7 +282,7 @@ export async function rawGetTransactions( txs: txs .map(txWithBlock => txWithBlock.Transaction) .filter(tx => tx.Type === TransactionType.CardanoByron), - networkId: request.publicDeriver.getParent().getNetworkInfo().NetworkId, + networkId: publicDeriver.getParent().getNetworkInfo().NetworkId, } ); const shelleyWithIOs = await deps.CardanoShelleyAssociateTxWithIOs.getIOsForTx( @@ -300,7 +291,7 @@ export async function rawGetTransactions( txs: txs .map(txWithBlock => txWithBlock.Transaction) .filter(tx => tx.Type === TransactionType.CardanoShelley), - networkId: request.publicDeriver.getParent().getNetworkInfo().NetworkId, + networkId: publicDeriver.getParent().getNetworkInfo().NetworkId, } ); const txsWithIOs = [ @@ -337,7 +328,7 @@ export async function rawGetTransactions( } } - const defaultToken = request.publicDeriver.getParent().getDefaultToken(); + const defaultToken = publicDeriver.getParent().getDefaultToken(); const result = txsWithIOs.map((tx: CardanoByronTxIO | CardanoShelleyTxIO) => ({ ...tx, @@ -362,10 +353,10 @@ export async function rawGetTransactions( * So that wouldn't be quite accurate either. * Again, it's easier to say it's just whoever gets it */ - ownImplicitInput: new MultiToken([], defaultToken), + ownImplicitInput: publicDeriver.getParent().getDefaultMultiToken(), ownImplicitOutput: (() => { if (tx.txType === TransactionType.CardanoShelley) { - const implicitOutputSum = new MultiToken([], defaultToken); + const implicitOutputSum = publicDeriver.getParent().getDefaultMultiToken(); for (const cert of tx.certificates) { if ( cert.certificate.Kind !== @@ -412,7 +403,7 @@ export async function rawGetTransactions( } return implicitOutputSum; } - return new MultiToken([], defaultToken); + return publicDeriver.getParent().getDefaultMultiToken(); })(), defaultToken, }) @@ -1392,10 +1383,8 @@ async function rawUpdateTransactions( before: ?ReferenceTx, ): Promise { const network = publicDeriver.getParent().getNetworkInfo(); - // TODO: consider passing this function in as an argument instead of generating it here - const toAbsoluteSlotNumber = await genToAbsoluteSlotNumber( - getCardanoHaskellBaseConfig(network) - ); + const toAbsoluteSlotNumber = (slot: RelativeSlot) => + TimeUtils.toAbsoluteSlotNumber(getCardanoHaskellBaseConfig(network), slot); if (before != null && after != null) { throw new Error('Only one of `before` or `after` should be used for a resync'); @@ -1475,12 +1464,11 @@ async function rawUpdateTransactions( }, }); const summaries: Array = - // $FlowFixMe[incompatible-cast] - (Object.values(recentTxHashesResult).flat(): Array) + listValues(recentTxHashesResult).flat() .filter(createFilterUniqueBy(x => x.txHash)); summaries.sort((a: TxSummary, b: TxSummary) => { // DESC ordering (b < a) - return b.epoch - a.epoch || b.slot - a.slot; + return b.epoch - a.epoch || b.slot - a.slot || b.txBlockIndex - a.txBlockIndex; }); txHashes = summaries.slice(0,20).map(x => x.txHash); txsFromNetwork = await getTransactionsByHashes({ network, txHashes }); @@ -1601,7 +1589,7 @@ async function updateTransactionBatch( |}, request: {| network: $ReadOnly, - toAbsoluteSlotNumber: ToAbsoluteSlotNumberFunc, + toAbsoluteSlotNumber: RelativeSlot => number, txIds: Array, txsFromNetwork: Array, hashToIds: HashToIdsFunc, @@ -1752,6 +1740,8 @@ async function updateTransactionBatch( genNextTokenListId, ); const newsTxsIdSet = new Set(); + + // Byron Legacy: this should be impossible now, we are not syncing history from pre-Shelley for (const newTx of byronTxs) { const result = await deps.ModifyCardanoByronTx.addTxWithIOs( db, @@ -2222,10 +2212,11 @@ export async function genCardanoAssetMap( .map(tokenId => { const id = tokenId.split('.').join(''); - let numberOfDecimals; - let ticker; - let lastUpdatedAt; - let longName; + let numberOfDecimals = 0; + let lastUpdatedAt = null; + let ticker = null; + let longName = null; + let logo = null; const tokenInfo = tokenInfoResponse[id]; if (tokenInfo) { @@ -2233,23 +2224,13 @@ export async function genCardanoAssetMap( ticker = tokenInfo.ticker ?? null; lastUpdatedAt = new Date().toISOString(); longName = tokenInfo.name ?? null; + logo = tokenInfo.logo ?? null; } else if (tokenInfo === null) { // the token is not registered - numberOfDecimals = 0; - ticker = null; lastUpdatedAt = new Date().toISOString(); - longName = null; - } else { - // failed to fetch token info - if (existingRowsMap.has(tokenId)) { - // the token entry exists, do not update - return null; - } - // the token entry doesn't exists, insert a placeholder row - numberOfDecimals = 0; - ticker = null; - lastUpdatedAt = null; - longName = null; + } else if (existingRowsMap.has(tokenId)) { + // the token entry exists, do not update + return null; } const parts = identifierToCardanoAsset(tokenId); @@ -2287,6 +2268,7 @@ export async function genCardanoAssetMap( Metadata: { type: 'Cardano', ticker, + logo, longName, numberOfDecimals, assetName, @@ -2317,7 +2299,7 @@ async function networkTxToDbTx( newTxs: Array, hashToIds: HashToIdsFunc, findOwnAddress: FindOwnAddressFunc, - toAbsoluteSlotNumber: ToAbsoluteSlotNumberFunc, + toAbsoluteSlotNumber: RelativeSlot => number, TransactionSeed: number, BlockSeed: number, assetLookup: Map>, @@ -2373,6 +2355,7 @@ async function networkTxToDbTx( return id; }; + // Byron Legacy: this should be impossible now, we are not syncing history from pre-Shelley const byronTxs = []; const shelleyTxs = []; @@ -2384,6 +2367,7 @@ async function networkTxToDbTx( BlockSeed, ); + // Byron if (networkTx.type == null || networkTx.type === RemoteTransactionTypes.byron) { byronTxs.push({ block, @@ -2502,7 +2486,7 @@ export function statusStringToCode( export function networkTxHeaderToDb( tx: RemoteTransaction, - toAbsoluteSlotNumber: ToAbsoluteSlotNumberFunc, + toAbsoluteSlotNumber: RelativeSlot => number, TransactionSeed: number, BlockSeed: number, ): { @@ -2982,6 +2966,126 @@ async function certificateToDb( })); break; } + case ShelleyCertificateTypes.VoteDelegation: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.VoteDelegation, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.StakeVoteDelegation: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.StakeAndVoteDelegation, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.StakeRegistrationDelegation: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.StakeRegistrationAndDelegation, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.VoteRegistrationDelegation: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.VoteRegistrationAndDelegation, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.StakeVoteRegistrationDelegation: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.StakeVoteRegistrationAndDelegation, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.AuthCommitteeHot: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.CommitteeHotAuth, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.ResignCommitteeCold: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.CommitteeColdResign, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.RegisterDrep: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.DrepRegistration, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.UnregisterDrep: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.DrepDeregistration, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } + case ShelleyCertificateTypes.UpdateDrep: { + result.push((txId: number) => ({ + certificate: { + Ordinal: cert.certIndex, + Kind: RustModule.WalletV4.CertificateKind.DrepUpdate, + Payload: '', + TransactionId: txId, + }, + relatedAddresses: (_certId: number) => [], + })); + break; + } default: throw new Error(`${nameof(certificateToDb)} unknown cert kind ` + cert.kind); } } diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/builder.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/builder.js index 41d3304630..7899912c96 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/builder.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/builder.js @@ -43,7 +43,7 @@ import { derivePublicDeriver, } from '../../models/ConceptualWallet/traits'; import type { AddDerivationRequest } from '../../database/primitives/api/write'; -import type { TreeInsertStart } from '../../database/walletTypes/common/utils'; +import type { TreeInsertStart } from '../../database/walletTypes/common/utils.types'; /** * We need to statically ensure that diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/byron.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/byron.js index 25a7e32b3c..dba546fc95 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/byron.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/byron.js @@ -14,7 +14,7 @@ import { import type { TreeInsert, -} from '../../database/walletTypes/common/utils'; +} from '../../database/walletTypes/common/utils.types'; import type { Bip44ChainInsert } from '../../database/walletTypes/common/tables'; import type { KeyInsert, NetworkRow } from '../../database/primitives/tables'; import type { HWFeatures, } from '../../database/walletTypes/core/tables'; @@ -38,7 +38,7 @@ import type { import type { AddByHashFunc } from '../../../../../common/lib/storage/bridge/hashMapper'; import { rawGenAddByHash } from '../../../../../common/lib/storage/bridge/hashMapper'; import { addByronAddress } from '../../../../restoration/byron/scan'; -import { KeyKind } from '../../../../../common/lib/crypto/keys/types'; +import { KeyKind } from '../../../cardanoCrypto/keys/types'; // TODO: maybe move this inside walletBuilder somehow so it's all done in the same transaction /** @@ -46,6 +46,7 @@ import { KeyKind } from '../../../../../common/lib/crypto/keys/types'; * This is because scanning depends on having an internet connection * But we need to ensure the address maintains the BIP44 gap regardless of internet connection */ +// bip44 export async function getAccountDefaultDerivations( settings: RustModule.WalletV2.BlockchainSettings, accountPublicKey: RustModule.WalletV2.Bip44AccountPublic, @@ -120,6 +121,7 @@ export async function getAccountDefaultDerivations( ]; } +// bip44 (used only in tests) export async function createStandardBip44Wallet(request: {| db: lf$Database, rootPk: RustModule.WalletV2.Bip44RootPrivateKey, @@ -245,121 +247,7 @@ export async function createStandardBip44Wallet(request: {| return state; } -export async function createHardwareWallet(request: { - db: lf$Database, - settings: RustModule.WalletV2.BlockchainSettings, - accountPublicKey: RustModule.WalletV2.Bip44AccountPublic, - accountIndex: number, - walletName: string, - accountName: string, - hwWalletMetaInsert: HWFeatures, - network: $ReadOnly, - ... -}): Promise> { - if (request.accountIndex < HARD_DERIVATION_START) { - throw new Error(`${nameof(createHardwareWallet)} needs hardened index`); - } - const initialDerivations = await getAccountDefaultDerivations( - request.settings, - request.accountPublicKey, - rawGenAddByHash(new Set()), - ); - - let state; - { - state = await WalletBuilder - .start( - request.db, - Bip44TableMap, - ) - .addConceptualWallet( - _finalState => ({ - NetworkId: request.network.NetworkId, - Name: request.walletName, - }) - ) - .addFromRoot( - _finalState => ({ - rootInsert: { - privateKeyInfo: null, - publicKeyInfo: null, - derivationInfo: keys => ({ - PublicKeyId: keys.public, - PrivateKeyId: keys.private, - Parent: null, - Index: null, - }), - levelInfo: insertRequest => Promise.resolve({ - KeyDerivationId: insertRequest.keyDerivationId, - }), - }, - tree: rootDerivation => ({ - derivationId: rootDerivation, - children: [], - }), - }) - ) - .addBip44Wrapper( - finalState => ({ - ConceptualWalletId: finalState.conceptualWalletRow.ConceptualWalletId, - SignerLevel: null, - PublicDeriverLevel: Bip44DerivationLevels.ACCOUNT.level, - PrivateDeriverKeyDerivationId: null, - PrivateDeriverLevel: null, - RootKeyDerivationId: finalState.root.root.KeyDerivation.KeyDerivationId, - }) - ) - .addAdhocPublicDeriver( - finalState => ({ - parentDerivationId: finalState.root.root.KeyDerivation.KeyDerivationId, - pathStartLevel: 1, - publicDeriverMeta: { - name: request.accountName, - }, - pathToPublic: [ - { - index: WalletTypePurpose.BIP44, - insert: insertRequest => Promise.resolve({ - KeyDerivationId: insertRequest.keyDerivationId, - }), - publicKey: null, - privateKey: null, - }, - { - index: CoinTypes.CARDANO, - insert: insertRequest => Promise.resolve({ - KeyDerivationId: insertRequest.keyDerivationId, - }), - publicKey: null, - privateKey: null, - }, - { - index: request.accountIndex, - insert: insertRequest => Promise.resolve({ - KeyDerivationId: insertRequest.keyDerivationId, - }), - publicKey: { - Hash: request.accountPublicKey.key().to_hex(), - IsEncrypted: false, - PasswordLastUpdate: null, - Type: KeyKind.BIP32ED25519, - }, - privateKey: null, - }, - ], - initialDerivations, - hwWalletMetaInsert: { - ConceptualWalletId: finalState.conceptualWalletRow.ConceptualWalletId, - ...request.hwWalletMetaInsert - }, - }) - ) - .commit(); - } - - return state; -} - +// legacy migration export async function migrateFromStorageV1(request: { db: lf$Database, settings: RustModule.WalletV2.BlockchainSettings, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/shelley.js b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/shelley.js index e00fc775e6..dac8579802 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/shelley.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/bridge/walletBuilder/shelley.js @@ -15,7 +15,7 @@ import { import type { TreeInsert, -} from '../../database/walletTypes/common/utils'; +} from '../../database/walletTypes/common/utils.types'; import type { Bip44ChainInsert } from '../../database/walletTypes/common/tables'; import type { NetworkRow } from '../../database/primitives/tables'; import type { HWFeatures, } from '../../database/walletTypes/core/tables'; @@ -39,7 +39,7 @@ import type { import type { AddByHashFunc } from '../../../../../common/lib/storage/bridge/hashMapper'; import { rawGenAddByHash } from '../../../../../common/lib/storage/bridge/hashMapper'; import { addShelleyChimericAccountAddress, addShelleyUtxoAddress } from '../../../../restoration/shelley/scan'; -import { KeyKind } from '../../../../../common/lib/crypto/keys/types'; +import { KeyKind } from '../../../cardanoCrypto/keys/types'; // TODO: maybe move this inside walletBuilder somehow so it's all done in the same transaction /** diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/index.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/index.js index 6df6e2704c..a76fb1be3e 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/index.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/index.js @@ -29,7 +29,7 @@ import { populateMemoTransactionsDb } from './memos/tables'; import { populatePricesDb } from './prices/tables'; import { populateExplorerDb } from './explorers/tables'; import { populateUtxoDb } from './utxo/tables'; -import { KeyKind } from '../../../../common/lib/crypto/keys/types'; +import { KeyKind } from '../../cardanoCrypto/keys/types'; import { networks, defaultAssets } from './prepackaged/networks'; import { prepackagedExplorers } from './prepackaged/explorers'; import environment from '../../../../../environment'; diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.js index 6003d2e186..789014c41c 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.js @@ -26,6 +26,7 @@ const CardanoMainnetExplorers: Array<$ReadOnly> = [ address: 'https://adastat.net/addresses/', transaction: 'https://adastat.net/transactions/', pool: 'https://adastat.net/pools/', + token: 'https://adastat.net/tokens/', }, Name: 'AdaStat', }, @@ -44,12 +45,13 @@ const CardanoMainnetExplorers: Array<$ReadOnly> = [ NetworkId: networks.CardanoMainnet.NetworkId, IsBackup: false, Endpoints: { - stakeAddress: 'https://adaex.org/', - address: 'https://adaex.org/', - transaction: 'https://adaex.org/', - pool: 'https://adapools.org/pool/', + address: 'https://cexplorer.io/address/', + transaction: 'https://cexplorer.io/tx/', + pool: 'https://cexplorer.io/pool/', + stakeAddress: 'https://cexplorer.io/stake/', + token: 'https://cexplorer.io/asset/', }, - Name: 'ADAex.org', + Name: 'Cexplorer', }, { ExplorerId: 1_02, @@ -136,13 +138,13 @@ const CardanoSanchoTestnetExplorers: Array<$ReadOnly> = [ NetworkId: networks.CardanoSanchoTestnet.NetworkId, IsBackup: true, Endpoints: { - address: 'https://preview.cardanoscan.io/address/', - transaction: 'https://preview.cardanoscan.io/transaction/', - pool: 'https://preview.cardanoscan.io/pool/', - stakeAddress: 'https://preview.cardanoscan.io/stakeKey/', - token: 'https://preview.cardanoscan.io/token/', + address: 'https://sancho.cexplorer.io/address/', + transaction: 'https://sancho.cexplorer.io/tx/', + pool: 'https://sancho.cexplorer.io/pool/', + stakeAddress: 'https://sancho.cexplorer.io/stake/', + token: 'https://sancho.cexplorer.io/asset/', }, - Name: 'CardanoScan', + Name: 'Cexplorer', }, ]; diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.test.js index 8c9f7d5988..0fff25cefc 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/explorers.test.js @@ -1,5 +1,5 @@ // @flow -import '../../../test-config'; +import '../../../test-config.forTests'; import { prepackagedExplorers } from './explorers'; test('Only one backup per network', async () => { diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/networks.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/networks.js index 39ee8217b6..e7ead8702b 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/networks.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/prepackaged/networks.js @@ -6,6 +6,7 @@ import { import type { NetworkRow, CardanoHaskellBaseConfig, + CardanoHaskellConfig, TokenInsert, } from '../primitives/tables'; import { PRIMARY_ASSET_CONSTANTS } from '../primitives/enums'; @@ -22,10 +23,7 @@ export const networks = Object.freeze({ Backend: { BackendService: environment.isTest() ? 'http://localhost:21000' - : 'https://iohk-mainnet.yoroiwallet.com', - WebSocket: environment.isTest() - ? 'ws://localhost:21000' - : 'wss://iohk-mainnet.yoroiwallet.com:443', + : 'https://api.yoroiwallet.com', TokenInfoService: 'https://cdn.yoroiwallet.com', }, @@ -64,9 +62,6 @@ export const networks = Object.freeze({ BackendService: environment.isTest() ? 'http://localhost:21000' : 'https://testnet-backend.yoroiwallet.com', - WebSocket: environment.isTest() - ? 'ws://localhost:21000' - : 'wss://testnet-backend.yoroiwallet.com:443', TokenInfoService: 'https://stage-cdn.yoroiwallet.com', }, @@ -104,9 +99,6 @@ export const networks = Object.freeze({ BackendService: environment.isTest() ? 'http://localhost:21000' : 'https://preprod-backend.yoroiwallet.com', - WebSocket: environment.isTest() - ? 'ws://localhost:21000' - : 'wss://preprod-backend.yoroiwallet.com:443', TokenInfoService: 'https://stage-cdn.yoroiwallet.com', }, @@ -144,9 +136,6 @@ export const networks = Object.freeze({ BackendService: environment.isTest() ? 'http://localhost:21000' : 'https://preview-backend.emurgornd.com', - WebSocket: environment.isTest() - ? 'ws://localhost:21000' - : 'wss://preview-backend.emurgornd.com:443', TokenInfoService: 'https://stage-cdn.yoroiwallet.com', }, @@ -184,9 +173,6 @@ export const networks = Object.freeze({ BackendService: environment.isTest() ? 'http://localhost:21000' : 'https://sanchonet-backend.yoroiwallet.com', - WebSocket: environment.isTest() - ? 'ws://localhost:21000' - : 'wss://sanchonet-backend.yoroiwallet.com:443', TokenInfoService: 'https://stage-cdn.yoroiwallet.com', }, @@ -245,6 +231,18 @@ export function getCardanoHaskellBaseConfig( return (network.BaseConfig: any); // cast to return type } + +export function cardanoHaskellConfigCombine(config: $ReadOnlyArray): CardanoHaskellConfig { + // $FlowIgnore[incompatible-exact] + return (config.reduce((acc, next) => Object.assign(acc, next), {}): CardanoHaskellConfig); +} + +export function getCardanoHaskellBaseConfigCombined( + network: $ReadOnly, +): CardanoHaskellConfig { + return cardanoHaskellConfigCombine(getCardanoHaskellBaseConfig(network)) +} + export const defaultAssets: Array< $Diff > = Object.keys(networks) @@ -267,6 +265,7 @@ export const defaultAssets: Array< || network === networks.CardanoSanchoTestnet) ? 'TADA' : 'ADA', + logo: null, // TODO: maybe put built-in ADA logo as base64 here longName: null, numberOfDecimals: 6, } diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/read.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/read.js index 5adc6fee8f..7e8783c071 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/read.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/read.js @@ -855,6 +855,7 @@ export class GetTxAndBlock { ) ) .orderBy(txTable[txTableMeta.properties.LastUpdateTime], lf.Order.DESC) + .orderBy(txTable[txTableMeta.properties.Ordinal], lf.Order.DESC) .where(op.and( txTable[txTableMeta.properties.TransactionId].in(request.txIds), )); @@ -942,6 +943,7 @@ export class GetCertificates { }); static depTables: {||} = Object.freeze({}); + // needs redesign static async forAddress( db: lf$Database, tx: lf$Transaction, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/write.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/write.js index 7420a1969b..245b583f8b 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/write.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/api/write.js @@ -47,7 +47,7 @@ import { GetToken, GetAddress, } from './read'; -import type { InsertRequest } from '../../walletTypes/common/utils'; +import type { InsertRequest } from '../../walletTypes/common/utils.types'; export class ModifyKey { static ownTables: {| diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/tables.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/tables.js index 44b4bbb335..04945769fd 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/tables.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/primitives/tables.js @@ -1,15 +1,10 @@ // @flow -import { Type, ConstraintAction, ConstraintTiming } from 'lovefield'; import type { lf$schema$Builder } from 'lovefield'; -import type { - TxStatusCodesType, - CertificateRelationType, - CoreAddressT, -} from './enums'; -import type { CertificateKindType } from '@emurgo/js-chain-libs/js_chain_libs'; +import { ConstraintAction, ConstraintTiming, Type } from 'lovefield'; +import type { CertificateRelationType, CoreAddressT, TxStatusCodesType, } from './enums'; import typeof { CertificateKind } from '@emurgo/cardano-serialization-lib-browser/cardano_serialization_lib'; -import type { KeyKindType } from '../../../../../common/lib/crypto/keys/types'; +import type { KeyKindType } from '../../../cardanoCrypto/keys/types'; import type { CoinTypesT } from '../../../../../../config/numbersConfig'; export type CommonBaseConfig = {| @@ -68,7 +63,6 @@ export type NetworkInsert = {| Backend: {| BackendService?: string, TokenInfoService?: string, - WebSocket?: string, |}, /** * Starting configuration for the wallet. @@ -319,7 +313,8 @@ export type CertificatePart = {| export type CertificateInsert = {| TransactionId: number, Ordinal: number, // transactions can contain multiple certificates in some blockchains - Kind: CertificateKindType | $Values, + Kind: $Values, + // Needs redesign Payload: string, |}; export type CertificateRow = {| @@ -348,6 +343,7 @@ export type CertificateAddressRow = {| CertificateAddressId: number, ...CertificateAddressInsert, |}; + export const CertificateAddressSchema: {| +name: 'CertificateAddress', properties: $ObjMapi, @@ -443,22 +439,19 @@ export type CardanoAssetMintMetadata = {| |} |} -export type CommonMetadata = {| - numberOfDecimals: number, - ticker: null | string, - longName: null | string, - // If the token row is fetched from network, this is the ISO time string. - // Otherwise it is null or not present. - lastUpdatedAt?: ?string, -|}; - export type TokenMetadata = {| +type: 'Cardano', // empty string for ADA +policyId: string, // empty string for ADA +assetName: string, - ...CommonMetadata, + numberOfDecimals: number, + ticker: null | string, + logo: null | string, + longName: null | string, + // If the token row is fetched from network, this is the ISO time string. + // Otherwise it is null or not present. + lastUpdatedAt?: ?string, +assetMintMetadata?: Array |}; diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/bip44/api/utils.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/bip44/api/utils.js index 919e56bc8a..4213b35c02 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/bip44/api/utils.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/bip44/api/utils.js @@ -11,7 +11,7 @@ import { CanonicalAddressSchema, AddressMappingSchema, AddressSchema, EncryptionMetaSchema, } from '../../../primitives/tables'; import type { CanonicalAddressInsert, } from '../../../primitives/tables'; -import type { TreeInsert, InsertRequest, } from '../../common/utils'; +import type { TreeInsert, InsertRequest, } from '../../common/utils.types'; import type { Schema } from '../../../utils'; export const Bip44DerivationLevels = Object.freeze({ diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/api/write.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/api/write.js index 7da7881679..0b609e787b 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/api/write.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/api/write.js @@ -32,7 +32,7 @@ import type { TreeInsertStart, TreeInsert, TreeResultStart, TreeResult, InsertPath, -} from '../utils'; +} from '../utils.types'; export class AddDerivationTree { static ownTables: {||} = Object.freeze({}); diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/utils.js b/packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/utils.types.js similarity index 100% rename from packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/utils.js rename to packages/yoroi-extension/app/api/ada/lib/storage/database/walletTypes/common/utils.types.js diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/Bip44Wallet/wrapper.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/Bip44Wallet/wrapper.js index 0c7707d040..8736bd3338 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/Bip44Wallet/wrapper.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/Bip44Wallet/wrapper.js @@ -27,6 +27,7 @@ import { Bip44TableMap, } from '../../database/walletTypes/bip44/api/utils'; +// bip44 /** Snapshot of a Bip44Wallet in the database */ export class Bip44Wallet extends ConceptualWallet @@ -79,6 +80,7 @@ export class Bip44Wallet return this.#privateDeriverKeyDerivationId; } + // bip44 static async createBip44Wallet( db: lf$Database, row: $ReadOnly, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/index.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/index.js index 86fbce1fa3..9b03e53e81 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/index.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/index.js @@ -26,9 +26,8 @@ import Config from '../../../../../../config'; import type { NetworkRow, TokenRow, } from '../../database/primitives/tables'; -import type { - DefaultTokenEntry, -} from '../../../../../common/lib/MultiToken'; +import type { DefaultTokenEntry } from '../../../../../common/lib/MultiToken'; +import { MultiToken } from '../../../../../common/lib/MultiToken'; /** Snapshot of a ConceptualWallet in the database */ export class ConceptualWallet implements IConceptualWallet, IRename { @@ -69,6 +68,10 @@ export class ConceptualWallet implements IConceptualWallet, IRename { }; } + getDefaultMultiToken(): MultiToken { + return new MultiToken([], this.getDefaultToken()); + } + getConceptualWalletId(): number { return this.#conceptualWalletId; } @@ -76,6 +79,13 @@ export class ConceptualWallet implements IConceptualWallet, IRename { getWalletType: void => WalletType = () => { return this.walletType; } + + getWalletVariant: void => 'web' | 'ledger' | 'trezor' = () => { + if (isLedgerNanoWallet(this)) return 'ledger'; + if (isTrezorTWallet(this)) return 'trezor'; + return 'web'; + } + /** * TODO: maybe we shouldn't cache in this way * since information like device ID, firmware version, etc. diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/interfaces.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/interfaces.js index 770cc98cb6..c24351f6b3 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/interfaces.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/interfaces.js @@ -13,7 +13,7 @@ import type { } from '../../database/walletTypes/common/api/write'; import type { TreeInsert, -} from '../../database/walletTypes/common/utils'; +} from '../../database/walletTypes/common/utils.types'; import type { AddPublicDeriverResponse } from '../../database/walletTypes/core/api/write'; import { ModifyKey, } from '../../database/primitives/api/write'; import { diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/traits.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/traits.js index cac31f1116..3cf3198be2 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/traits.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/ConceptualWallet/traits.js @@ -479,6 +479,7 @@ export async function refreshCip1852WalletFunctionality< return (instance: any); } +// bip44 export async function refreshBip44WalletFunctionality< T: ConceptualWallet & IBip44Wallet & IHasPrivateDeriver & IHasLevels & IHasSign >( diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/index.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/index.js index 5d7dc506e9..38a74c707e 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/index.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/index.js @@ -42,6 +42,7 @@ import { addTraitsForBip44Child, addTraitsForCip1852Child } from './traits'; import { UtxoService } from '@emurgo/yoroi-lib/dist/utxo'; import { UtxoStorageApi, } from '../utils'; import UtxoApi from '../../../state-fetch/utxoApi'; +import { networks } from '../../database/prepackaged/networks'; /** Snapshot of a PublicDeriver in the database */ export class PublicDeriver<+Parent: ConceptualWallet = ConceptualWallet> @@ -90,6 +91,11 @@ implements IPublicDeriver, IRename, IGetLastSyncInfo { return this.parent; } + isMainnet(): boolean { + return this.getParent().getNetworkInfo().NetworkId + === networks.CardanoMainnet.NetworkId; + } + getPathToPublic(): Array { return this.pathToPublic; } diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/interfaces.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/interfaces.js index 30baf2caf6..e7a50d53ba 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/interfaces.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/interfaces.js @@ -53,15 +53,12 @@ import { } from '../../database/walletTypes/common/api/write'; import { GetDerivationSpecific } from '../../database/walletTypes/common/api/read'; import { ModifyKey, ModifyAddress, } from '../../database/primitives/api/write'; -import type { - FilterFunc, -} from '../../../../../common/lib/state-fetch/currencySpecificTypes'; import { ChainDerivations, } from '../../../../../../config/numbersConfig'; import type { TreeInsert, -} from '../../database/walletTypes/common/utils'; +} from '../../database/walletTypes/common/utils.types'; import type { Bip44ChainInsert } from '../../database/walletTypes/common/tables'; import { MultiToken } from '../../../../../common/lib/MultiToken'; import type { @@ -70,6 +67,7 @@ import type { } from '../../database/utxo/api/read'; import { UtxoService } from '@emurgo/yoroi-lib/dist/utxo'; import { UtxoStorageApi, } from '../utils'; +import type { FilterFunc } from '../../../state-fetch/types'; export type Address = {| @@ -169,11 +167,12 @@ export type IGetAllUtxoAddressesFunc = ( body: IGetAllUtxoAddressesRequest ) => Promise; export type IGetAllUtxosRequest = void; -export type IGetAllUtxosResponse = Array<{| +export type QueriedUtxo = {| output: $ReadOnly; ...Addressing, ...Address, -|}>; +|}; +export type IGetAllUtxosResponse = Array; export type IGetAllUtxosFunc = ( body: IGetAllUtxosRequest ) => Promise; diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/traits.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/traits.js index 17b2cf91f8..47ad51a6fd 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/traits.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/PublicDeriver/traits.js @@ -45,7 +45,7 @@ import type { } from '../ConceptualWallet/interfaces'; import { - rawGetBip44AddressesByPath, + rawGetAddressesByDerivationPath, rawGetNextUnusedIndex, updateCutoffFromInsert, getBalanceForUtxos, @@ -136,6 +136,7 @@ import type { Utxo, } from '@emurgo/yoroi-lib/dist/utxo/models'; import { derivePublicByAddressing } from '../../../cardanoCrypto/deriveByAddressing'; +import { addressBech32ToHex } from '../../../cardanoCrypto/utils'; interface Empty {} type HasPrivateDeriverDependencies = IPublicDeriver; @@ -220,109 +221,103 @@ const GetAllUtxosMixin = ( _body, derivationTables, ) => { - // TODO: perhaps should use seperate types for Ergo and Cardano wallets instead - // of branching - if (isCardanoHaskell(this.getParent().getNetworkInfo())) { - const addresses = await this.rawGetAllUtxoAddresses( - tx, - { - GetAddress: deps.GetAddress, - GetPathWithSpecific: deps.GetPathWithSpecific, - GetDerivationSpecific: deps.GetDerivationSpecific, - }, - undefined, - derivationTables, - ); - - const utxoStorageApi = this.getUtxoStorageApi(); - utxoStorageApi.setDb(super.getDb()); - utxoStorageApi.setDbTx(tx); - const utxosInStorage: Array = await this.getUtxoService().getAvailableUtxos(); - - const networkId = this.getParent().getNetworkInfo().NetworkId; - const tokenMap = new Map>( - (await deps.GetToken.fromIdentifier( - super.getDb(), tx, - [ - '', - ...utxosInStorage.flatMap( - ({ assets }) => assets.map(asset => asset.assetId) - ) - ] - )).filter(token => token.NetworkId === networkId) - .map(token => [ token.Identifier, token ]) - ); - - const addressingMap = new Map( - addresses.flatMap(family => family.addrs.map(addr => [addr.Hash, { - addressing: family.addressing, - address: addr.Hash, - }])) - ); + const addresses = await this.rawGetAllUtxoAddresses( + tx, + { + GetAddress: deps.GetAddress, + GetPathWithSpecific: deps.GetPathWithSpecific, + GetDerivationSpecific: deps.GetDerivationSpecific, + }, + undefined, + derivationTables, + ); + const utxoStorageApi = this.getUtxoStorageApi(); + utxoStorageApi.setDb(super.getDb()); + utxoStorageApi.setDbTx(tx); + const utxosInStorage: Array = await this.getUtxoService().getAvailableUtxos(); + const networkId = this.getParent().getNetworkInfo().NetworkId; + const tokenMap = new Map>( + (await deps.GetToken.fromIdentifier( + super.getDb(), tx, + [ + '', + ...utxosInStorage.flatMap( + ({ assets }) => assets.map(asset => asset.assetId) + ) + ] + )).filter(token => token.NetworkId === networkId) + .map(token => [token.Identifier, token]) + ); + const addressingMap = new Map( + addresses.flatMap(family => family.addrs.map(addr => [addr.Hash, { + addressing: family.addressing, + address: addr.Hash, + }])) + ); + const addressedUtxos = utxosInStorage.map(utxo => { + let addressHash; + try { + addressHash = addressBech32ToHex(utxo.receiver); + } catch { + addressHash = utxo.receiver; + } + const addressingInfo = addressingMap.get(addressHash); + if (addressingInfo == null) { + throw new Error(`${nameof(GetAllUtxos)}::${nameof(this.rawGetAllUtxos)}: Addressing info not found. Should never happen`); + } - const addressedUtxos = utxosInStorage.map(utxo => { - let addressHash; - try { - addressHash = Buffer.from( - RustModule.WalletV4.Address.from_bech32(utxo.receiver).to_bytes() - ).toString('hex') - } catch { - addressHash = utxo.receiver; - } - const addressingInfo = addressingMap.get(addressHash); - if (addressingInfo == null) { - throw new Error(`${nameof(GetAllUtxos)}::${nameof(this.rawGetAllUtxos)}: Addressing info not found. Should never happen`); + const tokens = ['', ...utxo.assets.map(asset => asset.assetId)].map((tokenId, i) => { + let amount; + if (i === 0) { + amount = utxo.amount; + } else { + amount = utxo.assets[i - 1].amount; } - - const tokens = [ '', ...utxo.assets.map(asset => asset.assetId) ].map((tokenId, i) => { - let amount; - if (i === 0) { - amount = utxo.amount; - } else { - amount = utxo.assets[i-1].amount; - } - const token = tokenMap.get(tokenId) || { - // Note this is dummy placeholder value and only the `Identifier` value - // matters. The only scenario this is needed is when during `updateUtxos`, - // new UTXOs with unseen tokens are added and before it requests the token - // info. - TokenId: -1, - NetworkId: networkId, - IsDefault: false, - Digest: 0, - Identifier: tokenId, - Metadata: { - type: 'Cardano', - policyId: tokenId.split('.')[0], - assetName: tokenId.split('.')[1], - numberOfDecimals: 0, - ticker: null, - longName: null - }, - }; - return { Token: token, TokenList: { Amount: amount.toString() } }; - }); - return { - output: { - Transaction: { Hash: utxo.txHash }, - UtxoTransactionOutput: { - OutputIndex: utxo.txIndex, - ErgoBoxId: null, - ErgoCreationHeight: null, - ErgoTree: null, - ErgoRegisters: null, - }, - tokens, + const token = tokenMap.get(tokenId) || { + // Note this is dummy placeholder value and only the `Identifier` value + // matters. The only scenario this is needed is when during `updateUtxos`, + // new UTXOs with unseen tokens are added and before it requests the token + // info. + TokenId: -1, + NetworkId: networkId, + IsDefault: false, + Digest: 0, + Identifier: tokenId, + Metadata: { + type: 'Cardano', + policyId: tokenId.split('.')[0], + assetName: tokenId.split('.')[1], + numberOfDecimals: 0, + ticker: null, + logo: null, + longName: null }, - addressing: addressingInfo.addressing, - address: addressingInfo.address, + }; + return { + Token: token, + TokenList: { Amount: amount.toString() } }; }); - return addressedUtxos; - } - // Ergo: - return this.rawGetAllUtxosFromOldDb(tx, deps, _body, derivationTables); + return { + output: { + Transaction: { Hash: utxo.txHash }, + UtxoTransactionOutput: { + OutputIndex: utxo.txIndex, + ErgoBoxId: null, + ErgoCreationHeight: null, + ErgoTree: null, + ErgoRegisters: null, + }, + tokens, + }, + addressing: addressingInfo.addressing, + address: addressingInfo.address, + }; + }); + return addressedUtxos; } + + // Legacy: used only in migration rawGetAllUtxosFromOldDb: ( lf$Transaction, {| @@ -453,7 +448,7 @@ const GetAllUtxosMixin = ( ): Promise => { // TODO: some way to know if single chain is an account or not if (this.getParent().getPublicDeriverLevel() >= Bip44DerivationLevels.CHAIN.level) { - return rawGetBip44AddressesByPath( + return rawGetAddressesByDerivationPath( super.getDb(), tx, deps, { @@ -467,7 +462,7 @@ const GetAllUtxosMixin = ( derivationTables, ); } - const externalAddresses = await rawGetBip44AddressesByPath( + const externalAddresses = await rawGetAddressesByDerivationPath( super.getDb(), tx, deps, { @@ -480,7 +475,7 @@ const GetAllUtxosMixin = ( }, derivationTables, ); - const internalAddresses = await rawGetBip44AddressesByPath( + const internalAddresses = await rawGetAddressesByDerivationPath( super.getDb(), tx, deps, { @@ -569,7 +564,7 @@ const GetAllAccountingMixin = ( // we only allow this on accounts instead of any level < ACCOUNT.level to simplify the code throw new Error(`${nameof(GetAllAccounting)}::${nameof(this.rawGetAllAccountingAddresses)} incorrect pubderiver level`); } - return rawGetBip44AddressesByPath( + return rawGetAddressesByDerivationPath( super.getDb(), tx, deps, { @@ -1257,7 +1252,7 @@ const HasUtxoChainsMixin = ( if (this.getParent().getPublicDeriverLevel() !== Bip44DerivationLevels.ACCOUNT.level) { throw new Error(`${nameof(HasUtxoChains)}::${nameof(this.rawGetAddressesForChain)} incorrect pubderiver level`); } - return rawGetBip44AddressesByPath( + return rawGetAddressesByDerivationPath( super.getDb(), tx, deps, { @@ -2030,7 +2025,7 @@ const ScanUtxoChainAddressesMixin = ( null ); - const addresses = await rawGetBip44AddressesByPath( + const addresses = await rawGetAddressesByDerivationPath( super.getDb(), tx, { GetAddress: deps.GetAddress, diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/keyUtils.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/keyUtils.js index 49c1d156be..e66694d3ae 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/keyUtils.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/keyUtils.js @@ -22,11 +22,11 @@ import { import { KeyKind, KeySubkind, -} from '../../../../common/lib/crypto/keys/types'; +} from '../../cardanoCrypto/keys/types'; import type { IKey, KeySubkindType -} from '../../../../common/lib/crypto/keys/types'; +} from '../../cardanoCrypto/keys/types'; import { BIP32ED25519PrivateKey, BIP32ED25519PublicKey, @@ -34,7 +34,7 @@ import { BIP32PublicKey, derivePath, asPrivateKeyInstance, -} from '../../../../common/lib/crypto/keys/keyRepository'; +} from '../../cardanoCrypto/keys/keyRepository'; import { WrongPassphraseError } from '../../cardanoCrypto/cryptoErrors'; diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/models/utils.js b/packages/yoroi-extension/app/api/ada/lib/storage/models/utils.js index 7530774357..2ccca70f52 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/models/utils.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/models/utils.js @@ -46,12 +46,11 @@ import { } from '../database/walletTypes/bip44/api/write'; import type { TreeInsert -} from '../database/walletTypes/common/utils'; +} from '../database/walletTypes/common/utils.types'; import { GetAddress, GetPathWithSpecific, GetDerivationsByPath, - GetCertificates, GetKeyDerivation, } from '../database/primitives/api/read'; import { @@ -66,7 +65,6 @@ import type { UtxoTxOutput } from '../database/transactionModels/utxo/api/read'; import { Bip44DerivationLevels } from '../database/walletTypes/bip44/api/utils'; import type { GetPathWithSpecificByTreeRequest, - CertificateForKey, } from '../database/primitives/api/read'; import { GetUtxoTxOutputsWithTx, @@ -133,7 +131,7 @@ export async function rawGetDerivationsByPath< return result; } -export async function rawGetBip44AddressesByPath( +export async function rawGetAddressesByDerivationPath( db: lf$Database, tx: lf$Transaction, deps: {| @@ -162,7 +160,7 @@ export async function rawGetBip44AddressesByPath( return canonicalAddresses.map(canonical => { const addrs = family.get(canonical.row.KeyDerivationId); if (addrs == null) { - throw new Error(`${nameof(rawGetBip44AddressesByPath)} should never happen`); + throw new Error(`${nameof(rawGetAddressesByDerivationPath)} should never happen`); } return { ...canonical, @@ -538,34 +536,16 @@ export async function updateCutoffFromInsert( } } -export async function getCertificates( - db: lf$Database, - addressIds: Array, -): Promise> { - const deps = Object.freeze({ - GetCertificates, - }); - const depTables = Object - .keys(deps) - .map(key => deps[key]) - .flatMap(table => getAllSchemaTables(db, table)); - return await raii>( - db, - depTables, - async dbTx => await deps.GetCertificates.forAddress(db, dbTx, { addressIds }) - ); -} - -export function verifyFromBip44Root(request: $ReadOnly<{| +export function verifyFromDerivationRoot(request: $ReadOnly<{| ...$PropertyType, |}>): void { const accountPosition = request.startLevel; if (accountPosition !== Bip44DerivationLevels.PURPOSE.level) { - throw new Error(`${nameof(verifyFromBip44Root)} addressing does not start from root`); + throw new Error(`${nameof(verifyFromDerivationRoot)} addressing does not start from root`); } const lastLevelSpecified = request.startLevel + request.path.length - 1; if (lastLevelSpecified !== Bip44DerivationLevels.ADDRESS.level) { - throw new Error(`${nameof(verifyFromBip44Root)} incorrect addressing size`); + throw new Error(`${nameof(verifyFromDerivationRoot)} incorrect addressing size`); } } diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/tests/__snapshots__/index.test.js.snap b/packages/yoroi-extension/app/api/ada/lib/storage/tests/__snapshots__/index.test.js.snap index ca65924533..8fd9419664 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/tests/__snapshots__/index.test.js.snap +++ b/packages/yoroi-extension/app/api/ada/lib/storage/tests/__snapshots__/index.test.js.snap @@ -737,6 +737,7 @@ Object { "address": "https://adastat.net/addresses/", "pool": "https://adastat.net/pools/", "stakeAddress": "https://adastat.net/addresses/", + "token": "https://adastat.net/tokens/", "transaction": "https://adastat.net/transactions/", }, "ExplorerId": 108, @@ -756,14 +757,15 @@ Object { }, Object { "Endpoints": Object { - "address": "https://adaex.org/", - "pool": "https://adapools.org/pool/", - "stakeAddress": "https://adaex.org/", - "transaction": "https://adaex.org/", + "address": "https://cexplorer.io/address/", + "pool": "https://cexplorer.io/pool/", + "stakeAddress": "https://cexplorer.io/stake/", + "token": "https://cexplorer.io/asset/", + "transaction": "https://cexplorer.io/tx/", }, "ExplorerId": 100, "IsBackup": false, - "Name": "ADAex.org", + "Name": "Cexplorer", "NetworkId": 0, }, Object { @@ -835,15 +837,15 @@ Object { }, Object { "Endpoints": Object { - "address": "https://preview.cardanoscan.io/address/", - "pool": "https://preview.cardanoscan.io/pool/", - "stakeAddress": "https://preview.cardanoscan.io/stakeKey/", - "token": "https://preview.cardanoscan.io/token/", - "transaction": "https://preview.cardanoscan.io/transaction/", + "address": "https://sancho.cexplorer.io/address/", + "pool": "https://sancho.cexplorer.io/pool/", + "stakeAddress": "https://sancho.cexplorer.io/stake/", + "token": "https://sancho.cexplorer.io/asset/", + "transaction": "https://sancho.cexplorer.io/tx/", }, "ExplorerId": 650, "IsBackup": true, - "Name": "CardanoScan", + "Name": "Cexplorer", "NetworkId": 450, }, ], @@ -1235,9 +1237,8 @@ Object { "Network": Array [ Object { "Backend": Object { - "BackendService": "https://iohk-mainnet.yoroiwallet.com", + "BackendService": "https://api.yoroiwallet.com", "TokenInfoService": "https://cdn.yoroiwallet.com", - "WebSocket": "wss://iohk-mainnet.yoroiwallet.com:443", }, "BaseConfig": Array [ Object { @@ -1272,7 +1273,6 @@ Object { "Backend": Object { "BackendService": "https://testnet-backend.yoroiwallet.com", "TokenInfoService": "https://stage-cdn.yoroiwallet.com", - "WebSocket": "wss://testnet-backend.yoroiwallet.com:443", }, "BaseConfig": Array [ Object { @@ -1307,7 +1307,6 @@ Object { "Backend": Object { "BackendService": "https://preprod-backend.yoroiwallet.com", "TokenInfoService": "https://stage-cdn.yoroiwallet.com", - "WebSocket": "wss://preprod-backend.yoroiwallet.com:443", }, "BaseConfig": Array [ Object { @@ -1342,7 +1341,6 @@ Object { "Backend": Object { "BackendService": "https://preview-backend.emurgornd.com", "TokenInfoService": "https://stage-cdn.yoroiwallet.com", - "WebSocket": "wss://preview-backend.emurgornd.com:443", }, "BaseConfig": Array [ Object { @@ -1377,7 +1375,6 @@ Object { "Backend": Object { "BackendService": "https://sanchonet-backend.yoroiwallet.com", "TokenInfoService": "https://stage-cdn.yoroiwallet.com", - "WebSocket": "wss://sanchonet-backend.yoroiwallet.com:443", }, "BaseConfig": Array [ Object { @@ -1449,6 +1446,7 @@ Object { "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -1465,6 +1463,7 @@ Object { "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -1481,6 +1480,7 @@ Object { "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -1497,6 +1497,7 @@ Object { "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", @@ -1513,6 +1514,7 @@ Object { "IsNFT": false, "Metadata": Object { "assetName": "", + "logo": null, "longName": null, "numberOfDecimals": 6, "policyId": "", diff --git a/packages/yoroi-extension/features/yoroi_snapshots/historical-versions/1_8_2/ledger/localStorage.json b/packages/yoroi-extension/app/api/ada/lib/storage/tests/__yoroi_snapshots__/historical-version-1_9_0/ledger/localStorage.forTests.json similarity index 100% rename from packages/yoroi-extension/features/yoroi_snapshots/historical-versions/1_8_2/ledger/localStorage.json rename to packages/yoroi-extension/app/api/ada/lib/storage/tests/__yoroi_snapshots__/historical-version-1_9_0/ledger/localStorage.forTests.json diff --git a/packages/yoroi-extension/features/yoroi_snapshots/historical-versions/1_8_2/software/localStorage.json b/packages/yoroi-extension/app/api/ada/lib/storage/tests/__yoroi_snapshots__/historical-version-1_9_0/software/localStorage.forTests.json similarity index 100% rename from packages/yoroi-extension/features/yoroi_snapshots/historical-versions/1_8_2/software/localStorage.json rename to packages/yoroi-extension/app/api/ada/lib/storage/tests/__yoroi_snapshots__/historical-version-1_9_0/software/localStorage.forTests.json diff --git a/packages/yoroi-extension/features/yoroi_snapshots/historical-versions/1_8_2/trezor/localStorage.json b/packages/yoroi-extension/app/api/ada/lib/storage/tests/__yoroi_snapshots__/historical-version-1_9_0/trezor/localStorage.forTests.json similarity index 100% rename from packages/yoroi-extension/features/yoroi_snapshots/historical-versions/1_8_2/trezor/localStorage.json rename to packages/yoroi-extension/app/api/ada/lib/storage/tests/__yoroi_snapshots__/historical-version-1_9_0/trezor/localStorage.forTests.json diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/tests/adaMigration.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/tests/adaMigration.test.js index 95225a4f13..fa36159d28 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/tests/adaMigration.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/tests/adaMigration.test.js @@ -1,12 +1,12 @@ // @flow -import '../../test-config'; +import '../../test-config.forTests'; import { schema, } from 'lovefield'; import type { lf$Database } from 'lovefield'; import { setLocalItem } from '../../../../localStorage/primitives'; -import oldStorageMemory from '../../../../../../features/yoroi_snapshots/historical-versions/1_9_0/software/localStorage.json'; -import oldStorageTrezor from '../../../../../../features/yoroi_snapshots/historical-versions/1_9_0/trezor/localStorage.json'; -import oldStorageLedger from '../../../../../../features/yoroi_snapshots/historical-versions/1_9_0/ledger/localStorage.json'; +import oldStorageMemory from './__yoroi_snapshots__/historical-version-1_9_0/software/localStorage.forTests.json' +import oldStorageTrezor from './__yoroi_snapshots__/historical-version-1_9_0/trezor/localStorage.forTests.json'; +import oldStorageLedger from './__yoroi_snapshots__/historical-version-1_9_0/ledger/localStorage.forTests.json'; import { RustModule } from '../../cardanoCrypto/rustLoader'; import { dumpByVersion, @@ -14,7 +14,7 @@ import { loadLovefieldDBFromDump } from '../database/index'; import { storageV2Migration, populateNewUtxodata } from '../adaMigration'; -import { mockDate, filterDbSnapshot } from '../../../../jestUtils'; +import { mockDate, filterDbSnapshot } from '../../../../jestUtils.forTests'; import utxoTestDbDump from './testDb.dump.json'; beforeAll(async () => { diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/tests/index.test.js b/packages/yoroi-extension/app/api/ada/lib/storage/tests/index.test.js index f4bd13cc16..0ef39422ed 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/tests/index.test.js +++ b/packages/yoroi-extension/app/api/ada/lib/storage/tests/index.test.js @@ -3,7 +3,7 @@ import { schema, } from 'lovefield'; -import '../../test-config'; +import '../../test-config.forTests'; import { loadLovefieldDB } from '../database/index'; import { HARD_DERIVATION_START, @@ -58,6 +58,7 @@ beforeAll(async () => { await RustModule.load(); }); +// bip44, test needs to be updated test('Can add and fetch address in wallet', async (done) => { const network = networks.CardanoMainnet; diff --git a/packages/yoroi-extension/app/api/ada/lib/storage/tests/testDb.dump.json b/packages/yoroi-extension/app/api/ada/lib/storage/tests/testDb.dump.json index 419274b12b..c01e08384e 100644 --- a/packages/yoroi-extension/app/api/ada/lib/storage/tests/testDb.dump.json +++ b/packages/yoroi-extension/app/api/ada/lib/storage/tests/testDb.dump.json @@ -7,8 +7,7 @@ "NetworkId": 0, "NetworkName": "Cardano Mainnet", "Backend": { - "BackendService": "https://iohk-mainnet.yoroiwallet.com", - "WebSocket": "wss://iohk-mainnet.yoroiwallet.com:443", + "BackendService": "https://api.yoroiwallet.com", "TokenInfoService": "https://cdn.yoroiwallet.com" }, "BaseConfig": [ @@ -43,7 +42,6 @@ "NetworkName": "Cardano Testnet", "Backend": { "BackendService": "https://testnet-backend.yoroiwallet.com", - "WebSocket": "wss://testnet-backend.yoroiwallet.com:443", "TokenInfoService": "https://stage-cdn.yoroiwallet.com" }, "BaseConfig": [ diff --git a/packages/yoroi-extension/app/api/ada/lib/test-config.js b/packages/yoroi-extension/app/api/ada/lib/test-config.forTests.js similarity index 100% rename from packages/yoroi-extension/app/api/ada/lib/test-config.js rename to packages/yoroi-extension/app/api/ada/lib/test-config.forTests.js diff --git a/packages/yoroi-extension/app/api/ada/paperWallet/paperWalletPdf.js b/packages/yoroi-extension/app/api/ada/paperWallet/paperWalletPdf.js deleted file mode 100644 index 310ee2eba8..0000000000 --- a/packages/yoroi-extension/app/api/ada/paperWallet/paperWalletPdf.js +++ /dev/null @@ -1,289 +0,0 @@ -// @flow -import type Pdf from 'jspdf'; -import qr from 'qr-image'; -import paperWalletPage1Path from '../../../assets/images/paper-wallet/paper-wallet-certificate.front-min.png'; -import paperWalletPage2Path from '../../../assets/images/paper-wallet/paper-wallet-certificate.back-min.png'; -import { Logger, stringifyError } from '../../../utils/logging'; -import type { Network } from '../../../../config/config-types'; -import { NetworkType } from '../../../../config/config-types'; -import type { WalletChecksum } from '@emurgo/cip4-js'; -import { createIcon as blockiesIcon } from '@download/blockies'; - -export type PaperRequest = {| - words: Array, - addresses: Array, - plate: ?WalletChecksum, - network: Network, -|} - -export const PdfGenSteps = Object.freeze({ - initializing: 0, - background: 1, - frontpage: 2, - addresses: 3, - backpage: 4, - mnemonic: 5, - done: 6, -}); -export type PdfGenStepType = $Values; - -export const generateAdaPaperPdf = async ( - request: PaperRequest, - updateStatus: (PdfGenStepType => void) = () => {} -): Promise => { - // Prepare params - // eslint-disable-next-line no-unused-vars - const { network, addresses, words, plate } = request; - - updateStatus(PdfGenSteps.initializing); - - const width = 595.28; - const height = 841.98; - - const JsPdf = (await import('jspdf')).default; - - const doc = new JsPdf({ - format: [width, height], - compressPdf: true, - }); - const [pageWidthPx, pageHeightPx] = - [doc.internal.pageSize.getWidth(), doc.internal.pageSize.getHeight()]; - const pageSize = { w: pageWidthPx, h: pageHeightPx }; - try { - - updateStatus(PdfGenSteps.background); - - // background images - await addImage(doc, paperWalletPage1Path, pageSize); - if (network !== NetworkType.MAINNET) { - printTestnetLabel(doc, network, 172); - } - - if (plate) { - // print account plate ID bottom-left corner of main front section - doc.setFontSize(12); - doc.text(145, 180, plate.TextPart); - } - - updateStatus(PdfGenSteps.frontpage); - - // first page - if (network !== NetworkType.MAINNET) { - printTestnetLabel(doc, network, 105); - } - - updateStatus(PdfGenSteps.addresses); - if (!printAddresses(doc, addresses)) { - return null; - } - - // second page - doc.addPage(); - - updateStatus(PdfGenSteps.backpage); - - if (network !== NetworkType.MAINNET) { - printTestnetLabel(doc, network, 75, 180); - } - - if (plate) { - - // Generate account plate icon - const icon = blockiesIcon({ - seed: plate.ImagePart, - size: 7, - scale: 5, - bgcolor: '#fff', - color: '#aaa', - spotcolor: '#000' - }); - - // Draw account plate icon upside-down middle of the backside - addImageBase64(doc, icon.toDataURL('image/png'), { - x: (pageWidthPx + 24) / 2, - y: 115, - w: 24, - h: 24, - r: 180, - }); - - // Print account plate ID under the plate icon on backside - doc.setFontSize(12); - textCenter(doc, 130, plate.TextPart, null, 180, true); - } - - await addImage(doc, paperWalletPage2Path, pageSize); - updateStatus(PdfGenSteps.mnemonic); - printMnemonics(doc, words); - printPasswordMessage(doc); - - } catch (error) { - Logger.error('Failed to render paper wallet! ' + stringifyError(error)); - throw error; - } - - const blob = doc.output('blob'); - updateStatus(PdfGenSteps.done); - return blob; -}; - -function printPasswordMessage( - // $FlowFixMe[value-as-type] - doc: Pdf, -): void { - doc.setFontSize(11); - const text = 'password or a hint'; - textCenter(doc, 56, text, null, 180, true); - doc.setFontType('normal'); -} - -function printTestnetLabel( - // $FlowFixMe[value-as-type] - doc: Pdf, - network: string, - y: number, - r?: number, - xShift?: number -): void { - doc.setFontSize(50); - doc.setFontType('bold'); - doc.setTextColor(255, 180, 164); - textCenter(doc, y, network.toUpperCase(), null, r, (r || 0) > 90, xShift); - doc.setFontType('normal'); - doc.setTextColor(0, 0, 0); -} - -function printAddresses( - // $FlowFixMe[value-as-type] - doc: Pdf, - addresses: Array, -): boolean { - const pageWidthPx = doc.internal.pageSize.getWidth(); - const [pA, pB] = [{ x: 40, y: 187 }, { x: 170, y: 249 }]; - - doc.setTextColor(0, 0, 0); - if (addresses.length === 1) { - doc.setFontSize(9); - const [address] = addresses; - textCenter(doc, pA.y + 7, address, null, 180, true); - // Generate QR image for wallet address - const qrCodeImage = Buffer.from(qr.imageSync(address, { - type: 'png', - size: 10, - ec_level: 'L', - margin: 0 - })).toString('base64'); - addImageBase64(doc, qrCodeImage, { - x: (pageWidthPx / 2) - 15, - y: pA.y + 17, - w: 30, - h: 30 - }); - - } else if (addresses.length > 1) { - - if (addresses.length > 5) { - throw new Error('Maximum number of addresses supported: 5'); - } - - doc.setFontSize(8); - const addrPad = 22; - const qrSize = [14, 14, 12, 10][addresses.length - 2]; - - const rowHeight = (pB.y - pA.y) / addresses.length; - for (let r = 0; r < addresses.length; r++) { - const y = (pB.y - (rowHeight / 2)) - (rowHeight * r); - doc.text(pB.x - addrPad, y, addresses[r], null, 180); - const qrCodeImage = Buffer.from(qr.imageSync(addresses[r], { - type: 'png', - size: 10, - ec_level: 'L', - margin: 0 - })).toString('base64'); - addImageBase64(doc, qrCodeImage, { - x: (pB.x - addrPad) + 4, - y: y - ((qrSize / 2) - 1), - w: qrSize, - h: qrSize - }); - } - } - return true; -} - -// $FlowFixMe[value-as-type] -function printMnemonics(doc: Pdf, words: Array): void { - doc.setFont('courier'); - doc.setFontSize(7); - const [pA, pB] = [{ x: 56, y: 82 }, { x: 153, y: 105 }]; - const lineHeight = (pB.y - pA.y) / 3; - for (let r = 0; r < 3; r++) { - const rowIndex = r * 7; - const rowWords = words.slice(rowIndex, rowIndex + 7); - const rowLetters = rowWords.reduce((a, s) => a + s.length, 0); - const rowString = rowWords.join(' '.repeat((64 - rowLetters) / 7)); - const y = (pB.y - (lineHeight / 2)) - (lineHeight * r); - textCenter(doc, y, rowString, null, 180, true); - } -} - -type AddImageParams = { - x?: number, - y?: number, - w?: number, - h?: number, - r?: number, - ... -} - -function textCenter( - // $FlowFixMe[value-as-type] - doc: Pdf, - y: number, - text: string, - m: null, - r: ?number, - isReverseCentering?: boolean, - xShift?: number -): void { - const unit = doc.getStringUnitWidth(text); - const fontSize = doc.internal.getFontSize(); - const scaleFactor = doc.internal.scaleFactor; - const textWidth = unit * fontSize / scaleFactor; - const pageWidth = doc.internal.pageSize.width; - const textOffset = ( - (pageWidth / 2) - ((textWidth / 2) * (isReverseCentering === true ? -1 : +1)) - ); - doc.text(textOffset + (xShift || 0), y, text, m, r); -} - -// $FlowFixMe[value-as-type] -async function addImage(doc: Pdf, url: string, params?: AddImageParams): Promise { - return addImageBase64(doc, await loadImage(url), params); -} - -// $FlowFixMe[value-as-type] -function addImageBase64(doc: Pdf, img: string, params?: AddImageParams): void { - const { x, y, w, h, r } = params || {}; - doc.addImage(img, 'png', x || 0, y || 0, w, h, '', 'FAST', r); -} - -async function loadImage(url: string): Promise { - return new Promise((resolve, reject) => { - try { - const img = new Image(); - img.crossOrigin = 'Anonymous'; - img.onload = () => { - const canvas = document.createElement('canvas'); - canvas.width = img.width; - canvas.height = img.height; - const ctx = canvas.getContext('2d'); - ctx.drawImage(img, 0, 0); - resolve(canvas.toDataURL('image/png')); - }; - img.src = url; - } catch (e) { - reject(e); - } - }); -} diff --git a/packages/yoroi-extension/app/api/ada/restoration/byron/scan.js b/packages/yoroi-extension/app/api/ada/restoration/byron/scan.js index 28ce704b88..4b3b8e14bc 100644 --- a/packages/yoroi-extension/app/api/ada/restoration/byron/scan.js +++ b/packages/yoroi-extension/app/api/ada/restoration/byron/scan.js @@ -10,7 +10,7 @@ import { RustModule } from '../../lib/cardanoCrypto/rustLoader'; import type { InsertRequest, -} from '../../lib/storage/database/walletTypes/common/utils'; +} from '../../lib/storage/database/walletTypes/common/utils.types'; import type { AddByHashFunc, } from '../../../common/lib/storage/bridge/hashMapper'; import { CoreAddressTypes } from '../../lib/storage/database/primitives/enums'; diff --git a/packages/yoroi-extension/app/api/ada/restoration/shelley/scan.js b/packages/yoroi-extension/app/api/ada/restoration/shelley/scan.js index 4484a3df50..df977ccea1 100644 --- a/packages/yoroi-extension/app/api/ada/restoration/shelley/scan.js +++ b/packages/yoroi-extension/app/api/ada/restoration/shelley/scan.js @@ -9,7 +9,6 @@ import type { GenerateAddressFunc, } from '../../../common/lib/restoration/bip44AddressScan'; import type { ConfigType } from '../../../../../config/config-types'; -import type { FilterFunc } from '../../../common/lib/state-fetch/currencySpecificTypes'; import { ChainDerivations, BIP44_SCAN_SIZE, @@ -19,13 +18,14 @@ import { RustModule } from '../../lib/cardanoCrypto/rustLoader'; import type { TreeInsert, InsertRequest, -} from '../../lib/storage/database/walletTypes/common/utils'; +} from '../../lib/storage/database/walletTypes/common/utils.types'; import type { AddByHashFunc, } from '../../../common/lib/storage/bridge/hashMapper'; import type { NetworkRow, CanonicalAddressInsert } from '../../lib/storage/database/primitives/tables'; import { CoreAddressTypes } from '../../lib/storage/database/primitives/enums'; import type { Bip44ChainInsert } from '../../lib/storage/database/walletTypes/common/tables'; import { getCardanoHaskellBaseConfig } from '../../lib/storage/database/prepackaged/networks'; import { Bech32Prefix } from '../../../../config/stringConfig'; +import type { FilterFunc } from '../../lib/state-fetch/types'; // populated by ConfigWebpackPlugin declare var CONFIG: ConfigType; @@ -155,6 +155,7 @@ async function scanChain(request: {| }); } +// legacy export async function scanShelleyCip1852Account(request: {| accountPublicKey: string, lastUsedInternal: number, diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js index f282a6ddea..abd381b30e 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js @@ -2,7 +2,7 @@ import type { CardanoAddressedUtxo, } from '../types'; -import { verifyFromBip44Root } from '../../lib/storage/models/utils'; +import { verifyFromDerivationRoot } from '../../lib/storage/models/utils'; import type { DeviceOwnedAddress, Withdrawal, @@ -188,7 +188,7 @@ function _transformToLedgerInputs( inputs: Array ): Array { for (const input of inputs) { - verifyFromBip44Root(input.addressing); + verifyFromDerivationRoot(input.addressing); } return inputs.map(input => ({ txHashHex: input.tx_hash, @@ -276,7 +276,7 @@ function _transformToLedgerOutputs(request: {| const changeAddr = request.changeAddrs.find(change => jsAddr === change.address); if (changeAddr != null) { - verifyFromBip44Root(changeAddr.addressing); + verifyFromDerivationRoot(changeAddr.addressing); const addressParams = toLedgerAddressParameters({ networkId: request.networkId, address, @@ -536,7 +536,7 @@ export function buildSignedTransaction( const seenBootstrapWit = new Set(); for (const utxo of senderUtxos) { - verifyFromBip44Root(utxo.addressing); + verifyFromDerivationRoot(utxo.addressing); const witness = findWitness(utxo.addressing.path); const addressKey = derivePublicByAddressing({ @@ -587,7 +587,7 @@ export function buildSignedTransaction( path: witness.path, startLevel: 1, }; - verifyFromBip44Root(addressing); + verifyFromDerivationRoot(addressing); if (witness.path[Bip44DerivationLevels.CHAIN.level - 1] === ChainDerivations.CHIMERIC_ACCOUNT) { const stakingKey = derivePublicByAddressing({ addressing, @@ -999,7 +999,7 @@ export function buildConnectorSignedTransaction( path: witness.path, startLevel: 1, }; - verifyFromBip44Root(addressing); + verifyFromDerivationRoot(addressing); const witnessKey = derivePublicByAddressing({ addressing, diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js index e32bb7dafc..6329ea8328 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js @@ -1,6 +1,6 @@ // @flow -import '../../lib/test-config'; +import '../../lib/test-config.forTests'; import BigNumber from 'bignumber.js'; import { RustModule } from '../../lib/cardanoCrypto/rustLoader'; import { diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.js index 05d70cc4e1..623e828368 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.js @@ -31,22 +31,21 @@ import { IPublicDeriver, IGetAllUtxos, IHasUtxoChains } from '../../lib/storage/ import { ConceptualWallet } from '../../lib/storage/models/ConceptualWallet/index'; import { builtSendTokenList } from '../../../common'; import type { TokenRow } from '../../lib/storage/database/primitives/tables'; -import { setRuntime, } from '@emurgo/yoroi-eutxo-txs'; -import { TxBuilder, SendRequest } from '@emurgo/yoroi-eutxo-txs/dist/tx-builder'; -import { WalletType } from '@emurgo/yoroi-eutxo-txs/dist/kernel'; +import { setRuntime, WalletType } from '@emurgo/yoroi-eutxo-txs/dist/kernel' import { - UTxOSet, - Address as LibAddress, + UTxOSet as LibUtxoSet, Value as LibValue, - Amount, - NativeAssets, - WalletAddress, -} from '@emurgo/yoroi-eutxo-txs/dist/classes'; + Amount as LibAmount, + Address as LibAddress, + WalletAddress as LibWalletAddress, + NativeAssets as LibNativeAssets, +} from '@emurgo/yoroi-eutxo-txs/dist/classes' import { NotEnoughMoneyToSendError as LibNotEnoughMoneyToSendError, - NoOutputError, - OverflowError, -} from'@emurgo/yoroi-eutxo-txs/dist/errors'; + OverflowError as LibOverflowError, + NoOutputError as LibNoOutputError, +} from '@emurgo/yoroi-eutxo-txs/dist/errors' +import { TxBuilder, SendRequest } from '@emurgo/yoroi-eutxo-txs/dist/tx-builder' import blake2b from 'blake2b'; import { derivePrivateByAddressing } from '../../lib/cardanoCrypto/deriveByAddressing'; @@ -56,10 +55,11 @@ import { derivePrivateByAddressing } from '../../lib/cardanoCrypto/deriveByAddre */ const defaultTtlOffset = 7200; -type TxOutput = {| +export type TxOutput = {| ...Address, amount: MultiToken, dataHash?: string, + data?: string, |}; type TxMint = {| @@ -234,7 +234,7 @@ function addUtxoInput( if (witness == null) { logErr( () => { - txBuilder.add_input( + txBuilder.add_regular_input( wasmAddr, txInput, wasmAmount @@ -571,7 +571,7 @@ export async function newAdaUnsignedTxFromUtxo( stepPriceTo: 10000000, }; - const utxoSet = new UTxOSet( + const utxoSet = new LibUtxoSet( await Promise.all( utxos.map(toLibUTxO) ) @@ -579,6 +579,10 @@ export async function newAdaUnsignedTxFromUtxo( const txBuilder = await TxBuilder.new(defaultNetworkConfig, utxoSet); + // When both hash and datum are present - datum is added as extra witness + const extraWitnessDatumsPresent = + outputs.some(o => o.data != null && o.dataHash != null); + const sendRequest = await SendRequest.from(outputs.map(output => { const defaultTokenAmount = output.amount.getDefaultEntry().amount.toString(); const nondefaultTokens = output.amount.values.filter( @@ -586,10 +590,12 @@ export async function newAdaUnsignedTxFromUtxo( ); return { + data: output.data, + dataHash: output.dataHash, receiver: output.address, value: new LibValue( - new Amount(defaultTokenAmount), - NativeAssets.from( + new LibAmount(defaultTokenAmount), + LibNativeAssets.from( nondefaultTokens.map(t => { const [policyId, assetName] = t.identifier.split('.'); return { @@ -597,7 +603,7 @@ export async function newAdaUnsignedTxFromUtxo( policy: Buffer.from(policyId, 'hex'), name: Buffer.from(assetName, 'hex'), }, - amount: new Amount(t.amount.toString()), + amount: new LibAmount(t.amount.toString()), }; }) ), @@ -611,7 +617,7 @@ export async function newAdaUnsignedTxFromUtxo( if (error instanceof LibNotEnoughMoneyToSendError) { throw new NotEnoughMoneyToSendError(); } - if (error instanceof OverflowError) { + if (error instanceof LibOverflowError) { throw new AssetOverflowError(); } if (String(error).includes('less than the minimum UTXO value')) { @@ -651,7 +657,7 @@ export async function newAdaUnsignedTxFromUtxo( txBuilder.setTtl(absSlotNumber.plus(defaultTtlOffset).toNumber()); const changeAddress = changeAdaAddr && - await WalletAddress.from( + await LibWalletAddress.from( changeAdaAddr.address, WalletType.Shelley, { @@ -660,13 +666,17 @@ export async function newAdaUnsignedTxFromUtxo( } ); + if (extraWitnessDatumsPresent) { + await txBuilder.calcScriptDataHash('default'); + } + await txBuilder.addChangeAndFee(changeAddress); let unsignedTx; try { unsignedTx = await txBuilder.build(); } catch (error) { - if (error instanceof NoOutputError) { + if (error instanceof LibNoOutputError) { throw new NoOutputsError(); } throw error; @@ -847,7 +857,7 @@ async function newAdaUnsignedTxFromUtxoForConnector( stepPriceTo: 10000000, }; - const utxoSet = new UTxOSet( + const utxoSet = new LibUtxoSet( await Promise.all( coinSelectUtxos.map(toLibUTxO) ) @@ -918,8 +928,8 @@ async function newAdaUnsignedTxFromUtxoForConnector( return { receiver: output.address, value: new LibValue( - new Amount(defaultTokenAmount), - NativeAssets.from( + new LibAmount(defaultTokenAmount), + LibNativeAssets.from( nondefaultTokens.map(t => { const [policyId, assetName] = t.identifier.split('.'); return { @@ -927,7 +937,7 @@ async function newAdaUnsignedTxFromUtxoForConnector( policy: Buffer.from(policyId, 'hex'), name: Buffer.from(assetName, 'hex'), }, - amount: new Amount(t.amount.toString()), + amount: new LibAmount(t.amount.toString()), }; }) ), @@ -952,7 +962,7 @@ async function newAdaUnsignedTxFromUtxoForConnector( ); const changeAddress = changeAdaAddr && - await WalletAddress.from( + await LibWalletAddress.from( changeAdaAddr.address, WalletType.Shelley, { @@ -1046,8 +1056,11 @@ export function signTransaction( let txBody; let txHash; + let txWitSet; if (unsignedTx instanceof RustModule.WalletV4.TransactionBuilder) { - txBody = unsignedTx.build(); + const tx = unsignedTx.build_tx(); + txBody = tx.body(); + txWitSet = tx.witness_set(); txHash = RustModule.WalletV4.hash_transaction(txBody); } else if (unsignedTx instanceof RustModule.WalletV4.TransactionBody) { txBody = unsignedTx; @@ -1065,8 +1078,9 @@ export function signTransaction( throw new Error('unexpected tx body type'); } - const vkeyWits = RustModule.WalletV4.Vkeywitnesses.new(); - const bootstrapWits = RustModule.WalletV4.BootstrapWitnesses.new(); + const witnessSet = txWitSet ?? RustModule.WalletV4.TransactionWitnessSet.new(); + const vkeyWits = witnessSet.vkeys() ?? RustModule.WalletV4.Vkeywitnesses.new(); + const bootstrapWits = witnessSet.bootstraps() ?? RustModule.WalletV4.BootstrapWitnesses.new(); addWitnesses( txHash, @@ -1090,7 +1104,6 @@ export function signTransaction( ); } - const witnessSet = RustModule.WalletV4.TransactionWitnessSet.new(); if (bootstrapWits.len() > 0) witnessSet.set_bootstraps(bootstrapWits); if (vkeyWits.len() > 0) witnessSet.set_vkeys(vkeyWits); @@ -1239,15 +1252,15 @@ export async function toLibUTxO(utxo: RemoteUnspentOutput): any { tx: utxo.tx_hash, index: utxo.tx_index, value: new LibValue( - new Amount(utxo.amount), - NativeAssets.from( + new LibAmount(utxo.amount), + LibNativeAssets.from( utxo.assets.map(asset => ( { asset: { policy: Buffer.from(asset.policyId, 'hex'), name: Buffer.from(asset.name, 'hex'), }, - amount: new Amount(asset.amount), + amount: new LibAmount(asset.amount), } )) ) diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.test.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.test.js index 443029e8be..36f81191e8 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.test.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/transactions.test.js @@ -1,5 +1,5 @@ // @flow -import '../../lib/test-config'; +import '../../lib/test-config.forTests'; import { schema } from 'lovefield'; import BigNumber from 'bignumber.js'; @@ -1071,7 +1071,7 @@ describe('Create sendAll unsigned TX from UTXO', () => { }, ); - const expectedFee = new BigNumber('1344'); + const expectedFee = new BigNumber('1070'); const expectedInput = new BigNumber('11000002'); expect(sendAllResponse.senderUtxos).toEqual([utxos[0], utxos[1]]); expect( @@ -1080,7 +1080,7 @@ describe('Create sendAll unsigned TX from UTXO', () => { expect( sendAllResponse.txBuilder.get_explicit_output().coin().to_str() ).toEqual(expectedInput.minus(expectedFee).toString()); - expect(sendAllResponse.txBuilder.min_fee().to_str()).toEqual('1344'); + expect(sendAllResponse.txBuilder.min_fee().to_str()).toEqual('1070'); // make sure we don't accidentally burn a lot of coins expect( sendAllResponse.txBuilder.get_explicit_input().checked_sub( diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.js index ecfc74917a..b29eba49b5 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.js @@ -2,8 +2,8 @@ import type { CardanoAddressedUtxo, } from '../types'; -import { verifyFromBip44Root } from '../../lib/storage/models/utils'; -import { toDerivationPathString } from '../../../common/lib/crypto/keys/path'; +import { verifyFromDerivationRoot } from '../../lib/storage/models/utils'; +import { toDerivationPathString } from '../../lib/cardanoCrypto/keys/path'; import type { CardanoSignTransaction, CardanoInput, @@ -220,7 +220,7 @@ function _transformToTrezorInputs( inputs: Array ): Array { for (const input of inputs) { - verifyFromBip44Root(input.addressing); + verifyFromDerivationRoot(input.addressing); } return inputs.map(input => ({ prev_hash: input.tx_hash, @@ -277,7 +277,7 @@ function _generateTrezorOutputs( const changeAddr = changeAddrs.find(change => jsAddr === change.address); if (changeAddr != null) { - verifyFromBip44Root(changeAddr.addressing); + verifyFromDerivationRoot(changeAddr.addressing); if (RustModule.WalletV4.BaseAddress.from_address(address)) { result.push({ addressParameters: { @@ -409,7 +409,7 @@ export function buildSignedTransaction( const seenBootstrapWit = new Set(); for (const utxo of senderUtxos) { - verifyFromBip44Root(utxo.addressing); + verifyFromDerivationRoot(utxo.addressing); const addressKey = derivePublicByAddressing({ addressing: utxo.addressing, diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.test.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.test.js index 1859826b2e..b6e23c1162 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.test.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/trezorTx.test.js @@ -1,6 +1,6 @@ // @flow -import '../../lib/test-config'; +import '../../lib/test-config.forTests'; import BigNumber from 'bignumber.js'; import { RustModule } from '../../lib/cardanoCrypto/rustLoader'; import { diff --git a/packages/yoroi-extension/app/api/ada/transactions/signTransactionHex.js b/packages/yoroi-extension/app/api/ada/transactions/signTransactionHex.js new file mode 100644 index 0000000000..6ee70d5a33 --- /dev/null +++ b/packages/yoroi-extension/app/api/ada/transactions/signTransactionHex.js @@ -0,0 +1,24 @@ +// @flow +import { PublicDeriver } from '../lib/storage/models/PublicDeriver'; +import { connectorSignCardanoTx } from '../../../../chrome/extension/connector/api'; +import { transactionHexReplaceWitnessSet, transactionHexToWitnessSet } from '../lib/cardanoCrypto/utils'; +import { mergeWitnessSets } from './utils'; + +export async function signTransactionHex(wallet: PublicDeriver<>, password: string, transactionHex: string): Promise { + // This signing function must be moved from the connector to the main api + const signedWitnessSetHex = await connectorSignCardanoTx( + wallet, + password, + { + tx: transactionHex, + tabId: -1, + partialSign: false + }, + ); + // This signing function must be moved from the connector to the main api + const mergedWitnessSetHex = mergeWitnessSets( + transactionHexToWitnessSet(transactionHex), + signedWitnessSetHex, + ); + return transactionHexReplaceWitnessSet(transactionHex, mergedWitnessSetHex); +} \ No newline at end of file diff --git a/packages/yoroi-extension/app/api/ada/transactions/transfer/legacyYoroi.test.js b/packages/yoroi-extension/app/api/ada/transactions/transfer/legacyYoroi.test.js index fac612658a..0caa80e19e 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/transfer/legacyYoroi.test.js +++ b/packages/yoroi-extension/app/api/ada/transactions/transfer/legacyYoroi.test.js @@ -1,6 +1,6 @@ // @flow -import '../../lib/test-config'; +import '../../lib/test-config.forTests'; import BigNumber from 'bignumber.js'; import { schema } from 'lovefield'; import { diff --git a/packages/yoroi-extension/app/api/ada/transactions/utils.js b/packages/yoroi-extension/app/api/ada/transactions/utils.js index d735a105d8..0b53ad2cb9 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/utils.js +++ b/packages/yoroi-extension/app/api/ada/transactions/utils.js @@ -1,44 +1,29 @@ // @flow import { groupBy, keyBy, mapValues } from 'lodash'; import BigNumber from 'bignumber.js'; -import type { - UserAnnotation, - CardanoAddressedUtxo, -} from './types'; -import type { - RemoteUnspentOutput, -} from '../lib/state-fetch/types'; -import { - transactionTypes, -} from './types'; +import type { CardanoAddressedUtxo, UserAnnotation, } from './types'; +import { transactionTypes, } from './types'; +import type { RemoteAsset, RemoteUnspentOutput, } from '../lib/state-fetch/types'; import type { UtxoTransactionInputRow, UtxoTransactionOutputRow, } from '../lib/storage/database/transactionModels/utxo/tables'; -import type { - DbTransaction, - DbBlock, - DbTokenInfo, - TokenRow, -} from '../lib/storage/database/primitives/tables'; +import type { DbBlock, DbTokenInfo, DbTransaction, TokenRow, } from '../lib/storage/database/primitives/tables'; import type { AccountingTransactionInputRow, AccountingTransactionOutputRow, } from '../lib/storage/database/transactionModels/account/tables'; import type { TransactionExportRow } from '../../export'; -import type { - IGetAllUtxosResponse, -} from '../lib/storage/models/PublicDeriver/interfaces'; +import type { IGetAllUtxosResponse, } from '../lib/storage/models/PublicDeriver/interfaces'; import { formatBigNumberToFloatString } from '../../../utils/formatters'; -import { - MultiToken, -} from '../../common/lib/MultiToken'; -import type { - DefaultTokenEntry, -} from '../../common/lib/MultiToken'; +import type { DefaultTokenEntry, } from '../../common/lib/MultiToken'; +import { MultiToken, } from '../../common/lib/MultiToken'; +import type { WasmMonad } from '../lib/cardanoCrypto/rustLoader'; import { RustModule } from '../lib/cardanoCrypto/rustLoader'; import { PRIMARY_ASSET_CONSTANTS } from '../lib/storage/database/primitives/enums'; +const RANDOM_BASE_ADDRESS = 'addr_test1qzz6hulv54gzf2suy2u5gkvmt6ysasfdlvvegy3fmf969y7r3y3kdut55a40jff00qmg74686vz44v6k363md06qkq0qy0adz0'; + export function cardanoAssetToIdentifier( policyId: RustModule.WalletV4.ScriptHash, name: RustModule.WalletV4.AssetName, @@ -106,22 +91,23 @@ export function parseTokenList( export function cardanoValueFromMultiToken( tokens: MultiToken, + Module: typeof RustModule = RustModule, ): RustModule.WalletV4.Value { - const value = RustModule.WalletV4.Value.new( - RustModule.WalletV4.BigNum.from_str(tokens.getDefaultEntry().amount.toString()) + const value = Module.WalletV4.Value.new( + Module.WalletV4.BigNum.from_str(tokens.getDefaultEntry().amount.toString()) ); // recall: primary asset counts towards size if (tokens.size() === 1) return value; - const assets = RustModule.WalletV4.MultiAsset.new(); + const assets = Module.WalletV4.MultiAsset.new(); for (const entry of tokens.nonDefaultEntries()) { const { policyId, name } = identifierToCardanoAsset(entry.identifier); - const policyContent = assets.get(policyId) ?? RustModule.WalletV4.Assets.new(); + const policyContent = assets.get(policyId) ?? Module.WalletV4.Assets.new(); policyContent.insert( name, - RustModule.WalletV4.BigNum.from_str(entry.amount.toString()) + Module.WalletV4.BigNum.from_str(entry.amount.toString()) ); // recall: we always have to insert since WASM returns copies of objects assets.insert(policyId, policyContent); @@ -446,3 +432,235 @@ export function iterateWasmKeyValue(iterable: ?{| get: K => V |}, keys: ?K } return res; } + +function cardanoUtxoMonadFromRemoteFormat( + u: RemoteUnspentOutput, +): WasmMonad { + return RustModule.ScopeMonad(Module => { + const W4 = Module.WalletV4; + const input = W4.TransactionInput.new( + W4.TransactionHash.from_hex(u.tx_hash), + u.tx_index, + ); + const value = W4.Value.new(W4.BigNum.from_str(u.amount)); + if ((u.assets || []).length > 0) { + value.set_multiasset(assetToRustMultiasset(u.assets)); + } + const output = W4.TransactionOutput.new( + W4.Address.from_hex(u.receiver), + value, + ); + return W4.TransactionUnspentOutput.new(input, output); + }); +} + +export function cardanoUtxoHexFromRemoteFormat(u: RemoteUnspentOutput): string { + return cardanoUtxoMonadFromRemoteFormat(u) + .unwrap(output => output.to_hex()); +} + +function cardanoMinAdaRequiredFromOutput( + output: RustModule.WalletV4.TransactionOutput, + coinsPerByte: BigNumber, + Module: typeof RustModule, +): BigNumber { + const wasmCoinsPerByte = Module.WalletV4.BigNum.from_str(coinsPerByte.toString()); + const dataCost = Module.WalletV4.DataCost.new_coins_per_byte(wasmCoinsPerByte); + const minAdaRequired = Module.WalletV4.min_ada_for_output(output, dataCost).to_str(); + return new BigNumber(minAdaRequired); +} + +/** + * LEGACY + * @deprecated + */ +export function coinsPerWord_to_coinsPerByte(coinsPerWord: BigNumber): BigNumber { + return coinsPerWord.div(8).integerValue(BigNumber.ROUND_FLOOR); +} + +/** + * @deprecated + */ +export function cardanoMinAdaRequiredFromRemoteFormat_coinsPerWord(u: RemoteUnspentOutput, coinsPerWord: BigNumber): BigNumber { + return cardanoMinAdaRequiredFromRemoteFormat(u, coinsPerWord_to_coinsPerByte(coinsPerWord)); +} + +export function cardanoMinAdaRequiredFromRemoteFormat(u: RemoteUnspentOutput, coinsPerByte: BigNumber): BigNumber { + return cardanoUtxoMonadFromRemoteFormat(u) + .unwrap((wasmUtxo, Module) => { + const wasmCoinsPerByte = Module.WalletV4.BigNum.from_str(coinsPerByte.toString()); + const dataCost = Module.WalletV4.DataCost.new_coins_per_byte(wasmCoinsPerByte); + const minAdaRequired = Module.WalletV4.min_ada_for_output(wasmUtxo.output(), dataCost).to_str(); + return new BigNumber(minAdaRequired); + }); +} + +/** + * @deprecated + */ +export function cardanoMinAdaRequiredFromAssets_coinsPerWord(tokens: MultiToken, coinsPerWord: BigNumber): BigNumber { + return cardanoMinAdaRequiredFromAssets(tokens, coinsPerWord_to_coinsPerByte(coinsPerWord)); +} + +export function cardanoMinAdaRequiredFromAssets(tokens: MultiToken, coinsPerByte: BigNumber): BigNumber { + return RustModule.WasmScope(Module => { + const output = Module.WalletV4.TransactionOutput.new( + Module.WalletV4.Address.from_bech32(RANDOM_BASE_ADDRESS), + cardanoValueFromMultiToken(tokens, Module), + ); + return cardanoMinAdaRequiredFromOutput(output, coinsPerByte, Module); + }); +} + +export function assetToRustMultiasset( + remoteAssets: $ReadOnlyArray<$ReadOnly> +): RustModule.WalletV4.MultiAsset { + const groupedAssets = remoteAssets.reduce((res, a) => { + (res[a.policyId] = (res[a.policyId] || [])).push(a); + return res; + }, {}) + const W4 = RustModule.WalletV4; + const multiasset = W4.MultiAsset.new(); + for (const policyHex of Object.keys(groupedAssets)) { + const assetGroup = groupedAssets[policyHex]; + const policyId = W4.ScriptHash.from_bytes(Buffer.from(policyHex, 'hex')); + const assets = RustModule.WalletV4.Assets.new(); + for (const asset of assetGroup) { + assets.insert( + W4.AssetName.new(Buffer.from(asset.name, 'hex')), + W4.BigNum.from_str(asset.amount), + ); + } + multiasset.insert(policyId, assets); + } + return multiasset; +} + +/** + * Shallow-parses the passed transaction CBOR HEX and returns the BigNumber of the fee lovelaces + */ +export function getTransactionFeeFromCbor(txHex: string): BigNumber { + try { + return RustModule.WasmScope(Module => { + const feeStr = Module.WalletV4.FixedTransaction.from_hex(txHex).body().fee().to_str(); + return new BigNumber(feeStr); + }); + } catch (e) { + console.error('Failed to decode transaction fee from cbor', e); + throw e; + } +} + +/** + * Shallow-parses the passed transaction CBOR HEX, adds together all outputs, and returns as multi-token + */ +export function getTransactionTotalOutputFromCbor(txHex: string, defaults: DefaultTokenEntry): MultiToken { + try { + return RustModule.WasmScope(Module => { + const outputs = Module.WalletV4.FixedTransaction.from_hex(txHex).body().outputs(); + const sum = new MultiToken([], defaults); + for (let i = 0; i < outputs.len(); i++) { + const output = outputs.get(i); + sum.joinAddMutable(multiTokenFromCardanoValue(output.amount(), defaults)); + } + return sum; + }); + } catch (e) { + console.error('Failed to decode transaction total output from cbor', e); + throw e; + } +} + +/** + * @param witnessSetHex1 - a serialised witness set as a HEX string + * @param witnessSetHex2 - a serialised witness set as a HEX string + * @return the resulting new witness set as a HEX string + */ +export function mergeWitnessSets( + witnessSetHex1: string, + witnessSetHex2: string, +): string { + return RustModule.WasmScope(Scope => { + const wset1 = Scope.WalletV4.TransactionWitnessSet.from_hex(witnessSetHex1); + const wset2 = Scope.WalletV4.TransactionWitnessSet.from_hex(witnessSetHex2); + const wsetResult = Scope.WalletV4.TransactionWitnessSet.new(); + let vkeys = wset1.vkeys(); + const newVkeys = wset2.vkeys(); + if (vkeys && newVkeys) { + for (let i = 0; i < newVkeys.len(); i++) { + vkeys.add(newVkeys.get(i)); + } + } else if (newVkeys) { + vkeys = newVkeys; + } + if (vkeys) { + wsetResult.set_vkeys(vkeys); + } + + let nativeScripts = wset1.native_scripts(); + const newNativeScripts = wset2.native_scripts(); + if (nativeScripts && newNativeScripts) { + for (let i = 0; i < newNativeScripts.len(); i++) { + nativeScripts.add(newNativeScripts.get(i)); + } + } else if (newNativeScripts) { + nativeScripts = newNativeScripts; + } + if (nativeScripts) { + wsetResult.set_native_scripts(nativeScripts); + } + + let bootstraps = wset1.bootstraps(); + const newBootstraps = wset2.bootstraps(); + if (bootstraps && newBootstraps) { + for (let i = 0; i < newBootstraps.len(); i++) { + bootstraps.add(newBootstraps.get(i)); + } + } else if (newBootstraps) { + bootstraps = newBootstraps; + } + if (bootstraps) { + wsetResult.set_bootstraps(bootstraps); + } + + let plutusScripts = wset1.plutus_scripts(); + const newPlutusScripts = wset2.plutus_scripts(); + if (plutusScripts && newPlutusScripts) { + for (let i = 0; i < newPlutusScripts.len(); i++) { + plutusScripts.add(newPlutusScripts.get(i)); + } + } else if (newPlutusScripts) { + plutusScripts = newPlutusScripts; + } + if (plutusScripts) { + wsetResult.set_plutus_scripts(plutusScripts); + } + + let plutusData = wset1.plutus_data(); + const newPlutusData = wset2.plutus_data(); + if (plutusData && newPlutusData) { + for (let i = 0; i < newPlutusData.len(); i++) { + plutusData.add(newPlutusData.get(i)); + } + } else if (newPlutusData) { + plutusData = newPlutusData; + } + if (plutusData) { + wsetResult.set_plutus_data(plutusData); + } + + let redeemers = wset1.redeemers(); + const newRedeemers = wset2.redeemers(); + if (redeemers && newRedeemers) { + for (let i = 0; i < newRedeemers.len(); i++) { + redeemers.add(newRedeemers.get(i)); + } + } else if (newRedeemers) { + redeemers = newRedeemers; + } + if (redeemers) { + wsetResult.set_redeemers(redeemers); + } + return wsetResult.to_hex(); + }); +} diff --git a/packages/yoroi-extension/app/api/ada/transactions/utils.test.js b/packages/yoroi-extension/app/api/ada/transactions/utils.test.js index aed1c68119..ae19872f36 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/utils.test.js +++ b/packages/yoroi-extension/app/api/ada/transactions/utils.test.js @@ -1,5 +1,5 @@ // @flow -import '../lib/test-config'; +import '../lib/test-config.forTests'; import BigNumber from 'bignumber.js'; import { convertAdaTransactionsToExportRows, diff --git a/packages/yoroi-extension/app/api/common/index.js b/packages/yoroi-extension/app/api/common/index.js index a5a7a8ecbc..632966c652 100644 --- a/packages/yoroi-extension/app/api/common/index.js +++ b/packages/yoroi-extension/app/api/common/index.js @@ -46,7 +46,7 @@ import type { CoreAddressT, } from '../ada/lib/storage/database/primitives/enums import { getAllTokenInfo } from './lib/tokens/utils'; import { MultiToken } from './lib/MultiToken'; import type { DefaultTokenEntry } from './lib/MultiToken'; -import type { UnconfirmedAmount } from '../../types/unconfirmedAmountType'; +import type { UnconfirmedAmount } from '../../types/unconfirmedAmount.types'; // getTokenInfo diff --git a/packages/yoroi-extension/app/api/common/lib/MultiToken.js b/packages/yoroi-extension/app/api/common/lib/MultiToken.js index 2e7128683b..a6ff0e4efa 100644 --- a/packages/yoroi-extension/app/api/common/lib/MultiToken.js +++ b/packages/yoroi-extension/app/api/common/lib/MultiToken.js @@ -68,6 +68,24 @@ export class MultiToken { return this.values.find(value => value.identifier === identifier)?.amount; }; + /** + * Creates a token entry with the network of the default token + */ + createEntry: (string, BigNumber) => TokenEntry = (identifier, amount) => { + return { + networkId: this.getDefaults().defaultNetworkId, + identifier, + amount, + }; + } + + /** + * Creates a token entry with the network and the identifier of the default token + */ + createDefaultEntry: (BigNumber) => TokenEntry = (amount) => { + return this.createEntry(this.getDefaults().defaultIdentifier, amount); + } + add: TokenEntry => MultiToken = entry => { this._checkNetworkId(entry.networkId); const existingEntry = this.values.find(value => value.identifier === entry.identifier); @@ -221,6 +239,10 @@ export class MultiToken { return new Map(this.values.map(value => [value.identifier, value.amount])); }; + entries: void => Array = () => { + return [...this.values]; + } + isEqualTo: MultiToken => boolean = tokens => { const remainingTokens = this.asMap(); diff --git a/packages/yoroi-extension/app/api/common/lib/crypto/keys/utils.js b/packages/yoroi-extension/app/api/common/lib/crypto/keys/utils.js deleted file mode 100644 index 02ceac796e..0000000000 --- a/packages/yoroi-extension/app/api/common/lib/crypto/keys/utils.js +++ /dev/null @@ -1,28 +0,0 @@ -// @flow - -import type { - Addressing, -} from '../../../../ada/lib/storage/models/PublicDeriver/interfaces'; -import type { IKeyDerivation } from './types'; -import { deriveKey } from './keyRepository'; - -export function deriveByAddressing(request: {| - addressing: $PropertyType, - startingFrom: {| - key: T, - level: number, - |}, -|}): T { - if (request.startingFrom.level + 1 < request.addressing.startLevel) { - throw new Error(`${nameof(deriveByAddressing)} keyLevel < startLevel`); - } - let derivedKey = request.startingFrom.key; - for ( - let i = request.startingFrom.level - request.addressing.startLevel + 1; - i < request.addressing.path.length; - i++ - ) { - derivedKey = deriveKey(derivedKey, request.addressing.path[i]); - } - return derivedKey; -} diff --git a/packages/yoroi-extension/app/api/common/lib/crypto/plate.js b/packages/yoroi-extension/app/api/common/lib/crypto/plate.js deleted file mode 100644 index 1ce705a955..0000000000 --- a/packages/yoroi-extension/app/api/common/lib/crypto/plate.js +++ /dev/null @@ -1,8 +0,0 @@ -// @flow - -import type { WalletChecksum } from '@emurgo/cip4-js'; - -export type PlateResponse = {| - addresses: Array, - plate: WalletChecksum -|}; diff --git a/packages/yoroi-extension/app/api/common/lib/restoration/bip44.js b/packages/yoroi-extension/app/api/common/lib/restoration/bip44.js index 75c37ae0cb..9dd97727c7 100644 --- a/packages/yoroi-extension/app/api/common/lib/restoration/bip44.js +++ b/packages/yoroi-extension/app/api/common/lib/restoration/bip44.js @@ -9,7 +9,6 @@ import type { GenerateAddressFunc, } from './bip44AddressScan'; import type { ConfigType } from '../../../../../config/config-types'; -import type { FilterFunc } from '../state-fetch/currencySpecificTypes'; import { ChainDerivations, BIP44_SCAN_SIZE, @@ -17,16 +16,19 @@ import { import type { TreeInsert, InsertRequest, -} from '../../../ada/lib/storage/database/walletTypes/common/utils'; +} from '../../../ada/lib/storage/database/walletTypes/common/utils.types'; import type { AddByHashFunc, } from '../storage/bridge/hashMapper'; import type { NetworkRow, CanonicalAddressInsert } from '../../../ada/lib/storage/database/primitives/tables'; import type { CoreAddressT } from '../../../ada/lib/storage/database/primitives/enums'; import type { Bip44ChainInsert } from '../../../ada/lib/storage/database/walletTypes/common/tables'; +import type { FilterFunc } from '../../../ada/lib/state-fetch/types'; // populated by ConfigWebpackPlugin declare var CONFIG: ConfigType; const addressRequestSize = CONFIG.app.addressRequestSize; +// bip44 + export async function addAddrForType( addByHash: AddByHashFunc, insertRequest: InsertRequest, @@ -80,6 +82,7 @@ export async function scanBip44Chain(request: {| }); } +// bip44 export async function scanBip44Account(request: {| generateInternalAddresses: GenerateAddressFunc, generateExternalAddresses: GenerateAddressFunc, diff --git a/packages/yoroi-extension/app/api/common/lib/restoration/bip44AddressScan.js b/packages/yoroi-extension/app/api/common/lib/restoration/bip44AddressScan.js index 042cf1a7be..b10d5be9f6 100644 --- a/packages/yoroi-extension/app/api/common/lib/restoration/bip44AddressScan.js +++ b/packages/yoroi-extension/app/api/common/lib/restoration/bip44AddressScan.js @@ -2,10 +2,8 @@ // @flow import { range } from 'lodash'; -import type { - FilterFunc, -} from '../state-fetch/currencySpecificTypes'; import type { NetworkRow } from '../../../ada/lib/storage/database/primitives/tables'; +import type { FilterFunc } from '../../../ada/lib/state-fetch/types'; type AddressInfo = {| address: string, diff --git a/packages/yoroi-extension/app/api/common/lib/state-fetch/IFetcher.js b/packages/yoroi-extension/app/api/common/lib/state-fetch/IFetcher.types.js similarity index 100% rename from packages/yoroi-extension/app/api/common/lib/state-fetch/IFetcher.js rename to packages/yoroi-extension/app/api/common/lib/state-fetch/IFetcher.types.js diff --git a/packages/yoroi-extension/app/api/common/lib/state-fetch/batchedFetcher.js b/packages/yoroi-extension/app/api/common/lib/state-fetch/batchedFetcher.js index 2363911abf..c341969d21 100644 --- a/packages/yoroi-extension/app/api/common/lib/state-fetch/batchedFetcher.js +++ b/packages/yoroi-extension/app/api/common/lib/state-fetch/batchedFetcher.js @@ -6,7 +6,7 @@ import type { HistoricalCoinPriceRequest, HistoricalCoinPriceResponse, } from './types'; -import type { IFetcher } from './IFetcher'; +import type { IFetcher } from './IFetcher.types'; /** * Makes calls to Yoroi backend service diff --git a/packages/yoroi-extension/app/api/common/lib/state-fetch/currencySpecificTypes.js b/packages/yoroi-extension/app/api/common/lib/state-fetch/currencySpecificTypes.js deleted file mode 100644 index 198cc3e42c..0000000000 --- a/packages/yoroi-extension/app/api/common/lib/state-fetch/currencySpecificTypes.js +++ /dev/null @@ -1,12 +0,0 @@ -// @flow - -import type { NetworkRow } from '../../../ada/lib/storage/database/primitives/tables'; - -// checkAddressesInUse - -export type FilterUsedRequest = {| - network: $ReadOnly, - addresses: Array, -|}; -export type FilterUsedResponse = Array; -export type FilterFunc = (body: FilterUsedRequest) => Promise; diff --git a/packages/yoroi-extension/app/api/common/lib/state-fetch/remoteFetcher.js b/packages/yoroi-extension/app/api/common/lib/state-fetch/remoteFetcher.js index 177a4d8ef9..cb2199f761 100644 --- a/packages/yoroi-extension/app/api/common/lib/state-fetch/remoteFetcher.js +++ b/packages/yoroi-extension/app/api/common/lib/state-fetch/remoteFetcher.js @@ -6,7 +6,7 @@ import type { HistoricalCoinPriceRequest, HistoricalCoinPriceResponse, } from './types'; -import type { IFetcher } from './IFetcher'; +import type { IFetcher } from './IFetcher.types'; import axios from 'axios'; import { diff --git a/packages/yoroi-extension/app/api/common/lib/storage/bridge/delegationUtils.js b/packages/yoroi-extension/app/api/common/lib/storage/bridge/delegationUtils.js deleted file mode 100644 index e3f3301424..0000000000 --- a/packages/yoroi-extension/app/api/common/lib/storage/bridge/delegationUtils.js +++ /dev/null @@ -1,68 +0,0 @@ -// @flow - -import { - PublicDeriver, -} from '../../../../ada/lib/storage/models/PublicDeriver/index'; -import type { - IGetStakingKey, -} from '../../../../ada/lib/storage/models/PublicDeriver/interfaces'; -import type { CertificateForKey } from '../../../../ada/lib/storage/database/primitives/api/read'; -import type { ToRelativeSlotNumberFunc } from './timeUtils'; -import { MultiToken } from '../../MultiToken'; - -export type GetDelegatedBalanceRequest = {| - publicDeriver: PublicDeriver<> & IGetStakingKey, - rewardBalance: MultiToken, - stakingAddress: string, - delegation: string | null, - allRewards: string | null, - stakeRegistered: ?boolean, -|}; -export type GetDelegatedBalanceResponse = {| - utxoPart: MultiToken, - accountPart: MultiToken, - delegation: string | null, - allRewards: string | null, - stakeRegistered: ?boolean, -|}; -export type GetDelegatedBalanceFunc = ( - request: GetDelegatedBalanceRequest -) => Promise; - -export type GetCurrentDelegationRequest = {| - publicDeriver: PublicDeriver<> & IGetStakingKey, - stakingKeyAddressId: number, - currentEpoch: number, - toRelativeSlotNumber: ToRelativeSlotNumberFunc, -|}; -export type PoolTuples = [ - string, // PoolId - number, // parts -]; -export type CertificateForEpoch = {| - ...CertificateForKey, - pools: Array, -|}; -export type GetCurrentDelegationResponse = {| - // careful: void -> never delegated at this time - // empty delegation -> undelegated at some point - currEpoch: void | CertificateForEpoch, - prevEpoch: void | CertificateForEpoch, - prevPrevEpoch: void | CertificateForEpoch, - prevPrevPrevEpoch: void | CertificateForEpoch, - fullHistory: Array, - allPoolIds: Array -|}; -export type GetCurrentDelegationFunc = ( - request: GetCurrentDelegationRequest -) => Promise; - -export type RewardHistoryRequest = string; -export type RewardHistoryResponse = Array<[ - number, // epoch - MultiToken, // amount - string, // poolHash -]>; -export type RewardHistoryFunc = ( - request: RewardHistoryRequest -) => Promise; diff --git a/packages/yoroi-extension/app/api/common/lib/storage/bridge/hashMapper.js b/packages/yoroi-extension/app/api/common/lib/storage/bridge/hashMapper.js index f07a07ddef..1b21a4c21f 100644 --- a/packages/yoroi-extension/app/api/common/lib/storage/bridge/hashMapper.js +++ b/packages/yoroi-extension/app/api/common/lib/storage/bridge/hashMapper.js @@ -19,7 +19,7 @@ import { addressToKind, } from '../../../../ada/lib/storage/bridge/utils'; import { getAllTables } from '../../../../ada/lib/storage/database/utils'; -import type { InsertRequest } from '../../../../ada/lib/storage/database/walletTypes/common/utils'; +import type { InsertRequest } from '../../../../ada/lib/storage/database/walletTypes/common/utils.types'; export type AddByHashRequest = {| ...InsertRequest, diff --git a/packages/yoroi-extension/app/api/common/lib/storage/bridge/timeUtils.js b/packages/yoroi-extension/app/api/common/lib/storage/bridge/timeUtils.js deleted file mode 100644 index 4b93399724..0000000000 --- a/packages/yoroi-extension/app/api/common/lib/storage/bridge/timeUtils.js +++ /dev/null @@ -1,272 +0,0 @@ -// @flow - -export type ToAbsoluteSlotNumberRequest = {| - epoch: number, - slot: number, -|}; -export type ToAbsoluteSlotNumberResponse = number; -export type ToAbsoluteSlotNumberFunc = ( - request: ToAbsoluteSlotNumberRequest -) => ToAbsoluteSlotNumberResponse; - -export async function genToAbsoluteSlotNumber( - config: $ReadOnlyArray<$ReadOnly<{ - StartAt?: number, - SlotsPerEpoch?: number, - ..., - }>>, -): Promise { - return (request: ToAbsoluteSlotNumberRequest) => { - let SlotsPerEpoch = config[0].SlotsPerEpoch; - let slotCount = 0; - let epochsLeft = request.epoch; - - // for pairs of config changes (x, x+1), get the time between these pairs - for (let i = 0; i < config.length - 1; i++) { - const start = config[i].StartAt ?? (() => { throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing start`); })(); - const end = config[i + 1].StartAt ?? (() => { throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing end`); })(); - - // queried time is before the next protocol parameter choice - if (end > request.epoch) { - break; - } - const numEpochs = end - start; - - if (SlotsPerEpoch == null) throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing params`); - slotCount += SlotsPerEpoch * numEpochs; - epochsLeft -= numEpochs; - - SlotsPerEpoch = config[i + 1].SlotsPerEpoch ?? SlotsPerEpoch; - } - - if (SlotsPerEpoch == null) throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing params`); - - // find how many slots in the epochs since the last update - slotCount += SlotsPerEpoch * epochsLeft; - - return slotCount + request.slot; - }; -} - -export type ToRelativeSlotNumberRequest = ToAbsoluteSlotNumberResponse; -export type ToRelativeSlotNumberResponse = ToAbsoluteSlotNumberRequest; -export type ToRelativeSlotNumberFunc = ( - request: ToRelativeSlotNumberRequest -) => ToRelativeSlotNumberResponse; -export async function genToRelativeSlotNumber( - config: $ReadOnlyArray<$ReadOnly<{ - StartAt?: number, - SlotsPerEpoch?: number, - ..., - }>>, -): Promise { - return (absoluteSlot: ToRelativeSlotNumberRequest) => { - let SlotsPerEpoch = config[0].SlotsPerEpoch; - let epochCount = 0; - let slotsLeft = absoluteSlot; - - // for pairs of config changes (x, x+1), get the time between these pairs - for (let i = 0; i < config.length - 1; i++) { - const start = config[i].StartAt ?? (() => { throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing start`); })(); - const end = config[i + 1].StartAt ?? (() => { throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing end`); })(); - const numEpochs = end - start; - - if (SlotsPerEpoch == null) throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing params`); - - // queried time is before the next protocol parameter choice - if (slotsLeft < SlotsPerEpoch * numEpochs) { - break; - } - - slotsLeft -= SlotsPerEpoch * numEpochs; - epochCount += numEpochs; - - SlotsPerEpoch = config[i + 1].SlotsPerEpoch ?? SlotsPerEpoch; - } - - if (SlotsPerEpoch == null) throw new Error(`${nameof(genToAbsoluteSlotNumber)} missing params`); - - // find how many slots in the epochs since the last update - epochCount += Math.floor(slotsLeft / SlotsPerEpoch); - - return { - epoch: epochCount, - slot: slotsLeft % SlotsPerEpoch, - }; - }; -} - -export type TimeToAbsoluteSlotRequest = {| - time: Date, -|}; -export type TimeToAbsoluteSlotResponse = {| - slot: number, - msIntoSlot: number -|}; -export type TimeToAbsoluteSlotFunc = ( - request: TimeToAbsoluteSlotRequest, -) => TimeToAbsoluteSlotResponse; - -export async function genTimeToSlot( - config: $ReadOnlyArray<$ReadOnly<{ - StartAt?: number, - GenesisDate?: string, - SlotsPerEpoch?: number, - SlotDuration?: number, - ..., - }>>, -): Promise { - return (request: TimeToAbsoluteSlotRequest) => { - const { GenesisDate, } = config[0]; - if (GenesisDate == null) throw new Error(`${nameof(genTimeToSlot)} missing genesis params`); - let SlotDuration = config[0].SlotDuration; - let SlotsPerEpoch = config[0].SlotsPerEpoch; - let timeLeftToTip = ( - request.time.getTime() - new Date(Number.parseInt(GenesisDate, 10)).getTime() - ); - let slotCount = 0; - - // for pairs of config changes (x, x+1), get the time between these pairs - for (let i = 0; i < config.length - 1; i++) { - const start = config[i].StartAt ?? (() => { throw new Error(`${nameof(genTimeToSlot)} missing start`); })(); - const end = config[i + 1].StartAt ?? (() => { throw new Error(`${nameof(genTimeToSlot)} missing end`); })(); - const numEpochs = end - start; - - if (SlotDuration == null || SlotsPerEpoch == null) throw new Error(`${nameof(genTimeToSlot)} missing params`); - - // queried time is before the next protocol parameter choice - if (timeLeftToTip < (SlotsPerEpoch * SlotDuration * 1000) * numEpochs) { - break; - } - slotCount += SlotsPerEpoch * numEpochs; - timeLeftToTip -= (SlotsPerEpoch * SlotDuration * 1000) * numEpochs; - - SlotDuration = config[i + 1].SlotDuration ?? SlotDuration; - SlotsPerEpoch = config[i + 1].SlotsPerEpoch ?? SlotsPerEpoch; - } - - if (SlotDuration == null || SlotsPerEpoch == null) throw new Error(`${nameof(genTimeToSlot)} missing params`); - - // find how many slots since the last update - const secondsSinceLastUpdate = timeLeftToTip / 1000; - slotCount += Math.floor(secondsSinceLastUpdate / SlotDuration); - - const msIntoSlot = timeLeftToTip % 1000; - const secondsIntoSlot = secondsSinceLastUpdate % SlotDuration; - return { - slot: slotCount, - msIntoSlot: (1000 * secondsIntoSlot) + msIntoSlot, - }; - }; -} - -export type CurrentEpochLengthRequest = void; -/** slots per epoch */ -export type CurrentEpochLengthResponse = number; -export type CurrentEpochLengthFunc = ( - request: CurrentEpochLengthRequest -) => CurrentEpochLengthResponse; -export async function genCurrentEpochLength( - config: $ReadOnlyArray<$ReadOnly<{ - SlotsPerEpoch?: number, - ..., - }>>, -): Promise { - return (_request: CurrentEpochLengthRequest) => { - const finalConfig = config.reduce((acc, next) => Object.assign(acc, next), {}); - return finalConfig.SlotsPerEpoch; - }; -} - -export type CurrentSlotLengthRequest = void; -export type CurrentSlotLengthResponse = number; -export type CurrentSlotLengthFunc = ( - request: CurrentSlotLengthRequest -) => CurrentSlotLengthResponse; -export async function genCurrentSlotLength( - config: $ReadOnlyArray<$ReadOnly<{ - SlotDuration?: number, - ..., - }>>, -): Promise { - return (_request: CurrentSlotLengthRequest) => { - const finalConfig = config.reduce((acc, next) => Object.assign(acc, next), {}); - return finalConfig.SlotDuration; - }; -} - -export type TimeSinceGenesisRequest = {| - absoluteSlotNum: number, -|}; -export type TimeSinceGenesisResponse = number; /* seconds */ -export type TimeSinceGenesisFunc = ( - request: TimeSinceGenesisRequest -) => TimeSinceGenesisResponse; -export async function genTimeSinceGenesis( - config: $ReadOnlyArray<$ReadOnly<{ - StartAt?: number, - GenesisDate?: string, - SlotsPerEpoch?: number, - SlotDuration?: number, - ..., - }>>, -): Promise { - return (request: TimeSinceGenesisRequest) => { - let SlotDuration = config[0].SlotDuration; - let SlotsPerEpoch = config[0].SlotsPerEpoch; - let time = 0; - let slotsLeft = request.absoluteSlotNum; - - // for pairs of config changes (x, x+1), get the time between these pairs - for (let i = 0; i < config.length - 1; i++) { - const start = config[i].StartAt ?? (() => { throw new Error(`${nameof(genTimeSinceGenesis)} missing start`); })(); - const end = config[i + 1].StartAt ?? (() => { throw new Error(`${nameof(genTimeSinceGenesis)} missing end`); })(); - const numEpochs = end - start; - - if (SlotDuration == null || SlotsPerEpoch == null) throw new Error(`${nameof(genTimeSinceGenesis)} missing params`); - - // queried time is before the next protocol parameter choice - if (slotsLeft < SlotsPerEpoch * numEpochs) { - break; - } - time += (SlotsPerEpoch * SlotDuration) * numEpochs; - slotsLeft -= SlotsPerEpoch * numEpochs; - - SlotDuration = config[i + 1].SlotDuration ?? SlotDuration; - SlotsPerEpoch = config[i + 1].SlotsPerEpoch ?? SlotsPerEpoch; - } - - if (SlotDuration == null || SlotsPerEpoch == null) throw new Error(`${nameof(genTimeSinceGenesis)} missing params`); - - // add seconds into the current update - time += slotsLeft * SlotDuration; - - return time; - }; -} - -export type ToRealTimeRequest = {| - absoluteSlotNum: number, - timeSinceGenesisFunc: TimeSinceGenesisFunc, -|}; -export type ToRealTimeResponse = Date; -export type ToRealTimeFunc = ( - request: ToRealTimeRequest -) => ToRealTimeResponse; -export async function genToRealTime( - config: $ReadOnlyArray<$ReadOnly<{ - GenesisDate?: string, - ..., - }>>, -): Promise { - return (request: ToRealTimeRequest) => { - const { GenesisDate } = config[0]; - if (GenesisDate == null) throw new Error(`${nameof(genToRealTime)} missing genesis start date`); - - const timeSinceGenesis = request.timeSinceGenesisFunc({ - absoluteSlotNum: request.absoluteSlotNum, - }); - const time = (new Date(Number.parseInt(GenesisDate, 10)).getTime() + (1000 * timeSinceGenesis)); - return new Date(time); - }; -} diff --git a/packages/yoroi-extension/app/api/export/index.test.js b/packages/yoroi-extension/app/api/export/index.test.js index 8b97e0badf..f57d843f20 100644 --- a/packages/yoroi-extension/app/api/export/index.test.js +++ b/packages/yoroi-extension/app/api/export/index.test.js @@ -1,5 +1,5 @@ // @flow -import '../ada/lib/test-config'; // TODO: https://github.com/Emurgo/yoroi-frontend/issues/250 +import '../ada/lib/test-config.forTests'; // TODO: https://github.com/Emurgo/yoroi-frontend/issues/250 import type { CsvData } from './index'; import ExportApi, { COIN_TRACKING_HEADERS } from './index'; diff --git a/packages/yoroi-extension/app/api/externalStorage/index.js b/packages/yoroi-extension/app/api/externalStorage/index.js index 4445d843e8..6f179071ce 100644 --- a/packages/yoroi-extension/app/api/externalStorage/index.js +++ b/packages/yoroi-extension/app/api/externalStorage/index.js @@ -16,7 +16,7 @@ import type { DownloadExternalTxMemoResponse, FetchFilenameExternalTxMemoRequest, FetchFilenameExternalTxMemoResponse, FetchFolderExternalTxMemoResponse, CreateFolderExternalTxMemoResponse -} from './providers/IProvider'; +} from './providers/IProvider.types'; import { ExternalStorageList } from '../../domain/ExternalStorage'; import type { SelectedExternalStorageProvider } from '../../domain/ExternalStorage'; diff --git a/packages/yoroi-extension/app/api/externalStorage/providers/IProvider.js b/packages/yoroi-extension/app/api/externalStorage/providers/IProvider.types.js similarity index 100% rename from packages/yoroi-extension/app/api/externalStorage/providers/IProvider.js rename to packages/yoroi-extension/app/api/externalStorage/providers/IProvider.types.js diff --git a/packages/yoroi-extension/app/api/externalStorage/providers/dropbox.js b/packages/yoroi-extension/app/api/externalStorage/providers/dropbox.js index 7de53abdcb..614d4b6569 100644 --- a/packages/yoroi-extension/app/api/externalStorage/providers/dropbox.js +++ b/packages/yoroi-extension/app/api/externalStorage/providers/dropbox.js @@ -22,7 +22,7 @@ import type { FetchFilenameExternalTxMemoRequest, FetchFilenameExternalTxMemoResponse, GetMetadataExternalTxMemoResponse, FetchFolderExternalTxMemoResponse, CreateFolderExternalTxMemoResponse -} from './IProvider'; +} from './IProvider.types'; export default class DropboxApi implements IProvider { authorizeUrl: string = `https://www.dropbox.com/oauth2/authorize?client_id=${DROPBOX_CLIENT_ID}&response_type=token&redirect_uri=${ROUTES.ROOT}#/`; diff --git a/packages/yoroi-extension/app/api/jestUtils.js b/packages/yoroi-extension/app/api/jestUtils.forTests.js similarity index 100% rename from packages/yoroi-extension/app/api/jestUtils.js rename to packages/yoroi-extension/app/api/jestUtils.forTests.js diff --git a/packages/yoroi-extension/app/api/localStorage/index.js b/packages/yoroi-extension/app/api/localStorage/index.js index 5ef023ba91..02e9f57a0e 100644 --- a/packages/yoroi-extension/app/api/localStorage/index.js +++ b/packages/yoroi-extension/app/api/localStorage/index.js @@ -1,21 +1,15 @@ // @flow import type { SelectedExternalStorageProvider } from '../../domain/ExternalStorage'; import environment from '../../environment'; -import { unitOfAccountDisabledValue } from '../../types/unitOfAccountType'; import type { UnitOfAccountSettingType } from '../../types/unitOfAccountType'; +import { unitOfAccountDisabledValue } from '../../types/unitOfAccountType'; -import { - getLocalItem, - setLocalItem, - removeLocalItem, - isEmptyStorage, -} from './primitives'; -import { - TabIdKeys, -} from '../../utils/tabManager'; +import { getLocalItem, isEmptyStorage, removeLocalItem, setLocalItem, } from './primitives'; +import { TabIdKeys, } from '../../utils/tabManager'; import type { ComplexityLevelType } from '../../types/complexityLevelType'; import type { WhitelistEntry } from '../../../chrome/extension/connector/types'; import type { CatalystRoundInfoResponse } from '../ada/lib/state-fetch/types' +import { maybe } from '../../coreUtils'; declare var chrome; declare var browser; @@ -432,6 +426,15 @@ export async function loadSubmittedTransactions(): any { return JSON.parse(stored[storageKeys.SUBMITTED_TRANSACTIONS]); } +export async function getOutputAddressesInSubmittedTxs(publicDeriverId: number): Promise> { + const submittedTxs = await loadSubmittedTransactions() || []; + return submittedTxs + .filter(submittedTxRecord => submittedTxRecord.publicDeriverId === publicDeriverId) + .flatMap(({ transaction }) => { + return transaction.addresses.to.map(({ address }) => address); + }); +} + export async function loadCatalystRoundInfo(): Promise { const json = await getLocalItem(storageKeys.CATALYST_ROUND_INFO); if (!json) { @@ -443,3 +446,45 @@ export async function loadCatalystRoundInfo(): Promise { await setLocalItem(storageKeys.CATALYST_ROUND_INFO, JSON.stringify(data)); } + +export function asyncLocalStorageWrapper(): {| + getItem(key: string): Promise, + setItem(key: string, value: string): Promise, + removeItem(key: string): Promise, +|} { + return { + getItem: key => getLocalItem(key).then(x => x ?? null), + setItem: setLocalItem, + removeItem: removeLocalItem, + } +} + +export type StorageField = {| + get: () => Promise; + set: T => Promise; + remove: () => Promise; + defaultValue: () => T, +|} + +export function createStorageField( + key: string, + serializer: T => string, + deserializer: string => T, + defaultValue: T, +): StorageField { + return Object.freeze({ + get: async () => maybe(await getLocalItem(key), deserializer) ?? defaultValue, + set: t => setLocalItem(key, serializer(t)), + remove: () => removeLocalItem(key), + defaultValue: () => defaultValue, + }); +} + +export function createStorageFlag( + key: string, + defaultValue: boolean, +): StorageField { + const serializer = String; + const deserializer = s => s === 'true'; + return createStorageField(key, serializer, deserializer, defaultValue); +} diff --git a/packages/yoroi-extension/app/assets/fonts/RobotoMono-Thin.ttf b/packages/yoroi-extension/app/assets/fonts/RobotoMono-Thin.ttf deleted file mode 100644 index 35ea79178a..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/RobotoMono-Thin.ttf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/Rubik-Black.ttf b/packages/yoroi-extension/app/assets/fonts/Rubik-Black.ttf deleted file mode 100644 index 5c525395b1..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/Rubik-Black.ttf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Black.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Black.otf deleted file mode 100644 index 65510036e4..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Black.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Bold.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Bold.otf deleted file mode 100644 index 44f70b3819..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Bold.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Heavy.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Heavy.otf deleted file mode 100644 index d21452688e..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Heavy.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Light.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Light.otf deleted file mode 100644 index f039eb5b2a..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Light.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Medium.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Medium.otf deleted file mode 100644 index c39628d93f..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Medium.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Regular.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Regular.otf deleted file mode 100644 index 8316e51852..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Regular.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Semibold.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Semibold.otf deleted file mode 100644 index 874e00ec44..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Semibold.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Thin.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Thin.otf deleted file mode 100644 index 46f588aba8..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Thin.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Ultralight.otf b/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Ultralight.otf deleted file mode 100644 index 217c461cb4..0000000000 Binary files a/packages/yoroi-extension/app/assets/fonts/SFUIDisplay-Ultralight.otf and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/images/ada-logo.inline.svg b/packages/yoroi-extension/app/assets/images/ada-logo.inline.svg deleted file mode 100644 index 97b2e2452f..0000000000 --- a/packages/yoroi-extension/app/assets/images/ada-logo.inline.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - ada-logo.inline - Created with Sketch. - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/ada-symbol-big-dark.inline.svg b/packages/yoroi-extension/app/assets/images/ada-symbol-big-dark.inline.svg deleted file mode 100644 index f1dd9ea8cc..0000000000 --- a/packages/yoroi-extension/app/assets/images/ada-symbol-big-dark.inline.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - ada-symbol-big-dark - Created with Sketch. - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/ada-symbol-smallest-dark.inline.svg b/packages/yoroi-extension/app/assets/images/ada-symbol-smallest-dark.inline.svg deleted file mode 100644 index 8ddc92c559..0000000000 --- a/packages/yoroi-extension/app/assets/images/ada-symbol-smallest-dark.inline.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - 5B47861B-BE78-47A7-AF40-C1783A7FA64B - Created with sketchtool. - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/ada-symbol.inline.svg b/packages/yoroi-extension/app/assets/images/ada-symbol.inline.svg deleted file mode 100644 index 3f8c89fc28..0000000000 --- a/packages/yoroi-extension/app/assets/images/ada-symbol.inline.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - 10943AFF-9D5E-4510-B49E-6BBB477AEDAA - Created with sketchtool. - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/containers/swap/mockAssets/ada.inline.svg b/packages/yoroi-extension/app/assets/images/ada.inline.svg similarity index 100% rename from packages/yoroi-extension/app/containers/swap/mockAssets/ada.inline.svg rename to packages/yoroi-extension/app/assets/images/ada.inline.svg diff --git a/packages/yoroi-extension/app/assets/images/ada.png b/packages/yoroi-extension/app/assets/images/ada.png new file mode 100644 index 0000000000..1a754f1cea Binary files /dev/null and b/packages/yoroi-extension/app/assets/images/ada.png differ diff --git a/packages/yoroi-extension/app/assets/images/add-wallet/add-wallet-bg-testnet.inline.svg b/packages/yoroi-extension/app/assets/images/add-wallet/add-wallet-bg-testnet.inline.svg deleted file mode 100644 index 848a490b22..0000000000 --- a/packages/yoroi-extension/app/assets/images/add-wallet/add-wallet-bg-testnet.inline.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - Artboard - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/add-wallet/option-dialog/Business_wallet.inline.svg b/packages/yoroi-extension/app/assets/images/add-wallet/option-dialog/Business_wallet.inline.svg deleted file mode 100644 index 2b93803a9a..0000000000 --- a/packages/yoroi-extension/app/assets/images/add-wallet/option-dialog/Business_wallet.inline.svg +++ /dev/null @@ -1,20755 +0,0 @@ - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzsveuOHElyLvgE/g61PwTMYHfqhIfHxWMwEhCZGTlHgC6D6ZGwB8KiQU1TLa44ZIPNlo726ddu -7m5+icysKrLI6ak0kCxmZcbVw93ss88++6v/43ff/Gr97v2/vv6Vu+/uzF/91fHD61cf33/49R29 -e/e3b9/+9OPHD/jWL37/yzs733fwofVv/bfywX9+/eHHN+/f/fqu7+8t/fKM3/7F37/68PHVL+9+ -8Ut45w9vPr59De/FjcEX7v7t/Ye7V2/f3v0X/PX644+/ev2/P75+h5u6f/Xml+FA4L+nVx/hu+P/ -mP6HXe7s8ms74S9fvfvPVz/++Ob/g1/ZyXkH7x3e//Tuuzfvvj+8/9+/vvuVdZO7+1Xv/HA3usHe -jd0In/mfb37/+sfqg/1933W2871b5pG+5O7HGTYw93M3jriB7t7CX72fpmmBLXbDveu98/0w2sXO -sOXT+z/+9KfX7z7+7sP7P77+8cfj+7fvP/z467vjf796d/f3r76H37y6+1+v3759/193h7ev/vgf -Bi7i+O35zdvXcL3+9OrjnXV49da/tf23h5/evP3uH37607++hivpbI9vu29pk//0I2wLNos/49vz -t3/7J3jnm9cfP8IZwQ7xDvz+twd9GPDmXXc/2WXq5sWPHfwAV6W797MfnO363k5z3013v/j9X3d3 -v/1rO/q7w1/3/YB34f+k73ZTPw/DssBfdp4WeMd6uFrwzjLPo/dz/O4EXx18+iZcP/hkZ3s/DJ2f -4B3Y+dRPyzx11lk4jvBN3+Fehzl9d7FwA+Bw8ZB739/Z8NneOfzsOKbP2qW349x1netcP3l4Z+jd -2Hs4wm6BMx7Dd4cFvgr3On0V7jp8Fz7oB0vnhp+f4Lr4Ec5tiec2Wdyp6+Sb1Q7gIPpxwDcG793o -Zrzoy2DhzPp+sX7u6ARg37Ax1+NhzHPa2AxDqbPwl58dHT9e8xGHJezF4v1a8HbBIByGwTs+I9st -eO0s3bHRxq05uHQOroaFuzbCY8PXzlq6ejCi9dW7H+BWjvBp612/TD28M8rVhBsF23F4H/F+j13n -ZzuN3tHWekejhS5Ll/ZNV2PxMNr8PI0779Bl6cYOD9Pz1kbcWo/HZvspbG3EITDAd+0wWxo/19/B -rcHV/y39fcC/97cGZzxYOHr4t4eLRsNh7BcHdxGudTg22hqM1cNfT/H2dyOdF9yUpevo9sPdWuCk -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 -d43J1SjIUV956wZ9jZtn1rTSfiGVwoUzGjI/iIe8ISKya8PmmEgqMZEPb4iJ3DqKdHuKPOyXHhpC -lwLuvVaI3fvYnJ3sz0Y2Zz1gvxzM2mhcq8Eek7V8imCpFHoOn1P595HCv4OKZzhaI710a//aas/q -BVZKHkfKM1y8weoPdqs+b17h1S+8+fmtp996hz3/sOshnj7iw6jNJ+M2H+6lK/291993vV1XwOTn -nntt9tx27DnfOqm74wZXf/gxcqBH++1SeDg0lYef14zrvtsMKzkcu61yerWVxSfc4FZb3NtrbLWh -2Wv3KsRr/OEegbjHIC6BweGAjbVxiEeRiDdElr5bbKnBSfb3Xn/f3aVd2XXDKeoaOffakXPLTc51 -m3UNnZrXt8q4XjH7Nhyg3n4te4+Qyhe7Tnf59v4j8m1yMa6TcMyTySHfXH3zo5r2e8zrHvW6EH0P -B1TxLbKt0q1/Ivr1PeNfu0Vwlqdlfk405L3QJre/KTGhTtTq/tPfTPzn88I/9+jPrVLx9bM/79rP -0JQ53gsdP95X9V7ZGE/LvgZBNjOSssf3Wiz8d0e+uH4+gdoeDuj28aMT9t2AwcMFdRAbUPqBQhgK -kr3SKb0WCHyLRpgusNB4uK57cVkvuKfhAD5pL/9N9ynCUc9YKxppzvF1pimajUko86G8y2RAZqun -Utz4Yg5y7cixWK+Tw0Y3WuNoJvoeXwdJjsrDVBlua2gvs3LFgmN5zQWO5pxOhWInQxhwP3N145It -9hfbfNo1GRN4pWI4qwDfNZ/X26eSYu23at+DjfoMzKbSpjceYbD5CFcEa+07HqGND0cDtHelR9VL -bvC6l1ZluTlZOhCJ09HL9re07D/KDUs9Xg/W5z7zmz72Z4j9P+nhZ+l+jtLy4fxr4WxuP7v7vLjP -pcvmUOrq28/75vPh9vn6/rk2WxlKiOj6mW6f+fK5v/39TynOH47Cfn08GLZXLdnrA3rWLl7LCQlQ -xeHo+vnJ5q+u9+u18+vR9XUoZuS14eteWgGvh9F4FHzdSr7eXazEo+RrOFyS8ZLRPHOaZ1bzyGs2 -TV32e2pz+KyuLo+oZq+kpNf8plbpCsF/juu+pxXJHI0tg0RaWLZpHqUmU5iW2X7WAi3PFJk3tH64 -WxpKdR2lzFdpm12G4QjGXnuOROGcNCXaqDlv9zzfe31Yb5Q7LvZRjvI39oSPWY76wU/+wS9/8Q9/ -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 -8Lq89w8wN4fw/GFfCe8w7E/bb3Fvb+FThg0xzIa4sW4mVdifw9yMe/w6v9+1FXe09UZWLj/91Zff -ffefzeL+zd/+6vvvv/79b3/5N//4y59//buvf/X917/G+r6yts86F2+cryc39S9P+Ne//ub7735v -BvzbX/7t17//aDb5l//z19OKt6e/+huz0XE0//Wr/8vs/lff/e6ffvmz7z4+/waSrJwlq6A+ijev -+Pff2O//t29+/f0/+A/7Wxf7299//cdvvv6TXes//+NPZjoyvJcXj2H39M3X//h8R2+P/tnX//f3 -v/zmt7/8H37/3W+/f2/w33/3u2XsZA48JnNg/ucf9T9+/c1v/uH7T3zWn3/3p/msJOrNj3nr1D/9 -w/ff/d3vfvXxm9/+5pf/8b1HYPD/+Pvv/vQvPvN/emc+MCW//4ap9su//6fffb2dlX/9o//up39T -f/nXv/31/LH/85df/+ab386//PdPP/7b77793a9+/d0ffv+TH73430KUWrwJl9Mp5W0Kl0MCyIcS -R5RZNYD8R2Y19uQjMtHoaHIXf6r//N//9KNXUjC3V2lH/kn/+D/Z//x/7I9/esrp6X95+j/+z/T0 -a//lz+/M3Yt7Wa80VcveuZ+nn+1Ghef62eaCnzRoe73ffvI+Mz/sl7/6+P8yATSDLaT4fnHvX7zD -Z22C9PS/yhcHIgQDigVJmR5HSky2o6OcgkE5SZKfKqtnmO46jU80Lg2YjwqiF8i808RLRj3VmWF/ -An73SLTzZ/2KglnOSO2YrXFnnQYV821oUZd0IA3pYsf4dh40u8XBRBrzcbB59nNwoJ/emY+mkQ6Q -F9EBEKPXUObko852fRCvA14IafKM9wNlVcZj8CYXMgKguDMUBNSu1f84TrtrmtVq/mATAXARlE6n -Cj6i8hsof7R5IXrc1DmYTrmnmSInSWQUMdX8ygiXMj8BYGiEW1QaIGmp0DlULbNz0PAHg9M1z0+b -0SGJ1eNU7bt5d4FdrR3iTqB4cFYJPxFJaoRM7kCwyUccylvSpZjmCIjcGDEmSAkUO3SJ6hMgG4zH -SNYIj3Gc4mNCJF1dNEryqbG6n+KV4I6KQCbo8MDQR3cijQmos36lT4Kd7yreO2JrWMg7cTIWeQtX -Mi53qd2TGR9EDZjozO2HnDWALuZkDXIaTpFEfGD/Ij7o7ZyBEB0Mg2xddjwo0w7H+w== - - - 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 -HG7unB8end9/9M7H3/j8Z7/41W//hV9+96c/+/CL733rBz/+4c9/9Tu/+4v/6O/947/7j/7Rg6cf -PH768Wj1JpSApJTcYOSHU6NQ8/3WZLp7cnpx/+GTDz/9+Mvf+dHP/9Kv/sq//7e++7O/8NkPfu/H -f/Drv/lnf+cf/tP/+J/8q//iH//zf/nHf+vP7j790PbbouwxrKFIbiWcNJprjldutIf7R+cXj96/ -de/p1tHJzTv3Tx8+f/by01//0V/71//Nf/3f/w//9h/8s3/23R/+5ODmw2Zrk2EKTMbmGE+Rys3G -3mRyR1XL6bRWyNd3D+9v7N/pr95sjfb66zefvvjOlz/++U9/8Zf+7j/4B7/3y7/8w9//1Y9/+eti -dQopBbijM2bB7FiFkeOuWfZAUcNKfdrqrY+mWxs7p6d33n356ff/8K/+ya//6I/++b/6z/7b/+7f -/ON//i8+/60fn95+bzI9yVtdji+ynAMIMswG1CwypKiCJFXqzcPV7QfN/m6zv/XRN7/447/9t//y -3/wbv/3z3//Zr/53kt7DS46rzBv+B761pJnpnKsr56quru7q6pxz7unpyTlqgrJGkpWzZVtOONvY -BmPABuMFYxtswAssOYMNBoPBLLvEZdnd99v3e897vqfEOXV0NLKnu6ru8/xC1b2/+9SNex68evd9 -Dzzx9Be//q2Pvvji3ffef+zcdU7KejyC28XSdERRa9HYmCyVk6leKFRMJFrN1tz+Aycnp6eOnbj9 -9gtXLt9x5yuf+/zv/vDnf/3jn//wxz+9+957zzz3Qqk0NmLCTCYKmk7XJ3K5ZbtNsFkJxCuIQoai -Mz4kjCAKResMG8tkWjs7J85dufP42as37nvoyQ9/5PCx8/3po43epijljLms/+Dmaa3XmFhb2jp5 -9OTVixc+9NRjb7z+2s/e+fmvf/ubt3/+03ffffe//va33/zuX774T1/+yMdf2Dh4e7m17kUiiDcU -BVcuJ1N6pgsWYnv39O3nL1+99uSTT37hzS9/6Z+//tLnXnvuxU98+Wtfe+sXv3rtjS996+vf+Nvf -/vb6l7/xoY9/+tiZ68nMaKE03R2sFWoTqpbLZSvzszPnz+4+9MDdH/vYh176zCf/+Vv//Mv33//W -Wz/+4je+8e0f/eRPf/rz//m///fP/wFn8rtv/fCHDzz5TGd8LRJrAWCShBTT0vVKZ2VlFY6t7Z2r -d9zx4Y9+5OXXPv38Zz71kZc+9fLrr/3grR/9/Bc/+/2//fZ//vf//PI37z/38U+cu3hnvjAmcUWG -yOqRfr607Ec11CdpShqAe2f74I0773rkiScfeebDDz31zOtvfvX7P3nrh2+/9ee//vkv//Gfv/jV -b37z29++/sWvbB+8mM1P83wppHY5vhBJjGrRRrs1s7i4//CR3fs/cN8Tzzz9sRdfeuWNN37w9k9/ -9qtfvvXuu7/49Xt/+ssf/9f/+z/Qrd//8c8/++qXc6VJu5MFTnS5eIcxQ1IhqYQSLOVz3Y39B+97 -6MH7Hn/o+c+8+MN3fvr2u7/4yne++cZX3/zl+++999tf/+Sdt/7wpz/8f//nf//m/V+/9MrLZy9c -S2fbDAN6G3M4CASRBC5eKU1Ojq8eOXTq7psPPPLEE5//0us/+tlPv/mD7375m1/77R9+/9f/+q/3 -3n/vl++987f//ttPfvGzDzz6eLe/UqgsKqGWy2VMfraYcY7SBTaqa+VqdQo0SW90+sDRE/c9/NCn -X/70W+/87Ne/+92bX//nn777i//1P//zp7/+9dOvvfrok4/fcee9mtbkuApLBAftyfXF/bcfOX79 -0pl777701OP3fvXNV//tX38DFf3L937+059+79XPfeLatXMrKyvZQjMS76BoxOeVGTIk0EEtEK7n -ywc3t2/edfPBhz7wyKMPfeL5577/g+999/vf+8Kbb3zjG1/701/+8qOfvf3Ka5999fOvXrp+c2Hl -aKu7GAhk43qtUBrN5hqpVHl2cmljZe3AxvI9V87+0xde/fKXX//6N7/8y/d+8Yd//+tbv3j3rZ// -7P33f/Uf//nv7//b+1/99lfuf/SehdXNaLIhBbKinAyIkWqxMTu9dGL39LGjx44ePHDzxtXXX//s -O+/8+N1f/+p7b7311W9+5Wfv/vhffvfee79+5ze/hmZ5+3Ovv3b1+l211gyBawSmhdRaPDlBkXGO -1qJqplGsb68vf/DhB978wue/8e1vvvz5z/7orR/+8c9/+ut//u2dX/74j3/47dvv/OiVVz7x8isv -Hdo9q0YqIIcArALBciTWjMZqg7HZmcnZY0eOfuiZJz710gufeeUfX/38yz/6yQ/+47//61/++Ie3 -fv7Wt7/z5p/++Lvf/O7917/0hQ8++VSrs4T4Q2DcHDba7RQQX1DgM7XKTKnQPbC188Gnn/zkZz75 -j5975Ydv//iP//6nP/7133/w9g/ffe+dP/7p3/71979966ff/9Wv3vrJW9955kNPXLl2PZ1pCmLM -7SGgtIJqXgsX4npleX79wQce/OKXvvTDt370re9+/f1/ee+Pf/nje+//+ue/evff//pn+Jzvfu+r -P/jRN37y9veeeeapE2evrRy4IASKJhPucckeF4chvMuOUZg82p2+/dTpDzz4wGc//+qrb8BofuYH -P/z2f/73f/7297/7IbTdT34AA/XSyy9cvHh+fXUnorfKlbWwlGhVuvVyo5TJjU+MLi7PT0/1N9en -77px4pFHrty448SFs0fKpVQoKNIkgyA0iggOG+Gw4S4HTvrFWCBRTpS71c5Yt7O9f21rc2VhdvTU -ibX77z316IOXrl09f/3G9ZPnzgympiN6WpJzkRho75LXzSIelkB5CmNBuBw7eHr//gO5ZKqdTx9c -m7l09vAD913+4Afv+vpXPvdTgJt3337vNz998dMfOXP++Pj0RFhLqKE8BdbVL6GoLPGRIwdOnT59 -tdEar1SaU73uxtzEmeP7X/zYw9/8xhfe/eU77//LL7/57S986Y2XPv/Zj77w7H1PPHDx8Nb+dnsi -rFfcbo4gwl4kYLGBr8HsdtLjohRWKSViB5bnH73z0hdeefGNL3329dc+8uMf/NOf//y7z3z6w9fP -HTyyf67XbJVKNRznnA6MpsJwoJgCB0UqLCnEwslmub02s3D15KFnnrj3kx9//J/eePGdd77/r7// -9V/+/fdv//jNF5576Mrlo41aEUNZ1B8kiajDDpLGmKJsMfkJJBBTCwk1MzU2sTQ/u7t75NKFMzeu -Xrjvzsuvffq5r3/tjc+98smXX/zwpz72+Odffv7xe66d3NnKpasUHfT4WJ9PwDGVYaOZzGhIzRJ+ -LqGltlc3b95594vPf/TZpx67ef3ac0898b3vfOMbX3/jsXvPfvShG889fu/500e3Vhf7rdFsttvp -b2uRttmMWS0Uhupej+Cy46iXycVLOytrN69d/NxrL73+xmefe/bxZ568/+UXP/K973z3U88/f8/V -KxtLK9VyjaMVDA24PbLTTjttiM9DoT6GxHhVzaVSrU57emZ2leYlxA/akvV4Wbeb8SMSQYScTmpo -n9Vu8aNemcCCfq9AoQHaOASWlmKRnBZK+b0Y4vX7fThLiwwT4ANZN6JY7bjLyWDGOgXV7sJHTOBq -UdwvIh4GQwRZAZMS4TglKCqUHxUpOhuLlvKZibHRg4ePLq4sJxIJGEe7A7PaUTAdIJVdLsHuYBxO -WhST4XCRZSM4LvOsGlV1sKNRNZRNxNKJZLFUHUzMRMKRlB4dbTTquWyYkzEvC64Zw0IME9diXYpN -7d3nALUTlEsyl9GkeDNXLifS6ZCaVEMbC4v9Rr6SiY61G8l4kWMVjtUoKuVHVLuVsFn8VrPXYnKb -Tb6/J1kxdDIg5Cu5QSZaKifyd129tHtgs5aOD+rVRr44023NdqqFZNHvJYaHLKZht82CDe9zDA+5 -rBYMsAvxBmg8okhZHWxWLJtK5EUu6Pf4JVZJasWwnCikymOtyYn2hMIL6UgyLEYpVHQ66BELMWIh -XR5FkkqBQJFhIoiP83uhc/WoXoOmFvlMo7k+t3xufPJoQIqhbk9ECmQiSVUI4X4ATByqSJRLzd7R -YKhntVK3/T8mEKI4prtdHIUqHBGIKtGMnkpGYtl4AeQ75ycEnAsKKVXOa2opojVdLugUORJti4Hq -3tvsUComk9dhJxAPR5Jxns+WCuM7R6+7EdnlBm2ZYrk8LxTBVxJE1OMNwB1AEeNZ2dCQHY4Rk9di -xlCfTJMxNVgTxQLPJCk6ZgRJOUibA/OhIR+iwz1nqRTmD1msiMtNub0CCBsClb0exumkCTrBSDkp -WAwEcl4v6fOSFCFhqEBRqihnEEwB748TcWilvcbiPg9oXZ8viGFhnFApWnO6GIeD9npFmw1zuUin -kyAwFTyyJOZpOsFyGRQNBuW4IGrDI7aRIbfPHaCpONA6xeTVyARBZsxmHDSwz8tbzIhlxOOy+hwW -j8Pi9nvoUCAnsGESE0ks5HLJ4L6tNvrvS8sddgFDI163aDNjTmOlkmBziG5f2OGSgeNIUivkeztb -xzOJot3sEPCASOoCqVFwOYBRQy6zyY/7dbMJ2XObyTTixdGw3c7AAS3v8SlwPixUvt71+4NwVkG1 -ksnNqmo9EixSfsXnZn0uery7xlIawB18FErmCK7KCjU5UMWIqMsre6Cjb4XfBoLtYGQ8mVvLllZa -Y7uqPma1AscJxUzP75P37rFajEQLWVWag/Hjzc4hgkwP7fNYRryF9BiGhvcNeWA0HQ4WRUIBuZrO -zMRj404bbRpy4T4gTcFuo7xu2ecNoVgcXDN8nRoeHR5GRkxuk9lltrgtZo8PfCuZYA== - - - jQfX4ySZSMZAC01wQpZhs36/hmJR0pjWHkRQ3e0L7t1rHRpywJfarDSBRjg6zXFZKL9Sfq5SXx8e -8Y2MuGHQKTYtB7tioAEfi/gCAhNpNmYZPm0y+cxmr9WK+HxyIj0fio1LwTrDJJLJajiS93g5+F27 -HQAz5EWigtTMFrb9MBBmv9cNRroFH2V3UFYbBlXn84cEqSgKFasRjEYClKGoCgjp94fgjrlcIoHH -1VCDZOMms9fjUQKBphKsk1TKg0QIumB3ymYLAeXncJB7jZULDpvZZzX7HDaMwMLQbn4kCCDpdEp7 -bsV9uN0BrzfidhuZAySZ8iGa3QZSQfUiISNJz0yZbTzcK03vJDJ9P6bClVpMPgrVoAKH9jqGjLXq -OJh3ryeohwY+j2Y2o3BYrfjwkNtqo+AOGxMM8HhIG4Sj026PwjC6qtUJJgm17bBQI8b8dgRHQrXi -MktHzSNemtRpruTyhBwuxWmkRWWV8JgUbHt9IRwPg0mptg/G0nMYnsLJtMMpm0yIImb7o4dRJLxv -rxMn4xSVFtisGij5kRCo93177C4bPjt5kCBiZgtFkAkEixJUJqB007kVQahZzZTNQvoRBVrDNOLx -eQSKTHBinRObAXWU40tGBCUSEKUYI8VNFsRmZ40UUKEshRqR2Fijt53KT9JcgpMKDJdXwu1AuEey -BTeiO26tb4Vmd3turfEf8hNYDMNiiD8sCgU5WB8eQYwyQCSMigW0LsHn7W4RfkzGKovLRwWlYoZ7 -6JVRDEo9DJ4Ihsbl4oAfD2ztTi9sQ2khAGtEkqbzFJXjhaoot6HaOSYWDpW9Xm542A1j4fcrJJ3g -5XokMa2oAxyLp1PjIa0O12JQsJtH0TAAC88XoRN9PpXGwtXSLMWkYATNJtRipj3eiMujudyqFu2D -6No35AKHQgL120mXk0J8sgUG3YiIDFFUBkDA5YazSqD+mMcbGjEjNgeL4OlguJfOTbFCzuEUjXwz -r+b2hkDeU3QCusNkJjm2SJOpvbdZh/aC/lAVZZTnq15P2MheNpHgJjg2Aefj88gOJ++8NRHF4w0a -kSYo3Bl9cvpIrb3gx8Nw5gydo4gkRaRIIuXxqPBbwKo+D+90Amwak7G9/ngiszK/dk+5uePyqnAT -OCGDYkZgGuJLGAus1Ho4VJHFsiiUCTzqdBhzUG1GYTtGhr3mEf/wkMFEHregqhU/GoFa5fisDeSH -AyhGMJae7YX/E/X5QogvdNs/mOAEcH8AxzSzhTNZhBEzt3fIv28YAxm5tXFmevXUiI2wOnmKr8mR -qVhhNVNdDyXGObEw1l45fu5ePx21uTmbS/AgMT+W4vhmUJu1uRTABJ9HuWUoAjSdZug0jsMNifnx -OCAJTqm0ECO4NEonaLEoqhWcTlB8PqD1Y+klQa4BdLN8EsGNhWABkDpKESPDPkwF5iUIA6OGhl1D -wx67g4XyY5i0JBQoCtgWB04BiAYeB2x3eUM+LE0yNU6siVJFCtTgMnW95vZwVisKHwUYghNJkkpr -odrmxhmOT42YEIsF9SMRkswyTJFhSziVglsHtvfokcupTM8oXQvqc4ugqXihDG3occsAqpJSISh9 -2OQ1mf02O+n2SjiVDISaCBZmuPTM8kk5XN+zz7Vnj9PllFBMx/F4UG3E4mMup2gZQUhUpdnkviHf -rQOBw+eLqmo7qnd5IStKRbdXNllwu5N1eSScSMFXl+r7J5bOMjzUmNTurpXr6wgStlhpk4mwWmiv -R6KIMDDmyLCHIGOJ9GwsPevHE8byK0+QU+r5xk53alcMlAGsSLoI95xmM04n43axdit1a6GfCvw+ -AqrPRhkLTFwi6g8jXsXl4C1G7gTj8YUWl84qcm7PHpvJhAGKKnKbwDI4lnK7gS59TgcHHzi0z2a3 -4aBVoCncXpUL1EGipFKjQb1qBn/kV/1UAueyoeQkJRYxOqGotfW18yeuPOKndJSIyGojok9E9Ylk -ckbWRoctJEPGJvsHJbm8bx/ACAWVjGPJULg3mD5TbmzE4/Ujx68ycpESsvHcZKa6kquvFVtbhc4h -MdTF6Xgy2njyiY8O5g9BS/p8ktcX8Pk1hitF47OC1HAaafAqgIbPCM9JY0TWj2dJqqiGRtVIz+UR -TSYPaswIMlZneP0ahifgYJicKJXyxQVRzEW0aljvIqjGi+WA1uOVup9KuXyqyxOEswXVdGsRbpDh -Cpo+ylApEIpquICgAT8SoEgd6sph5xC/RpBxkE8YGSPZDCvmgYKhi202EtS71YLTVJJh00GtXZ/Y -RdmMyWqkZABI+lEVtBmUn8sTAMahQW2i0NrYnr3uoWEEysPjVkmyKAh10CeCVOPFCsVmUTJO8zkQ -tx4jeEpn+bygVF1OXmCiVy4/IMkZAA2Tye/1KkDHNJUgiAhoLaeT49g0yyZJUoeTSWQm0pVFMdIO -pyZYsYiTsVC4iWG6aQS1WhifV8PxNM81RKHjdmsWK4ejkWi0B8oHtDRc18iwb3jIB6dHEPlQpJ/K -zILFsIJtMVaT8Yg3ZCwKs4kenybIVT0xAE0rCamgmrDZfTYH7nByRoCM33jxCrTl9EqsXMS5lAcL -h5MTcmQ0mpxqjx5tj59MFOc4LpVK9SPJUZKCTlT9mAK4PWIl4DPrtVVBNnJy/EiYMu5eXJKKxepy -NDWWy43vnr7JBPKskit11huDw82Jw/nmerqySvEFio33O4uvf+6rx87f7faJGKoKQlGU6onUUq64 -yfJVRakbTYrqxkJgLMNJHSUyncht1Xu3R1KzXvCbqBIO1xE0YneJNnCgRFSQy6DZKDYXjPSq1fmr -1x6dXLjd6QbvU9SSk2p8ild7wchkJDYHysTtDVBc7laKTsRY4+AOOW1GdIDXE0gl+pJUgNq2WhmK -iKrBCsPnebkmh1rlxnqmtOTHIy43oCJus5Kg6+RgNZ6fyzZ3KKnKBWqy2gX9ZrcTxrtCrQW/qMcn -E8lpKJUhI87dD98CCGC3g1UpcHyZ5Us0ZwTaMGJFCLZZuQaNbLsVho8RSbiiQLAS0erjY2sYFoB6 -BrASBZAKaSgwkxkdHvYIfI7nUvCNNivKUJFkuhdNj1JCTtX7jFBm2Hwo3KaZtJFkZaTmJhG/fisN -QLUbIXKJgFTJpCeBF7weGUGCDuDxEZQi0ziRppgswD5gGtCK2yPddpt52EjaAXGV5vmCFCjDtQPh -RvU2+PLhYZvNBkwhwaA4AfOxGHilSHyq2j0Sio5GUgMh1JAjnUC0F81OS6EOqItBben+u58Zmz8C -+hzMCwImxRcU5Uow3FbUts1Bux00jsecLslsJj1eAYS6nhyki4vJwhzJRBQ1VxtdNyYby3ljrUGs -ny0ttrrbEzO7W0fuYsW4DxXC4aaRmypW4KwQKBtC12L9WH7G6Q2YzLgem2mOnWxN7kZzcxRX9OEJ -NwJYVMwV5yS1RnIZms9wIsjXuhJpAo8HY81YttvoLcVyAxxXmu3ViaUL1f5xVm7ygRYcdpfc765f -u+vpbGFgsVGgP1GsjGGlZHIxVzwQT80ZKo7PKqEayBgLCFEHrSUmpuZO7559tNzaQonoysru1PRh -6HFeSOdqi6XeTnn08PjCxaXtBwu1Q6BCKToiKgWciYGKA97E6bzdCL6Q7A7GWB5uxrxeoP6w22Ms -4fSTaS7Yjlc2wpklP5nx46qiVni5BDhGc1lBLga0ZrayqOpt0DCALWDNbDbGbcxwYHy+gNcXNFtw -mw3csWK3+t3gqUkdWD4cG+ipGYovk2wxEOpX2oczhXW7Qxwe9vnROMOVcTIjiGXUkMpxioFSqQAS -UlTcZjXeZhqJPV4wdxmWLYS1DhjY224zWc2oxeQ3jyAAZeAsWA6ceIZhCyQRd9qBo0W7gecoyDyK -zfBSOV2cTxUWJsaP3HHXhyPxDiNk8/X9sQwMXLszenh0cCxbXbN7ZbMZo+gkBbyJRkShRDEZo5ws -UNLZbHEap2JwvYKQDUbaWmKQLC2q0TFFKY+PbV6991m3T4ZblCosFY3GXyg2NwqNDT01haCqLAMl -tW12sPYUTsSgwOLp+fnNa+2p4z4s4rDTBBV1I6rNyZttJICMoLTSpf3za9f1+Ggk1kuXZjA6Yrah -KKGFY52Ztduv3PvUqSuP9maOcYF8Jl7dOnBR0ZsmG41SiWR+OlWc45VOurDYn9xUQgWXO5gtb2mx -aZLOS3JTCNTdPgUIt1RZqLfX4azAgINEl9V6INTg5KLdLXl8yujUwVx11oPJWqzVmz48vnKyNbFV -7uyPZWe4QJFlYx//xOtnL9+LkiqIQy02W+oez7cOycFRq42DMeq1lze2ruzZC6Y1JKq9dGOzOXe6 -M39OLyy7sWgoXPnI869ubp+1WClwteHooNo7unX8wfbYSSM4btgpcjGaTo6YMYuNhopl+Bovt8Gd -gU1wO2mSCFN03Iuo0MXF9k5jYndu++6lQ/d3Jk6wXGHfPqQ3uhOO9OxG1CoGXwF3AGiiM3k6kZl3 -G+kfIuhVngPvo4CzAD1md2sgaBHMSOEG9T4E+seE4X4N8QVJIgEy249EgSt9XtDzYQBPggjCUDqg -OL0yRkXA40RTE6XmMkbrnFQstXeytc1oZqE1eiSSmDLicG00jiqSnPX54c7LTiPAU7JaeY9HD4Ll -FIsAmCKX1fQagslev3RrGlimUFvtz90+WD7Hscleb73cXPZTGqivWHY6nBhnxGqhutYYPRRJjIFK -4fhiKjurx8eiiUE40Wflug+NcRx0bmJoxLdvBPH61HR2NplbTBRWIskpgooDWOUqc6Ja9vpVMVAF -Aqq1lg7tXj914YG5tdtpMd1uzl2/64lUzkj2zlc2Dp18+MZDL01s3C1FJlAqDkPDUJlsfsFm5Lzh -fiMnUHO6ZYyIq5G+kQ9gJHJzfr/ucos+NIJSKTnciiQmM5WlYKTR7MwfOn41GG4QdNSPBwgug/M5 -LlAo1BYOnrovXRg3Ho+g4UZ/F2g0EG7bnbLdySOIkk2NdXtbQIsoqtNCgRHztFBSIuNKbCxVnu3P -Hjt319O96SPDJtKPx0LRgax2SCYDHmpkhAZICUhFUczu2euwuwQ5PIimVgPhgRIeAzkEXpuiDaj0 -Y+H1Q1fO3Hh89fC1wcJZLTkNUD9iBu/DXLnzo7nSPEhNvz+maj3EH6eZQjo/D94W+sjr4fP5gSSk -wTbuAQ9opiihrufW4vm1ZG4FxzI+b1hRmn6fNrzPaRrBb4WgkuAlQRQ5ncYKoN5gHdQsnJtxsVgI -aiMYm5I0Y2IwlJakNQhjilpGDPa4AOBYhcB0jo5SZARKCAcIRdMUWYbDj2b9WBpg1uHgqqWFdGFg -pOpZUPDCvFQrNTcbgyO5+rym5s+dfWB2adeDBhK56bn1q5NLlyvtQ4OZ02PzZ2StbbaSwVALrK4f -CNcvwy0l6JIU6EE98IHSMICwsfeNHtJaFJfF6BTNFzEqIwSM1ZG0kGOEvBYdZbiUKA== - - - JBvd1fbEoebEwUJjfm751PjsMSVU16Kdene70dvsTGypiTE3Gjdin11iVOvk8vMmCzliwjmhrGhj -AbULeokX6wDIbpdEknGfEUGJM3wxmpruzZyqdg8nstOKUtjeOfXw0y8Ab8I9RDFNCvbKze0Dx+89 -c8cznZkTULpODx9Ld0PxvgdRb202RFjsnB/VwZgg/ojbLXBCDjFyiQmXR+WkZiI3v3X8xt2PfvL0 -nR+Jl5atTokV8nArPEgIRgpYDMfSoljnhToYnKFhL0BTODZNGcnwMpggGDsg6wCIdkIHBBib3O4N -NpLZ8UhympHaJF+mhQpQSXfqHEqmbXZR1ccltW6kK9g4t0c18u2HUcSvFkoLiE/et8e09zazC+6A -sQh6gpMbCBYdGmGcHg1cldlkPAFz2EWnM+B0BcBDoWjUiNHGo5nKIo3r2cwYTkSsdgouIZ5fVeNz -crifKK1CHwHbSsZzqibB5ODqQPMDVDodvNMheFwy2Ba47W6nCLoUSv1WLCEfDrecRlyVFwbC6uDg -TBihIBlbZlSjsUajvRYKNzguPT67O7l8uja6Pxit01wMo3Qfqnm9QUWpEljY5WRBGcrB8UzhQLW1 -Oz532W+EPzMMnQxF2iCNHC4O7LkPLEOwp2p9UL+cmO+MrjdbKxQZxv1yvji1sP/SwdMPHDl939X7 -Plrr7Yhi5cKJu+594GkhkEOwMEIkGLAM2aXO2O70/AUUy+wd8g0DhhApVR9ToJHRGHS3zUKD2AYv -5jb2PJICoXZQ6wRA3dEpnIiLQi5fmhmsnqaEotsdLJXXm+3jmdz81NzuzMppVio6XUJILd585Llg -dHRkhPJ4NU4ETd6n2JLLo4DUB/rQoj1wcHYnwwvFWGo6mZ/rTR46fv6+pa2LbKAaDrdPnLwBvs/t -VYLhTiI9ncktpLJLnNAy9sOyUzQVBaEFvDY8Avo5lC4u1fo7qeICKDQUU+OJjtPF2Z0slBY0wdrR -+wbLl+vjx0musHefH/dHj93+ICWkgRGg4F1e3Ysk5eBYrrSVL+8MG8+4HC4nSVLR4RHk1uZuogfc -OlNS9SleasI32q2Y3y+DTbbbWASNkgz42cbM6pndK4+74YrYFIKEEMSYvaZobUXvh1PzWmYJZ7ME -Hi0WZhkOrHeAB5zn86JUFgRAqrTHLYP3HxqyDw+7h4bcZiPtnLwVWSZ6XEECi+FoyOWkBSEfCDfi -2Yl4frrc2QrHx8ALR+OjWqxKMEGKVSlGE4QML+aCalPXx70ga108Q0ZQLORw0iBQOTZDUkbEn8+n -sXQOnDV4Imh2j1cG8ATCslhZoGaOL6Uy08FwHcOCJB4MRQpBPR8v9ZuTW2Nzx0vVxUJhdnXtTKE6 -RTIxPd7PVTcEtR1Nz2TK64o25fMlESQqy2VeyIK4coA3tLG3xEOIJtPgL2i6iKERUNfDJufeIZvX -K4e1XjQ+W6xuz2/dARosqBTXNy9oyQHAl9PFe28t7qDprB4dLTdXRyy02UTybBlQ0eZgh0a8cDhc -PCcUQpEeCqXuE6D1KCrmcgkg5Nx+xWvMAs21uwen5o6D5xKlXLO7TTMZj1uyWxnrrXBvu42i6ajT -SWNE2OMLUXQurPclOJlIh5XKXKDS7m/zYp7lEq3uan10P/wLSmfd/pAHCUqBWiQOjnvVCBoCA6i2 -IvFZLTqbzC9KSstmD0Lt2W1Mp7kwNbnfiIkzY25vkFfqyfJKpXMwEOoODfu1UC2X65pN3n17HYAG -IAz0WE8KFKARHDbG41Hh4IU8JxVoNgm+LF1eSxZWW4NT6dKaGu16UVkNVZudnYBa92NRpysEptVp -bJZHWa2ExYKbLdjf92X4exoegaVQn0769VioMjt3mGBjrJhuTR48cu6xo5ee7MydVmLjFJsMK9nF -ma25uZOyUnV7RadbQIy3jREMDelaDUMVl4sMBrIBKQuGBcOTPn/K7gjeKmDcYbyzI0dGABsxQFFw -N4LY4Pka+AgfGuT4ZL27MDm3ubj/1Oqhy2s7F7eP3TG5cDJTX8PoWKU8tX/jDCckPD5BkAuy0qLZ -mqyMomjS4wkCF4O59nkUxKehaAJFoh6QWF4ZbjLHZAS5xHCxgJLzY0GcjBJ0GqfTvFJVtXq9sXj8 -5N1SsCxKeXAWDJeTg5VYfDIY7NBMDsRwVG9USnN2IwfbY7PzXp8mSjVOKHF8gcD1cLgKqAv/FXQU -WPJkdqE9ONqbPra+cwP+Dr3f6SyvbJz9e7icHwlixlQcGvFKLBvH0WCpOi1IWQAxKDxoNzFYjxcX -mzOnV7bujCf6q8tHv/TP39djfatNptk6eIpCZeXslSdOXfqgFBrdN4RC1whCEb4F2spkZAwydrsa -UEZDkUFAqSK+AAgnl5NzuXi7k7O5eJNNMBsbeShquC3IOYeLBhNtt5NWK2Y15p5xqDGdA3g/TtA5 -QQFnVAXDlassRHPj8fxMobUZycyKWgcUcruztbZ5Z1Br2owIbiP8hKWzGBbzeoJAiMCSRjK5sTka -bVy7W/W6Ajii6lqp018KRxu15sLc5tlcfTZXX4gV5lmljVGpSKiysXJqcfkKemsTDZebI8kkL1Ro -NiNJJZJKSGI2nx8niDB4bS+gB1NluTrF5O23wp+NUbBR0ONAK7fehoteX5jmkoJSgPGtNxae/ehn -X/7Ctybmj8C/AGzGMlOdwaFKY3Wstz03c0hVc2qwqASrcqCqqG2CzNtt8vCQscWSaQSB0nI6OIvx -Dss7POSymFGbBcdRLRRq9Ua355ZO2JwMqBrE2JhPE9VqurCULa0qoSZOaL3eWrk67zFS+nkcB0Vq -vAIDY57L9EuFCdOwzzyC4lgU/J0fUS0WyumEnlJYNh2ONKEwjMeDZEoKlGLpgaI1ebHICRWA7l53 -dTC+bbOxcBo0FQMmdTt5v0+miIgfCcTiLRY88ogHRUDzRHipGNBaKgCIXMKxYC5dP336DoBHlq/n -izuF8nY43E2lBrHEKEFnQYTLfK6Ym4C2Ghp239qzICWIY3OLd8+u3pCUpslEgGUAZve42D17bXuN -TTR4hzNMEDkwXBgdRXDV7RH27XP8HdwYPpsozIHpA68dzy/pqTmaK6Syk1qi5SUDSrRR7m52xo9u -HLzr1MUnL9x4dvvYfayQ4fg0yAwEAdcZsliJ4WGP2YS4XYCoDEWnnEZODgtU4nHxJBbEcEVU063e -8rHTdw0WDnrhRyDH/GK5eQhQV1FrkWhHVOpOj0yyKZyK+pAgQDrNFgWxVm1sNbtg1TtWG48BszCA -6hWSyrs9IatDsTqVWxv8STihQ6u6XCz0i8fLR2LNhdWTq1vnys2FhZVj28cuBfUyyyciiVFVby2u -neoODmJEFPFLwWB6efl4NjsKvwUO2uMJGc8SkThDpxFv0OeRzSa/xQjKM8Ie4RotZj9Igmisn0xP -JlIDUUqvb1xodTdRWudDtXLvSGviVLKwqIZbc4snq/VFgCm4IfHkRDw+IQpFIEe7gzaZfHtus7ns -LIoYmDw0bDeZUJ83iCBB0Et2442JQOJxh+FVfT4/8GkadEKhvBQKGW+v4HwoIhYMFI0Mt2EvwKnH -JeBomMCMd9xWi99pxylcczgA2DGTBQc5IfFJkdMlMcmyyWi8e+n6E1sHr3q8QRxPCkIFOD1TWAQF -S6ASS4dvJT/jBBE3HoeyJZ4tahHQ4Um7lZSEmB4ug8K5bY/N4zNoDpSP2dgJC7PaSJdHBN4xjXht -NhyECqAcOBqPV6ENt5XAqTgjFKH18tVlVStsH7k4u3J7tb7SG+zMrN7en9tN5GdZPpPNDZRQ8dbM -HAXuwPCQMeOIQI1kMFUF25KrNTYQLGI2I16PQLOpTHlu89iNYxcf6YztXL784NWbz0SSfZxKknSW -oNKCXNMT09XOid7cZS01yfGpRnN/vr4ainZktQFC2mY38o2DwT64j71Drr37XMNmguRqnDKK04Vb -MX0Sy2QzhXmKiYKeTGVGDx25+PjTzx89fSNdnQ8lBpxYWt28srj/ghwu+YlgWO/1BgfK1QVNa2Sz -PUlKwHCA86XoNOgZu8PYY9TYPcejGukNGBjD4NA+A7VcDkaWimqoR7NlnEjrenVp5Wgy3aY4XU/3 -J1fPrh2+oztzotw7KoW7LrecT42fPHc/RoctNsxtTE4Gm28E6NktrN+jBvjc9MT22sa5fftc+/ba -4POBBEPRAdwQnEgAdlXKMyvrZ8ELI/4wxUA7x2k6jvvVUAhQPQ4wzlERUco6HbTDYcycsZpx+Bav -R0K8smnE6UcEjouDG4JKK5TG59eOTy/uxnNztdZ+QCqOz8ytnKHpjNMpGfn/NtZh431IRAg0aCYF -PWU2+QAJoW59HonEIwQK+geHLzWPICCDOTa+d4917x7zntvMQ/vsUNXA0QEhy5JarTqTAONgJxQ5 -6/EFWCEnhppaHJT2YmuwW+/snx+sfunL390+ehk8oxyspQrT0dQEXLgamSC5jMcncXRsafF2PxYZ -GXZYzE6nA3PYKUBCUJWgZkUpJUgZDI9yQjEU79a7K72JrXJl6vq1ey7deFBLNCk+n8wuJ1ILtdbB -xc27JufPjk0dD0W6yVj3wKGLUijpRsFa6giaBp5S1J4Y6Hh8YbtTAFMGDsXikC3GRmA4WCTwWdHE -rBabBLN2cOfC6Ni6rBa1xGi2slbvHZ1avLhz9N7TN56t9bcb7aVjt98RSU2G9Zai1hk2A74YVDHg -oRJoe3yyzW50nA/RZKmrqmNg8P1+3W4zMpk5Jme1Asj4QGQiSNLIz/QFjddDQj6kN1kpTXNxuFc+ -NCarzbml04OJA1AbldoEyUYEKamFay5jEANud8jpkD1OlcJi9fJCr7t/6NZDJBQNgB5AiTgjVRip -DK3XH9ucmNwRxBzPA1FW1HBVkgsME1dCRjISSUQrhXEYR7sdt1kxqCgChUbQvG7JZiYA03StnEoa -63F4Wu+Nr+8cv7Jz4qaWmiXZEoImlpdPfv6LXytk+iAg7TaaoVOSUJOktiA13B4ZZIYSKIxOHtGj -TYedgHKymXCXnfZ7JcwXUOUMRYUB2DkmazEbKbtDQ+AmONSnuu2i3xsC6o/HujduPuF0MQSlM2JW -Cjcjmcl0eTFbnFyY2Xr8qU/2BhtA9I3OFtBiLD0FpcWIQF4gIbioWv7Agy9KWnXPnpHhIevIsNsC -V2RngVl4JjZan9y9/bqiVXygCqQCF8hFEu1UYdAaXyu15yk+EcuMFRsbktLQ9L4WG7BiPhiqi1JF -j4xWG4tyKJXINSS14fKoQAooodldMjhfms5JchMcLkamLA5x3zACosuL6kq4y/B5gc9urJ3p9deU -cCWanqh0dnrTJxY3Lh09dXN8aTeWHZ+ePfj8y28Go11QRwBlglzRE31VG5fk0UCwh+JaQCnVW/tF -uWQ8pXEqf08EhYMksyxXNhuvs8kRkw9qzO0JwGnwcj2RnW+OHg6EYFzSg7HNYnmB4Q== - - - Mt3++tjklgAuyRfAyRg4IEks2G08qEH4WI8n7HWHvA4BWB7gwjRCqGotoOTtwGJWRg51ujOn8o0N -Ve8ieNTnDzday3q8jhE6QaX02FimMBeJDiQR+DECFeV0MDQVcTkZp/GiLeLzKjZjOkSAvrVyDbhS -lvLw4XqyO71yZmXn6vrOte3DN7aPXB/05xgSbGmIphLG3E6PsWcTQaSM2RpELKK1C8X5SLjqtJGo -N0D4NZeNxpEg4Vc9TtpqRmkqp+tTXqA8OmRsILUPcTtEhx30SRqEqyiWYtEGhqsUHcXJsCDl4rmJ -8fnjm0eubB65Mb56BqMNyB2fPSGoNQI6hcniZIpmcxyXBn0+mFgH57h3j8VppXxu1eWAy2TdLg7x -cpV8Y/PwGSaQ9KChWG42qLfhkxuTBzOt/WygLEmZk7tX1zbPgLJCUcCNQjQ+OTl9fGHx9nhyUgxU -mpWxD334hdbYgT232a02wg1I4o9GY2ON1o4aGfP6lI3Ni5FEZ9+I12KjvMAyuJFZJwVr8fSgXJ5a -XT06vXjMhwdFFW5pJxytS6FCpbl4aPfOk1eeYCQg/bl8fY3kCggawciEB4m4fcZ77Ux+Lluc8yLS -8AhC06mIZnhGFIm73eERE2MyU16fPGx2O900hmvh6CBeWCo0NovNTXDNuVT/0cdeOHbmPpdbUiP1 -WHagpQaq3gPcRvyq1ysF5Eqnd5jlSmYzZTyvNp4NckNDPgxNhELd8bGNazceZfkiKEkl3BLVlg9P -g87MlteWd+4Mx1ozswcuX3+sPbrpcivG9EifbgTvY1GSNN73+Tw8TWggpJ0uIyJ7xETanbLXHw3p -k+XaRiLZGYzvXzlw+fC5Bw6fu3/z+PVwvOdGgpyQKdeX24MDUACKWgK3S5BJDDeA2m7lnHbBaWMA -poqZKVWp7r3Nahrxedy823hfzLndoAxlls2tb190uQP/8A8Ok4kEnSwrnbA+gPHau9frcvMIqvhx -hWJjslYpd/dPb1xsT50Swn0hVI1lJ0vtDZyMa1ovkZmLZWaSuUVF76BUxGI3AlFdDsHrEu1WClBx -aNgDleBHVQQLu3wBh4cPhMtKrErweqIwPrF8pthcK9aXm6Pb1RaYqQLoZ7+xgKXAg/sm4yQVZ/mU -KGc77fmz5+/Woq2hfU6C0NVwU5TLCKrfSu2L41QslR1nxDQAiM0OAhKISZeUMlQviMBSvrOxcbg3 -vuLHlHx1aW7j6vax+/cfvGNi/mh/+lA03U/GWs++8Opdj33C2FwMi9Y7O/Mr10qVQ6XKwVCk7/Ep -FiuaTDRFKQdjtG/ICHm2WGWXR8epfDI9cf7KfdduPg6m1ebkXUjQTybEYK3eXmt2DlU6x3AuD1WX -Ls8CVmNUjKQzOJn0+QF7w53BMTnUsDpYFNfBj99ScSrUMAAgSFaSDGcLYyCrXC5ZDFaLjbX22JHV -rYvTiydBcwbk1NVLN1/9wlfavQWbXWDZEqAoz1dRLAbD6nSJAp8jyagFXLZHEG7dK06qlFrbSzt3 -5ktza0uHPvbxf1xc3Z3ff2712N2d+bPtmVML2zfWD1zaPHix1FiuVGe/+NXvP/jYx3AsFJRLgUAD -EIylkpFwS5VrPk9o3z4UHCsIoZFhwy/vvc02vM9rGEl/MhDqSUo9X5gNBMusWJDDbUFtylpPjU24 -PJKo5NOFiXZ/MxCuFBoro3MnZvdfnN28Or56KdfaVqL9ZHxwcvee7cPXGTHPCuVCfT1TXpVC07w4 -5vXqVisFNsrhgH5hzLemsXlh1MgYOL5UYSpZHK80ZzYOX95/5Mru+XsW9p8pttbZQA0j4yBUeKHg -9wddLsbrC/FCtdk92J84kczOMgJIdAEB3kEUMFbQjCSgpdQKReaSmSUpWIWRdbg4ko46XZzDSTNc -Qgk30vnJUm0W/lS1OsPopfpiq7/d7K0nMlPZ8kKuMh8M1xKxxuGj5xfWj6B4KJ6ayNfm49mxYKTD -STWnOwCtgSHy0SOXSqVp4C+bTfR64wiSRvxpjy+SzU1cvHz/YGK/xYLTbEZLTSVLy72pE+euffDu -R16a238Dp7Lt+uyx3SuClIIayxWXR6fOTy1er7ROhqN9n1/xI8qZ2++q1leNOcxWGty0H4uDQ08W -Fqq9Q2BVOq3FiclNwHOSSnJyWVBq+eLsxPzJWncnkeoDbObzA0WtmI3dezGrlSGZfEDthrW+xxO0 -2xk5WCm39gtyCdQ4zaVYKevHVFUtlyozspIbmzl65OyD9f5OpjQjKkU4Q4aOR/Tm0VN3P/ahT88v -nwJjpYb6LFvwuGWvm7GZUfOIEWhvGmE0fQwG4rbbLCPDiNVCOW1gGTSaK8P5I0g4FKwBHeNUojq6 -s7F739GLT44tnAXrUW2trW1fPXvl8amZw+evPTKzdjJVnRpbPAGKKV5e1ZNAMRfPXHh0cuGEpNa1 -2HipuZYrLyn6JEqk/77bwsiwj8B1HA+7jZm0DE5GOakgBEqx7EQiN9g+dOns9YfjhX6hOdeZgu7e -ylRW691jg5kL+coagodQXBWVKi3kg1onFJuQw+Oh+CwfaBNE2mu8d2NJOkFyebdfR8mcEUXLZJzG -1gbxULiGGk9WqVsLz8c648cnFm4vNDYYoSTJud74ZqY4IBk9kZ+ZWTt/4sKjm8fvSZbm1GidYFSe -j84v7irhHEapvFKihaIBm1yKJqKlwng02gTd6DZS8Y3NWQAwvT4tnhyUq/Mcb6xKIAhQ7HVZrQTU -Urm5MLt2OlNZRAl9c+nwgw9/SNdLJKm3R4+1+sdL1fVIbMphPJ8hwOJdPHdPu7NqMjaZNTJUlXAv -XVhu9I+W29ssE7925d4z56/Z7AT0Wq6yNrVy6cz1Z45deipeWPEiGoGrz7/w6c3NUw63/PcdRlRt -IpZaYtiSyYQiPrnb2yjWVy1WyusN+lFjvoEQqESTU1p8IIqZS9cevPmBD8diXcQfkgJVPTFeqCyt -bp0/f+OD/akTrFCl6awcaLqMzaM9e/ZY4TJtVhbQlaQKLld4314X4pUyqXGwkxYT2AcO8ceAFp2u -IEtnQdfB3VO0ZqW10egdooWqEiy2+we6k0eAMo7vXr33kWdbg/VIur977qGr972wcfSB+ZUrDzz6 -mbm1y8Fwu5Sb2Tl8ZzTdtbt4t1cFtSZwccQnOI3diJSkXu+P7heEtNvN+7GQqJRz9dVKf2dm9ez4 -0olQrL60cWJ09kiuuZptrGnpaTHUYOSiFGnmastaeuAjNYJP++HqtH6quonyVadXx+gcrzZi2RmS -y/JqhVObJFfhpSrNFWnWsLdujwStRzFRgglDwS9s3rGwfUd/9vZabydbWYKhjyda60euRHODRH5y -but6rrWlxEYD4Ro41uWVXYxQnC42U1hUI6MclwuFm35/xOUSaDqqRZocX9y71zNivJuTeTFdrK6q -WtvrDTntXFRvYRj8Lu7xMLXW4uUbj12549GF9dPZ3GQoXPV6ORwNiEIW3JbZ2AuYpZlEubZYLs8l -k32Hgx4acoPr8fuNDBOSivBChqR1mgxVy4OwljWbvaDtZ9bO7N+9a3zheDI/SzJFn0/jufhDj31w -du6gwx2wWBkjWMbYHsJ4AgNyjsDD1dqsGqrsuc0BPpQi04FgQ1bbcqhrvFXX6/fc98j1Ox8VBGDP -1MTM+dbY8Vx5AcBQj4+haNxmLAHg251tioyZTBiOxni+xjJZioj6EW3fPq/LQY11lz768c9Zzdgw -VJ2NBUWhqJ1YfDoR6/F0eHxyTQ5kgbNori6E+iQhVxoLrbGd7sROc3Q9lZ8IabV6c3nl4KWl7ZPd -ifVMcSaeASRpg+fVI43+YEtRq8ZUFj7HsWmGikBpGckAPgn+znNJh4N0OihQhpFYd2b57PGLT6wd -vN6fPrg4t/m1r37r2t2PqPFOJD1Z7hxMFZeLjc3F/VdPXXpsbv1cq7dx14PPBmN9tz8Szc6Uuwfq -/ZNbu49tnXp4cvVCp7Px2c9/69lPfsGHR+0u5dYeeQpKpQORsWR2od5YvHzl7vVDFzozR8aXT3Zn -Dqers2NzR2aWTh4/c+/lez+YLc/V26sXbzx198MfO3jq5ujMiVhmkpNKnFCRlI7LC9jIQJv7/OCP -0qJUC2ktls9zcs3t1QSx7EcDDheGGqKuGQi3JbmK43GgJyVYmJg5HNQqqUyz0ZzKlWZD0UlGqNF0 -gabS4Lz+vos0lASCBHEi7nJJJhNYaY4ik6hfA7qn6TjNxBk2IQdLwVATVJnFRni8AgH2zQ/mXQ4E -s9F4uz95aHb5jBquk3QEwYw1Hbdm3BFeY2JVhGUzIb3rRzW3S3DaeUBap0Nw2Bkf+D5/qNJem105 -1Z04GE1NEUzG4eTVQDEW7eC4DmWG4wmweyG1wdBJD9QnFf/7Ki2fWxnehwztdQ/tc8GPOKqSmPEG -jaJi+/Y4XA7WZiWN7RFHfLdewbBOOyUIKZIKQ6ckc9OpwqLIa7nCeLmx0B5sl1qbkXhflvPgHLPl -SSGgc2IwqOUlpZAuLOZrG+D1XMYE17ASqMmB0q01toSxBtAjkkTM7eThYs0mHxhhkoyQlC4Fi/Hc -VK21PjV3dGXl4PnLd84tH2r19++cuHd5+85jZx7ePHSt2lwI6xU92qxVZ07cfoeWAL8wNT5/annz -4ujMbqG+EE33FL2cz/au33j43PUH/IQeiU8qWj+RXdg6/uD+4w8UqwvTY2uvv/HlyzcfjCS7hdpC -Z2p7fOHQxbsf+9jLb37mze986KXXT52++6UXX3vogy/E8zPx3Ew4MZWvbswsXTpx4enl7ftYsSIJ -2cHkIWgitzfo9sgEHQPzGIpP96fPxtKTIOpGxxZluaCG23p6TNGbICalYKPdP3T41AeEQFrTC5FY -g1dq7bGjY7Pn9dQSiuUJKh+KDgLhDni3oJKBegBu9bhDDmfAeKdg4xg2W66tClLBiwRBD0wtnm+N -HwhGOzKYxGDRj4kUF0EJxYdwNBPmpZQgF0SlENSqvJRzezghkF3ZOluuzYL2EwNVP6ICffi8qiTV -EJ9is5EAAlBaXr/CCGk1NijWd6Rgm+WyIpcQecNaBtWqyylZzBTDJEJagxfLgG8gI71gMYYQh50H -nYNCxboDGBq222jQ1cbMQKdIkzH40WaloHfMVsblBVUTZYQsxSW1WLPUWETxWDpWSme7gpyKJtpa -bEzV+po+mslOp3ITvBgJBHQ1UqAYPRTpaMmpgNYBGmLZfEwfJJNjdhvlcfGYP+jzgSbhTSPeW5lC -XhQJg+/DsDAvZjgp3+pubB28cmj3WrW7KASS0UR9Zmk3ne8Xy/10bpQTM1CEwWBNVet6tA0tnCtN -VVtLAbXIiAWM1AkmGgzl9Ug5XxyPpdpGCGQV6m0cumBy9lhndC0dLw9ag5s375te2h/WipPTO2eu -PXD1/sfvfvTDNx5++uoHHj1y9trc0uaNu+45cfbm1MzR2y8+Mrl8cXrlysrm1emFEw== - - - YFopJp6INu595OMzqydGzLjVRrF8Rg61MtXt9vguJ6ZlMfnQI89oWhUEkg/Xo2CcW5urB+46cOrR -ydXLopQ+cfziI49/tDPYJNiMFGqTQoUWm6MTJw+ffrwxOIIR2uXL97Z6q3anYGyJ7gz4sQTFFts9 -0CEn1VB9fLA5v3q2M3ao2l0TQxWUiPNySYk0Kt11LlD0+Hi4LlZICFKWYiNgQCg2FYq2xhdO3fHo -p/rThxWlrMVGEWORCGO80nUZz7vAMtRba4KYl+V0KjMqh9r10WOh+CTFgnUC+K1Kch3ozO0OUlRS -j3eS2YEYKGNEzNgmzwKI5IOBxokYYKyxgMhsTGYzG9MIjR3uQMwPDSEoqhv7T41gHr+mRrt6ejKc -6KuRdiDUcrnVUCBFs7rDReNUiJeyyexMtryWLoEBrMqBdCrdVPWq1ydGot1q52CxsVXrHLgVSmnk -79mteCRYisINdzEmk8c04gEQAy9Mk0DQaY7ONNurJBuV5EwEKrm9osa7QrAQ0ltVkKx8zO02JgKx -QiWTX86U1tVIH8N01B8M6y1WzJtttA/RWDYN3RRL9WWljOG6y83bbARD66AKnC5jJglFqKqoZ6PF -fKYtSYlwMN1sTI5OLDZHJ7OFnqpXwqlWujxZ68xOLR8s1hcmJjbO3vHo9PoZuJOqWmRpHUNlzMdk -Y5Wt7bOlxhzoZy3cSyWm9OhoINhECWB8IigFd3aOEqTO8jU9OVttba8cuGPz2I25jfOx9HhAiN9z -1/3f+uFPN49cosVSprpe7B6d2Lh5+d7nt49cq7VmdT335NPP7Ry94vYGwNwF9Ylsbas7cXL3/FPZ -4mwq1rr//qcv3v2UzSmCPfEgIUGqLu+/evr6M6fuejaWm2s25h955h9rrWWPR/YisqxW651D+4/d -c+nmcxNzZ8FYnbv4ULE8N2TszoPYbByKJqAq8oW52aXTspi7eP7GS6+8KUp5WqiH4jPw7Vpyfnv3 -4RNXP1xtH0IR7fqNx6/d80Qi3bPYKJMFhz89ngCOJXihOWLstUodOXD20oWbACB799r27rHd9g/2 -vXsRjzemRedQf3hm/lBvbB1saSAEuFfAiLgfTzk8MHYZMFkkEdK0kt8vI/B3JqFGe5nSUnews7R1 -IZIew/FgPj8VTQ6MPU+9CuhGq401pkfSuiKl/F7W7UA5OuB2Yk4nhVEJnMmAnSGpDE6l3F5BVUsg -4ZoTh/Yfv2th+0p37kyisOpwsSgiqmoF8RuP/m45fd7rDvBcLlucY/g8dEQyMQqn5EUkuNtWhwBu -0Yjv84cVseA05pOI2cIMyF1FKrBUwucJkKgK4JNOdxlOczpRmo4A4AQj5f70gfUDF2aXdyPRVirV -jia6BBkR+LiiZDkmRqAKR4YYCn6FNVtw8FYsnYGWJ/Ag6v//SXrPJkmy60rwDwzRVZUidIRrrbV7 -uHtoLTMjIiO1rswskaV1VZdo3WjJbjSARqOhCdUQBAhBgAMxS4IgMYQigB0MSM7OkMshubazs2Zr -M2v7ba8XzcLKqiojMvy9d+6557i/d6+VzSiaVBLZPEe7YMkhwCWxCoKZZlxeDAQh1I16KeiPF3b6 -w13ICHDxy5u3euNzxcpINyuaFjpWmLdCQytHz+7jnCSUNbhgoUBRNoYqWE6E9BQWlxRrMZ0xCpWt -cnPP8Uarm9d2z93vjI4Yxm1Xh5evPKg31hgqLFXWC5VVx1/QzLrlNMGVg5NVtQbNBPOPm1OAVvTy -q2Fx2zAHohBaqt/rTKcrR9EpxfZhoXnYX7ndn16vNDeDyhovFFlCPjq8fubCA1WrgxS0nUWGBfUV -6mozlWBTcdozmm+8/rEPvv1J8DJRf9W4nEJ8RmpXWkfl+q5rVr/w5a+9+aGPpxLcqZNIKinLSq/W -vTQ9fC6TUbIpThZgHQc0ZQNpQEqCyQftN145BiHEwexJwd7O5W5vK4foGGqDiOXFCkwOjgqZJJGM -IXiO1EQVQ1AcoUSp0Fq8aAdrur3Ey02RdzeWjy5eeqpQXdbtTlAGs7xLMrVcTuFpS5MLuQyPZESa -9FgqkPiK543Bl+FEyNFFU2kYcnWxt729exshbEgrJOUiOT0NtJ9iFd6t15dTSSE2R0YtmGMsgdsw -J6JYFMQAgBGEQ1UvE5SaD4ftwVGhsm17S4uTK2FxlSCs0cJ+t7uVy0aVSTAcrHqYzvgE0VCVPlxS -JoU7esG1O0nwTVntX58AIogTncRH7VRKspwoQlmu4uYneW/IsX42q4AM5vmQJKxMmuWZaEciQ1kA -WpIwc4gRi7MQESxlpOJ4dDo7xefSvMi4AleUlBbFFLNZodpYKdanGAYW1dXNuiQXDa2at2uaHOTS -rCqFlcoCjkFYMTRlALwNAy64CsNJpfhMWmKYAEVMkrAp0oVZIhBFlzyJ88BQYKjeHZ/VrS7HFTi+ -SBIu6CVZLFlGlSXNTIqen0UgNhnKmTmVm5tB0wmSp0SFN4pep13fgDidmUHn5xgMKzBCk2aLFOVx -nC6AaemO/XxrZgaLzoX5q+PVm5tHz6zu3QWLQQOcaIckFJpQouxA6DAuRav4wSAfDAH5phraRpFn -bVgIngFPWqJom6asVIKicZVEBBrjdEljSVoWNJ6zgvJQ1GsE5eK47mjF8wdXbt95zrJBpBWK5Y3h -4vWwtEvTHoGKSJrJJGk8p1CEiaMKgaos7XJcSdUGEl8lUcPVKjeP77785idwysqhMklaGBAXZrEk -vIx0ik7GyBwIyxS4IQ3FrMdFHmQE0SShmPcHHO8xtNFsb9Tb24XKer6w4nhLElAibuXdXj4/gDfD -KoSF5XLlkGYGBF7PZrTEPJpLE4biqXJwMiojkwMA03SFY5skVUAQG8fdsDgVpSoIFZzwIY9H/0n6 -IIyBGKMCILMomuEJ8M4xIqqKME+TFFBcmSEdmtQSMdQ1mpXCEolbBKIRqMXSoAQsFBEbzWlQ6KVS -FM86ilIQ+LzE+yyl4zkGSZMia1XL7Vwqi2cxhoRck+e4AL4uleTmZtFEjALpe+pkOj5PEKiRTQkY -rBdhkDlgD4CZOlk+Z+pVNCvwXECRPk25EBGwjvE5JDabScdJljBjUYUKHOwhjTu+2/RsiO4KhTkn -T2YgFZ46FWnpx8dg6VSSVmVXkRyaUhNxHNyiKFYNs+d5g7A0NsxOKsnkspBPsVMnY2iGpEhYIFkS -nG57uVIZ2XaTIg0kxySTaDbNs3SVJl2a1KvFUX/p3FwcuAKJz2cT81mWEGRW8+xSVIkoqMl6IRtR -fTDqrTdABckBicvlwsB1mpCJCMqJxehcRkBzsg7mRW9QpA6Bk00zaJbDURU4LRnnSNTKW/V+e7nd -nvKs7tplnvNAo8IHSUzFc+rJkzmgLCwXDW12JpVMKyjmi1LbNBddb2I7XQKTgHw2ty5pJpiREFSc -pnfDcKnV2vby0Z3DTJrneU8U8wD16LlY1ICSJsD740ouyyRiuUwCZXCZQOBSxVQKZEzeMLqKHBEF -gqiPTdYQOEcQ+36wFx1yIexM9KANeJWJzWWQrAA2h+eLllmTxPBxaYV0Oo7vrJ+7evUZlnZSCTKX -YvGMpIkhDIpAlWyajc3mKEIVeWAbNZvmKEziCEmgFZZSCYzIJFI0SsA/IRJlqSIKpeg5dZJBsiKs -0ckn4ql5KhUnYwCDE6n5k9lkjMYRTWQ8QymBbqkWGtevPgCRCckulxKBVdCsgmVlnnQAfol53HeH -QX6JQAwGckRWjs8RJ96XTMRgXXT4xlMn4hxtymKYSXGZJEwRBfYtPofSqKZwBQa30YwosoGm9Gbn -cidPJk6ciMGQGcqwDJDfhm/6N27c9fLNZIrNZWWSsjm+JEhNhi2mErij5m9ffvjJr3w/i2nv+73Z -mVMpLMtrom8ZBT9f0SX71vV7R8e3UFyOzaOPH8pHz+VZxpJES1fsQh4U5roi1Tk2DxoPQ0T4fxpn -JVYxlSKBiThC41mGo/Qg3xV4B0NgBtKawPt5wKSYQZhsjoCMoMtVQ11EsiZkorl59NTJOI5pslwU -BB+PTKuF4w5NmIZS4CgDQzjTrFbbOzgJ36gg2Wh/5uOflhyrnkxRs7NZcNNIRuXpAEfUVJIkcLEU -VspeoHJqNoWnkgRBaJ4/aHR2AFHZjAhX1B/uh4VJ1BV6DgU44ahMRxkw1JUWQ+YBSOVgUCsOsRwN -lK7wJkuoLKnxpIJmyWwKgd9/6/ZthpRiM9nEHDpzIjl3MpNNclGZR959/CBYxREHy9BoGk3Mp2Kz -KSSN+rrRKfm9WsHRrXZ3rOpBPAYeKjMfLTFOIhqSluZOZU4+ETv5vlgmwStiTRZKWEaUGCt0qkWv -bhm1dILCczKFQa5REkAsJ+KzJ1OJOSSXpGUupDA1FUMB4ck4IF9giDyFB9mUPHsqM3syqcslAOTc -TAZwCGmXZ1xXr/GEnU2IsRkCTUNksfMzuUSMRDNAnlI6gUucKHOMITPtojseDwRJxsEgOcV2cxAG -ZUHUMBSjMcwH09haLJR6p06l52dzaEawlTAwQo3jXUUY1gr7+9thuZbJUYkkiSKQQ01FNgu+Wyv7 -9ZJ3Zmf66ksvLC5uxGK52Hxmfi4lMooO8sjULVkhESyvK7XQ1URAVBzLpGQGqwRqt+beurB5/drp -zaNpuw+/TLVMEBsaCJjHppiCKzEV07N1y1A92xdZ11TrPJMH2ZOaRyVGaVbbveGSaRZqlaEgOBQh -0biMZNi5mdyJE8noXhYdlYuBqcsmCVC/w85kc2PTUnUiR6cSBEUYoAr8fEOSA5Zz2+1l266ZZk2W -C+kUg+UEwAxHK7poSpxDYjKkbEmoSHxeFzSDY+uB5Zu2Limupsk0KQPIOHw6LO5tjxQRWJElEAnP -8DSqMrgJiQzgARzCgcJERDSdxjMpLJ12ZGWx4m13g4trjUdXRvcvLb/9gYeXzm2UHJtjNByVIPeJ -pAMAe+L35mZOpjPgsjNiJoYxOVam+EAzPFW3ZY2C4M3guijLPMcBP3KiSCsa77tGHc0JczOpk0/M -nTqRAHhAcpwD1znHnjyBnjiRnTmFpGIMgD+XxPEsUQ5rDC4wKOcoAZEFzc/yVKAIYTpJzJxKpOIE -CxomS2GplExnAx0fVMSNhfzeRmvQ8xtVfdL17hz2X7i7c3y0uNh2F5p+MR9Yep4i5ZkT88n5NJnF -HUEKJMak01UDP5gUBh3PtQXHkj3X0SS+5Mn9hr4/dt567uxbr1x6+eH2K8+c7rZKsfl0bC5HoiBY -A0tSPJn1JSKQ8ZWWdTAtLLe1moNPG+qFtdJbzx++9cLRd//gzq9//NGf/eK9L37xubO79bLP64rI -cSGBBwTqqZxTD5xR21lbKKz0S6Eu1nxPFZRcGsEyOU9RFtrV6bR7dHr7rbff7i9OcILMpAm4gNlT -wFeCYS5yXCW6NXfilEAQFdcd1GvNcp7CcmQOx7K4KmqLrdr929eXJmPP9Y6OtqrVEg== - - - SbAIwqhqIIoBKDceeAkDIhDgVfOCTrkOibDhyU2LvLhdv3V+ZX1QXCxrxyul1546/eGXzn/+Izff -eeXiC/fP7qx0K3mXQXA8QyEphiMcTa6KtCoStMlT3VBcbpnTlrW96N7czr90sf6J5ze/8s7xH759 -4W9+/rVf//SrH3/l+NqZlUmvYUsqjTJEjkWyvMD5MusxORxMddNSFwpW2xXXO87ppdLWYuV4e/H5 -J8/cv77x8qP9d1+7+uGX79+/cnnS7lSDvKXwZC4H6gtJ84l5EuCUmKeBUWdOJOJzGSxF4KmcxTF1 -V590KqEuOwLTr4TdarlkB2WnzGDCqZMJCFgkRYHYMqlcnkkOPfTaqvna9d6zV3ov3xm/99Hr3/zs -g89/6PALr05++/1n//5Xn/7Tb7z06Q9ev7g3qQcB2IdMIoMkYiKSrMnYWpFYL2f229jdbevhhfrt -s9U7Z6pPXxm8fGv49rMrH31x+sXX1//jn731n371me987toLF0tNh8wlU6kEKjC6yKgsSuhEduJi -V0f8nTX5zWuV997Y+dT7px9/fuGLb6797LvP/P2vP/Ozb9//xR/f+S9/9YH/8d9/+mfffOHdF3ee -PO41Cj6DQbSKvmrXPW2hLO0PzaurzmaN2G7TkzKzP/IOp+GZqf/wuPPZN8/97jd//ItffuPLX3j/ -my+cuXJ22VSYdCKJpCkcU+fmMqdOzGKJeCihFQVrGHgoJkMpPa2p2wN3b+xcWXM+/urZj7959a0X -zv3hJ+/+xQ8//ZEPPBy0vO316db2xdPnXzDtFpVJeTxelImRR11bNl6/2X/pSvP6svLW3c7Pvv/6 -T3/41ude2fnSqyu/+dEb//yfvvpff/f5v/jK9X/8xRt/+c17N3f9PI8Q6agmIYerLEYpeLooZrbr -9IvnCt/73NWf/uDVP/7crc+8NP7Gh9d/9JXrv/vLN//y63d+/N7Ff/zVB/72Rw8//1L7pau1S5vV -um82QsiVRdesaJxYUrBJgB+0hGcOwnefXv3Azdabt2p/8oVbv/rxO//1P3/ntz/79C++99x/+9uP -/3//73/8m19+4c3b3W9//PzPf/jKp18/W3X1TByHJAs2VmINMptlIOUjCZtJu3Rsq87e3ys+ebp6 -ZdW+s+O9cW/0b//wxfc+dPG9d5589/cf1vwAR0VgYJ1i2ia/XqKO++zze8YXnlv43ievfveTV37y -tWf+81+88z/+5c9++9NP/Pgr1//jv3vxv/7mD77xqTsX1qtVcJC86luhyjAuhy841F4dvzVln9k2 -PnSl8J2P7P/kG8/84PM3vvnu0Z9/6fp//vPf/2//4bP/9OuP/+oHz/zm+/d/9SeP3n600fWjJAgi -JJtCqRwZqlbH0ndL3FvnzU/eK3zuqfp3P7L562/d/D9/99G/++kH/vRLV371nTt//1cv/92Pnvvx -F8795L0zv/jW1X/3ufNPna8OqwGaJogcx6P0wVLrzDg46GtP7dtffX364y9d/vZHtr75zu5v/+Kt -X3z//f/2Dy798FNn/vvffeF//vcf/f1fv/Pb7z36P/7m3e+/d/14GbCQis3N59I4cLsniBs1eeLm -xlby/jL36nnv/ee9D95tvPfmxg8+d/5b7+7+5JsP/uU/ffU3f/rG7378gX/+2y/95beevb7X3lyZ -1htjkjCqXtDLa9MCe9yhnlzmvvjC8Od/dPvX33nwvU+f+c4njn7yR/f/6Tef/Pl3Hn3/02f+/ddv -/u+/fPtX37j7rVfbX3ymcn1JBlbROCkxl5l5Yp5MJItCZr2A3ByLT+27b95qfval9b/64+f+4a8/ -8r/95PW/+dGrf/Pj13769ds//fKlP/3E+h88VX9yQ18qMCWNisqJirbAOKHTmPaGB5PSepXfLhP3 -VrjPvbjwbz99/kdfvv6nX7r4s+/e+91PXvvbv3rz5398/+dfPve3P3zyH3/xym9/+ODbH5586l74 -xvXWoGThOUGRaiLvW7KxUHUGPrMUUjdWjBePjDcuOh+7V4XZ+A//y3O/+O69n37j9v/1D1/7v//p -T77zsTPf/czNN589kiieQsWCqpVkpiqjE5/cb9B3lrW3rrW+9fbhDz5z9S++ePNffvWp//nf/uLv -fvz6j79w+Quv7l3YqpdMXqIYhlBsvezqZV8LA0loaPhOXb69Xn7hfP33Lxd++InD//V7L/7ux5/8 -ygdOf/nVyfc/tvuTr978xrtnX77RubbdXKi3HIgppcJSDngxkTFrbrmb9+sqvRww15a9m2vewx3v -M4/6P/r8lV9+98UffO7Gdz527kuvnX7n7ujtq53nj0pHY2NYkV2VR3O8KtR9u6exSsszGybXNuid -pvLyheY3P7Tz51+48Nffvf/rH7zwuz/7/X/4xcf/6o/u/fQrl/7xr17755+/9cuvnvvOm/U3rpa2 -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 -/uHLH65efL9/+dnl619cf/ij86uv//pv//vJHuC33+4dT3ff7Rx/tnv2+cn1t1dvfrV79tH18y/f -fPVHINajy4+evPvFeO/jpHN58PDrm0/+dH72bdbc7U6PwvpcMZpuvJu2L1rTZ63J9ezg/eL441rv -aPf85WD9NK7vZ61jK5zk7aNG76zRPTt9/Ivh4o3mtN1k0h5euDGU1ZLgcPMsb192xs+XB5/tHH9a -7+w2Ovthtqp1zwaLZ73pzWz31d7Ju/df/Pb69Q9ASy+aj1Yv904/Obv+Zvfkk/neR4Pl2zA9vLj4 -6urZTyW1Znl9pMTy6NPp7tv+4sXF0x+evPjlL373rw7OPxX1LnK+1n2MtG8NrtP2TWPwfn36fRDu -KErTsEeWN+pPH2ad4+70ca172h5eLvbfhtk+WKzWuQiSRW98tdh/PZhdJ/nScnpgw/3zL5P6UW/y -GFfrxTv96ZPp3qvm6KHu7WSd09Xxm9HyiR9PxuvneWt/ML08uPx0vHrR7J8tD1/9/q/+NU4VJMuz -J18/fvvr/UffTPbedMePvWgfgna5evvR5382mj+RtSitLVYHLy+efX316tvj6+8fvf1tXDvOG1dO -sKhQJuRBvf/09Omvjx790F+866/e94ioOJ/vXK/2nwpyzIkZlHZQP0kJuV92hk8IuibT3cPXvfFD -2POoft6avqwNroerl+3RFSNGDOdDfRlWI0pXtdZFb/pssvd2efzF7Ohz+L5686w9umwO9ifrx8Pl -TWf6qNk/vjx7+/f/9n/aOX4jabVm9/jy5g8vb357fvOLq1e/aE+f7O69+Ju//i//xX/976BSTp98 -9fjdb09ufr46/+rixS8uX/4yb1/88NM/+2f/+b9tjo8qjOfH+83e48nu27On377+/E92zz95+OjT -v/v7/25++Bo5sD56P919hZR78fHvvvvVv/rw/d92hi8vzt4/efoN0iNMd7IWkupiMH95+Oi7F5// -+cc//Zd7F1+/fvP9k6efOdGk1jlu9C/j+mHaOOpPH7/87E9fffWX4IVG+xSJZ3lDnMFPVrCfkj4W -tVF3+Ozg8gvdqtt+L2vuI8SQFkkTEvTo4PjjP/3Lf3P++HPDG+1f/bA8+Wq8enP58g8WZ98mnWdJ -66HljNudR7o9UPRGu3symD158uaH5x9+c3z9jQv14s4ODz/+kz//r7xo1BudHl58fnj5TdQ4xrX1 -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 -aiQeSSXHq9Ulioo4nbQoJPrDtdZgqVCfSpfHC82pneO3X7nnnQ88+uSnX3nl/seeuuuhx+957Gk9 -VgMpBXDncXEil5XEsqI2JLlIUkY0UUvnm+Vap9Wbm1s6fOLctSfe/f6nn3nmq9/69s/fePPzX/3a -pTvvmVs8Uq3NCFLOj+g+vwIQxHJJULNwQrdbxPFoIjWsd9dThX6q0Dl14Y73fPSjT33og3e/86EH -H3/XjXc8fO3eBx568t2f//q3Pvjcc/fe/+DJS9d5OefziV4PxzARTa/H4hOKXEml+6FQKZlst9oL -24fPTs/OnDxz6623X71y190vfuazv/vDn//tj3/+wx//9MZbbz3zgY+UyxNjFtxioaHpotGpfH7V -6RAddhL1i5KYpZksgoZRVKOZKMvFs9n2/v6ZS1fvPnXx2o0HHnnqve8/dvK2weyJZn9HkvPmWtZ/ -8gqM0W9Obazsnj1x9trl29/zrsdffeXln7/+i1//9jc//cXP3njjjf/6+99/87t//fy/fOn9H/7I -1pFbK+1NPxpB/aEYuHIllY5me2Ah9k6fv/W2K9fufOqppz73xS994atff/4zL3/guY9+6Wtfe+2X -v3r51S986+vf+Pvf//7Kl77xng9/8uSF66nseLE82xtuFOtTupHP56qL83O3XTz9yEP3fuhD73n+ -Ux/76re++ubbb3/rtR9//hvf+PaPfvKnP/35//zf//vn/4Ar+d23fvjDh556pju5EYm3ATApUo4b -mUa1u7a2Dsfu3v61u+567wff/8LLn3z2Ux9///Mff+GVl3/w2o9+8cuf//7ff/s///t/3vzN2x/4 -8EcvXb67UJyQ+RJL5qKRQaG8GsAMDJENLQPAvb935Mbd9zz65FOPPvPeR971zCtf/Mr3f/LaD3/6 -2p//9ue//Md//vJXv/nNb3/7yue/vHfkcq4wKwjlkN7jhWIkOW7Emp323PLy9rHjpx985wNPPvPu -Dz33/IuvvvqDn/7s579687U33vjlr9/601/++L/+3/+Bbv3+j3/x6Ze+lC9PO90ccKLHI7jMFZIa -RSe1YLmQ721tH3ngkYcfeOKRZz/13A9f/9lP3/jll7/zzVe/8sU3337rrd/++ievv/aHP/3h//s/ -//s3b//6+RdfuHj7nZlch2VBb+MuF4missgnquXp6cn140fP3XvfQ48++eRnv/DKj37+s2/+4Ltf -+ubXfvuH3//tv/7rrbffevOt1//+33//yS9//s7HnugN1orVZS3U9njMxc82K8HTUZGLRY1KrTYD -mqQ/Pnv4xJkH/vmRT77wydde//mvf/e7L379qz9745f/63/+509/+9snX37psaeeuOvu+w2jxfNV -jgwOO9Oby9u3Hj91/Y4L9997x7ueuP8rX3zp3//tN1DRb771i5/97Hsvfeajd955aW1tLVdsRRJd -DIsgfoWlQiITNNRwo1A5srN33z33PfzIOx997JGPPvuB7//ge9/9/vc+98VXv/GNr/3pL3/50c9/ -+uLLn37psy/dcf2+pbUT7d6yquYS0XqxPJ7LN9Ppyvz0ytbaxuGt1Xdcvfgvn3vpS1965evf/NKb -b/3yD3/922u/fOO1X/z87bd/9R//+de3//3tr3z7yw8+9o6l9Z1YqimrOUlJqVKkVmrOz66cOX3+ -5ImTJ44cvu/GtVde+fTrr//4jV//6nuvvfaVb37552/8+F9/99Zbv379N7+GZvnpZ155+dr1e+rt -OZIwSNwI6fVEaoqmEjxjxPRss9TY21x9+p8f+uLnPvuNb3/zhc9++kev/fCPf/7T3/7z76+/+eM/ -/uG3P339Ry+++NEXXnz+6OmLeqQKcgjASg1WIvFWLF4fTszPTc+fPH7iPc88+fHnP/KpFz/x0mdf -+NFPfvAf//1f//rHP7z2i9e+/Z0v/umPv/vN795+5Qufe/qpd7W7K2ggBMbN5WC8bhFFgqKQrVfn -ysXe4d39p9/91Mc+9bFPfObFH/70x3/865/++Le//uCnP3zjrdf/+Kd//7ff//a1n33/V7967Sev -feeZ9zx59c7rmWxLlOJeHwmlFdQLRriYiFZXFzcffujhz3/hCz987Uff+u7X3/7Xt/74lz++9fav -f/GrN/76tz/Deb77va/84Eff+MlPv/fMM+86c/HOtcO3i2rJYiF8HsXn4XFU8DhxGlfGe7O3njv/ -zocf+vRnX3rpVZjNT/3gh9/+z//+z9/+/nc/hLb7yQ9gop5/4SOXL9+2ub4fibYr1Y2wnGxXe41K -s5zNT06NL68uzs4MdjZn77lx5tFHr96468ztF49XyulQUGIoFkUZDBVdDtLlIDwuggpIcTVZSVZ6 -te5Er7u3vbG7s7Y0P37uzMaD95977OE77rx22/Ub189eujCcmY1EM7KSj8RBe5f9Xg71cSQm0DgH -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 -Xe/UNA/QJ1m8mk0vZTnYb4iquXLD23LwYbn50YtOKdZvNNSyOLl//TvLg5XwnzbUNh0F8QXUMrAC -Jh2yKiPfq7oKk6MO4yEfRXVm2pvl+tuLuz9ISn/vKZkdhZcxvCVkyf6+DguAsDFd9N4zGDQG8n72 -Dr26Pv11Wj9v08X/9U9ke/P/9wX8f7U9NuShbY8NeWjbY0Me2vbYkIe2PTbkoW2PDXlo22NDHtr2 -2JCHtj025KFtjw15aNtjQx7a9tiQh7Y9NuShbY8NeWjbY0Me2vbYkIe2PTbkoW2PDXlo22NDHtr2 -2JCHtj025KFtjw15aNtjQx7a9tiQh7Y9NuShbY8NeWjbY0Me2vbYkIe2PTbkoW2PDXlo22NDHtr2 -2JCHtj025KFtjw15aNtjQx7a9tiQh7Y9NuShbY8NeWjbY0Me2vbYkIe2PTbkoW2PDXlo22NDHtr2 -2JCHtj025KFtjw15aNtjQx7a9tiQh7Y9NuShbY8NeWjbY0Me2vbm//wnsp0q/0S2f2aaB99+tnz7 -m7dPnm2emLPD8jV+v3z769+8/+HJ6RPzdTz74TfLL9795otfffv2h5+VPv6URFmhxJfv336tOL98 -UsGHlLMfvvj8i2/xx6t3b79+7yoBPjrAf08SJVWS3f+e/fwkrLvdPErLtKjSJOn2CgV/yKIs6dV1 -1a27eaV8gw/10l6U13VWZWlaFt3/9ENfkyP1CvK3Ho5TVkmm1L2kJnuleZ12i7T45UP/79P9Z33o -Pz3dxyd3T759cvGkpziu8uwOrZq9f/L9f2xcShq367/VF1+/7//y4/w9euT/6UzshQ5YP4mX73/7 -xbv3l+u58uz0yQuyM+nPX96U/9go0uQ6iepKeaVkSaqkSUX2//iftwe5ov+w13/4/66S4yrTenfB -hUL2TZ6Y5u4aSQD0lSrvZemTZ4f/haKRiiWinOnmwLBGBinJMhCkoWosTXel6hNZJg/mV/V+EB7a -7tJ0pqJSsWKKvSS1krUeKaEspZbVd/15km/9hJTnMrCvtbD9Y07MKNqgKI3nPFJXyl/4yYkbn1r+ -VnPnolYzfBSnKy+cSUrX9bdRfJ6Vd7pzIMlDw90o+lgQS5aLZW2oWXPDnsfFuWQMW5TLiYWk9Xgx -YdhQkirPX+XljRtvDXfGiamk1ZKWG06PEQPN7ifVVdZ7VU8++NkVdufkghWzNL/sTt9k/fu0vi0H -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 -5Qc//+V77/3l//zf//uX/4Ar+eP3f/az+x97sj25YUabAJgELkaNVK3cXltbh2Nnd+/Kbbd95GNP -PfvCFz75xc8+9bnPPvviCz999ee/+e2v//Tvf/jv//3fb/7+nac/8emLN92Ry0+IbIHGM2Gznyuu -BhED8YuGkgLg3ts9cvsdVx969LGHnvzIg088+eLXv/WTX776s9de/cvf//LX//jP3/7u97//wx9e -/Oo3d4/clMnNclwxpHVYLm/Ge0ak3mrOLS9vHzu+f9/77330yQ99/JnPPf/SSz997Ve//t2br77x -xm/ffuu9v777v/7f/4Zq/ckvfvPcl76RLU47XAxwotvNOa0VkgpBxhW1mMt2traP3PvgA/c+8uAn -v/jMz17/1Wtv/PabP/zeS9/6+pvvvPXWH97+5euv/vm9P/9//+d///6dtz/3/LMXbrwllWnRNOht -1OnEAwGRZ2Pl4vT05Prxo2fvvOv+hx599Ctfe/Hnv/7V9376o2987zt/+POf/v5f//XWO2+9+dbr -//if//jlb3/9/ocf6fTX8uVlJdR0u63Fz+NjGEuGeSYSNkqVygxokm5v9vCJ0/d+4MEvPPuFV1// -9dt//OPXv/vtX73x2//13//93t///oUXvvTwY4/cdsc9htFg2TKDq4PW9Oby9vXHT9168/l77rz5 -iUfu+dbXv/Tv//Z7yOg33/rNr3714y99+dO33HJxbW0tk2+YsTaCmH6fRBMhnlINWa/lSkcO7d51 -9a4HHnz/Qw8/+OlPPv2Tn/74Rz/58ctff+mVV77z3l//+vNfv/b8C8996StfuvnWu5bWTjQ7y7Kc -iYWr+WIvk60nk6X56ZWttY3DW6t3X77wLy9/6RvfePG73/vGm2/99s9/+/urv33j1d/8+p13fvcf -//m3d/79nW/94Jv3PXz30vqhSKIuyhlBSsiCWSnU52dXTu+fO3ni5Ikjh++6/cqLLz73+uu/eOPt -3/341Ve/9b1v/vqNX/zrH9966+3Xf/82FMtrX37xhSu3Xq0253DMwFEjpFVjiSmSiLGUEdHS9UJt -d3P18Q/c//WXv/LKD7737Fee+/mrP3v3L+/9/T//8fqbv3j3z3947fWfP//8p599/nNH9y9oZhnk -EICVrJbMaCMSrQ4m5uem508eP/HhJx/97Oc+9cXnP/+lrzz781/+9D/+53/967t/fvU3r/7gh19/ -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 -1i8sWS9d6vzZV+9/+Or+h29cfuvFa3nHhSEWILCMERWVnk1jew3y7orywZ329949/d13T/30a7f+ -80/e+B///le///mnf/zlw7/78/v/9Xef+8ZnLpyYzeWAg6RFR0uIBGFScNvAVgrw+T55a1F59VTy -O6+v/vQbt37whbPffGvzr790+J//+sX/9h/f/9ffvvObH9z63fev/OZPr792fa7meCQIREgkCGFR -NCFqVU1eTlOv7KrvXkp+/kbhu6/P//Zb5/7PP7z5jz9/+S+/dOo337nwTz97+I8/uvPjD3Z++uHW -r751+s8/v3tjN9fKuVAIQaIUDeHrk+WtrrvekG6s6l953P/xl05++/WFb76x/PufvPKr7z/4s88d -/PAzW//9Hz/4n//9R//0t2/8/nvX/4+/f+v7Hx7uTYFYCI6PjkVDMMB2i2Hn8nzPjHa1wJUp6tGu -9WDX+uTF4odP5n7w+d1vvbX8029e/ff/9JXf/eVLf/jxy//2D1/6m2/dPlypzA/6hWIXRZSc5dZt -qZ8k96rY5Snqi/dav/z60W+/c/V7721959ObP/36lX/93bu//M7177+39R8+Pve///q133zj4rce -Vb54K3s4yQNUkSjOPxoefnYM9QdSTHg2GTvXZW+smk/Ol95/bvZnf3Lnn//29f/tp4///keP/v7H -L/z846Off3Twl5+e/dyNwuU5eTJJpCXMKyfK6gxhJIxiv95a76Vnc/RiBrk0oD5/v/1n7+3+6KPD -v/zS/i++e+kPP33hH3725Jd/cuWXH+38ww8v/8uvnv/9D69++1O9z1xKvHRYbqY1OMoIXJ6lHY1X -2jmj6RCTCezsQLm/qby0b7x9KQdG4z/+xZ1ffffSz79x9H/989f+73/90++8vfXdz557cnuTw2gM -YpOilOaJHA/1HHS1iF+Ykl45U/7Waxs/+Ozpn3zx3L//5jP/87/95B9//PjHH5z84NHKiYVCWqU5 -jCAQQZczppxxpITLMUUJXirwR7OZe7uFF08mf/jpjf/1e/f/8ON3v/zy2kePet9/e/mnXzn3jbe2 -H56tnlkstQtlA+SUkCUxA3gxllDzZqZmOwURn3KJM1PWuRnr2pL12euNH33h1K+/e/8Hnz/7nbd3 -vvTC2hsXO6+drt7dTG92lVaWN0UaitIiU3D0ukQKZUstqlRFwZdKwsMTpW++uvTXH5z42+9e+e0P -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 -28/8y8cv33hXtTarSXWBKaeSM9XGJkE6JKY5ZhGA+/ixk3fedfcjjz/xyFMfevj9T7341W/86Oev -/OTVV/701z/9+T///uvf/Pa3v/vdi1/++rGTN5ary7LcsK1JSa4lc9NOujccrGxsHD595sKD73ng -8ac+8JFnP/X8Sy/9+NVf/PI3b7zy+uu/fuvNd//8zv/6f/8HqvVHP/vV5z7/tUpjMRQRgROjUTns -7pA0WS5nxhvVyuTu4ZMPPPzeBx57+KOfffYnr/3i1dd//fXvf+elb3z1jbfffPN3b/38tVf++O4f -/7//879/+/Zbn3r+uetuuK1YHgoC6G0qHGZwXFOkbKuxuDi/febU1ffc+9Ajjz/+xa+8+NNf/uI7 -P/7B177zrd/98Q9//a//evPtN99487W//ffffv7rX77n0ccmZ7ZqrQ3THkSj7uZnv4+WuJQiplNO -s91eAk0yNb184uzFB/7p4c8895lXXvvlW7///Ve//c1fvP7r//U///PuX//6mRc+/+gTj91x1/2O -05eklsjE54aLhzYOX3Pm/O03XXv/PTe9/7H7v/HVz//Hv/8WMvqNN3/1i1/88PNf+Phtt13e2toq -1/rJ7IgkkxiqC6yt8HHHSHSrzZNHjt17973vffg9jzz68Mc/+syPfvzDH/zoh1/66ksvv/ytd//8 -55/+8tXnX/jc57/4+Ztuv/fA1tnB5IZhlLOpTq0xXa70CoXm6uLB3a2dE7ub991y3b9+6fNf+9qL -3/7O195489d//MtfX/n166/86pdvv/2b//z7X97+j7e/8b2vP/jofQe2j6TzPc0oq3reUJPtem91 -+eDFC5fOnT139uSJe++89cUXP/faaz97/a3f/PCVV77xna//8vWf/dvv33zzrdd++xYUy6tfePGF -W2+/uzNYYWiHoRzb6mTzCxyblXgnbZV69e6xQ5tP/tNDX/3SF1/+3nee++LnfvrKT97507t//fvf -XnvjZ+/88XevvvbT55//+HPPf+rUheusZAvkEICVEW8mM/10pjM3u7qyuHruzNkPPvX4Jz/1sc8+ -/+nPf/G5n/78x//53//1b+/88ZVfvfK973/13Xd+/9vfv/3iV7705BPvH4wO4oQNxi0c5JGIgmNx -RS51WiuN2uSJo8ef/MATn/jsJz79hed/8urP3vnLu+/89S8/fvUnr7/52jvv/se//+F3r/ziR7/5 -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 -Xh/kK6rjTlcHn1CqSrJ1gq8VgMPgCdA2iFOGr6ddoXEXOG3Set0efGEHB0B3gQLhmCODhrWnqgkf -4m7kgSEnqroXRk9kbZXJAvnUwMCocWWHpzib5Cp67mZPSDrbWWozQ2OYa7kHfu0czrxQVjcyTCq0 -ERsoKPBSVh76ycPF/k97W1/I1nYBvmJToKkkl1M3NtK7JzClKBHr9vrk0e8649clUEliM6gdetGp -rM1AHmaLcraocnzbSBsxWyAf0qthTMMLD7wIVqSeXofBUxyguRpOBwgBfwxxqk5QNZqpplIoL1VQ -0FNdIPllxII/5gsShjk835LkTrrxWGyp1ipsXLnRIWTJzfSSOLB3DZh/pZKWQgK6ntlkMNxXVZDq -U1B/2TzQJ8N2ZkDONzc5XhiP118Z/p4gThmmA3Niat1GfYFh8v0HCMF0BWXHia7a/feiOs0VpQcP -CMee7J18ZEWQEtLnD4hMXpW1LWDLgBUg0oFWmelzVUtFH2ULIsQjQjQYrt/uvdhaf4Pi4b3P06uj -oGVosQ205P59CiQAuA0jwOztgkArAL1vnMOs9qZvDW8/k7f/z/9Cxun/3yfw/9W4M+S2jTtDbtu4 -M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2 -jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtD -btu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4 -M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jTtDbtu4M+S2jdP/47+QMcX/ -Cxl/wjCdFxfts3dnn+32P2MaA+cE/rw4e/vu8s1n08+YE63x5l378fm7xy9fnL35hIfwV7pq2ri2 -uDx7hvN/PBKHg/DZm8fXj1/AXy7Pz55dCrgMh0bw72c6buD6zT+7nz5TPD+wVcs3XdO3bd13cS8w -fNXVfS8w/cCzDPz5f/Ig3VMdR7ccS3d008KfwUGBEaiOHQS+79mua+Oe75vpu4LASI/3/tMH/b+/ -7tl/zjk9++zRZ+vPXny29VmA8wK+uwarGpefvf5/jDNS427mr/v42WX4xx+blzAj//dkwrtgAnqf -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 -xE9GrIWFaqGyPbV0TlRSqlmMZyZRYliLWAYWdHpq5sQDDz23sHZWMqqTyzd2Zi/UekeWDt3cnr8c -y2/HsiuKVsvlV0W1zInpXGG23FxfP3LjwZO3z2xc0uFe9OZweOLet77bsKrF6txw8exw6ZKVnsG5 -lRpbpeY2TGmutJgpzoUYS5DTIGdcVKF+cG3nhiu3PQEyP3L4uiN710fsRqEyV+8fbE4cW9i8cv6m -B+995J3gkN2da9/62DsXti8iE/FKGWEBebnWOTdYvGli8bpUdvbIkQuXr9xeKPZFFDo5aaWXEsWN -Qu3g2pH7spUtVsgmczPQU7SAnYDiT6QrG7HUsNrauOPNz+yduyXMJ2C6RKXemDxV6R9zsgui0oxa -g0uX7n/rw8+l0kMj2gaiit3D1f6Jhe1bFLMR5hKinAtzcZaLxeKDdAEtdgxlak6fz9YOSVJ5bvZM -ItOhed2wS5XWZm+4NzV/bGJmZ3HtlOk0fCEtlmi1+3utwclq+zBUzM5MdAbbl65/y6Gzt/Fytjmx -W588VmhtT65crk7uJYvLqPKVy/fdet/jiXzf7TesOBhpKZ6bAWinls9h0DY2r/30S1+dXTljO+3t -3RvP3PDY6vG7tk7ceerygytH7rKc4Q2X7r3l9ickrRJPz+BNW4Njtc5ue+rYzPrl/sJZKzV54eJd -Bw9fUiPVWu9gc7iXraznqxvd4clDZ948s3k1XVhZ3biiROrjHgmcb8UR6yZks4+sEXFma+2tam2m -P7Elqjkbgl5chCZG4hP58tpw+Xw8P62Y1cmVK3Z6So3ARUzI0Y6bSvqYrG5NluqHKTYBP1kozScy -k8Olk/ObFwqtLRlmUq53OofufOBZJ9OpdVaXd66fWDiXKq9G410r0RP1mmQ2cRXZ4hInJaPxRjwz -lUTXZGdT+WG9vQnjtL52enP7PJzPYObY4vbluY3Lc+vnFzbODOcOZzKTj73tHV/65g8On7olGE6I -Slkz24BNpXOy3MGYr8hK6a47H33vB15otRdh4Xqz16I1evOXZjdvX9y5CyZQ0eC9rjT6O37ymeKY -Gmk1J09U2jszy+fvf/wDh07fli1OtwfbNBOXzWYkOVTMFuSm2Tty/Mzdu8euRq1Wf+pgrbcumxVe -rmhmP5VbqnWP1TuHOSGTSU3kCnOCksfQJQoknUXis5rRzGSnWcEJUIoeyRfrC7PLp3dP31mfPIx8 -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 -lcoTsXi2VG0vLG/tHDu3vntienlt5eDhjaOnT164/pln/+lHL//4l7/+1Ytf/vJt9751ceVouTKk -6SgdtBk6LovZcmm+1zuoKNlAQI1GinNLh6cWDjYHK5XOfHNy5cT5W+944NGHHn/qEy+++OATT9/7 -yNsfeOKZZL4PKwW6o4JG1KhZ0U7MmbDslqxkcsV+pTHZ6U9PzW5sHDxz4fq7nvzH55559tmvfPNb -P3v1tc995atX735gY/tsr78WseoMmwwzMVCQbpTgZnHAUCgqirlieWkwc6TcnCs3py/ddPs73//+ -p9/z7vsffeTht7/jvre+7a43P/TIU//4ua99890f/OCbH3z44tV7TLseDkdpytC0bDw5yBcWY3a3 -XJlLpdql0nBquHX8zHWr62sXr9xww6133nHv/Z/89Gd++/s//dsf/vT7P/zx1ddff/b593U6iy63 -6HaraLpcbqXR2A34o36fzDFRK1pTtRrLpTkurmo53SjUasPTp69cvfP+Szffdd9Djz39rueuvXjL -wvqFybkTlt0ga1nfREe0zNzkytFDJ6+7cN1dt936zne8/aUXX/jZKz//1W9+/ZOf//TVV1/9r7/9 -7de//dfP/csXn/vn9+2dvaE7PMZwWY5J5ZHKY+VKrjaLCHHq8o033HLHXXc//fTTn/3CFz//la99 -+NMvPP/B93/xq199+Re/fOGlz3/za1//29/+9uIXv/7Of/7oxZvuKdfmW5312aWjrcFKMtNo1Hvb -mxu33Hz5sUfe/J73vPPDH/vAV775ldfeeOObL//oc1//+rd++OM//vFP/+f//t8//QfO5Lff/MEP -Hnn62Znlo9nCEISpyHYhU53ozRw+fASPk6dO33Xvve9693Mff+Gj7/3Yh5778Ic+/uIL33/5hz// -xc9+9++/+Z///T+v/fqN5//5/Vdvu7/ZWrTNti7Xc9mFZmeXFzICa2fiVRD36VNn77v/gcefevrx -Z9/12DueffELX/7ej1/+wU9e/tNf//Tn//jPX/zy17/+zW9e/NyXTp29rd5cj0Q6qeSsGWllS/OZ -/OT0cGNn5/i15y8//OhDTz37j+/54Ic/+dJL3//JT3/2y9defvXVX/zq9T/++Q//6//9H3Tr9370 -80986ouNzmogZEATKSoSJCsk44paiic6zcbs3vGzDz32toeefOy9H/vgD1756U9e/cWXvv2Nl778 -hdfeeP313/zqx6+8/Ps//v7/+z//+9dv/OrDn/z4zbfeXa1P6zr8thgMyhxnR81ir7O6unzk/Lnr -3/yWRx5/6qnPfP7FH/7sp9/4/ne++I2v/ub3v/vrf/3X62+8/trrr/ztv//241/87NEnnpxdONzq -7cRTQ4oii5+9HslUc1Ejn8t0+/01eJK5+fUzF6489A+PffTjH335lZ/96re//cLXvvLTV3/xv/7n -f/74179+9IVPPfH0k/fe/2AmM2WaPUNOLE2vHts5fsP5S/fcftODb779HU8++OUvfOrf/+3XQPRr -r//8pz/97qc+/f677756+PDhemsqW5wRhCzLxHQlFdUSGSc90eyePXHqLQ+85W2PPfr4E4+9/73P -f+/73/3O97772S+89PWvf/WPf/7zD3/2k0++8IlPfeZTt9/zloOHLwxndxynXswNWp35emOyUulu -rh7aO3z0zN7uW++8+V8++6kvfvHFr33ji6+9/ovf/+WvL//i1Zd//rM33vjlf/znX9749ze+/K0v -PfzEWw8eOZEvT9pO3YqVHSvbb09urh+6cvnGixcuXjh75i333fXii5945ZUfvfqrX3735Ze//I0v -/ezVH/3rb19//Vev/PpXaJaffPrFF+6654HBcEOWMrKYSSUHxfKKqhRNLZNP1ibbE6eO7T7zD498 -4bOf+fq3vvHxz3zihy//4A9/+uNf//Nvr7z2oz/8/jc/eeWHn/zk+z/+yQ+fu3xzMtuDHQJZOYlu -tjCVLwyWFjc3Vjcvnr/wzmef+tCH3/exT37kU5/5+A9//P3/+O//+tc//P7ln7/8rW9/4Y9/+O2v -f/vGi5//7DNPv2M4c4jjUwhuQb9Gh6Icm4hGaoPeRqc1e+bk6Wf+8ekPfOwDH/n0J3/wkx/94S9/ -/MNf//L9n/zg1ddf+cMf//3ffvebl3/6vV/+8uUfv/ztZ9/51J1331OtTUWtAh2WAa1EsplJt4q5 -3u72sbc98rbPff7zP3j5h9/8ztfe+NfX//DnP7z+xq9+/stX//LXP+E43/nul7//w6//+CffffbZ -d1y5+e7DZ26NOm23WwpTsTBlilyECoiqGJufXb/h+hsffdsjn/jMpz71Eqr5se//4Fv/+d//+Zvf -/fYHaLsffx+F+vDH33fbbbccO3I6mxt2e0fTdmnYm53oTnZqjeWV+Z3d7fW1hRPH1h+478rjj995 -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 -z86/+v73dn6OkNlcbbezcncwf3776S9uv/jZ1ukn0+n5f/jP//T7f/lfcSaXzFhXZ+RZFF8xs2ul -2uFgePT23dc3738y3X24cfJ8ZfdBpbe3tv9w9/j5k1ffvv3217XO/mBy+ub9b77+2d/ce/HN6u6z -fHVL1tuy2tWtaQYDbBQhzXES/FFF0/uuP5aUhmz0EcxXtQ5JmakMTYWibmR6E93oMUwB6Mmym5u7 -D2y/W66OhqPtenvPzW2Jal8QmgJfAef1p1OkISQIwmbYQiajRyJgpWWeK1GkD3QvCAVBLIhS0bDb -tjsCVRZLsCimsmDfSDDvhmnXcoXJfOv+3skrxxtwQpagwz0dVyvuWCxcWJWVpKobrJCUj2TUdFIB -pE2n1FRSxMH3kW53crZ348XK5r1ceZsVq6m04pitfG7KMAGEGcMUwe65zlAUSijEJ1/40y4tHLGW -FojF68jiQgZ+ZCiHo8MZNJ7PL1xLZVJSIs6FxyMu41dTMFI6yatqmeM9yJRSfafcPNIUv97c6AwP -J+uX7fFFtjA3jAY4x1pnSzUDWbNtv6FbzUrzqNE/B6+XCRe4epbZN8z21R5bNtwDiA== - - - ahybR9IKPGw0goMR5rgsxwe63SrUt/vjm9v7j27cuPfx2x/tn9wfz2/defbtyeWPHr/62cX9z3uj -Qy/oBrlRv7f77MMv/SL4he2NgxcnF29Wd582B4e5yswKOo3a7Iv3P/voi5+SbJAtbFn+vFg7vP3k -+1tPftrqHe6snf3Df/kfb7/5PltaafYPp9uXG4f333z9i7/59//47/7x//qrv/+HFy+//vt/9b// -xa//WGjsFuq7XnG70TvfPf702Se/Pbn8TtK6ulpb37oPSYRgNoIarJAH8+gWduY7r/OVLRB1q2tH -htF0vElQWbOCEYhJ3R5O5vcfvPhz1az4QTObHypWf7L2aG3v46B8TNENlm+4uXXTm4J3s60qxANw -K4q4qbQZzikkZFGqdfqnqt7ECBv0wPbRx+ONu3ZuaoBJtFskrfFylmItnJAF0VP0smo0Natp+z1F -ryOorJq1G7dfd/p7oP00s0cSDtAHjjm63idwK5HgAAQgtDDSEtWKk19vDe7o9kSSa5pc1JTQWtpO -L5PWY1FeFIuuP1S0DuAbyEgMLMYikUoqoHMoiFjEpCkvmRBAV4crA9OawOXhx0Sch9yJxsUMBqom -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 -ydI1Rxu3y74m2TzdK/udSqlo5Up2ic7wM6ejkLBInATYMsh0lo4tuOjVFePla92nLndfuD1654PX -vv6pxz7zvsPPvjT+7Xef+odfffxPv/b8x9977cLuuJbLgX1IRpNINCwgsaqUWS3ga6XkXitzZ8u8 -f75267hy+0zlicv9F24uvPnU9IPPTT73ytpf/9kbf/erT3zr01efvVBs2EQ6Fo9HUZ7WBFphUFzD -U2Mnc2XI3V6VXrtafufV7Y+9e/LhZwafe231Z99+8h9+/YmfffPeL/7o9n//yev/4z9++mdff/bt -57YfPenW8x6dgWwVPMWqueqgJO4tGFdW7I0qvtWixiV6b+geTvwzE+/+SftTr5393W/+6Be//NoX -Pvvu1549c/l42ZDpRDSGJEgso8zPJ2dOzWWiEV9Ey3KmrmO+EPPFxKSqbPWd3ZF9edX+8EvHH37t -yhvPnv3Dj9750fc//oHX7/eb7tbaZHPrwv65Zw2rSSbjLocVJHzokleX9Vdu9J6/3Li2LL9xp/2z -777y0++/8ekXtz//0vQ3P3j1X//uS//8u8/86IvX/ukXr/7F1+/e2PGyHIIngp6ELKYwGVLGEgUh -uVWjnjub/86nr/z0ey/90advfuL50dfev/aDL1773V+89hdfuf3Ddy78069e/5sf3P/M863nr1Qv -blRqnlH3oVYWHKOsskJRzoxz2EGTf/LAf/uJlddvNF+7Wf3jz9781Q/f+ue//9Zvf/bxX3zn6X// -mw//f//vX//+l5997Vbnmx8+9/Pvv/jxV44rjpaMYFBkwcaKjE6kUjSUfCRq0QmHCm/WmHu7hUf3 -K5dXrNvb7qt3h3/yh8+9874L77z16NvvuV/1chgqgAJrJN0yuLUiedJjntnVP/v04DsfvfLtj17+ -8Zef/PsfvfU//u3PfvvTj/zwi9f++r8+98+/+eTXPnb7/FqlAg6SUzzTV2jaYbGBTe7WsJsT5skt -/X2X89/6wN6Pv/bk9z5z/etvH/3556/9/Z+/59//6lP/8usP/+p7T/7mu/d+9ccP3nyw3vGCIggQ -koqjZJrwFbNtajtF9o1zxkfv5j/9eO3bH9j49Tdu/J+/++Df/vT1P/385V996/Y//OSFv/3B0z/8 -7Nkfv3PmF9+48l8/fe7xc5WFSg5N4Hia5VDqYKl5ZpQ76KmP71lfemXyw89f+uYHNr/+1s5vf/TG -L7777j/55MXvf+zMf/ztZ//nf/zgH/7yrd9+58H/8fu3v/vOtZNliIV4eD6UTmCg7S4vrFelsZMe -mbF7y+xL59x3n3Pfe6f+zmvr3/v0uW+8vfPjrz/2b3/3pd/86au/++Hr//o3n/+Lbzx1bbe1MZ3U -6iMC1yturptVJ3nmpE0+usx+7tmFn3/11q+/9dh3Pn7mWx85+vFX7/3Lbz768289+O7Hz/y3r9z4 -33/55q++ducbL7U+92T52pIEqqKyYnQ+OftIiIjGCnxyLY/cGAmP7zmv3Wx86vm1n/zR0//4lx/4 -3378yu9/8NLvf/jyT79y66dfuPinH1n75OO1R9e1pTxdVMmgnahg8bTt2/VJd+FgXFyrcFsl/O6U -/fRzgz/5+LkffOHan37+ws++ffd3P375b37y2s//6N7Pv3D2b77/6D/94sXffv+xb75//LG7/qvX -mv2iiaV5WawKnGdK+qBi9z16ySevT/XnjvRXL9gfuluB1fir/+XpX3z77k+/duv/+scv/9//8sff -+tCZb3/ixmtPHYkkR6JCXlGLEl2R0LFH7NWp28vqG1eb33jz8HufuPKjz934t1997H/++4/+9oev -/PCzlz770u75zVrR4ESSpnHZ0kqOVvJUPyfydRXbrkm31krPnqu951L++x85/F+/89zvfvjRL76+ -/4WXxt/90M6Pv3Tja28fv3C9fXWrMag1bcgpucyQNngxgTaqTqmT9WoKtZyjry67N1bd+9vuJx70 -fvCZy7/89nPf+/T1b33o7Odf3n/rzvDNK+1njopHI32hLDkKh6Y5ha95Vldl5KZr1A22pVPbDfmF -842vv2/7zz97/i+/fe/X33v2d3/2nn/8xYd/8tW7P/3ixX/6ycv/+vM3fvmls996rfbqleJWU+ax -VDqBu0az6o8s0XU5asGmh0Zm20s+sS6+/1bl7XutL7+2/W+//eg//ebt3/7g3f/9F+/9199/+sff -ePxrbx186uXNvaW8q1sC68LpdKsDWxSLCnNm4E3z+FYBuTJgnz9TeOvR0avX+88dVz7z1PiX33zw -4688/s03D7/44sqHHh3fXc9vN6Cm4gotsYQBJBOeRXiMU7CUzySXstTxwL2yWr24VHxst/aeq+23 -H1v68BMbbz+xcX1s3RgZ18bOdjOblxSdEWRaBOZXxbzMF0ylYsm5TqHYcrSmIRx0vBsr5VvL7tuP -9r/x5uZffuPqP/7s1b/44q0vv7L65RdG7ztxX9oxXjtbOWopLpXiM4Qmlxx7xFAe2EAaZUQ0nWOQ -vkketcTrI/bFM/b7rhS/8ML4d3/+4v/zb1/5h1++99fffeEr77t6d7u1Us8ZkoFmDCIjkKk0F9zX -RdUMoe/yKyX5oGve2izd26u8eLH1h6/uf/WDlz787NrTJ+21tiVxGJKIxyNpJC0V/VGvs1/wRjpv -mTQz8O3rO5P7FzemJer2ivH6jcGXPvDo05eWHtuvP3W2eWHqTapGyRTA4PC0G7QrzLg0UwQjDw66 -5PdyelbFCZdlGpbWdORuVtzvZ29t1B8cLjy617q8Wllv5NfKedjGkiGJNImhdCrFJRIiRxcZXEfj -CBZP8gjqstxypXQ8rt9azz1zmHvnxen3Pnn+K69v/+CdOz/4zK3vfPDo2+/d/cqLG5+637+3afkS -CqZd4Y2g9TGVY0g3BYYIYdvZ/KjglfnUJJu5NNTurNpP7LjffuvoX/7qU//4m4/9t68//p2P33jz -wdr9s83doQfeWFdLrrvIMh7HOkRG1HhrWOlUVL5pMv2s2NTYniWtVtxpwdgs8nfWC8+eLN1cq41d -vmMoJVk1GZHF+GRciITYuRkgQNKQ8hJOCwiiYnjZMFq+1/X9vufWNL4ssXVN7Lpyjs0ACxZEZaE2 -VHgPXAkBJI8plfKIJu10AmCbJtKMzmqtXH13+WB7MF1w1L268cRe/VxHeXSzenVaOtPUjlv6TtXY -qthdQ0QAC0IIhugC18AzYAPT4DSjcwkqGSxsVZUWXKWhYKtF/qAh3Vt3P/Rg+WNPbb5yZXR10irx -vIyxjl71yxuD6W2e8Q2lINAaT8KCGJZs6Lxiy/pCrdbO242s3MhKvsY5qmipOs8pBKWAVQ+H8UxG -V9Qyy3uxBIsiisxlbcWt5KqNYotFkLzI9X23XQBNczRGUhkRDEUmxYKTQlJ8LEpHIjRO5AvlnVJt -J7iFTKsIrMXhoq34dAbKNGsJznJ3Y324PW5P80bW4CRLyrmBhaFn56LxBJsh8pzQVZSOqbV52grP -xaLzcfD1luxlNd/TnJpjLpTtnYF/a6d2MnZvbFRu7ywc9ksrZXNSdDuugyUzs7ORVDJ4tj0cIWZm -k+A3GbZaLm12GjuN4lBjOU8iuw7fUMm6gp0flt547OS9T1+9c7S+222VNEWhKRqnecHDcRfDnXhS -Nt1xb3St279Sza9onL27svPY7Sc5XIL9Ekktp5XquVan1K04FY3RsRiDp7Qo2NIZFIIKQbPJpJVM -6DiWVcQiGsOoFNR6KhrGg8tfSRZNS0TG4KgsT3s0JqWiaSLFogkBTYli8I2VzdF5LXiYZSmVUsH2 -JuMcjVk85ThmW1f7kDhsRtBZdbHaJuJpX8mV3ZYruTzKcZjKEno86DSewjGXpYuxCPuu/xI69a4Q -+E0a01w16+l5FuMYlDIYOSfrwbO4ZMZhCYfjPNHKisVkmIwFDWGGjYWLnr9sO0vDyflsvkOQMsNm -TatXax4Ua1ss51CkYiq5pdFGNIHPzaejcUFU+5a3YjrLYtBZq6RIlcn0vGp3oymdoIOHMki6kEZM -ErM50kzGiLnZRDIm0EROltosWwWZymAOgpiyWAYsicWlWCIYdURSvml13GzfNBp5vy8Ft3wEX7QR -hAs/EuWWorY1o21nFy23p8h5VavjVD6dsTKYjaA2QfkE4aVSCoEbHOfqelVRirreyueXvNyCbTY4 -QpI5xYKNlYuRSDqVIHHM0rShWzwg2HIszs7NoTOzaQgMgqpq5jB4IDHGRKMMSXo8nQ== - - - o1COQihTMBsV0CULwzWSygoPe+VheNDwHH43DJmCW6rarDYOBLmdSrvptJbBTC838Qsr0TCbSsDy -eopa162FDJ5LpgwUtWWpI0mtRFyOhHmGqddbx5Y7UfUBThXCEYgcQeN9Xc6DR+OlZra0UWjutoKJ -tKsPp42rLJMdDM+JQfdyy3En+eJ2uXaYK+9FEsbMPD07T6bTVizCPfKucGgeV/XFQvO43Dyy3ClE -7+xpBEkq8aj0yCOp+XmCYkqGvewXDy1nmkKcWEKfDwVfSwmsB8E8F1wli8zPIskYSxG2qTY1MR8N -IckoRmcUGtcp2O6UEjyylNJQIpfOZB/5g4hT2KTFiigXzhzeHq6cEFyeU+oUV5L1hmZ2HHc4XLmc -wtV0RuXEsp0fknwZJfwMWVDMUX/x8q3HP1jv789F2CQKOrHplc/K5pTmamjGTKREknIlpQXxhhEe -TpUUY8ny1kARNb0ry7Vk2kAyToZwWKFhuONcaUU1eySdz3rjemtfVuqG2eWkumwNy93z+eYZr7xl -eWNJqY3X7shaD8UM1axzUs3IjgWtS3A1iq/Z3mRxcmX/3BMkmw9FmWRa48RGcIMfW2LE4BEe1+qM -xie6PdDsPq8tEGyT5nuyNk2mQXZyaTS4JzCeZDMZVVUbij5h2GYqIaWTkqa2xYdPNCjGQqm5X26d -YaU+K/UyZB7BHF6qM1w5kzElsZpGrURCJ5kCJzdJrhFJmnPzLMP6aUSMRIJGshiRE+UuJzQEsUnS -JZavi3LbdMaxuIJmPIwsU2wDI4us0CSZ0nyICs1ThrEgyvVESkghKiM1aKlFC03dGclacFsmTmYJ -phJNGgnUwZhqtnKgZdfc0q6T35mdYyIRgRfqstpAMjaGQ+7n04gP4kxSRQSxw2GW5iquN3Wzyxks -G8weTZmc3JO0kWV2MVSFsDx1KhUJUckYl04pOOGngud/bQSBiHJjIRJkjaFcO7tkeiuau6w4yxRX -n50heXXAK518cXrtxkvd0QFCWgRXwBnfzS+7hbWgY5g1EIKbbVa84lIK1yIpMYHYnNTrjm52p4/W -Fi4ycg3FTVHtGtk1w9ughA7GVGD97ewkX940vSWQlxRiqubIr5w4+X1RG1JsGSN8OABZH2Ckg6C6 -qLYhKsrNw0b3XLV15Jc2i6X144vPSGaXVdu1xcsrB09tnzy3fvRUfXCht3Rd1/vlwtLeyYM0YRNs -HkLLyG2WWud6k1ud8c1S65BgfEGpq+aCIHdpvgbxKdkj2eivrl47vvySYnTnIlQKc3Ll3cbC9XLz -GisuokQJwXMYnX94L5yKZtRwMIVZD3r/kjmaraK473hTr7hOclmMzsIm8tpIdYMJy3Z+DWIsnTaW -JhdtdwTnG4kLIImM2GalBcWa8koLw00UkS2zY9iLIMVoBgTQ06ylXGm3UN0vVnZjcVXRBqoxkdQh -fFYaz8XS9lxERLCcV9hi+FrQ357K8UpbsceyNeGVbhIxILCN7DIOVSPohNYj+bqd3xT1RcNb5fVh -Gsup1pJf3okmICx1CC2aacrq0MouwxllsFwG8wxnCQoxRGA4wiGooRoLheoeJ/WDni0RFo4qmXZA -2WZORU+dip+eo1NYQTVGVnYqyJ14VEgmZFluCpDCuAevoHkmmdfNkagOG+1z9c6h5Y0oPi+oTacw -xTlfVBuyMYAglI2FfHmtOzpnZAcJVJOtPslWcKrIiLUUWcowXYxu/Oc9/KmMnSF91Vmy8xu9ye3d -86+NNh9k6CKOZ6v+ZHf3Vpr04mg2hfok09Kd1XL3QnnhouosBIPVqmu81lbtBUnvSnpPsYf52m6u -vMbKFSc/On/71f2rz/SmF0vtM0ZuA2ISTmSwcLR/8gSsmKy3G/0LreGthbVHm6PLanYZY2tecXXz -8Ml690wyZeWLm7vHT67s3B2t3Tm6/JLpr4GIQfxIWoeXqxjlUFx5fe+Z1Z1396ZP5JsnJFUm6Jxq -NmS7PxcR4gkVtMuwNixvO1c+KDcPcNpUrY5fO3AKu6APveVbyzsPyq0jy1sF0NLsIUq4st5SrJGV -m0JdUOzVBBo87OZmx+tbt1mumEzDLmctd6nShRVYlewVWugmUlazdZTzp5GEmiHLaTRH0FXb383V -zir2WhorlMqrV64/lw46+3GhqAzCJYKEts/uX32fKPfuPvrKF7/6/UZ7dz4ixdO2bI27G3dXzr57 -Yf0xy19PIla5sQOpEY2pc/M0zpRQEnS1X+tcyhb24jEdSRuy0oScikRJ0K65iBRNGQKEUH6vtnDt -kdNoKIRjuJXOuGkkCzGJEYVkOovgBSu3UagfQoGOJeR0wCcFkqn41SOCKlHgsIQ6iInmTLvDmyuH -T/NazSssVTr7rYUz3dHZYn3TcBdgMRWr251chl0LxuaqXTe/3Vy43ly87vgbcJpxVMdZH2QKKiwr -tSQTMmuNERfM7Opw5ebC8nk8uPd4anoT1R7zSl/LrtjFdc3ube3cOHvlOSs3IoKu8hUg4f7ytemZ -Z+3SdtYfbmxc+OBH/7A/PZOmspw6qPcvD1buTbbuNxaOSMaLxHlGqNB8BWOytFxNUznJHEy2Huyc -fak9vCKZi1A6+0vXBa1HcBXVWWmPr2fLu6o1Ab3ySqvzESyJMrnysFCf2P4Ypcok19GtabG2e+b8 -U2cvPTMfYeNJRZT6o8ljm8cvu5XzrLzAC7UX3vO5ZucgjTqgihsHj7/w3s++8OY7u5df0HOrQAum -tfj2h77i5JZCUSlDlI3sVrlzdbTxxOGFVzvDa5xQnqxerDU3IgkujbucOvTrF7fOvDJev7O8cVsJ -GuXVa50zwSaijmqNdG9VMpdYadDoXlrZuoMReUBlkGjVnij2YnBTK9sAZjs6eXD/+bdFrUXQJa+w -7RXBAE85pc/wTaARQe71lq7lSjtzITGRtKzccq66VW4ftYYXQJfiEXDpa8sbtwCA50IM1HrLP1Ds -ieZOabFLsu35sFjMjx9//A3b7r7rD8LhEEkyRTe/N1x/cPHuB5r9c4mk/tgTb3n55RRqpYDu1XEG -wAnPw7lkiwf9pfsXb3348PIrptW9dPLY4uQMEJfpLHiF1c7i8cLk0mDlarGzJ2uNZme3PbpIcRXR -aEtWjxLaUFglc2Tn1+v9E1aqAa1J+qDaudJdfrC49aAxuSYaHd8bnbnw7nx9FcLA9lfL7eOtwydu -3n395hNvTzZv5/LLS5OT0fIF01ksN/cHqzfL7XOthXPbh49fuP1KqTUdjo83tu9buRVObtNyg+QK -QGK8vODkt0Wtb1idyeZlxe6hZM7OrUJRUN0VyZ4srj26efZ5iEnHX/Mbh1tnH9+/+nJ9fAN8UhLz -EMw1s4PG4pkkJujZDqt0RX1caR8Xm4eaO4azCEUYmi1p1kCxWqK9KNkbZn7HK+/lK1s4FUyzqre2 -DbcnqmWvPO2vXy919sqtvVrnuNrcxykP5NErbXsl2OVJtrIJIG34u5a33uifd/LTJKJ2F4+Ha7fM -3Krjr8pmX3MWWbFZKG1AVAtyneUrW/t3Hrz48ZM7r60cPt4ZX3dyE0EoXrr05LMvfSaJOjidzxVX -h2u3F9duL6xe76/eAki7/+CNra3rBJFl+WJv5fra4bPTnSf7y4+Ot54V1GE4qnBCHcWcbHE9W962 -ixuiNQD4KbXOlBonc/NCBvML1V1O7MyH8VCEmguxGF6CdQYjYJmjZFI5PZMCfBWVLhtEXYPhW4m0 -DVJ29uLLxfI68CpO+RAJUBxptgZlGogrW9ysdc9ALktSZWf9QrW1QlCOYfYaILlnnz288Hx/csUt -ThS9vjQ9Ga7fTADUMVk9u1jrnF+c3q8PLld7J4XGrmb06u1d0120/Wm5e1LoHmu5ZU5p15tnNo6e -c8srBJvrji5VWwfL61eu3np+6/hxr7Si6+3N9avTjSuS2qg2tq7ffe3y7ffunX9+8+yz7fEl067c -vvnMtZsvYhSIMMhXR3NGEAOl1onpb7Nip1JZu//ut/zqFKf9cuPALmy7lcPO8s1L9z6wdfyMn9+4 -cOWF1YN7gtnONfZ0f4c3JnZhr9S62F26JZuLqla9/9T7QRPSeBani7TYYeSeoPc5sd5onekNTs6c -vbW6c4OR+qI+BEFOEz7G5K3ceGXvfiCbXK5U36gtnCk2d9vDC35tD6OqBFOu9o4LjT2U8ES9XWwf -1QdX64s3FteebAyumtmppDTvPnjt8q0XZaMLcMXwDTAIneGlQm3P9ZeAYHmxvLl7Z/vgTqEytfwR -RHuusNLobF++/uLh8ePgFwxrcbp5a+vcM159T3KWJHsJ8PXGrRcajRUUUVW91R6ea/SP/OIKpJtg -LMURLxxVVa2DEe544+a5u+9fO/9CeXCxunBS7p4T9Wk4qgPHLq9cFaVmJgPm3UkjLg3MYywJUg9F -vbk5EkEtWemDKM2F+GTKFeWhqIyc3J5X2gNfFkvKkFA4WQDXwPHVoIF8WoUVoPiq7oz98laQHVpA -nrJcUbRurrQKyaiafcBjSWkX6weaN5mD4ks6EFq98dXe+KaWXaKEShzRRaGyOLqomx1BLIHQrR4+ -Aeu/e+75nXMvDzbuys4CTnuj1WsMD0jjBSmv93RrUKltVpu7kt6imazn9fPFXqOzVqiv2/mpABim -Vyq1VSe3CEVEkJoP51a4GcbRvXG2tOMHMrKZqyxhpGWYzdv33zx787Vsddev7gQPTbsLmtbc2bmx -tX8XlBY4v7l4u9A8qQ1vg4YwwKIptZQfX7nxXKO3MzOPk2wV5KXSv+BVdiC1C8WVQX//ox9659X3 -fiqZ8RAiz4p9p7C3cvDsyaMfGe89K6m9S5cefOJz32z19sGj8fqU0wChV/rTR3evvhd2LYM7WbBF -+WVGgHgrkVyFYiuS0is+VKfjiw+K1dX1jWuuNxG1LngNlMjHETMFflPttfsXDXtgOItmbsIpzfHy -1bWde/nKLs0Fg5PqzZ18cZmFXfO3SsCuvRO/fqiYQ9hisAnF2jbFlB+aPgXEUHU3Cq1L+cYxKzYo -Jt8fH22dvStbnXl4Q1pnpXa1ewF+JV9cM81+0B+MNovlNYIsRqPKXEiAmhiLmwRZqtTOtns3ZLVf -b25X6/tYxk0lNUD9cEyFSFP0Ua60T5Bl1V6UzS7kHaQAK9YA0QW1r9hLOFtDiBzJ+oreTKG6pDVL -rT2/sp3Nb3YWb7aXbnNGL4UZueq6VZgmMybFVcGmCeDmOsemvQRvE5QWTtidwdnO+HyhsW14E8Hs -4nyBFKqF2k6lfQTiAA5dMXqq3i9V1mqtrWxxOZ5WeSHvFUYkZ0mSr1s9Kzup98BaroMzYsQ6knFV -cywZC0lUUsxqvrHZW7q4uvfEePNeAlGQ4Fb8xmj1Ei3VwDoFjcGlbmd4rj852xufCGKN52uaCf4r -F4oykAV+eWP/7NPAGK6/ggXNCZlwjAMfzfCFaJwB3bBzw3pjtd/fPjn/WLm6jGCe6Q== - - - rtvetulOZXMAlgH0zc2tTNevbx88ilE5lChky2fqo7t+45zpLVv+Gi0GDf/3Du+3ujtglhHcp/lG -o3t+5/jdS2s3OgtQOje6vZ0PfegLk+lVlKrm6oeVhYvl3rnG8CIsOEHl15ZPvvrHP37q5Y8CrIL3 -VKxlv3LUWLhcah7Y3pJp9c+dffzKrddYqQFCSvB1QV2wsiuSPqK4Nk6W8vnx8sZlRqxidC1DVRNp -J57QRbne6O6t7d0m6KwgVFWtm/VXppt3VjeuM3w9ltDCEd7Qexubdzi+NjtLh8OiKPcXlm5WGseS -NsSIqpcdf+CDn7ly9amZGRR8QTJTothOobhbKu1Y1kjgCnD6rFTFyCyG24azwAoNQR8SfAswu1g7 -9ksHufIWrDmQp1tYloOG/F2SqxJslVO6xdredPeBmVsKx1g4HlHrsXKj2NyBs4BqS9B+0OqtfShq -TZApx1/JNw+aw6vjrSfOXn+1t3wFZ/KiWgvCKalkMi44C1ZoEUwNsBNCFKOdrNcFn5VADKBQWJAk -asFHWLl1xV5mpAYvlY/OPaaabVYoQ56CKYAI54VKrbG3dfYpNBixV1T1Hi/UAd4KtbVsaYrizsPG -zh2MdBNJSVDqnr84GO473iAU5ufCQjxlEmzFzk4oyuFYy7Dblfbmytb1yfatYnMTwUygFN0aPewO -wUFeACpP1u9un31JzW4mET8ckXO5Ja+4ksYtCFHw8omUTbEt09uwi9uQNRnMGi5fAkTEgqvB+Qzu -gQLXGgedhcvV5vl0xkfxQq6yB9D18KqChWIWkg66wJ1cfm5xeoFmPcNerHeP+0uXvfJmhioAKwKP -LQ5P6o3tDG6rVs8ubEImLm/fLzaPk2guFlOy7uJw+TzFFhi2LhuLurvCSf1cYb0/uuwX1wjC3d68 -Oh4ecKyHoBpO56zcZLJ9Z3XvAUlXENRJpgyaLFJEIR5XEcSKJ+E9wcQr0+4WC4sM7UejkmaNi/WT -NGLHo3wkRKEpVWA8TuqwYptgqiDRXnFZt4aV1jkpGGSz1Fu6BXbMyC4nER1BdF4ow46Y2bGoDzR7 -2gZmWL2zML0umf1wlBWkBsEUMKYg2gsEV0pDnRVqhcpGtXuGFcuq0eoML2TLG3ZhxSlN8811KGQQ -WpLeAReTSOm82AGLqgZPavQwqgTAA9He6e2DOUUpnxabCJYHIFQNMKpDODVGbMARjjdupzFHECv9 -0fla5yxghmGP86XNaucQHLqk1FWtDcKO4TnZGKguKGElQ7okmyWZrOsOnOxCPMnEEnQkzs2HWBQv -gudyipssVxJoe3V8sLp+CSUsSD1WaVFiQ1Q7qj4QpFYiKataLV9etrILXn6kOUOUrMYS4Mq9RuvI -9pdiSR7DDYLwE0mT5ZqwXEQweFHh+dLx+Sdw0pudxZJJLUPkdGtxsnZvvHZfczZm5vloQoPtiMbF -hy1oVJzICnzF0Bf84qZqLcpKrVCesLyHUyakCcFUVGPRy6+a7gTsJJoxKrX1WucQdlO2Rpw2iCYt -DC/Ich/ehmGuJFT7S+c7S5cIugIsRNJlsHXppLq7dXW0uCvwnqJV/OK43t0ZrV8FQosl9Ll5JhpT -OLoqsNWZ02QkInFSC7S0M7xoOiMEMcNhHif8fHnLdManZ9D5uaBDIBywYfRNd6XWveoUj+3CDieV -McLgpQInlCAlBb3HiKAetRRehPOFJU2n5Xx5vVA98Iv7gDdQAVEqn8xkwbFStJfBLahurcXL3aXr -ZnZV1gZ2bllQm6JSaXf3e6MLGJ3NUG6GzoJbPHP5+av33re08xi49TRqgAkFTctQ+VhCTWfyoF2O -t3J8/unR9MTxx+O1qzRXSyIWBAxwCC93zSwc9oWFtfskUxH4fKu94XoDmgN4g6h2OKmtmxPTHjNc -aT5MM1Csla4CLs8eQpWPpVWMyNYbe1BK5ubSc3PJaJwDA44SRYytolQBtpUmXT871PRmJC5I+qLm -rIBZyJa2M2QuFlcgtLrd7UJljGRkKJoJxCboWjYPULcG2xqJS+Eo57gDlivPh7h40sComqCMyrXj -du9Sub4P5YMkc53egZ0dBJ3AU2oybVJ8QzEntNim+FoiwY9H5xrNbSRjgeFCMQ9iIBIVBbGe9cbR -oAEjRgS9gMoUnDJTSGPZSCIY9OMXVvzCahoxR6vXz956vdg+hIViuDpEaThM06TlOB2I+VRKp5iq -qAy8wqYoN4Jn4lIiz/sr6xdKpUWOtUW1msZynNT1Chui1KXIUijoH8KVyqvt/gGocTwuh8Pc7CyF -Y3k3t2ZnV1DUTsQFyGWOr+AZNxYVIbUVo80FZJKFsk6zFSB/NONmMlkFMt0eq3ZApLS4QAJ9ZUyQ -IJzMAbZRVJET2roLBvZYcyZpXI8lGZwCz9KU5EowOU7tg0N0CxtgBvvLNzmlF08pglQBKWv0jrYO -7+2evZ+vbzJyoz08O96+ZZfWQ3GeYWt+8UDWFgxnIps9xWhlvdHi8lUUc2Nx0fKWS+1L9f5FxRyz -UhejyijuMsGcpjKGqQTuyNqiV9ger97uDS+DNYDUDkd5lm+C+WLFemd0oT+9C+VJNYcgbhk8H0+o -KGanM0YypTq5tfb4Wmt8qTu5mW+eZOgaWBuolQvjy3ZuChIhGkNO7qnm0sOZJpD4Tqk4unbrefh3 -OK6QbJ0RWuCDsvntXOmMrA8BV3CioBtjXuzyUtdwVuANoSg3MxMM7Wp2DjipgkKyoA6GeZLcothy -CoIkLqOoNl07X66vpFBNswbl1nG2sKEZSwzXCUelmZnMfIiUxOrcHEYzvl9e70+u33zmM2tHT1ve -EugGlha7/QPHA5iH+hU0G4GzSyMGDyRD5MIRJmjIE/QbN8MRaWaWiMRE+ClN52Qpz1CKLOdEuQyF -L54IenqfOpV65JF4NMLTZDAPK5niY3GapHPxhJFKumBGZBWcYy40zzCUy9BONIKHZvHwPMtwUEOD -51Vx3JPVoZ3d5OSFNOalEJsTWyRbRnAPJEtSB35xt1A/o2XH8bQ+O0chiI2T4JeLFB908skW1yS9 -S7FeKkmmEwRBaLJaB1/ZDL6jeWKwdhulylA3SUoztKJhgJIDmzXAdPfHV8/deqOzepU1+gAPqt6R -lEoGM3i50x5cunLrrYs3PthffhA0CkurtjNQzEWSKUHsieoir4yqrQtubhMjcumUoOsgVguCXINX -hsiHIlI8pQv6QnPhkuOv8XKt2T/IFlcQPAvKhpFFzZqUW+dzlX1YKE2rbB89vrByHedKjNIR7Qmj -9AWttzi9Um/v02zedReag7OSPtTtNcmYsFJLNbq1xvZw6QITPNlXype3i7XdXGkNVgOny0DCoTBL -UyVNaScSLPi1DKgiWbK9VZZrqdqiIHXiSdPzV2WlE4tJaCZLcQ09u+bXDiutszRXAi2FA+uPL4hA -nkHnw0Y0YcMZpdI6QXgc64fmMVmq5PxF3Wx5+RUwv8FAiiitSmVT7wBMptMmSLcod1mulsHAAjhQ -90MhStO7HN8MhXhILsAPmgvmjmGEH4sxkTBi2y2/MI0n9f8S9PpjEglQPD6dspIQaVFhPoRXaitL -K5eh3J86jcMbgLUoskzifjIuwR8/fTqViMuppEnQ+bm5zMOvTVUoviTbooUOIDoldGRzAr4vmpR4 -qeV6097C5YXle0ZhLY5akYRO0rVkOmjuSjFeo320f/GV3vI9Ue9HYwSFiTRlMCzEZEG1+lZ+VXGh -Mi5yYp1hbZpSSEJmOE/W27LeyZc3wDDq+RUpO1HssW4vUAxopgFm2a+sbu8/tnX4lJnfTaUdmspx -fAnFTGBgN7euW8uqOfXKB5I2TiHgf2VdDeZ5RaI4gqq82E6nXYouW/6K5QU9n3mhUG9v0lwBvDBk -jaQuNPqXyt2LsrUE+64o5WprR7W6CUSTrXF/emP98CmQr/bwsiA3weM06+BhNxNpi5cGtc7F7cPH -jy89P919LFfZQhE9l+1v792p1jdTiBqMpUsoGJHXjAWerdJENhYlHafXWzzPy22KBbmAdbNYvk1Q -NTgL2FOAlkbjoNU/kY0h+DuCLkeDCRQCx1Va3QOcgpWsQbxJ5hLOBEINkB90yw+RHJMVuCzLuqXK -umYPcSoPGsjxUAG12TkimTIR1I6AeOKeJHVotoE/7EaoaZ0M5keiEM/wp0yIoiTiwIdSbJHl856/ -nM2twpL+wSPJaEyFlZ8P8ZGomkTdVAZcQw2MkmUvQlVNJXQM89MpG/43EozzYIIqkHE1Y4AgTiRl -PDKDhsMUBAnLl0HGi9WDw/OvHF58/9LWs6a3FkvINFdUAJnkhqAt8saSbK0UG5d648eCeUOoopt1 -zWq7hTVKHoTS3nxEtfVhp3XGL66imEYxDs1XFGO4CFWmspVI85E4DnVTMQHIgxFFENKSVGn0DrrT -a6I9wtlKOpOF0wReyhCmbbdtb2QXtmDNoSbGE7BrAsMGgkOxtVRao9mym9/NFo8EZYliCuEIPjOb -QDK6IPWisaDbLcNWYIuDeSV23zQ7BJVDUBOCHHaH5muCOvBK+5XWeUmfBlKTFEDtt3cfgzDj5ApG -F5IZP435NFfNlwHv8+B8y0EHv0vdxYNGZ0/Uu0nMBZawrEGlvKbprXCEBlQDcsOIMs3XAZBmZsn5 -EG0anWZ7J42oQU+DtC7IneHyjfHKPQCecESg6fze0WMggCCnJFNluJaVXbFzK2pwhcqNRFjDXvDL -qyjpzoToeMrCqCoQoCB2SdxmSVtXKtP1y7ozjKftmXkOpyupjI/gRcffDKBoHje1VrWy+7A9jnj6 -dGZ2FkcyHkmXkIwzP09DZtneUqlxWG6eZYU6QRYh2KDEg8zSbDsWN1imqnvrucaBYg2D+4hSejQi -QCDxdK3gT8JhPPja+lSGxEskmU+D6UN1IDEoHIng5hYLNJ8TisXqZnvhqL14pjs6cYtTqP4kVZT+ -80l8oVRtnZlsPtmf3Kn2LgGxACcEDT1EP0Pasr5o5QDs13XnoNG60u1fttylRFqEN4gqmEcPD6xZ -OUNkVaO3vvPk4cU3oKZEglmNIi8WSPCqclvzVnG2XmqctBavM0IbrHqns+n5w1TGToDtTVngzRmm -UW+dr3YuU2wDSCCNKLzQBOEKPFpKT6M2QK9f2lzafAzJ+Djm8UIdUJ9kq+ChgB9otsoLQQPASIyG -5AK70V082TzzFMW358JcJMbTbM6yBxADD+/H6EPQbh69sLr7JBvM1qGBJKuNzWpjA9DXza1qzppb -OgLaJJk6JOzcPBHMT1E74TAzP0+lUTdDllVr1S+f/OeNRpEIlU5LolgEYkEzagZ3AOB5rsXzHUiB -4E4V1ObBDmecDOZCfkGERBMmTXtZf1GQKwBXAlfO5VYLlT0o8WjGQ9IqkdFlqagoeQyTBb4AEZ4v -rhQqO4LSx6jKzCwdjVAkplOEAwKCZmyCLKjagmaOMpgH9fHUKYTnirX6Ok27c/Mk1A== - - - uGjCYpRRtn6lvnhJN3vJOOO73Xb/ENziH7wrPRfiwnEdo5uisWa7m4kYsF9akWuTybWZ05l3PZKY -n+dIpmF6KwhqQRZjhEMxeUVv6UYTHKgo+3gwGkPBMNu2R35pQzG6FJNT9LbjDxmhCOcOK4nhQToL -aptgfVHpGM6ypC9JxhRoE8gB4gGyTDYW7NwGSBDQsp2bCHIwrNYrrvBaL5zUwjGRIH07O5KUlpdb -q/UuMzLU4iZC5qNJUGCb5Ks4UwrHoCj3JG0JqAAnSrA4YLsApSC2IWKBLqJRJoXqKcRStbEgDUSl -j9PVWFyj6CKCeeG4ijN1KPSKuQwODmIsmDITxiCEWK4AwkvQPi32WLkvGWOnuBlJSDPBDEQRTA2K -g9PPC0oPQl2QGo3OkV/akrQOgdtgxwDgwZfFkuZ8REimDJBHWVsCvz8/T0QjdDQuJNMWw3dUcyUc -VRMpHcUcIrieUIhFqVSSB1sElMhLbTBEALcgKSiWA8cB9gG4FKcqij6uNC/C+gN7PBzjxS+PTkqF -cQZVE3EJ5BHLmPjDVzScoTFhsbP6gTc/KUuFaEyMxuR4yuZlCCEfRYI2FPE4ZVg9QajEYiIcbSQC -YCYBRNF0MBQ7FqXB4pFUlRW7rNTPELVQiA76p0VpkfdZrvjIaTQcEQ1nqjjLXmlbNibzYeVdj6DA -bBwbXCGJxQTHHWrmBFQ3kQxsF2QTzXiCWHWyYwYsLQmlU//Pzgk4ZslKy7CGbm4CaiPKNVEtobge -DcbncTRdDsbHyA2aywFx8cGI3qZkDDNYPujDI3XM7HRx7c7S1hN2fhO2nhPLsIkIhBxmp9BsGi8y -fNt0Jm5+WdE6lj1UzVECtXCmgoAUCx3L31WcVahZQCY0W2OF4Ka+4B7IuAbWJo3klODWr9LsTDoS -wnkByFmhmSaKlcJROEIDIwoQkKlMHn6FVxZpocfJg1jaPDVHnJ7Ho3GeZUsZVCcwHXJTMkaas8yp -A5QqRhJiIq1hgMp8FeoXBLBuTbzSQdbfXF675+XXgPckLg9pCNIXTFmF4sI0HG99ML4pqkvJlBMK -McmkEk/IoYe3JbNCh+KamrWsWfBTdW6OiMdFnMxipBeJS2ksC1YXDKasjezsGljR2VDQQx7D8yRd -UHQwy8vhYKSpxFPFQm6JoRzY7niUC7o3x/hwiA6HuFRCNORS2R+2GtNoJGiEFczXIHywzLBc8/Og -TvF0WnH9NdjN+TmCJHxQBjCwJFVIpayZGfT0qThF2CzXSKTMaFSOA07ElTiYx2CmmwmhODfHsEy5 -0doDIYonJPjP2TkeQXMUXYO9mJtj8/7iMy9+xPNGp05lTp/mcaqIoEYiyQddaPDgaQgCdyGqY3Hw -jDZJZgnS5YSCojUEqUbRvhEMrFwBJAsuuQQdPKwMbqcQOZmSMMwkqOBeghRiEmRW1ft+Zbvc3PWr -64LaJGhY/1w8KUdjAthhiirhZJXmAaf7EB44lQtmlqWCq4jl5gU7f2TlDjVnm+bhF30Mc0jahyIO -/3C9Hd3eFOVFeIGXj6eUuVkMSSqyCHisyMqibqzRbBf0TbeXNXMlibg8l4ecQjJZBMtTPARbGafr -pj01reUkRCNuTibHrFAG/KCFPskHk+t1u89LtTQKLo8SpYbtLqPB9HMIhkIsAT6IgLqGE2YszhKk -DcUOJ+F0ShDDcyEhHFFwomyYE8g7oKxYTM5gOVgWnCpncChwwnxYIOiaX953/VWS8i5cfW5991GC -qWfwIsHWEqgbigXeFifzsUD3JMg4musACaApPRxiTp1GZmZIjq2CFkEIBbeokxVTGxraAkUVQ0Gn -PiIaTNwT5ubSoTkcVAUl4PDKoC0s34gnjJkZvN3egzyFcgkWb26eS8RkCnd0tQ5/4V2PpB85habT -FqhiaJ6fnSFD8IaExbFNRW5D1Z6dw8JhGmgKqAxYF0Wz8bieSmm+t9Dr7aOoOz8vMfwgMHqIE0+Z -qUw2hpgzYXoOViMucWzdzi6JSmCOAJliwSwYhiQtKF5++cj2dkimRjMVgipEYtLp2czsPJVIGhk8 -BzYZVgPF1KCzEOlRXI2gwd5WGL4SS2vwx8H4YBkXQSCpWQy3mGAidsNyx8F4GroAh2p5K6o1AkAK -+p/LTd1edHNrBFsOBUO4RDBNQZckzIFUIgkwPtVs8D3aAgR5JMLBCVLgkjAolB7NlBimAjXRNBdo -phjMI0sYfuWM7myIyqJhjQmqDOVJZPO53DCWEFE8a2XXdGcVPgvOIpHWZ8MEgChBVXDcB50BeIjF -7VjCgVQNR+S5eSqeEFxvQDL5mTk8EpV5eVGzAR6mhrMCdiz0sD1jGnXgo+ejLCAxL/aM3Eq9F1wM -AY6FdLaMxp1HX5uuXQDflwHt4lsEW0cJXwLAsIbJpE5RrpMbh8J8KMxC7gAIZciabKyZ2e25OZKn -8oPuMYoYEEjRBACGFk3aTmGnP74mq63ZmRSBmhnEhHSGZQf2Brg6PcukkLxqrYAMzs3R6ZQDZwer -CktBEk5wTylim+5yvrIfDvOxqAIvNA3rvADBnEoagFvhqACeDjjqkUdS4bCAoK4gNKG6MUw5GcQt -cKbIsI0UCg6ui9MNeGF0LZoyonE5uBzNVICLUDzHsE1VB4NcAn+B4Q74U0nuFSuHVnY9nSkkUl4s -kU0j+VBEjsY1wAkEcIIqcEI9uGGbysHfB7oObkAlPMdf56QOwG0KPiUKAUxgmBKUXdxipYpqDyrN -Q6+4gwdfrtmgkCyTKxQnjfa+W9zKUEX4/yW5SZEe0BFAqcDmKdJiGTMYGYMZAKXBl02khyBaJMxA -ZTf0nsBXSNJj+WqGLKaxPFRhjMrDQSZSCsMW4DhVcwC4yHB1CACGKyt6L42BZTCBgbPFXcNbgWgh -mdbDEZAgIzkgTMggkEROHMBfy5A5UetGEsq73hUDATStJYarggEMRUANKJCdVv98e+EiBG0K0Vxv -CkcISkjQuXCUB6hwvKXu8Pxk5z6YZTi7UvUIKDGJWLGkBnEC4jY3z1KUrxqt6ENf+TD7aiC/aRTo -jp+fJxGIfCI3P4cB3cXTFkoAcrQ0e4l4OFMbbAULjjtlgMJwPNByD8erAAwQ4QwTXHQKzVPJuH56 -BolDSvJ1t7Bl57e3z754/cGn/OLeqVM4qBm85mYpADPQt0gEYKxcLO+WGwdscEM13+ufyEovmbRC -USWUsNJ4TrcHKxs3n3v1i0GHQ9RLIQCrNdPZYPkOBCEkCwRSBvfgLFgW8HURciGRgsWvskKVCsap -1MDuReIGTjUEeSLKS5GYHtx0kdBSiA5cJMp90BzQCpqvplA7iQQX0LziOifD34cNgmJqEgTkC/xD -yWQ0ViwpVr83vqbZIFA1RqjhuEMTJs+6DAuFLPjuxiusW84kjViplMJzZZbxE0l2fj4OdJpISrAp -leYZkIJ4UoF0o4OHcfxEnAMawfGsqPRsf0tzpyAOkZgAGw2hlURUki2iRD7gHBMEZ6gYC/CG4O4L -uZktbprZFahckHSAUpzQB++WTEKhYQSxnSseUFwVp/Os3J6PKY+cTqcSMs+XYzE2EibCIRw+l+Pr -+fKu6Sw9HMds+qUJLwKpGjToEl6CWg/AMN64tXbwuJuHqKstji5B7kCQS/qA4hqQzjheBDufSIrg -hTm+IkotoDiIE6C4NGJn8AJG5IGCTp1KzM3hUDjmw3w4KqZQM0iftAlGwPbWMMwDXFeUEUHW0GBz -tWiUmzkdn5lJJWIKhuZBfjGq4JX3pvvPtsY3Kp2zwJaRiPrII1AWg0cDwPolEyrLVXRzVKocgMGE -6g+OA6hsNLlmmMNIVEkgWd5a60xuXHnsfY898/5zF56IpTQEdQDnwNewfBNEBoLq4XTRDis2cRrq -nTIfkcPB8DgP7DAkFxwz2DeU8EA5kYfX7eNBKfQgJkmqCGiURHQ040LNMoIRG3skU44ldYLKRxNi -LAmFskiQDZJuQu5niFIagQDz6OAbbQuUDaOqxfpRsXkImf7wvDSguGRaAZ1JIUYiBQJV5sUFXuiA -eoCPC4UwknAzwcRbWMkyDb7AXffL5wgiH4HiPpvBgrrpIBkdp3MEV6bFNi8vMHwzkVYiUSqYG2UM -qp2zhdYZkmsguB9c6EirOOViZHBXG9hJ8BGl5sVy8yKCZWfnMuEwm8GySMaIxXkgh3TGZ0QIyDxB -wi5rp0+nwiEiETywQAUPstEgI2X4RUYoS2odwQxWKHqFfd1e1+yxoNTAAaFkFqRSlOpubimelFJp -QzWXBLUDopdKWuEQPzePx2IcSWTBFZ5+JA5FnxfqDFuPp9y5MJAbFxBdArAEOz2TAdDFCY+kAKva -FFPHcO/hVFaQHWl2FotG+ERCi8aCJodgjgi8LElD2B1Oaolqj2SgDGmn56iZORHJlFm+YphQl9uh -ECyjxXFlFHOhpM6GeIzyWanBiR3NGIH+gHwBy2nmVDMGQV963I5G2ATiYUSFICvhIIR4eMUSqiA2 -we+ANgpmcL0oEgNG4uZCgFs6xbY5ZcSIPYprwUYkAPYQBwIymTYjMRleUO9IOujxi6B6IimkUSn9 -MImC58VIH0IR/DhYOSDbSu149eCl+vgm4CsAMEROBoPfzeF0lpXq+cZZw9/m1F6GKoDMRgEzoiIs -CBQ+gOFMpsQJY1FZ06w1FA/Ef3YeJal8vrjn5rY5aSGRdhG8AC7YsRY5rgiMB7a0UN7KVQ4RvBRL -mulMFjA7668rWhvAD34qSK3B+Nrq9n1GasQRLZaWOQlsaRtqE5wdThYNd9P29wVlBNk6O4dGojTQ -F4gM5Ah8HKwkzfcwqgawJ3Al0BkMcw2r31k88mu7BNtNIX4oIoCtY9jiw8HZQjIlSHKn0jpX656v -dU7SWA7CIBoVQHUhnECIwiEhHjd5qY5kzAgUuFksaPmIuWjQpi89N0eFwhLHt/K13VjamJ0n58MU -iHYqDV6Jg/cHl61O48mHiQ/JDuU1EVw/z9Fs5aEfMcJRJZ50ULxouitwpjOzJNjGbG7T9XelYOyF -Cnw7F8LDwZwOLx7hT51Kx2Jq1l9Z2b2Rr6+iVCWJZBMpI5myFW0QTPVFHU7u56tHrd6NFArmpZwh -aiheCOp7hJsPw5pk8/nNzuDawvR+vn4+HFNn59ngwJJmEmQNy6JkiZNGqjXV7AnDN0AbAzAIcdE4 -eEZflMaAag+76wf0GIqwD0fqKKB44KwzZClDQI7nFKVju8Gweyi1sjrO+luS3AVDmkIkhivo7hDn -awRfN3Lrg7Un7Pxu8K1ciAqGa6dkgWvoxjJYCVbqcVKf5Vui1EaRoMd4JMqHIwIosJVdFtXuwy/c -iyhWEMQO2IR42k6iOYZrl5vni/VjCEIQnKDhMAWoVjHtbqG2xaldv7bfXLzUXLz2/7P3pstxHMm6 -4APMxenWQnEniwtEcKlixpYLIYkiQYliN7hI1EJ19zkUBIIiWlh4QJCS+tqcXzNmdw== - - - zK7ZfYAxm1eaR5rxzz0iMzKzKFZRIqoKypJJKnjlEuHh4Xu4n+/foU1NS1Nc+fbqjcdnF/5y4tS1 -c+c/OXeeZrF44hTa+pzs0erfXvrL5oPV/zHIvjlyDOrEqdOkD3yycPHqwqUP3OK9S/rLM/NwjNC2 -os114D2y4+AfQAl0ffOyuTNQn5MKtHD+5sK5Tw4eHLzz7vyRI5dPnsjx356jjUnM/+LgL+cWbh45 -aog7/flPRy6cu3oWAjGlDU6axgfX/mPp0zViaIePvH/8xKUsv53lX/7pzyeJ+fdOF4eO25OnyUT9 -GK7dd7kG5rkb/cufJ/o+vffceZICi4cOmUuX7pKVfZhMs7dP0ZWEq+OnrpL4O3zEHThw8e23T586 -bs4vfICgxtkPFy7f++Tu8/t//69FYgIkwc9cIfX+s7s/2vw+Cf33iBWcXDx/6d7AfEnM59DRy0QJ -p09fuXLl/tWrD65e/45we+CgPnTEEe8i3vLOe+8fPp705q8m7tvi4++S/Mv5izfP0HxPFKzGOzYx -Fs++Twx5+dTZT46fXHz3IPocEVM6d+G6vfKNufJ3t/iP8xc/PXN2kfSEEz2swoU+Kca3iR0RE75w -8fr7Cx8cPZkQy6X9eO/bF3//5//s2/tEve+8+/4hePCunjv3wTH4MS6RrFHuG2LFg8t3DhwgQ3ue -TPJjx9WZ+Wzh4rXjPUc87TL8qGQk3jx6zBDbfP/CrXMXPrus7/bOXiVr68Lg84uDv5LVcO48KfxX -bXH/6s2VB9/919ff/e/5x9+dOH3tyPGMdNfB4K/sifrk4uUvig/+kbgvTp37mGze98C7nNJ/daSq -pV+cWvjk5NmP3z9/U1t66e2TZ8hK+vjT26vn+385ctQePmIPHbXzC5+RcQpGfcIeOHC6d0rnVz53 -2ZeXDQmXq0eOkkFnT54sEnVXqXuHYVAXynxxKbl7ZmHp+PEr77x76Z13z584bi6eu37saIJ2P2TT -LT64uvSdSb8k5fnwsb7Sy9eXvksu35qbO0SKaGLvpB/+x8D87dyFT48e1W+9dfrQ4YF1X124ePP4 -cX3smCNN8iKxXJKPg88v9W8Tuzv43oVeLyet4wBxjCP65FnantdOnkhPn3CnyHZ4/+ql5E7x8crH -nz2x6b1z55bOQpRkWXHvL7cfHT+WEEclY+T4qcWzF24ePpEdODQ4ciI9eiI79/613ilz6owhSX1u -YfnM2b+eOHH18NHs0FH97sFzp+Y/PM3ZesdOp2fO3yg+fnT72/9z8eaPpOoQXZHooV1p7NfXP9nq -m285/pITN6ONQ1ydW8zfPD+4S8tNuhw489kPDh8ZHDoyILI8e+5a/gEOXx89bml3f3Jr7fqtf1zS -184sfERM22T/TsLo9Jn03LnFw0cvHTpy4dKla3QvCfqDcCwreLN7eVF8dWbhysX+h7e/2kwyMriK -0/Mf46T5wf7ho6qv/nruImkp7thJRwr8RXVXZw+gep2gfaFo1pcGS4m5dmlw9dT8Ign9v37+i7vy -HS06tzrqXxh8dubch8d69vip1Fy5/9U/frr79TOb3j6/sEjaSH/wl2uf/XBmARvqyLGczJwLg9tL -t56kV4gP9I+Qgn0iJ+Jc6N85e+Gzw8cJ4aQpnXv/3IfGLpP5c+7CX4grXhx8sfz5z8p8SQrw6dMf -vHeQtKyPz5+/eeo0mdtXTpxcnH//L/Pnli/17x49av781smDhy6cW1g6ePgymVG9s9c+/PT7fOnJ -h0v/PHf+s7fePvvWW2cI82R8zS9cP9q7Qk+gbZWYr/skIOY/JqPg7XfP9k5/SFJ1/v3rR4+5S+rL -C4qYzIckRk8cs8QzDx28xNr4tffe6x9498LhI6TPIO5PisSZ+SvHjuu33zlD9uPCws2Llz5D+OMU -cVp1pfi6R2re0f7hnjt03B3rXaFdfPb9W8Y+OHbczL//0QJRwrlrBw+bt9/tHzpEInUxMV+YK9+c -PvfRiTMZjg9cvHXtkyd3v/1XevUh6RvIYzmZYtVOZadIrep9uHDpy4uXvz3fvzu/QAqGZR/sVZt+ -+/kD4gkPSakmNew9UvCOkx5OJjnRWEKafLb46OMbW0l67wTSwC6eOKlPz3909vz1Yz333qFzR0/Y -gf7ifP/WmfnFP799ChlHh9BDjSQ+iYZjNLVeThs8Sb86c+HG2wfOn+wt0r47dNicOv0BGYAk4M6c -u5EuPiRT/Z2DF4gJK/uFyf5O+kZilvuXl06e0oNL19L0LvwS/c/eO6LfPnDpvcMJsZr3z18/cmLw -3pGLJrt7+/4/H3z3M+dvXzpwkBRRNejfuvLBtydP5WTRaHM/zf/mir8N9D2inz/96dCRI/33F8iA -tUd7+YXkq+zD9WufPbswWEbc6ph6+53TR49dpiU7Cy0oeYd06XfOEpu9NFi+2P/s6HFNHH7xw7+R -fffWOwsHDukjJ668deAiLQ1ptom6dxnZKQ/IQD7WS4+c/PDdw+6dg+b02c8+Wvqh+OBrsi9OnNAk -pz7/5sXDH/6vxav/QbbY2+8uvP3uhRMnC+KuMNYODs5duPnDs//71lf/mr94650Dl9595/zC+U8/ -+PA70nL/2//23r/96eSp01fv/sf/uPe3/35Z3aZxksQhPJy78DER9sHDmlSF0+/fufLxxo8v/h+T -/vtC/y+HT9JgcuItx06RqUJ612dnF/5Ku0OZ2+cvfXTk2Hla8YOHzMnjH126eO+TWz8uJLcOHhu4 -9M5Xf//lxJkPT7//8amFjw6RDtO7Smob7dP5hY/RFbqXkk57dek/b9z6yRZ/J3WXVKDeSXeJbFh7 -Z6DpIenbB0lDvjoYfHtl8Z+XLn/17gFSPi/TBBevPbZXvuu9f/W9Y8l7nBMCbB848867Z0+eTE36 -9/yjVRr5oaODt9+dh6F93JIKSnrp+5f+kl/9/ou//R83P//pkvnyEL3infNnz1x9773B228jekIo -PXHqg8R+8/DJ//pk+T+PkJV04Xrx0T+yxe8uXb5L5uGBw5cOHB6cW7ih0IjZkPkAb9j8tezK37NF -WpGP4YfpgQ+cPfdR72xx/BT9eaV35uNTZz46O/8hTKGDF4+dIHvqU1Lyjx439OfBQxdPnnQLC0sX -L32CxOMLSwPz1ZVrj9PFf5CUfAcucdLeL5Pmf+wYSiGRuv7uO/Mne/lgQKb6HbL+Dhwk9UlZd5eU -83feObdwfnn5m/+u8m/PX7gzP/8J4URf/vTax1+cPHnpz28dPzX/6fn+127x8Y3Pnl8Y3Hnv8MW3 -3jrl7O1vH/78/gUyJS7+21un3j04uHT5c9KWiVeQkU5qlca5qvv95K8HDl2g/Xj81LX5c5/duLn1 -+Tf/daJ35U//Bu8o2TJnL9wgteTPfz5DJgCRzfx5wt4DMtAOkXp/bZWwevPOM5X97d2D9v/bJ5/v -Jj2A3+vTTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1E -pu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3T -TWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTa -Pt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1Epu3TTWTaPt1E -pu3TTWTaPt/9v/vkc6e3Tz7/bX7+k61HN1Z2V+YefDY3f+2We0h/f7HybHdtZ+7O3PzDy9d2dm+s -r+6ub2+t7PzSu0KgZKBt7/IXaysbvQW5skcX9e7urP+wvkXA+6srG2vne5fo0kX6dy7pqV7C/zz4 -Za6f5bkZGG1Vnmv6n+5lRZINnEuMM4lLtOlt4qLCDkyuU51bm+Rp+6INuqhQxcDZosjzzKap7dGj -Ne4qCoXrM76o9bqRLmq/7sncN3Nbc5/PFb2F870H38x9FX0jvOXA2/Wd58+e3FvZJZRslch8eGd7 -697O+tbu+tYP/b6Ar68RquIf5u48xS8qkZ/uf33z0/UNrMHl8ivh/vKD28t3th+t4WttUV76w2Jv -4efNjS36qU/D2ln//vnu2jOsDa3rzkrjitUn6xuPdta28LvuXb61tVv9hv/s/vKU13UhmT/fu/zV -1voqAe/TU7d+qF/4YmXjuVz5y69fuLWyydfRIH7hUU3rPH4eeR4/T2AeKhl9Jj+tP9p9MvJs/NVT -PaMna+s/PNkdeUrh8j2f0/b3/1xb3b2+/XzrEY3v+vYraKqa4GPe/3Tp7rORZ1m7Z8+neu3Ww2sb -T5+sPFSjznH9EV35ijnhmksjjHha2OTu853vn2+sba2ujYoFuXXEJQ7v2eNZbW3f313fXX0FD6nm -9Iyv/nJ9Y2106q3ds/diYZC4UWf3/cqztU931v7zOS3z6MKucdeezxCUOeoMd9aePd8Ynb2Gy/d8 -TnrUCW0937y7urvyYgx6jG8ZhQO9ZPzqV8Y/nPtFQmDtyxHZSTXuX1mDKSa49a1XLGUsEnDtnpPa -/e3nO6trN3dWnj5ZXx19WmPMagKTetX4qplsP13bWdnd3hl5PtUNE9s8S9ubT7efre+OsXfexDhY -Kxt1CJdvrD3uLXYm4HTMozMBp3dGnQk4ZJZTYgLaP7IJ+HhnhfTGjTvb6886I3DGjMCRfRedDdiY -2sRswJF5TWcDdjZgZwO2JtXZgNudDTgytfT1frECx5nJlNuBdt/ZgWPMaFbsQDKOrq+9WNu4/2Tl -0fZPf+womQhSthX3ixgdWQ19tvvoxtqL9RUMaAy7KL5pzyf3/cbzV0iv38FumJCGcHPl+bNn6ytb -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 -U8nx/f5McuLk6iQ5ebH8kJy6mRxNTt+V55Pa095+Um+6paQ50BpMms/HTtIemttIOhMDV0lXv24k -vaVtM+mvWGvJmePkVXK2UCAMJeeHTt3kwsLGbnLxZP4uuVTVx5OZmbFcMns+cJ1cHmoMJlf2Pi8l -11L1i+T6bn0guTn5nE5u5VPXyZ3F8dHk3pCznty/SZeTh+vbVvJYOztOnjw/9CfPahPLyY/X8/c0 -ysXZsZu82q9cJD8d2RPJm5ODw2TxrD6YvC0ubCXva/lW8nFIW0s+zXz4nKztTq0mPxdOPydbE8Za -f3I9/9w/UM9s9w9lBob6R+7PjvvHs4ta/2Qz9alf287P9pv69lNfqt9+mNno93aGR/pnZ6oX/QvD -+bn+pcaHz/3Z+4PD/pWrTat//XK90r91sbbbv1vctvoPKvvV/uPWyVH/B436uUhX+vuvD5PX/TdP -NPLt7LrRXz6mDp4G6pf99T1vnUZpDR87A/2HjcGBIWvxfmC0fHM6MHnorA3o5gdvwB4yxwc8Mv8G -5j7N3g4sHTx8HMjtbOwOrB1qKwNbp4/zA3sX+9bA0cP85MCHgdHhgUu/3j+Q38s3Bkp3h08DD8bm -Q19qoHqQvR9oDqXvBvt3F28Hhyeyd4PjV6v3g9rs5sOgnTx+GvQvrj8PLmzWk4PZnD48uGamJwe3 -x0/twYOJ5vzg6dTM6uDF9MneYH5m4HzwdnvzfvDxU/N5sN5anUolZ5/n+1KpobOdrdT48/BFSt/J -V1NOKz2emtsZWkhltNvD1Or9/n1qe3N+NHXoTi2lPvS3zlJXlcfPqeJD2Uk9XH/aS9VvC09DyWLe -Ghp+LO4PTQ091Ycst392aGZPPx9aKqdH+lJDq87J5tD22WN16GhoYn7o4/7qzVBeK1tDdyX7fKia -O50aep4cPR0eap5ODk+Wps+GrZPLqeHZ/dmL4cxmzRpe3z0sDu9dLCwOn5ZH6sNXz/fbw7fOh/Hh -p6316+HW49Ii8b/hhfnkyNStfzbi+M7MyPyD1xpZXpk9G9kmrjhyVD0cGrm4yBdGihv1rZFKRnNG -WpnN/tHhTKkwOp0d3xt1t7YWRhevmlOjq59zzdG9qcfi6NlG9nT0Uy25OVpeOKJRRj9XPHsslfs8 -PjY1dD4w5lzmPo8trlmPY2vmYGlsf6iWH/tQK12N3VTyF2OP5cvzsVbt+nx8dPTuctzwatfjs2v9 -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 -5HvUsRVREACmikifXoE1kHqNhd5TwzT1roRHPVhP7P1PIarFdWjxIe+fduTz3zdIXLvyop13TTvL -S8t9afN56WLa23a+ml2VltbX3iWS1Sl+tal8tXMv2njXtFJeWnfN86vjXrSKKZ3+fyl0TU/61RNO -ctyvVl4jfrWVvPR4PhSbn8iaoasBmBr6x5YV89JcqUZncVihf5t6Kynq3eMENbm+KfPxpR9GRXVo -unp0LS3v0clOK3vRZi7LXnRgXdPlfen4Ki4+X/ChW63mq/l1OVtvraC0ZqL6p5pCUaf71eXz1a89 -67/n56Vnsmta6FXyqzW7pgf56ozujkJZaBW/WrtreuxXa3ZNF/OilfxqREEAmA5KONUOTkhUU6FL -co861akOWVdHvi7b2elF6SxdewVmq3lpuUed51dre9c7JNnpkXKWz5upFcRuvlqo65e87vKXcHW9 -6aEtG8X1/eE6eW0Yrvx6jK7vxa/7h2v8+u6j939XrI/eN1zj14Pj694HHxFr7HrThR9/Tus8Jqq5 -rj7XXr6aN+yF6lEXz04vpMwG/OqkR23Cr870rpN+dUpe2o5fbXwd+9Jp8xOjGZY1AFVnlKnO8agn -ZmH/BnG0ytbePr4/MT1HPfKro5nq5OX9q5BL60J+9WL+HJRHnb7q5KULeteuPOrejlS/WljWVvPV -wq8mXf26y3/1tWK9jF2nnnHZqa+97FfOeA9dr6Hrxadf+uLXXPqi0/m17hJ2/fKrL/nldZesefW7 -2fVLvyPWd7HhF3/7Xfy6mK2/8FsXs+uFr7roha+6+AW0XvTzr6Tr515x4c+98kJaX3Hh819+Abue -x6/ndtc/r7v+uR26frZzPrt+pn3+z7bP/5nWeWxgcloo6uc0R7o6068un6/Wzk4X86vTvWuTHrXy -vJCZl47OCb969O+yOeJXZ3VNG/Wrt0r96py8tKpfneiatudX93FADAAVh/dUF3aq/Yvq6P7E1LXX -281UN1t7B7YfWnyoirr64fHZMSHlpWesa9qm3h7uXrSZrx7r6tfFdfWpZ7yHDQNd/Rqmq9/DRPWL -B7r6Uiaqua4mgb1moKvfLXQ1E9hCXQtd/fP8emFUV7/ywoG6Frr6FRcKXf080tWkrtnFRDWpa6Gr -22Nd/Rymq1sTutpGvvqaGz8TZF7aenY6bY37z5N+tcb1g8zujgXV7o40b5lr9ZT/Nw== - - - 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 -l51O86gn/GotXb2y67sn9z+e4VTH/WqmSL14y/yHslv8dNjnIOYCQr23vOjKo5b71VrZDJU1mdmw -ld+Qno1oJC8t96g1/OrRfOunvhp4vvraW++ubHbamUct96unLy+tl9+wkJf251FPrqvHn/atQQCY -OviOxWK+dHLtT8yLiXkxPvcKzRFdXT4vrTYLb3lRy6Ye+9LLO+VzOPsWR+q6t7xL+MZskFzomrav -ty140XH/OcWLTpmz11s/9ZUA89VvIpv6m0petMnVQV5aPzud4zMXy0ub9qLRNV0yL62vvaGrATCO -PC8t96INXc6y0zle9MSctqqb1ZT9iHjRwzl99eVUq8tsSnd48aI189IBd00b7e5I95/Ne9En89eF -0cykdVD5aqaow85OB+xFVzsvne9FG81Oh+VF9w/ozdDVAJilf+ywKac6u19a2jXdKzmXzUtr+dUn -ln6osUuxl+NR92mv4pPbKlUDImQ22dSF89LomjbgUTv2qxdS5oz11k991Xu++vrb7tHOS1eoa/pQ -al66bHY6iLx0pnedzEtH57Dy0pLstIJHbTI7raLJUbUHgFnGTSA5fvVi+hysR62cl1aah6tqmV4i -O53qVDNR7V0nG9LY1rRxMb864V0H2TUdaF5aYV6QznTd/KmveMlXv/mCj36b708MNS891f0eOd61 -M786P79h2a92kd/IWnX9avJ5AADmyPWf8/LSiex0r9DcS52t5qXjXnT2PBhO7s9v2GNvk+FR71id -1NjO2j+ca+zgveip7JqW+c/ZXrTFdeGWu77iOF993e332PGftb1o5KXz/GdVL9qx3raclw5lr+KE -DkfVHgDmILPamP/s0Is2l5fWWnPD1Su7vivPUY/WaToCJnlF8tgJbRz3n9W8aI28dHS2mpeWd01X -Ny+dnp3uj04k1JxvvvPLDvLVH+fBD9956YC9aCt56YC8aKP+cyBe9DCnoes/H0hZSdgfeCx9hl8N -gEFs5KUtd0079qijM5PNCro6K1M99qunW1THBLZNv7roNZV5aYWu6YzZpEedNd9015ct5auvu/0L -+dlp8x71tHZNm/aoC/rVBvPS8ux02bx0wrv2n5cusgIATDCore65yU5bWotmpzXWcUZaJVyd61SH -06fnQ11PamN0TWt411bz0nrZ6ZEXrTvffOeXDearReqjRHZauhbxrgPzqLPWacxLz0jXdDnv+rHE -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 -gM/9SNKsOWb9atOk2tl+dd8Yy7yaJ9XDJ/Cwmhv1CONNi9kRNv1qpVktJuzZ71fn2O9Xr1D61d83 -70VSrSzVrt3qVyeh+wHqErgRBgAAfMurZ+YL+BNlFZcT5q7uPmy2PqN2tV9t9x5zxbF7Rcw3y6sz -LfLq4bZ5tdwDiTTpVy8TPZAom351tFW/mrw6p8+IJJ1Rf2WTV7vSr+4Whu4HqGuwydW4EQYAAHxE -1bN7VQ/OV90/p9/PveF71f2z9M03fOfPZ+n57eMrYlU9usz2Z3e0izv5E2kHXkKNqYcl2curvdWv -7hWR4my/ms8DGWHoV0tGnW2/X60zaqf71SvaBsd88HULZtRit8mrXepX44giqIPgRhgAAPAhj69x -fz7/RuPSbJdd+o3s0up+r0K/V9D+9h7t5fq9XOxVd8+Inb5Z9fDS20eXqp7eVhY3cOi3A1bzuR8i -qdbm1dXUr9bn1Vlu5dVL5H616TyQZWIeiG1ebW8eyODY+T/+2cvCqF3tVyfNX+zrzyoA1cATlKsB -AMAXvHpOUs3Sae3S5NXqLiXVal5dJS9h129luzZz7HJTx35774y636X9tLQ/vFj18CLbJfG+Vc+t -W3Q/gsNn6zNqi361M/P01D3ErF/dKzKFXbYo5dVZal49wal+tZxUO+hX84zakFfnaPvVMaJfPSkn -LGL2B1+3YEm12C3s2ol+ddfeI4oPHvX1JxaAaqHq9glMrgYAgBqm6vk9xaU1efV5O3m1PrW+Z5Ja -c4s2T62r7hqMmu1VGpeWn09XiXXn1Fu+i+c3d0+xZ1oPLlQ9qCTTZrL98nF9KBCuyS/WZ9TGvLqa -+tW0a/PqYeMyND2QzHBdG8Qmr1ZvWnTQryaXtsmrc2z71W2Doz/4uqVi1B8YjNrFfjVialCXYZOr -T/j6RQAAQH3i1bO3j69zo74gZ9TnXe1XG/LqN17Mq7laq7vs2G+5Xb9VHPtO2Vu+s0W/ECHbdQvR -/ZCS6mGavNp+v9or9y3y53lWebXar9bl1cNdz6tt+tW6vDps+Owfm/diSfV/tnQyr7buVxcfPO7r -zyoA1cmTm/QbuK9fBAAA1A+4Ub+RMmrtXoP9atmlbfPqKk1eXWWaVzOL1u7yul2q2x9cqO0NQ979 -WKVNqm135/rVUl5tm127kVcP1eXVmeKmReu82qxfvdRiHggZtdKv7txn3AdftySj5g== - - - Lt3ScQPEsl/dtXcEuh+gziP97gcAAI6oevOKrZcPq57fxQg4l3n1/O2T6yzXfXiBx9QXdHm1X/Wr -ncir3xryavasOvZbybFPsmfxp0ytaozwuR8afw7X7jXUrw4ZbppXZw2boE4CGc4ngYRPtOhXL1F2 -TVItebXcrNbl1XJSndM2OObD/2zFYmqWVLd0Pq827VcnpaD7AeoFmLAHAHAI1+lHVc/uskow2+/K -+x3YtWMUo35w4Y3q0uK5tvWrncyruVHz/YS0sxD7fK2IcXj3YzY36tlmGbWdfnW4Jq/2Ur96QFwq -y6uVZrXtnD1dXp2tTAKx7Vdr5+xp82rbfjUZddjwmT82D+NG3Upj1O73q0vQ/QD1hCe4vhwA4ABm -1KTTbN2V97uwa6dgRn2DZ9SValL9UJtU15V+tT6vtrHrUr6YXfuzWmu7HyZ59TAP82qnuh/afvVA -5tUm/epw3YlFZ/PqSJt+9cgEk35125AY0mmRVGvyajf71d36RPr6swpADVLL+28AgGrn1TPFqN9o -XPrNszvCqOmbb5TrSF48eFO/B7IJql4/r3p8XXHpN5ruxxtNUl2X+9V6l9bsfPnloR557sdsm91B -v9pkHojjfrUbebWxXx1uv189wqZfbS+vNvSrf2s34MNvWrGYWk2q3e9XJ6Vk+/qzCkCNwiaBwKsB -APZhDRAprLbKq2XH1t73V7+uGmEu/fw++0dA0mnDMsmr61O/2qYT4od/7iTMXUUW3S1cdWl9Ru1y -v9rppFrfrx6u61fr8+os83619o5FF/rVSw39aj73I+zD/2z14TetPzTJq13uV6P7AeohmLAHAHCI -fFbxnmm/Ws6rJa+Ws+vb7PmpvL+4X/XyKWl21ZuXtHz9C/ICzKIlkb4hu/RFOy5daZtX19N+NQ+r -/e1Ej9z9mGWWVJv2q01ngMh2Xf396nCbfrU4vajtV4+IZ/eYO+xXK0l125CYD79hRs0aIDyvlo3a -nX51tz5Rvv6sAuALMGEPAOA8fACI83m1Ytd859f2yfubp7f4Mxt3/Ibv8vNN/kD7zTdPtPsNsZPE -6vfr8n696rF2vybtj6/p9yvyfqXq0VXNflnsYr2VH6oeXeLPl9gSd38/FM8X5f2ivCteLdv1A6Nd -1/d+9YML/mbUby27H9XQr3bKpTVrXt/oBbb96nCbfjUptDGvjnc8D2SknFf/2Dzso29afyiW3qvd -6Fej+wHqLyhXAwDcQAj2iwcm/WqWV99Wd8miVZfmFi32W280Li3t5i59045L31Bc+o3GpVmxWXZp -vq6o+6OrVdylq4RFSy59tUoVaWHR8i5ZtN6lH2qM2tylK+WMut73q/nfGvxQpwWi+9F92KxufHcy -r67JfnWf6AUk0kM0Ny0OtZtXK/3qbCf71eTVoeGzGv30l2TU38hG7W6/ulufKHQ/QH3GD/89DgBQ -u6h684pr9hNWFHE6r67S5NVVlnn1Ww/z6idX1d2JvPrt48vqbplXvzXm1TaOXT/71fzX5f/TqrXd -D02n2qJfbbHmmObVXulX9+VePUzpVwujdqZfzfLqJdq8Wr67fGmU3K9uGxJLOv3Rv9uwXZdXu9Ov -Dkb3A9Rz2PXlmLAHAPAmpNlv+HFFVqh+8UDtV2tT66eG1NoLefVb27yau3SVxqVFXv3WNq+Wdqfz -6kf28ur616+W/nbACx7+LdJaVrPuhzaj1u5u96sNnWrv9Kt7Rcw35NV2+9UTdP3qCObVIq/OVrxa -m1d/3zxMGLVmud+vTlqA7geo96AEAgCoEdhBRZJtcW7xOfn2ffSra1m/+kHlW/p10a/o6S3xeWR7 -7UTpfjh0aX/oV/eKnK/Jq4VXZxn71RNM+tURNv1qYdSRCUt7hc8goxbLTl7tQr86GN0PADi15d4r -AEBdRcwGqeJRp7Q/Y9P80K/2Qb9a+XU9ZV0d5e9BtdefbVG6H92MnWr3+tWmzWov96t72uTVxn71 -BPO8mtn1RJN+dduQGINR6/Nq1/rVcxYs8fVnFQB/oeoW/oIJAPBrmHW/Fu79iLs37Y+k69SldQf9 -arv9as3rZ6/WdrR4fZouzud+2LY+POxXG5vVXu9Xy3l1pv1+dbZpvzpC36+mNTBm7g8ten/8bVsl -rLafVzvVr4ZUA6CCEggAoM5R9fqFst6+fFj1QlpvX+ifDWcnxe43/Wp73RXN3ybUJWazqAuYkTB3 -VbfwWTyXnmWWUftDv3qu6S682rZfbZyzZ9KvXqLtV/ccNutDyajbWubVTvWrg/tE7T+Eyy8A0ACv -BgAAj5FuhzFbb1/xHfgU/Z0v9nb/7VfTbjevHm+dV2u7H7Ek1TypbutcXm3Vr0ZMDYAtuGYRAABA -3WZ1fhGZs1javNrDfrXdvNrebptXO92vDuZebduvDnfcr2Z5dWj4rB+b9/7423Zk1M7l1Q761TUa -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 -k7MjEheHx2cMm5g+eFxqxrr96bnFbufVZ29UnbvxdrTatXamX223+2HoVzfpFEk6/emPnfhuyKtd -7le3+6lpQZOgrc0abmvW0I28+kKXDx/y8dTapBr96trYrxbrkZpXv6Ok1raO/XRCMBzbCoTVAAAA -/JsHT16VnLpLUn1AhNVO59Vk1Glriqek5k1etJldZb7n7IZd5buPXt9x+Or2g5cLSy4W7K/M23d+ -895zWRsOzsoqnJ6xZcDYhf3jUvqNmp+2psi9vJrsetuBS17vV3/XvI9q1CZe7Vq/evgv321pGljQ -JHBr06BtzQI1ebVT/eobIqYmiw7TdT/Qr67t/Wp7eTXbO4o98IG8P53QnQT7TRnK2Bog1QAAAPyY -K7eeHjh1T+PV98mrDwmvZucWH+jOLZ6VvHrn4auZ6w/MzCwkr15VcIJ+YHHpnaKTt/Ycv0FeTf91 -+6ErhSWXyKvzi5hXb9xdsW5Xee6O06u3lU1J3UxeHRYzL3X1PsO9MNbnFs/eIK+uOsci66r01cXe -um+xXVj8D0Kqf+pkP692oV8d23/E1J8+PxTZheXVTV3Lq891/Oh+6KdmGTX61XWtXy3b9Ttmjh0o -OXbHoE3Nv/z5ixY7ikt9/VuFH4CwGgAAgL/y4MmrsouPSsruklRLXn2KhdUH1Lz6vsirD+nzajLk -OUt2zM7etnb7KfomvaXq1cduSHk18+qLBq9eu5159crCk8sLTiSkbAgbOWf0rJUirz5tk1eXX1Pb -IIa8mq+3jvrVc8z61cakmnc/VKOWk2o3+9XvfNX+//nHX4b1c5exX37avOe/f+7175/D/v1z+B/N -kn//0rRffbXrx7b+jH51fehX61ya75taMJ2mJb6Kxs5e4evfMPwASDUAAAC/hKR6f9kdyahdyavX -7y5PztmVvfEQ+fOxc4+PnH10iHs1vbeik7f3Hr+5+9gNkVdvPXCJ1Dq/6ELevvPk1Rt4Xr1m+6mV -haUrCk4uyz8WP399z8jZQq1dzavP33zLI2s3Mmp1/6F5389+6kxS/Rnzauu82nG/+n9+1sFWqq3X -f/us+6/fdej//W/9f/htXMtWr6f1t06q0a92qV+d3/ab/Lb/zmv7Tdyvf/z8ZatfvmwV9+vv9J1+ -269+OiFY0ukuYw1fKvBqBrwaAACA/3H55lPSYMmrXcmrN+2pmL9iz9LNR0orn5248JR5dcVDK6/e -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 -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAgC/W1DS8u15debvSMDfW0FQZj5fs349WDt9uHDTcb2ha6qocvK1urb3d2ttd -OfhBY7e+NXdv8vF4tbG7sWVy5QcbB0vekr/U2tjT2FIZ970l+wX7aWtjhyX1SnFj16ONlZ3GlmKb -jfbTxgcHWy+2du2b02srOxtFyh77f8PjT+7wxby/Nv2m9HZrs/4Ouwa3il9r7KpMD42PZ3F1Y21v -fUM/jAZ2W7xy94OWlZHe0aaWwbg1GeuIhkvz7YfdM34013awmm8sdj9L5r39kaz7Vs9mz4t7QW/5 -8MmbW+HIq96j6M2r6mG43j/5rFp6tPm2faRppb86UX61HM21945U11/nfQ1N+sbjysyTgaT9sKd9 -e/TZfrUyNDa73VnJVt+8aB98MpC2l4fubFYmZreWgmpzdddfu53GYaXt9rC32fJ0pMsbW2zyNidX -+sNKeGek697d3QFvY/v5sN9Wfva8vffJ+mRDU3vv1tET/f3l8Grz2lDPyPDbQ9tVlo7c2u1/WHnV -1P9gZLg6vuR1Nd3fHe3ebdnv2nu4NuR1xePj2mzF6+rvTvW7yUjbk/mRcu9KpTJyo7r9+nbyeCxx -W25octtO3k6OTA6vzkykgzvlndB9r9w9Uno7MjC5uXOSfLL44/iaPBvcHjoc6Gg6ahkYbt6ba7Pv -jfS5S9C1m73o9pKhvYHKy4fb2w1N3t2+x7OnNqE/js/l4dLwnXho/vhcwpWu3eburvKTJq+putlU -eljueb093fVyY7/5QwcyWX7desuu2PEm8o3h1dflseHVclNe3n5S9SrTOzcORobz1q2ul3s373xo -O3ODU803gpGWzYnAbvfU4kj1MNvz4tWXy+Xuue61yr3S3cDufsvmq0p1c3Ovb3CqaWvI23hYijtu -jPU/ebfFaPhh92Rla/nerXL3YWlqcDvouxEdbd97FvX7G68quyMt+9VS6c6LvpajYGNwYm119Mzv -WjE9/u2RyvRRqXlwYqOchHeyV7kuem82vf96ovJwYGFqMEk3758+odn1Fy5J0t/9YKn7Zd/CaLln -5u3Nyv0Xo9X378Dx3e/ZyA+is9ekOJS+t8PhWvPknvacVtL1nb7BF63bY2fSaacbtZ+2T/Z5iT+T -uV9zG1VOvoLNnko38KTnrV0xS3m7MpO/Lr/3o94bF7gcxzes+221a+V+x0jrUXNSHV5c7yky8ckP -LI8VP3o2dO/8b682KVukVjMcdpR3h6aeVmaqK779s9yscjXld5aj0B1N98u5tZfVzTt3Oq3U3Zqp -TkyM+cMde/fDcu9A1GR5rP4OlkqD2z1+i0v03uG9/4O6v7t9w86gt3mkORl50f1ytWutoWlo/c7T -3uNNnPv50HqzP1HnJFvLPYuTe8lC8mp6cPveo67zR3M6SUPT6UT1jmzl9k5l5t56+8jyUn+u7YT+ -6uNHo7WNnflp3Q3ceW13/yObuPP6U5tYfnl7pPXhTs9INV4Iekd37r2OjjriR/bPgRvhcv7Ar24c -TvXaudhtfFm92xc8eb/IbVe7lh7cGV7tenq78mDicKJy/+X2HW/z+Yv+oOX5ZE9v8+3BPX/t6cxD -f9VP8/DZbHLPS172T4XPn+7fsGtzZ0J/DL9fXmqbtX23Te2NHu60LF14s0srD+4Mbldn599t9sxG -dcWeDGyXe/vfjLpEfkfLyFDXvYmmxLu7MPM8HKwczYbPtu4PendXV6rexNLN2P3imV/74HWobk5v -7ltO3th/fKdoFyu3B9dGll1LNDBSai9XJvv8ju7x7va+iYPX5f3Nl83VzcXpstWR+wfDzW/KHZVH -M89uDC8PHO6fzYtDL/eXKnvV5x3l3r5nFavHOhZnO8tvDsd3q5ulaKprpn+wMlLdiZPqZnlzp5KO -L0TVzZnFOyMDj29Pn7777W8fHqdbabWbPBDlOyNTj6KjuGd6uP2VF9ohzfg6mlYrLw== - - - W339L+xuDA+9f9Zr79qNcKnnWXv31vO764M7TQPDyds3zxeHXryceeDFb2eGTnbVlTx+8PRVdaP3 -+ema6KQe235lGbZsue2uV7ITWnbNw8uiAlzOypmilLbR2cmW9eGOQa9UTh7eOl3pffqPc3Xy1/5x -tum4mr187FzqNWCXv5cP/9Gdx1+/+6+5YjcvvPuruS9nd/9N7/4VZ4GLncvXZoGvvmIXygJXeF+S -b7KXj53LlWSBzziXr8gCl3PFPpUFrvq+JNd5968kC3zuuXxZFrjEK/aRLPBN7sv5Ht83vPuXnQW+ -6Fw+Owtc9hWrnwW+5X25wlDsQudyOVngy6/Y52SBK7kv57LANy+V1xmNX0oW+MordsEscHX35ea1 -x2PXGY1/bRa4jCv26Sxwxffl5rXHY9cZjX9FFri0K/bRLPAt7svNa4/HrjMa/7IscLlX7ENZ4Bve -l4sPDl3NfbnOaPyzs8AV3Jc6WeBbl8qrzAIXOZfrHR29eBa4qvvyfha4ljr5irLAhc/lekdHL5QF -rvS+nGSB62uRLz8LfN65XO/o6KeywNXfF2WBa47HLjULfMG5XO/o6EeywDe7L5cyV/g1V+yyssCX -XrHrHR2tnwW+bam82ixwgXO5hCzwVVfsmmerz2aBa6iTrywLXPRcvi4LfP0Vu+bZ6lNZ4Lpa5KvI -Ap91Ll+cBS7pil3zbPVk/RWq3+juX0UW+Pxz+ZIscJlX7Jpnq20vV7x07JPncnlZ4Auv2GdmAVYP -Xvp9YfXgdd79K84CrB783CzA6sFvfvcvlAVYPXjV94XVg9c9W83qQVYPsnrw2uMxVg+yevD67v5X -ZwFWD17KFWP1IKsHr+/uf2EWuJbVgzcfxYP7nY/LB7fm3rZXb43ejuY6Wvbi3sUf9uvdK+5FKkHj -w52VtY31xrl7Dxv1RphTL2bJG1taG+dmG7zGRw1R4y82+F6elfIw9NLE/syyxs7E90upH0Wx54dR -mAaNrxt8P4hLQZL5cRp7SRhZoiArRXkaR0maZkGYNu5YotCzREkW55YkCixR6JeSLPTTwI/tB3mj -JUlKSeTlcRomXhgXSdI4jOLM9+Lc8y1JZN/xsiT3vMR2V+wqSbMsDEPbV+43rjXowOx7oedlYWB/ -b+y0wyr5tpUwCuy3skDH0zi4an+0PN7dXXltF+PFwcr61sbu28Ywb2303P9sd7X/Fn8OvmgIoqSU -xUHgxVEcp3Yp9ZNOP8hLiV2iIMwiz/ezRrtsqaXLAj+MvTyKdATR+0cw97oh9+ySpHbksR2pXc8P -bKwzzcOglAexXR475Tits7XBtUs8tMELH5pd6chygxf5WZ7Eflz/yKZ1sQfrv/LH5TqvsbLRcGT/ -edDglez2J1EYR0HqJXmSNNp3vDjNsyiwvJKHeVzcnVJmGSsO8sj30yRK7QhLeWRZJLcDzKLQt0zn -N86t2K5/sSH3bSNJkPie59sB5naYYV7yk8RPLKP5XuYrF3uJX7J9JEEa+4mnrB6kJbuYqWXkOLat -KtfYZkqx8r9lf/tPkf+CLA8CPwoz3y6BJbFLYL9lh+pb5q2fJC5ZEUoj238QR3V2taYC45eyJI5S -z7MbpYPO7KDzLPTCIM5Sr1aqIhUZuzB2X3ylsQ1ZCfMzO9+gKFRnU4SWwg+DwC6q3aPGejvyS3mm -Am/XKAgiO5o882wrdsxB7GWRDjnKrZBZZvKiwA+CILejydO8FMaJXRc/tuyQKFFgm04Cyyyh1RxR -Y56mpTT1/Miz0/SUY+okSUpRFkSe1QuWKKmzq7W6t9QO2m5Nbvk1S7xEx+OlduGtckjyyPKES2Qn -b2fvR5Zncrs59ZLYFUwsW3mRCpsdz6dzz1rDpm5FUAqj1C691VYqV1lQ0kmluR+kSeYqSh1j4vZt -RTAu0nhxnEVRHllOCBsna7fU6jzbsNVbSXHHklyZzk4rULFzSexQAqvlkry463Y4dkh2UbOw/j09 -k3mGGi6QDScbatk5s3rAzjWpn5svUCY+VbaGLlJKJ90tDVPL337s+4lqR92vxFoQa3nsOsdBcUvz -LE1TuxvWJhR3PbMSEdoVi+MwsSS5fSNUktgLAqWwexVE2mQUWHWrw7E0VhBCL7eztz0WiSxr+all -xcQuZe1w7B9pHuR25F4th3nWIIZ2BJE1R0rh2b4ju5VemKvy1s1LfaulrOVL4rxukqQUB3ZrrBBE -dg3d4ZxPlJciaxMCO1JrPrPa4ZxJZO2lNa5xaq2wn9aOx444itLMGhNl08g1Lpn9004/KC7OmRO3 -9tSaljiwTGtbz4u8Y1WwHZ3dmyjOXVsdlIIwsNxmxdROrsg7vm3KCzzLXYGujhJZoBBGusUqJS7z -RJZzLS8EcZoWSXI/0z985QMlCUvW9Fn5sjwWBnWSrBXZ1Go8q3Wtaomy+tuJrW2yNi8OvSyL6x9N -bBcjtXO05lFVz7mzGqpT0K16yuxuhlYaA6v+ikIcWm2k0m/FPdA1tGout5JssUpoFy0tCrFd69BK -bOpKltVLLuNmnjXjkV3TOkmsFFs14FvI5VuNkBaHcy6R5Z7YSr5VNJ7ltuNK5Uwia7ntnCwisw1a -NVfnkK3e8fRDqyhVN32yhhtq+EBMlQZZa2OnZ0WsltgqEzU9FlVFWSlNYqvqrUjnlontEvhhZhWw -VVRWQpPzMVhnoHti5TDwLDBVTW+tScnqtCC3n9g1Dhqj2A7c8q5aFT+3FKllDssKkWeJVMfYufgW -N6qSiALlPLvTqZ2tVSpWHVn8ksSK0DpVQZTs1keKNzM758hyhmWiTJFHYi3jp/dkOS2yoCYILKqx -IuSqCFWpeW5X3ip5S2Ix0rc6qcHLOilroz2rvUJrg5Kirra8kFn1GKRWi1jlOKhG0VPgVwvvLhBn -uL6Ea9rSIApDq10skSKG3A45UTkMi9IVREVzYoXF8meRyLaTh9biWITgu8onyi3UsPPI/CApWi6L -ET21/bkFiPnH0lh+jNRaHVdiH2+7Jj8jLvx4Q/qp9njoImHh5AfDwkC9Njv16HLCwg+W9yT8SB/K -Kh7f8khonQbblNUrrm9hhcSaS9ufNeR2prb/c/fG2qv3c4KV0MxO/L1U9TemPlRUZwuWSS/vcAYv -fDhFXRtZmxZYMxvF9Y+sVnxyaznUlbXoO7f4VzfCs6o09eymWuCqvkstOrcmOrLIJI7rhMyTH47O -Lf9ZL1kd7g9G56eTfDI6rx/KFdF5qO9Yd78WrHyT6FzHk1p1lVt9YsXfqqwipIk8hYgWZ1lzpOO5 -UKJP3YzJLy0TngXzFkna5Q+zd5nQ4jddECtxqQvNrJqzboEls5O1aM4uvvf+/VGZsL6yRZh2zFmU -+XaN6m/MlQnrWITWBlhdn8R1tlaUj0s6tMELH9r5q1zvyGrl43GDNjK33pDUBq/8xsqb2mBCZvuy -rG55x/KT1Z+KWVOr/H3PgmG1BbXBBN9ay1OjB/rO++ML+s1TYwvWjdDggm2zZLGN9brsO5nrjfhR -KYsskPHz2GJH9fos4LTG1bNg37OjcSMugV0EK/62JV+BkLqqGrKyjoflaQu7XeYLFDAqHrQ4KLBY -Pleg7kWhAvHQTqOWxGoLa5Y0Ihe4JKE13LY323qe1XYV6MjVduWJus6fTqTj8RV95NZAJVl+fDxh -YPFrYE1YZNWHS2LdpSy2RsRuppKoxcj0z0DF1h2PFc3UCqZ1YNOgSJK4/lNkpSrV4cSxrpjViEFo -UaBKlB8qJrRQyC5aFmrcxS6mhcaWSdUYqdi7RNY9ttPwLW9aEKN74WVWJ9m/48B1+5QkzGPLtVYp -WjdPSRLr72WBRUP2m0USC0lTa/WsI12MdHw6kY4nU+Sb60zt8ufFjbfOmGWQ2G6SnbpSpJYH0jhX -Ri5SWB63OxxbibP44wK5R5m87rhZi2cdxDDO89bGrum3B1u7LxpbBgcra2tHrx/tvV1R0mJYtyXU -AJo0Hv/l/K9Mv9xYOTg1DGzlwy5d5FlpTezmq8vl+aXQbrv1bK00WDWrAbNcvTu7vGEcZrnCFc8i -Gk91hTV9iss0YJa7IT3X8bZ6XIlyq7AT3adQo5DWslpwEqkGtTo0Ug2u7djFsdttp2hVipJY8xir -AFkPPVQvUdWNBZ4WlFmVYKVRXcBPJtLxqD6zMNGKv9UMLlFiHeLAynumfbnjsfsdqeRZXkvcyVtc -plFJ+0ZiMXBxPJZh7d7n1rAr0PZ0cy0UVnRkkYQ7nty1XrZx6+UXHbxUhdwaYgtVrewV18c6QGnR -Icp915tMLLdZNKJw0hr1RlVW1gzpUliQ54azLYmVH2uCA18jEY3ufqlLGOZemLgue66A2LKa1XIW -vLnj+XQiDSh6yoIakQ804qpEdjOsZ2LXz26PVTKWxPoHashz3zonCoitCbSq2ioz27ZGTy6Qf64p -Z3tqG6zExRatq9JKNXRscbYVXo1wqGWwNsPl7nNpwlKoeM1aebVdlgksFNIVsIjOvqt8a1WkRUa5 -9ZOs0xxlRRL7S2htrF1MN11hVaRVLHbvEg0EunyiqMturKKVqOg72MVKlEOtMc1yt53MKl+ramMN -9vhFEqs1LKtZfy/26yexLolFhonlZIv78mJX5xJZiJP6qmnTXH2/ekej5tlO02rFJLLzrHdWkZUh -K0GWZyx31M7q3NWxUmQ1vDVYgbW2KmjnLrFlLKsJ8zTyrEua1Etx5katfSjcsrLc2thpGd6iSU9d -b+vnxLmijTCxCkkHnltFoYONS3muuQ4LJS3CyOsMOViMaR0fq6w0wpipVGQa5LMN5J7Va4GGw0uZ -BgIVBiqDa9i/ZPWQugF2up6Kkp1NUEozi+6tfvJc99yPrcJUjW/VjRVMRW9WW+QlFRo7ZGuE3Lij -FR4rslbz2KXIggvtzLat6kcZxNPIX2q9fKu0MjsBjTDkieuhf7MTG7y0E3PVs3o5GnHTiJzLw+pF -J6kFh6kd87vY0IWCllUUOaniC6wHkhVtkBs/10SVxZxFaxapsQjUPdcYsZ2D8lpql87aZ2v5i9pa -Y7caB8kiNxOnRFYz2ndCOxjVjkoShXb0anPcQKS2Y6dkGdGCmQ8ksVOy4mM1hxWXoGg8PpFm5wNp -1Ke3Xk+mYZ/GegccqOxaMbUWxQ66sd6Ju7tp+UZDD0HRdJy7ghbe5BpJsuhP43Y7tfbF7q+CwtSN -01oiaygUvsaRhf5FuxApe1kYbc3LcciQJ9b18+PsAwnUsNqerSB7+XFD9vFEOx9IZDWhOjye5bxa -K3XmgHO7oKnVBGkSaOrgAlnngzXQ8aBn7qauNTJjdXWiWsUKWWYZ2sJrq1cDDbFroNXCzEiD11bJ -BvVmnq3ydDOvmd1a1aeWHSxqjuyoNKijompNQqppcDsvO2frtHT6FjloRjiLNWisO2DNV0ljOtZf -sxjTnZBtyCrlRKGtX4x7ZurN2f1Xp896XZbK9mLXyroClks06XChnXWmVpeXNJpp5Q== - - - 1bqEVpaUX61ZsU6Vb5nGTVt/q/MavLTz0vC7FRk7uFwD2lERaVrUYhGPBTlBcWa1Kugrg5zOL45y -rr73m2hQ0aJmq3rttBXg2mWIrBha3vbt/rqhqcTCWYVD1sbaRQ6KRFZGrQ0KrSiqH1QnSaJ+o1Vt -uSp16/vW2VWsQCrUsKq1Ga4nmVhwY6cRa4YnD+MikTUJVvjsNsUavbImyJrB1IIb31r/vF6S1IJZ -CzcsUtXw+Ad2lWpaTW2k9VzdOpTzh1wnydkTr7OrMxdQZ3X+kC1sD9RFsMrVjr2x3omfS/LJe+Vy -bEk3wHaUR1YeLc6yO69IVoP6oXUdFP/X8ozLBye5xr4TqAt3km30nfQkA7mfKM9EtTrNa5z7Qa2r -bZ0x20JYTI2oAbMYwSoAdf60uqjo1yeqxC1iDYo0dogWc0S5bVX9aA0O2M3zFSC40/ddobYCmimQ -1OCA3cK4WDNkdU1tK5r9sqDC05yGRgndaIXdxEhrl9x2LMpWvW9VURJmbqRfox4WLVqVlUaWtjbq -EYVuEt8CFWt83MCI1XfWOXM5qzbqkapxsk6cghjtSqeQxJHGOWq7KgbArCZUXiiOR71ia8k1s1kb -PbGmXddLQ21uM771JzWpZventpnUeqWaOQ7s3jbWPymtFLBbrzvsJpfrXh47lkjzKWFtvLbuZdaA -lcZBbKvHYzBn7pW1fqmmx1NVr/VvuUU1ynNZmrgG1Q2M5Brrs8Ami2p7stohLSayvGLsxM7ZLnKW -aJyoNgBjN8VqccvsSTHaY90fy8b2jSirDa8EiQaVXA6L3JlbHONZ/lQgY+15kcjTGLnt2fZfHLLd -cc9TVysIakdjh6LsbaXTqtELZOQP9neLAZe6Awq59bq10i1Q7+31uwEFDb/FbuDO+ubW5GgOXqMu -sZuJOj+gYL8VWExj+ThRdF5vQCHV3ou56bqjCeo2qgXU1LmrAV0ijcglar41eKxEmfUk4kSjmJ7b -j+JTqx8yrb3QPcrzkhsSsH60/Y5fJImtlIZaMJYkxViCugNac2i5rZhwt0SWf0LFz7lf2441Y6qm -7L55WbEdP9a6C/W9a5dG/7D2Th2b+mdVb4zkk2MtFxixqXOjzoz8DH3glr83hjRZDFfFGhULdSZp -MRZlNbrr/VrW1vFYEjtvC0Y0EucXSVzJ1dqGIC1ShCr/FtP6bn2ma6ysQleZs659cTiKxKwNybTS -oban1PrJqZbI2MEW27G7EGqOJi0G6nQKfqxhMrVrHxgYey8fD1lBOG74Arecxo/rtLGv3zV8uRbq -uOxzvjl3DZ/drliLCIK6SWoNX65JKzdyXC9ySK1Bs+Kd2LlGRWNu7aAFn1p6mCYuRMntn7nCH+tA -F0ms0FnO1WWJ3H4sX2kT6rzWUlgmUvfIyl6itRpuP15kbb1ViFmWF4lirQTQiIeG3pUksL5SrCms -NKttJ3SrWa1ZSE635adOSWMtkadJavsjehcMnbk0qaJvq7SssfIb61/g95PUuVHnd5VqrahlCA0E -12KLs4dsSSwgsquVaS1DVO/EU40FWFMSq3ul3my9C5hqoYKFV4qrAlftn70P2lPsNmPlwQ/r3cxP -5z7V1h/4kMoz66RrK1dPRTXqtJTcitgsUMutzdtRJ1oabYU2D91SwPcSuVrEqqfMar5c8bk65jtn -ErnVZSpNduUzxZlW1zZaEvUdQ43e2UWqXRDPKgO7ZrECECWxFk093jS2/F27PVofFmt9h0Zw3Zpp -69LkWjwZKipSC6YwIbDW004iKPrUYRQr1LG8Yb+da0vWEYotTnBlLdcSFDtHDUFYSJlaVzkokvhq -ue3euWVXWnhcsvrVYhKLDGLXnto9CzVMrhW/xaCo1dqWY6ys+XbNjm+jtfRWVVsXX8OQO2cSBS7L -BHbQluVTT61vdO4i1r0dOx/qwru14HZ5rU9pUbGujq65VkLnWjNnBUDtfaiVY1pZpmkvayhyl8F9 -9f29E5EyVr1v2T1Ux7JkkZfddms0spOOXqRlCXbfsuOFT67zGilCDDSjYjtRUhVeL841e9Zo27GM -EVmlrY6o8raWBNnFtj6eGkINe9gRu1S+mmAdlP29pPFei/Ns63b9tfQpSzU041t7b3fbTe+pabdf -tLpLy/Ot93yRnXlaPpNrdlFhq9+oxYilSMN0ljusfioWP32rExu8vBOzYmL33EJk+78ykctWmh3Q -oly19J8cAwj1+3Z6nxoD6Dr9i41d9/fePtpY2ztYt5yqH19uTnOf4ntvxY7nX7NtN7YMVcZHa8Vh -ZnPv4HXxo9pYQ2NLZX1vdWOpMp7r03mn3/5gZ2Pp3dG+NyLha4reyllwueXs3ECZu+AnSwH0KEgY -qem2JiGrLVu3fVi0rwA/j4q62PKN1qjajt3McaT4UgMkWslmtVJRjSgfZxYcZlZrJcXCj1ArppRD -LZZqLJKombOsFBbVtZuytwApULWeFNW15apM62US77jaT2K36NKaobSoi72S7TXRGme/qPusgES2 -o1gpi6Yh0kIjrWz1k9rogh2zFaHU9Ywj1bOR1srYn1liRS0qkrj+uaY5UsWOriq25NZcKKIo9hRq -Ab2Ggu2Pc1XxB2vZT17oD9ayaZp9t6pZS2Ud0VxdBzckmFvusIDcc0MwsYUzibqn1uJZb9AiD03u -W/1gh6gl+nFiMUuqS6tFHhbl2b12oZ51QTUFaj+2i209zVolm2uSQW13nmkI2uoixYi+VhGoMb3Q -vlwlq6BRC9HTQJWspbGIwNPyiCQtKtlvc1qDl3daVrTUQdMS1CQslpplehpIC9ytXUgTqtgLV7Ff -U8g+XsdeJE72a0uALUi0mi1UbtMjgNZJdQs9AsWKll9cZXwmSahOSpQH1g/QqqOd8yk0wmURv51X -qhEvy9u+ewQjCixIVg8qirTW1c98TVonqhkTzRimGr3Xwk+liLXYylp8zTlkiav2tCxFxSO22lK9 -3ShRtWc3NbeKzvKxOxa3+NEKmRsaURbVwwqaP7LutRtM1/icxqEC9ZYCTXtGOv6gWIepkae6STRn -qJETLcYtDudcGjUlGobQimLrdNa7NGev74cj3dr6fI0cWq/e15BH6nKHHnqxtjCxqxJrtNVyh2ZG -rKmxHK8mrN4C/ZIWz1hbYk2EewwlcB0OuwFqKn3XxFoPMdBiVK3XsviwUQ92JpYtrTKwGEq5zh29 -mwsOikdDIrV5VvatGdKdKuLUJNCIrB23DsntzFq7oJTFieVyDeGlF9mZ9ZGts2knb11Ay0pxo1ag -atl+sUI3O16k/41ObPDSTszyjeb4FZZaHa2Ri8i6v1pdYpWq5R2LWz5RiRYDlKEWMSsjWIVcPP/n -26kHbrDK/m1X7HW9RHY8VqmkSudpMm2nbqJQD91YmGJ9XLfsI4zjknKtlk7p8WFLYieqRfZ6wE/R -th7PcePwmYak9fyRbV2LGAM3TJOkReTiHlCxHoWmBD0VCHVGNI+S+RYGxcXxZInr/FupjhO3LDrR -nLmVg1yZXNVFHljTpCcotMA6LTZjv55HGnewYL9eEres0a2kCoIsKuK6c4n0IIYGSJNQo09x/ctz -9kJ/SSDlFZV8oCW6QXiROt5KfskLbKducWKuTlCoh6M00qe1iX7q+v8luwhpYHFgaodn3aKslIW+ -ZpAsn9rN0mMskWa9tBYsd6ej9TfqiIdxokXkrhBb0dG0r/r3xcCCXYzYOmmp9a8C30UQn95VpKdA -9HCFHaDlCD0uXNL4q+Y1MpfNv9k5DV7WOdWKb2xhm2fFSE1V6rtoXCXBLeC4UPHVEIuGgNUo5orh -reBYXlTdFoVaxKviez6RZma1IjvVEzOW9SzTpCU3pWm5VmuIOn0rmXrsNHfDnnpEP8q8krXX1vpl -xbMXfphqyFCToFruqsHmQOPh9gt2KbSIx90GL9X0eRS7xQEqCYEW+uRqjqw0ao5MEWyuZ2FSzUIp -0waak9LDcBorUHcq1LSLrwkgK9/23cb5Bt0WO0Q9HutWwAQWUVgOSN0AYVK8nEBJrKCGWpGRKVsE -egbKqmct/LHTs9MKEvuO9ZMi96SBHXJgdy/W2gZNVVnVayk0n5Ba+xHHyhWWx7SKPYg1c2ARuk5c -eVJrJ+3ArVrQagerjf1i+ZDn1si4rmZcsm5TrPPSLJpVByWtqPVU2+WuuontPO0uqWJN3HMampKy -VsGyvx2/NVdPGlwzY93HTAtg9MyPVVvaVxYUc7JFt1aJrKq1iD7VGqFaoiwuphO0tFlxih4Xc5MX -cZwVSfSsR6TlVrnLFr4GHXN1PLV8q5bECoeeNAn1NKFVf5aFSrE6jIFdkDwoEtl90rWxi6G1Xarn -NZyoJ1ASl9vdkE6QWdfVqmstqbTa05oUy4y+9TzzWhujSV4tsLJuhnsDhBvQDSLbcKyOgl1mPX5p -lzSyy6FeiE491qoh69Cn1nRnGnAOs1yTLVbw9Nid1dmuROjuaDl6robIEqpEJFrrFWp+4XyhCS1w -CPT4ovrzWtEydJHi98HnRgIXmSkIjdV9C7X+X89NWM63cmKZRmPbWnDgqwTpHQgW9LrngfVOBPWn -Mt0HLfjPIle51/otsTW1iWJez7VoVlkFRV/dQpCwtujIt5JrmVmTmBrCbbS7bu1w6NpYzQM1qoy6 -dTH6buB6eqHmliwatqsYuSrMPZUY6OmRyKJeX9WKpprcKx7s6idu2aMVe4UlkXts2hotyydJSSmU -xtrHi+zJ7nKu6W+rZSJNzrl5WD2nHNnhFjPDbsnRNzqrwcs5K1cdpNZe6MHzSA+CWiungXoLD0I9 -UPCpFuATnduvyibX0pf9qiLxsdFCS2t1fKw2JwgzN+ybuxrTbo2v1R1qJc8n0jWx2kb9o0Q9PrWA -1m5EmYbWtGLHrpf7FbUOekalUfPEdqyh1sxYnK/Rj8g9Rae1pGpU3JSs5a6S1ml41jy5WCW1a5+o -3Y31hFpetFx29zQjZnV8oH0Flju0+EOVqjXSti+rySxatTyV6bUJFojoyXgdrAtZsqBeksgCEStI -ejbUOoK+q8TOJVIjaWG11Wpa2pi7NakukVYY+5pw8otmMtIsc6zpUz3MEeiZb0VpmpByja2L5S3v -aX4uS1277mu8PXGvIVDsFKhwBXorhpsQcA++2w5sO1rMFqZp5K6PHnyP9RxRlvluYsc1uBYP6CGg -2D3RH2lqwWI0DdTqhTIqX3aZA6sMItX0anQCtW96VN9zpUFtqRYPqMH102J0U0tUIi2a15CVG5G1 -oE5NuzUvFr9lrpnUGhWLcTRzrwhUU/IWIViOdQ82pUU/P4gVLii0sGth4UqkVsj6mNYEa6Gqq9VK -Wg6hoTy7yy5g0XOZamDUCQ9d4JPHWsqdabWZHvNVqKYBWPVnLYjJ3Xb0IHPgHv1K3GOo57Ky/WEt -sl1CtZNaeTN0kULxwbZL4/rflcYrOlvNR0Xlm7sHvSI98FJUvqGOzEqHHtwvFgBHFg== - - - 1ViOt4relXYLyO22Wg1tFzSPisbLpdIDTAoe8katTFOA67thNQvHLrArC/O09kXDhi4eco+MaTwn -taKlp2a8pE7rdWWnNXhJp+VKoJb4WwXgaVZOQwKKALWYy48/vVb25675+rpS8ZH268pX/FqXzHPr -D7T6Ig60NNqt4ois32bZz3ezaYrq3XJARTWqun0XZltvyA2aua6dtZVWffruhrmH6QMtSoxUOWl9 -jBYtaZhKj5pZtZpkWqptRUJL/vTijDh1bwY5nyS06NzXeJBd1tpzSOcSafA3V4awLGnJiuM5nygv -uRUKiWbzNGZ39ojtopTUb9RYg/26KtwzJ65teImeGIu0DlUHc/b6qcuoxyy0UlVzx64FLZ550tJB -a1+iou3TJLYeeXfjUYGWFusRLWsudU87Azd/ralzPQ2s2ek6SRQH+74e8oqiokN2LpHvVo8qitZc -RdHSnE9k3cEsdJOR7vnWxvNH7Lsnby08sDymznrjpzPOx9dHunU2bUfWyFSv4hVxc4+KkXxNPVk2 -S4qoRO9o0DMaibKuW4Cp8US9j8NadLsWGkuwaEsDlXr6qHjlkSZLU3W5fQ3s6cJr0amGhSy0iRQN -ujG+1KIZrZHV4zHKB3ohlV7z4muILnc9fFUGdk+9KIq1SCbQCkdPKyBj976pYgjUoklr/630BC6J -V3IrdrNUg31hMXmrQEUPLVp3VSGHHgtLtQhWj7xEWq2oSYNIe9WzDBohtitUUifKbqBGm92UijUE -tkU9dWdVapHEaiqNWauGcY/lhFZELAzMtOrMTkuJYl1xuzGa9Us1o5foQZ00tMjTqt+wOBptUwt0 -9exLo16f4l4yFGuFU+62oolKRTW53nlUvOExVUHXWyntTCN3AS2mzdxLIqyf7YZILHhOUmtyAi2Q -VhXjHjXStKEdr+6Wr566hmf11iZLo3sVaImz+o+JHvUoxpCtatDCJD8rHtIONNTiqdOeaihZ28kU -4ipTpHpvTXHP9drKSA9IRe5eZXrsKo703Ese1bKFxk/sIqZ628vxjFOmxx89NexpkcjL9dSQlpv7 -fjFcrTdyqgHVXOpxIq2Fd0/IuRuaaYJJa+80Rp0V56V53kDPneZu2Zh7aYwej1EecEn04EuqnJTo -icnieDTyrGjSvqVINHDrAzML0S3sz7LizDMN0SeahoiKfKE4RmvGinEz3arUrQvQM3tZET5a5GJ5 -Ii2GPlzW0VCtbTWO87CYDI70tgEVP4uE3c2yatvaxVzd3mJXmV4FqndFhcUqBJfX9TBZpG5EXBtl -sfZE88taGlwMwmvYTovGM12guEjkmlgXk2fFugnl6lRv5HM5UA+Wa6rcrU+LdFJRoiKjlzFozazO -29e0n8XavhVRr7akLtb7vKw9UCK/Vq7CMNJIrt711OiSuM1Y1Ry4dtAL3EprPUiraaXiaLR6Ta89 -SIubkJbc2lBfS+Q991KgUFNFyoKheyqhqC10MHrxgYY5iyUaViVqoM2vDcwqkXtri7Vzdu5uqaAW -aFtZ1Ar6PC7uuF4B6qtnW9Q655NoSEOvB9FjXol7XvB8oli5INBTc6meOyyGOc8lSjQtm2pSQq+S -KXaW22Fq+1FW6yqq/6kXoSZ69rg4K3V9rTcWugo3Vryh+R6tv6/N5SZuNXiu8VP3+ojAMqFWUWpS -SRGXOx61+Vobo6ziagzdVHWkIw3+ufuVqpRYJZco96resX6Yr+c2VHm7nKFBf60r05oXrd1RikBv -FdSrtsJaQbculdppzSO6BcdKFFm4rQfU9Ox9MbWcuefOtDQ3r+1KeS53b2DStHHkadVHrifRUpUR -OyutoQgSxT5a5lE3SaSnAayh00t3PVckzifSYh4NisZ64jQuurfnE3mu2VBFmerxFA2UljRQG+nF -c6GLx4qOvXU0UuuFunkyq4Tt3mk4wF1i6y64oEC/kdaWP32qJZ50/YVqQzE5kmsCSy/V0MXW8+3W -IMZ6ZCeoLShINcqsdch6+DwuElkGcr3p2BrCotn23IPxLqTRJGCguRp1UWKF0lFWP1GgN0JaZece -OQnd8xfnj0nVgN1rxV56jUj9RGcPXOfY9rGlFSdLj+0/++/9p+439xu6RvYONrZe7D5YfbWx9tY2 -5Dd2Pdk4OLQNW88l0LuPtIhCb+/I9UYTa9OszQ70WmXr4KXu2flaKi2IsB8GCie0gtY6YFrI4OmJ -CSub1uxbG+G7wZug0TpZMwcru4fqT9mOUr0qRC+6sx88ONh6saW9qy2JrUujBsPC78auwb2j3fVD -+0mX3lCtnlXHUfnGja5709tZU+Tf2ltbv9/ne+vNpdfV9dejr6KBh9luufuw9Lq9/2Hzbnvl8NXO -2K1HfXeTudWWkaGt3oN70X7QUq5kq292muKJpqftwy1LLU3J1Ep7spC2rY70DndvNzTZob+Z6+95 -NPakvXJ096i3c3lkzwumWrYqM5NNN5q6D4c33f78lZvjb072vDS8tjK7Prpw9GraG1tubrI/Wtu7 -Xm5Um8OmtdevLHif3x8Z2hwIR2609S012M9X0rFk4VHbStK/3zbl3Y2bmoo/NltG8vb+0a2S9yDp -b6882ptc/miSUrm3482hHXzfottoz/jh3ubI8uTRnYamkdutU71p79becM/mzuhW5f5sSyndu9e6 -EgzOPT3oGV7P3vZszMzcG9xJp0ajfm92zI67+1DbmY1vVEvLp87+/la+UZk+un1YfjI14LX39715 -or+lDU32i4P91bvtd1rbB3p6huI7LS/WK49mhldvDyTVDku599offlYN24ert2/13Qgqm8N97QP7 -lZlqvjPc2RkHQ8uvV6PbWbR71xtbvTl5Oxuen9Wvbdnd7Wr2O/a9Ubtid1dH2r3NyecjYWV28J6/ -NjC+Xr299Ths708WOuwXR+61l2cGZ3puv+nqdLdppK11NCn3TI2tVsfXF94MtYRtw5aue8j+lm96 -3uHdt4MvxqYmy73h1J1yz+SNA9uL3ai96ub02n65+/52U/J28sHj8n7loTWlLYvD1c2ZQa+/p7Sw -3N7fP9xU+2N0qs1fnRzftH7F0n65x3u8XNymjYelNc8f6ujUZVuqvN6bPKxMzE/vNjQNba107Xr+ -ZGtT+eBo5E51cHK3dvOO78aSsm6P3/loJzi56OG7i26X/HY2MtydbQ0vJ0PLwx15aylsev00KB+M -vn7pjrBBRzbRfHyMp//Wv/9sZqVaKnUe1M6l+N7syrvfbu8/uuWy1+2R5ZbFYHCnvPPCHZJ3d6A9 -KG52/+hOaFcsGHtyozJTsZsXrEUHg9F8922X8fVH07m/vZha6dl4/tD2stFbjW+MNHnDq10LB01+ -+ObG7PzKjecthzOtR6tjrTN35npm7jxrzZsX7b4s7azs7c0djHYutO5uDb9Z7B3O1+Zn/M7Ztgez -na8XVlrmZheS2+HjtletK6/mvOW3dxd2dvLp9rs74y8eP6729z+9/yR/2NG+4G9MN91ZDJ554wP3 -O0Y6NlYfbjR3Nj970Tt2r6Gp886t6eX70fOJN4vjzWN3O59t9jyfmK+8Wn/etnt/rHQz23s63trk -zz5fWZkZKc01z86N3Ft8OLE0NDEz1JVtDTwZOijv9C839S9UuqZ7Dqcrg7eTYPmZvzzgRa1PH/Zv -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 -r/7lv/zms/8HNJljog== - - - diff --git a/packages/yoroi-extension/app/assets/images/arrow-left.inline.svg b/packages/yoroi-extension/app/assets/images/arrow-left.inline.svg deleted file mode 100644 index 0eb5ad8f30..0000000000 --- a/packages/yoroi-extension/app/assets/images/arrow-left.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - B71487CA-8F97-4171-A2DF-A0A58195CC76 - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/arrow-right.inline.svg b/packages/yoroi-extension/app/assets/images/arrow-right.inline.svg deleted file mode 100644 index 4a7e5bedba..0000000000 --- a/packages/yoroi-extension/app/assets/images/arrow-right.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - 6F4550D4-7180-4A3C-BC42-8D5BD106C4F0 - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/arrow.inline.svg b/packages/yoroi-extension/app/assets/images/arrow.inline.svg deleted file mode 100644 index bdebe49775..0000000000 --- a/packages/yoroi-extension/app/assets/images/arrow.inline.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - 260FEF0C-330C-4259-811C-D02213760D00 - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/assets-page/arrows-list-active.inline.svg b/packages/yoroi-extension/app/assets/images/assets-page/arrows-list-active.inline.svg deleted file mode 100644 index 8f47a5a891..0000000000 --- a/packages/yoroi-extension/app/assets/images/assets-page/arrows-list-active.inline.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/yoroi-extension/app/assets/images/assets-page/info.inline.svg b/packages/yoroi-extension/app/assets/images/assets-page/info.inline.svg deleted file mode 100644 index 0dd82fce0d..0000000000 --- a/packages/yoroi-extension/app/assets/images/assets-page/info.inline.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - Icon/info - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/attach-ic.inline.svg b/packages/yoroi-extension/app/assets/images/attach-ic.inline.svg deleted file mode 100644 index 29c7b50e28..0000000000 --- a/packages/yoroi-extension/app/assets/images/attach-ic.inline.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - attach-ic - Created with Sketch. - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/attention-big-thin.inline.svg b/packages/yoroi-extension/app/assets/images/attention-big-thin.inline.svg deleted file mode 100644 index e911448bca..0000000000 --- a/packages/yoroi-extension/app/assets/images/attention-big-thin.inline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/banxa.png b/packages/yoroi-extension/app/assets/images/banxa.png new file mode 100644 index 0000000000..8473d98761 Binary files /dev/null and b/packages/yoroi-extension/app/assets/images/banxa.png differ diff --git a/packages/yoroi-extension/app/assets/images/card-payment-ic.svg b/packages/yoroi-extension/app/assets/images/card-payment-ic.svg deleted file mode 100644 index df23437c3d..0000000000 --- a/packages/yoroi-extension/app/assets/images/card-payment-ic.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - 6F6F01B1-AE66-4CCF-AF05-C1FFCF6C852D - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/cardano-logo-white.inline.svg b/packages/yoroi-extension/app/assets/images/cardano-logo-white.inline.svg deleted file mode 100644 index 8933ee4d2f..0000000000 --- a/packages/yoroi-extension/app/assets/images/cardano-logo-white.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - 0C8A674E-719E-4805-BEA8-A7404F1A86C4 - Created with sketchtool. - - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/cardano-logo.inline.svg b/packages/yoroi-extension/app/assets/images/cardano-logo.inline.svg deleted file mode 100644 index ac27f6809f..0000000000 --- a/packages/yoroi-extension/app/assets/images/cardano-logo.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - 0C8A674E-719E-4805-BEA8-A7404F1A86C4 - Created with sketchtool. - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/cert-bad-ic.inline.svg b/packages/yoroi-extension/app/assets/images/cert-bad-ic.inline.svg deleted file mode 100644 index 47ba5bba1f..0000000000 --- a/packages/yoroi-extension/app/assets/images/cert-bad-ic.inline.svg +++ /dev/null @@ -1 +0,0 @@ -C4367A61-39B1-47D8-B1AB-63977FD542A8 \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/cert-ic.inline.svg b/packages/yoroi-extension/app/assets/images/cert-ic.inline.svg deleted file mode 100644 index 1e95ba52bb..0000000000 --- a/packages/yoroi-extension/app/assets/images/cert-ic.inline.svg +++ /dev/null @@ -1 +0,0 @@ -6CED6A1E-A8B5-43A5-BF8E-9E8A66DC6295 \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/cert-locked-ic.inline.svg b/packages/yoroi-extension/app/assets/images/cert-locked-ic.inline.svg deleted file mode 100644 index 6fd2d09cf3..0000000000 --- a/packages/yoroi-extension/app/assets/images/cert-locked-ic.inline.svg +++ /dev/null @@ -1 +0,0 @@ -23C984DC-966E-4307-A6AF-80B380D9FC04 \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/clipboard-ic.inline.svg b/packages/yoroi-extension/app/assets/images/clipboard-ic.inline.svg deleted file mode 100644 index 54834c551b..0000000000 --- a/packages/yoroi-extension/app/assets/images/clipboard-ic.inline.svg +++ /dev/null @@ -1 +0,0 @@ -DC594E36-C8C7-4564-9AE0-3B4043CB2E42 \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/close-cross-white.inline.svg b/packages/yoroi-extension/app/assets/images/close-cross-white.inline.svg deleted file mode 100644 index b69b6cae37..0000000000 --- a/packages/yoroi-extension/app/assets/images/close-cross-white.inline.svg +++ /dev/null @@ -1 +0,0 @@ -B758FE3E-D295-4A3F-8562-ED9DDAA087A0 \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/close.inline.svg b/packages/yoroi-extension/app/assets/images/close.inline.svg deleted file mode 100644 index e5b5dac41e..0000000000 --- a/packages/yoroi-extension/app/assets/images/close.inline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/create-ic.inline.svg b/packages/yoroi-extension/app/assets/images/create-ic.inline.svg deleted file mode 100644 index a906e85230..0000000000 --- a/packages/yoroi-extension/app/assets/images/create-ic.inline.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - 9F4F6B6E-6C34-4DF2-8581-4440A408ED77 - Created with sketchtool. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/cross.inline.svg b/packages/yoroi-extension/app/assets/images/cross.inline.svg deleted file mode 100644 index a3871260e5..0000000000 --- a/packages/yoroi-extension/app/assets/images/cross.inline.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - close - Created with Sketch. - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/danger.inline.svg b/packages/yoroi-extension/app/assets/images/danger.inline.svg deleted file mode 100644 index 0bc89b6f9b..0000000000 --- a/packages/yoroi-extension/app/assets/images/danger.inline.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/dashboard/exclamation-mark.inline.svg b/packages/yoroi-extension/app/assets/images/dashboard/exclamation-mark.inline.svg deleted file mode 100644 index 74e42bb32e..0000000000 --- a/packages/yoroi-extension/app/assets/images/dashboard/exclamation-mark.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/dashboard/grey-total-delegated.inline.svg b/packages/yoroi-extension/app/assets/images/dashboard/grey-total-delegated.inline.svg deleted file mode 100644 index 773c470d63..0000000000 --- a/packages/yoroi-extension/app/assets/images/dashboard/grey-total-delegated.inline.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - icon/total-delegated - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/dashboard/total-ada.inline.svg b/packages/yoroi-extension/app/assets/images/dashboard/total-ada.inline.svg deleted file mode 100644 index 98ca6976e6..0000000000 --- a/packages/yoroi-extension/app/assets/images/dashboard/total-ada.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/dashboard/total-rewards.inline.svg b/packages/yoroi-extension/app/assets/images/dashboard/total-rewards.inline.svg deleted file mode 100644 index 54f0ed294a..0000000000 --- a/packages/yoroi-extension/app/assets/images/dashboard/total-rewards.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/encryptus.png b/packages/yoroi-extension/app/assets/images/encryptus.png new file mode 100644 index 0000000000..60119e175c Binary files /dev/null and b/packages/yoroi-extension/app/assets/images/encryptus.png differ diff --git a/packages/yoroi-extension/app/assets/images/exchange-end-illustration.svg b/packages/yoroi-extension/app/assets/images/exchange-end-illustration.svg new file mode 100644 index 0000000000..43f46784ff --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/exchange-end-illustration.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/yoroi-extension/app/assets/images/exchange-ic.inline.svg b/packages/yoroi-extension/app/assets/images/exchange-ic.inline.svg deleted file mode 100644 index 8261514cf9..0000000000 --- a/packages/yoroi-extension/app/assets/images/exchange-ic.inline.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - C6FD73AD-BFF2-48EA-94CE-14B9E74CF46A - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/expand-arrow.inline.svg b/packages/yoroi-extension/app/assets/images/expand-arrow.inline.svg deleted file mode 100644 index 528efd44f0..0000000000 --- a/packages/yoroi-extension/app/assets/images/expand-arrow.inline.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - 97F2FF06-0F8D-457B-90CE-8A0315A90BB5 - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/ic-check.svg b/packages/yoroi-extension/app/assets/images/ic-check.svg deleted file mode 100644 index 1e9506a2e4..0000000000 --- a/packages/yoroi-extension/app/assets/images/ic-check.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - DCF9E9D1-CA61-4DEB-87F8-DE2E41F5025C - Created with sketchtool. - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/import-ic.inline.svg b/packages/yoroi-extension/app/assets/images/import-ic.inline.svg deleted file mode 100644 index 56e1dc71dc..0000000000 --- a/packages/yoroi-extension/app/assets/images/import-ic.inline.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - 05B0D965-3D05-4417-AD9D-68F35DB2AA3F - Created with sketchtool. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/input/exclamationmark.inline.svg b/packages/yoroi-extension/app/assets/images/input/exclamationmark.inline.svg deleted file mode 100644 index f10b207b79..0000000000 --- a/packages/yoroi-extension/app/assets/images/input/exclamationmark.inline.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - exclamationmark.inline - Created with Sketch. - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/input/password.hiden.inline.svg b/packages/yoroi-extension/app/assets/images/input/password.hiden.inline.svg deleted file mode 100644 index 4568c886da..0000000000 --- a/packages/yoroi-extension/app/assets/images/input/password.hiden.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - password.hiden.inline - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/input/password.watch.inline.svg b/packages/yoroi-extension/app/assets/images/input/password.watch.inline.svg deleted file mode 100644 index bcfe926fa5..0000000000 --- a/packages/yoroi-extension/app/assets/images/input/password.watch.inline.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - password.watch.inline - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/input/visibility.closed.inline.svg b/packages/yoroi-extension/app/assets/images/input/visibility.closed.inline.svg deleted file mode 100644 index ad7e0ba749..0000000000 --- a/packages/yoroi-extension/app/assets/images/input/visibility.closed.inline.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - Icon / Visibility / closed - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/input/visibility.opened.inline.svg b/packages/yoroi-extension/app/assets/images/input/visibility.opened.inline.svg deleted file mode 100644 index c0c5d0efa7..0000000000 --- a/packages/yoroi-extension/app/assets/images/input/visibility.opened.inline.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - Icon / Visibility / opened - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/join-shared-ic.inline.svg b/packages/yoroi-extension/app/assets/images/join-shared-ic.inline.svg deleted file mode 100644 index 77b3f6bde0..0000000000 --- a/packages/yoroi-extension/app/assets/images/join-shared-ic.inline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/link-external-storage.inline.svg b/packages/yoroi-extension/app/assets/images/link-external-storage.inline.svg deleted file mode 100644 index a5f83a47a5..0000000000 --- a/packages/yoroi-extension/app/assets/images/link-external-storage.inline.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - perform-tx-url.inline copy - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/link.inline.svg b/packages/yoroi-extension/app/assets/images/link.inline.svg deleted file mode 100644 index 5a53f07664..0000000000 --- a/packages/yoroi-extension/app/assets/images/link.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/lock screen-disabled.inline.svg b/packages/yoroi-extension/app/assets/images/lock screen-disabled.inline.svg deleted file mode 100644 index 0d574a08f6..0000000000 --- a/packages/yoroi-extension/app/assets/images/lock screen-disabled.inline.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - lock screen-disabled.inline - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/lock screen-enabled.inline.svg b/packages/yoroi-extension/app/assets/images/lock screen-enabled.inline.svg deleted file mode 100644 index 892d6d301f..0000000000 --- a/packages/yoroi-extension/app/assets/images/lock screen-enabled.inline.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - lock screen-enabled.inline - Created with Sketch. - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/lock.inline.svg b/packages/yoroi-extension/app/assets/images/lock.inline.svg deleted file mode 100644 index 8ad1ee38da..0000000000 --- a/packages/yoroi-extension/app/assets/images/lock.inline.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - Lock.inline - Created with Sketch. - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/locked.inline.svg b/packages/yoroi-extension/app/assets/images/locked.inline.svg deleted file mode 100644 index 7b106b45d5..0000000000 --- a/packages/yoroi-extension/app/assets/images/locked.inline.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - locked.inline - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/my-wallets/icon_plus.inline.svg b/packages/yoroi-extension/app/assets/images/my-wallets/icon_plus.inline.svg deleted file mode 100644 index d8bc72a934..0000000000 --- a/packages/yoroi-extension/app/assets/images/my-wallets/icon_plus.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/cost-changed.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/cost-changed.inline.svg deleted file mode 100644 index 3a8b7a4b45..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/cost-changed.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - icon/cost changed - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/delegated.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/delegated.inline.svg deleted file mode 100644 index d1b9d8deb4..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/delegated.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - icon/delegated - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/fee-changed.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/fee-changed.inline.svg deleted file mode 100644 index d5459ac013..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/fee-changed.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - icon/fee changed - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/notice-board.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/notice-board.inline.svg deleted file mode 100644 index cd1a04b01f..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/notice-board.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - icon/notification - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/redelegated.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/redelegated.inline.svg deleted file mode 100644 index cf2ac3b468..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/redelegated.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - icon/redelegated - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/retired.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/retired.inline.svg deleted file mode 100644 index 2aeb223d5e..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/retired.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - icon/retire - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/reward-not-received.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/reward-not-received.inline.svg deleted file mode 100644 index f4747db75b..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/reward-not-received.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - icon/reward not received - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/reward-received.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/reward-received.inline.svg deleted file mode 100644 index 3b2b83066f..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/reward-received.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - icon/reward received - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/notice-board/undelegated.inline.svg b/packages/yoroi-extension/app/assets/images/notice-board/undelegated.inline.svg deleted file mode 100644 index bb60b3c783..0000000000 --- a/packages/yoroi-extension/app/assets/images/notice-board/undelegated.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - icon/undelegated - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/paper-wallet/create-paper-wallet-loader-classic.gif b/packages/yoroi-extension/app/assets/images/paper-wallet/create-paper-wallet-loader-classic.gif deleted file mode 100644 index e2990ab569..0000000000 Binary files a/packages/yoroi-extension/app/assets/images/paper-wallet/create-paper-wallet-loader-classic.gif and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/images/paper-wallet/create-paper-wallet-loader-modern.gif b/packages/yoroi-extension/app/assets/images/paper-wallet/create-paper-wallet-loader-modern.gif deleted file mode 100644 index 9fdab144df..0000000000 Binary files a/packages/yoroi-extension/app/assets/images/paper-wallet/create-paper-wallet-loader-modern.gif and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/images/paper-wallet/download-certificate-classic.inline.svg b/packages/yoroi-extension/app/assets/images/paper-wallet/download-certificate-classic.inline.svg deleted file mode 100644 index 3799aa8694..0000000000 --- a/packages/yoroi-extension/app/assets/images/paper-wallet/download-certificate-classic.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - download-paper-certificate.inline - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/paper-wallet/download-certificate-modern.inline.svg b/packages/yoroi-extension/app/assets/images/paper-wallet/download-certificate-modern.inline.svg deleted file mode 100644 index 2ca6e67160..0000000000 --- a/packages/yoroi-extension/app/assets/images/paper-wallet/download-certificate-modern.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - download-paper-certificate.inline - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/paper-wallet/paper-wallet-certificate.back-min.png b/packages/yoroi-extension/app/assets/images/paper-wallet/paper-wallet-certificate.back-min.png deleted file mode 100644 index 405f7602f7..0000000000 Binary files a/packages/yoroi-extension/app/assets/images/paper-wallet/paper-wallet-certificate.back-min.png and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/images/paper-wallet/paper-wallet-certificate.front-min.png b/packages/yoroi-extension/app/assets/images/paper-wallet/paper-wallet-certificate.front-min.png deleted file mode 100644 index 6624fe01de..0000000000 Binary files a/packages/yoroi-extension/app/assets/images/paper-wallet/paper-wallet-certificate.front-min.png and /dev/null differ diff --git a/packages/yoroi-extension/app/assets/images/protected-off.inline.svg b/packages/yoroi-extension/app/assets/images/protected-off.inline.svg deleted file mode 100644 index 8c63a1c047..0000000000 --- a/packages/yoroi-extension/app/assets/images/protected-off.inline.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/receive-ic.svg b/packages/yoroi-extension/app/assets/images/receive-ic.svg deleted file mode 100644 index affcae853e..0000000000 --- a/packages/yoroi-extension/app/assets/images/receive-ic.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/receive-white-ic.svg b/packages/yoroi-extension/app/assets/images/receive-white-ic.svg deleted file mode 100644 index 0f68a4291d..0000000000 --- a/packages/yoroi-extension/app/assets/images/receive-white-ic.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - CB489DF8-F281-4A44-BA13-B37CFEA652A7 - Created with sketchtool. - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/restore-ic.inline.svg b/packages/yoroi-extension/app/assets/images/restore-ic.inline.svg deleted file mode 100644 index f7ba3cbba3..0000000000 --- a/packages/yoroi-extension/app/assets/images/restore-ic.inline.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - 1ECB5BCE-873C-4A81-A1F1-9BAEC46A63D0 - Created with sketchtool. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/containers/swap/mockAssets/minswap.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/dex/minswap.inline.svg similarity index 100% rename from packages/yoroi-extension/app/containers/swap/mockAssets/minswap.inline.svg rename to packages/yoroi-extension/app/assets/images/revamp/dex/minswap.inline.svg diff --git a/packages/yoroi-extension/app/containers/swap/mockAssets/muesli.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/dex/muesli.inline.svg similarity index 100% rename from packages/yoroi-extension/app/containers/swap/mockAssets/muesli.inline.svg rename to packages/yoroi-extension/app/assets/images/revamp/dex/muesli.inline.svg diff --git a/packages/yoroi-extension/app/assets/images/revamp/dex/spec.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/dex/spec.inline.svg new file mode 100644 index 0000000000..6e7ac4058f --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/dex/spec.inline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/yoroi-extension/app/containers/swap/mockAssets/sundae.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/dex/sundae.inline.svg similarity index 100% rename from packages/yoroi-extension/app/containers/swap/mockAssets/sundae.inline.svg rename to packages/yoroi-extension/app/assets/images/revamp/dex/sundae.inline.svg diff --git a/packages/yoroi-extension/app/assets/images/revamp/dex/vyfi.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/dex/vyfi.inline.svg new file mode 100644 index 0000000000..d3a6af90e7 --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/dex/vyfi.inline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/revamp/dex/wingriders.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/dex/wingriders.inline.svg new file mode 100644 index 0000000000..cd0cd7f39b --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/dex/wingriders.inline.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/yoroi-extension/app/assets/images/revamp/error.triangle.svg b/packages/yoroi-extension/app/assets/images/revamp/error.triangle.svg new file mode 100644 index 0000000000..5ed00fb004 --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/error.triangle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/yoroi-extension/app/assets/images/revamp/exclamation.circle.svg b/packages/yoroi-extension/app/assets/images/revamp/exclamation.circle.svg new file mode 100644 index 0000000000..94cbff8baa --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/exclamation.circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/yoroi-extension/app/assets/images/revamp/fingerprint-info.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/fingerprint-info.inline.svg deleted file mode 100644 index 578e81362c..0000000000 --- a/packages/yoroi-extension/app/assets/images/revamp/fingerprint-info.inline.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/yoroi-extension/app/assets/images/revamp/icons/alert.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/icons/alert.inline.svg new file mode 100644 index 0000000000..ebbb2eca08 --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/icons/alert.inline.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/yoroi-extension/app/assets/images/revamp/icons/arrow-right.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/icons/arrow-right.inline.svg new file mode 100644 index 0000000000..8d69686496 --- /dev/null +++ b/packages/yoroi-extension/app/assets/images/revamp/icons/arrow-right.inline.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/yoroi-extension/app/assets/images/revamp/icons/search.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/icons/search.inline.svg index 0f11886845..7889793eea 100644 --- a/packages/yoroi-extension/app/assets/images/revamp/icons/search.inline.svg +++ b/packages/yoroi-extension/app/assets/images/revamp/icons/search.inline.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/yoroi-extension/app/assets/images/revamp/registration-is-not-available.inline.svg b/packages/yoroi-extension/app/assets/images/revamp/registration-is-not-available.inline.svg index a17de01dfa..3129df4b1e 100644 --- a/packages/yoroi-extension/app/assets/images/revamp/registration-is-not-available.inline.svg +++ b/packages/yoroi-extension/app/assets/images/revamp/registration-is-not-available.inline.svg @@ -1,23 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/search-ic-dark.inline.svg b/packages/yoroi-extension/app/assets/images/search-ic-dark.inline.svg deleted file mode 100644 index 6f4c502e7b..0000000000 --- a/packages/yoroi-extension/app/assets/images/search-ic-dark.inline.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - ED8BA164-C7D2-467D-9ED0-AB0171180C5E - Created with sketchtool. - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/send-ic.svg b/packages/yoroi-extension/app/assets/images/send-ic.svg deleted file mode 100644 index cfdca95270..0000000000 --- a/packages/yoroi-extension/app/assets/images/send-ic.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/send-white-ic.svg b/packages/yoroi-extension/app/assets/images/send-white-ic.svg deleted file mode 100644 index 73f8399457..0000000000 --- a/packages/yoroi-extension/app/assets/images/send-white-ic.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - D5302867-C7AE-49CB-B54E-22A70DB2AF8F - Created with sketchtool. - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/sidebar/dapp_connector.inline.svg b/packages/yoroi-extension/app/assets/images/sidebar/dapp_connector.inline.svg deleted file mode 100644 index c06531b217..0000000000 --- a/packages/yoroi-extension/app/assets/images/sidebar/dapp_connector.inline.svg +++ /dev/null @@ -1,7 +0,0 @@ - - icon/dapp connector-default - - - - - diff --git a/packages/yoroi-extension/app/assets/images/sidebar/revamp/faq.inline.svg b/packages/yoroi-extension/app/assets/images/sidebar/revamp/faq.inline.svg deleted file mode 100644 index d63cf775ee..0000000000 --- a/packages/yoroi-extension/app/assets/images/sidebar/revamp/faq.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/sidebar/revamp/feedback.inline.svg b/packages/yoroi-extension/app/assets/images/sidebar/revamp/feedback.inline.svg deleted file mode 100644 index f2a3ccb10d..0000000000 --- a/packages/yoroi-extension/app/assets/images/sidebar/revamp/feedback.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/sidebar/revamp/new-updates.inline.svg b/packages/yoroi-extension/app/assets/images/sidebar/revamp/new-updates.inline.svg deleted file mode 100644 index 9f0ad21440..0000000000 --- a/packages/yoroi-extension/app/assets/images/sidebar/revamp/new-updates.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/small-cross.inline.svg b/packages/yoroi-extension/app/assets/images/small-cross.inline.svg deleted file mode 100644 index bd2a82e3b2..0000000000 --- a/packages/yoroi-extension/app/assets/images/small-cross.inline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - 6F939BC0-A197-4EF2-89A5-1C18118D92AE - Created with sketchtool. - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/social/github.svg b/packages/yoroi-extension/app/assets/images/social/github.svg deleted file mode 100644 index 95ce3f9bd5..0000000000 --- a/packages/yoroi-extension/app/assets/images/social/github.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/yoroi-extension/app/assets/images/social/linkedin.inline.svg b/packages/yoroi-extension/app/assets/images/social/linkedin.inline.svg deleted file mode 100644 index 49eb6dd28b..0000000000 --- a/packages/yoroi-extension/app/assets/images/social/linkedin.inline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/yoroi-extension/app/assets/images/social/redit.inline.svg b/packages/yoroi-extension/app/assets/images/social/redit.inline.svg deleted file mode 100644 index 1140aa51c3..0000000000 --- a/packages/yoroi-extension/app/assets/images/social/redit.inline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/yoroi-extension/app/assets/images/social/revamp/linkedin.inline.svg b/packages/yoroi-extension/app/assets/images/social/revamp/linkedin.inline.svg deleted file mode 100644 index 67cff89b3c..0000000000 --- a/packages/yoroi-extension/app/assets/images/social/revamp/linkedin.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/social/revamp/medium.inline.svg b/packages/yoroi-extension/app/assets/images/social/revamp/medium.inline.svg deleted file mode 100644 index b674877e03..0000000000 --- a/packages/yoroi-extension/app/assets/images/social/revamp/medium.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/spinner-dark.inline.svg b/packages/yoroi-extension/app/assets/images/spinner-dark.inline.svg deleted file mode 100644 index 25690d70a4..0000000000 --- a/packages/yoroi-extension/app/assets/images/spinner-dark.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - 689D1EC6-CFD1-4DB8-8399-D10FD29322A1 - Created with sketchtool. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/spinner-dark.svg b/packages/yoroi-extension/app/assets/images/spinner-dark.svg index 25690d70a4..bb56eda05c 100644 --- a/packages/yoroi-extension/app/assets/images/spinner-dark.svg +++ b/packages/yoroi-extension/app/assets/images/spinner-dark.svg @@ -1,14 +1,11 @@ - - - - 689D1EC6-CFD1-4DB8-8399-D10FD29322A1 - Created with sketchtool. - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/spinner-light.svg b/packages/yoroi-extension/app/assets/images/spinner-light.svg index 4404beeea7..bb56eda05c 100644 --- a/packages/yoroi-extension/app/assets/images/spinner-light.svg +++ b/packages/yoroi-extension/app/assets/images/spinner-light.svg @@ -1,14 +1,11 @@ - - - - ECCC5D4D-AB98-43EC-857B-4CE840C3CA29 - Created with sketchtool. - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/stared.inline.svg b/packages/yoroi-extension/app/assets/images/stared.inline.svg deleted file mode 100644 index ef21014ea6..0000000000 --- a/packages/yoroi-extension/app/assets/images/stared.inline.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - 2E21D996-C9C2-4FB5-90F1-8B4FAD2F9C9B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/success-big.inline.svg b/packages/yoroi-extension/app/assets/images/success-big.inline.svg deleted file mode 100644 index e09ee9e0f5..0000000000 --- a/packages/yoroi-extension/app/assets/images/success-big.inline.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - 756D8099-AF67-4399-97AE-C51D791C2120 - Created with sketchtool. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/top-bar/notification.inline.svg b/packages/yoroi-extension/app/assets/images/top-bar/notification.inline.svg deleted file mode 100644 index 40f078a614..0000000000 --- a/packages/yoroi-extension/app/assets/images/top-bar/notification.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/top-bar/password.hide.inline.svg b/packages/yoroi-extension/app/assets/images/top-bar/password.hide.inline.svg deleted file mode 100644 index 402f312a95..0000000000 --- a/packages/yoroi-extension/app/assets/images/top-bar/password.hide.inline.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - password.watch.inline - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/top-bar/password.show.inline.svg b/packages/yoroi-extension/app/assets/images/top-bar/password.show.inline.svg deleted file mode 100644 index 579f7f2206..0000000000 --- a/packages/yoroi-extension/app/assets/images/top-bar/password.show.inline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - password.hiden.inline - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/top-bar/with-ledger-nano-logo.inline.svg b/packages/yoroi-extension/app/assets/images/top-bar/with-ledger-nano-logo.inline.svg deleted file mode 100644 index 78900429ba..0000000000 --- a/packages/yoroi-extension/app/assets/images/top-bar/with-ledger-nano-logo.inline.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/top-bar/with-trezor-t-logo-white.inline.svg b/packages/yoroi-extension/app/assets/images/top-bar/with-trezor-t-logo-white.inline.svg deleted file mode 100644 index 019190e08e..0000000000 --- a/packages/yoroi-extension/app/assets/images/top-bar/with-trezor-t-logo-white.inline.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/top-bar/yoroi-migration-active.inline.svg b/packages/yoroi-extension/app/assets/images/top-bar/yoroi-migration-active.inline.svg deleted file mode 100644 index caafffd996..0000000000 --- a/packages/yoroi-extension/app/assets/images/top-bar/yoroi-migration-active.inline.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - yoroi-migration-active.inline - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/transaction/deny-ic.inline.svg b/packages/yoroi-extension/app/assets/images/transaction/deny-ic.inline.svg deleted file mode 100644 index fd5892816b..0000000000 --- a/packages/yoroi-extension/app/assets/images/transaction/deny-ic.inline.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/yoroi-extension/app/assets/images/transaction/no-transactions-yet.classic.inline.svg b/packages/yoroi-extension/app/assets/images/transaction/no-transactions-yet.classic.inline.svg deleted file mode 100644 index 0151db8b6e..0000000000 --- a/packages/yoroi-extension/app/assets/images/transaction/no-transactions-yet.classic.inline.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - no transaction yet - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/transaction/no-transactions-yet.testnet.inline.svg b/packages/yoroi-extension/app/assets/images/transaction/no-transactions-yet.testnet.inline.svg deleted file mode 100644 index d714d18584..0000000000 --- a/packages/yoroi-extension/app/assets/images/transaction/no-transactions-yet.testnet.inline.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - no transactions yet.inline - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/transaction/receive-ic.inline.svg b/packages/yoroi-extension/app/assets/images/transaction/receive-ic.inline.svg deleted file mode 100644 index bbfc655b7d..0000000000 --- a/packages/yoroi-extension/app/assets/images/transaction/receive-ic.inline.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/yoroi-extension/app/assets/images/transaction/send-ic.inline.svg b/packages/yoroi-extension/app/assets/images/transaction/send-ic.inline.svg deleted file mode 100644 index a4413a69fe..0000000000 --- a/packages/yoroi-extension/app/assets/images/transaction/send-ic.inline.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/deny-ic.inline.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/deny-ic.inline.svg deleted file mode 100644 index b6c7e0b7f1..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/deny-ic.inline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/paper-wallet.inline.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/paper-wallet.inline.svg deleted file mode 100644 index 50fb4bea13..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/paper-wallet.inline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/receive-ic.inline.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/receive-ic.inline.svg deleted file mode 100644 index fb23bac4f3..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/receive-ic.inline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/send-ic.inline.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/send-ic.inline.svg deleted file mode 100644 index baeb428d81..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/send-ic.inline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/summary-ic.inline.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/summary-ic.inline.svg deleted file mode 100644 index ef5063fcfb..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/summary-ic.inline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/transactions-ic.inline.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/transactions-ic.inline.svg deleted file mode 100644 index ce82443b05..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/transactions-ic.inline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/wallet-nav/wallet-settings-ic.svg b/packages/yoroi-extension/app/assets/images/wallet-nav/wallet-settings-ic.svg deleted file mode 100644 index f986eec4c2..0000000000 --- a/packages/yoroi-extension/app/assets/images/wallet-nav/wallet-settings-ic.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/webcam-picture-yoroi.inline.svg b/packages/yoroi-extension/app/assets/images/webcam-picture-yoroi.inline.svg deleted file mode 100644 index a6e885d25c..0000000000 --- a/packages/yoroi-extension/app/assets/images/webcam-picture-yoroi.inline.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - webcam-picture-yoroi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/widget/page-nav/arrow-all.inline.svg b/packages/yoroi-extension/app/assets/images/widget/page-nav/arrow-all.inline.svg deleted file mode 100644 index 5bbc86b693..0000000000 --- a/packages/yoroi-extension/app/assets/images/widget/page-nav/arrow-all.inline.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - DF49047B-2A05-4447-A057-F219479E1593 - Created with sketchtool. - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/widget/page-nav/arrow-single.inline.svg b/packages/yoroi-extension/app/assets/images/widget/page-nav/arrow-single.inline.svg deleted file mode 100644 index 04d6ca9d7e..0000000000 --- a/packages/yoroi-extension/app/assets/images/widget/page-nav/arrow-single.inline.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - EA124AAB-7967-461C-80DD-B7065FE03F4F - Created with sketchtool. - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/yoroi-logo-shelley-testnet-white.inline.svg b/packages/yoroi-extension/app/assets/images/yoroi-logo-shelley-testnet-white.inline.svg deleted file mode 100644 index 5b6acf6bcd..0000000000 --- a/packages/yoroi-extension/app/assets/images/yoroi-logo-shelley-testnet-white.inline.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - yoroi-logotestnet-white.inline - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/yoroi-logo-vertical-blue.inline.svg b/packages/yoroi-extension/app/assets/images/yoroi-logo-vertical-blue.inline.svg deleted file mode 100644 index 2123dbd510..0000000000 --- a/packages/yoroi-extension/app/assets/images/yoroi-logo-vertical-blue.inline.svg +++ /dev/null @@ -1 +0,0 @@ -yoroi logo \ No newline at end of file diff --git a/packages/yoroi-extension/app/assets/images/yoroi-logotestnet-gradient.inline.svg b/packages/yoroi-extension/app/assets/images/yoroi-logotestnet-gradient.inline.svg deleted file mode 100644 index f41b6502bd..0000000000 --- a/packages/yoroi-extension/app/assets/images/yoroi-logotestnet-gradient.inline.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/packages/yoroi-extension/app/assets/images/yoroi-nightly-icon-white.inline.svg b/packages/yoroi-extension/app/assets/images/yoroi-nightly-icon-white.inline.svg deleted file mode 100644 index 9f38146c0d..0000000000 --- a/packages/yoroi-extension/app/assets/images/yoroi-nightly-icon-white.inline.svg +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/packages/yoroi-extension/app/components/buySell/BuySellDialog.js b/packages/yoroi-extension/app/components/buySell/BuySellDialog.js index e368431362..b4e9f24c84 100644 --- a/packages/yoroi-extension/app/components/buySell/BuySellDialog.js +++ b/packages/yoroi-extension/app/components/buySell/BuySellDialog.js @@ -5,58 +5,153 @@ import { observer } from 'mobx-react'; import { defineMessages, intlShape } from 'react-intl'; import type { $npm$ReactIntl$IntlFormat } from 'react-intl'; -import { truncateAddress } from '../../utils/formatters'; import Dialog from '../widgets/Dialog'; import DialogCloseButton from '../widgets/DialogCloseButton'; -import ChangellyFetcher from './ChangellyFetcher'; -import styles from './BuySellDialog.scss'; -import { ReactComponent as VerifyIcon } from '../../assets/images/verify-icon.inline.svg'; -import VerticalFlexContainer from '../layout/VerticalFlexContainer'; -import LoadingSpinner from '../widgets/LoadingSpinner'; import globalMessages from '../../i18n/global-messages'; import { Box } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import Tab, { tabClasses } from '@mui/material/Tab'; +import Tabs, { tabsClasses } from '@mui/material/Tabs'; +import TextField from '@mui/material/TextField'; +import InputAdornment from '@mui/material/InputAdornment'; +import BigNumber from 'bignumber.js'; +import adaPng from '../../assets/images/ada.png'; +import banxaPng from '../../assets/images/banxa.png'; +import encryptusPng from '../../assets/images/encryptus.png'; +import { ReactComponent as InfoIcon } from '../../assets/images/info-icon-revamp.inline.svg'; +import { exchangeApiMaker, exchangeManagerMaker } from '@yoroi/exchange' +import environment from '../../environment'; + +declare var chrome; const messages = defineMessages({ dialogTitle: { - id: 'buy.dialog.title', - defaultMessage: '!!!Buy ADA', + id: 'buysell.dialog.title', + defaultMessage: '!!!Exchange ADA', + }, + adaAmount: { + id: 'buysell.dialog.adaAmount', + defaultMessage: '!!!ADA Amount', + }, + currentBalance: { + id: 'buysell.dialog.currentBalance', + defaultMessage: '!!!Current balance: {amount} ADA', + }, + lessThanMinimum: { + id: 'buysell.dialog.error.minimum', + defaultMessage: '!!!Minimum {amount} ADA required', }, - dialogSelectAddress: { - id: 'buysell.dialog.selectAddress', - defaultMessage: - '!!!Please select the receiving address. This will be shared with the third party provider called Changelly for the buy / sell of ADA. ', + notEnoughBalance: { + id: 'buysell.dialog.error.not.enough', + defaultMessage: '!!!Not enough balance', }, - dialogDescription: { - id: 'buysell.dialog.instructions', - defaultMessage: - '!!!Please select your preferences. On the next screen, confirm your selection by pressing the green arrow on the top right', + providerFee: { + id: 'buysell.dialog.providerFee', + defaultMessage: '!!!Provider fee', }, - dialogManual: { - id: 'buysell.dialog.manual', - defaultMessage: '!!!I will add my address manually', + disclaimer: { + id: 'buysell.dialog.disclaimer', + defaultMessage: '!!!Disclaimer', + }, + disclaimerText: { + id: 'buysell.dialog.disclaimerText', + defaultMessage: '!!!Yoroi Wallet utilizes third-party web3 on-and-off ramp solutions for direct Fiat-ADA exchanges. By clicking "Proceed," you acknowledge that you will be redirected to our partner\'s website, where you may need to accept their terms and conditions. Please note, the third party web3 solution may have limitations based on your location and financial institution.' + }, + proceed: { + id: 'buysell.dialog.proceed', + defaultMessage: 'PROCEED', }, }); -export type WalletInfo = {| - walletName: string, - currencyName: string, - anAddressFormatted: string, -|}; - type Props = {| +onCancel: void => void, - +genWalletList: () => Promise>, + +onExchangeCallback: void => void, + +currentBalanceAda: string, + +receiveAdaAddressPromise: Promise, |}; -const WIDGET_URL = - 'https://widget.changelly.com?from=*&to=*&amount=200&fromDefault=usd&toDefault=ada&theme=default&merchant_id=g9qheu8vschp16jj&payment_id=&v=3'; - type State = {| - addressSelected: ?string, - walletList: ?Array, + +isBuying: boolean, + +error: null | 'lessThanBuyMinimum' | 'notEnoughBalance' | 'lessThanSellMinimum', + +amountAda: string, + +isSubmitting: boolean, |}; +const MINIMUM_BUY_ADA = new BigNumber('100'); +const MINIMUM_SELL_ADA = new BigNumber('1'); +const EXCHANGE_CALLBACK_URL = 'https://ramp-redirect.yoroiwallet.com/yoroi-extension-exchange-callback.html'; + +const TabItem = styled(Tab)({ + position: 'relative', + borderRadius: '8px', + textAlign: 'center', + transition: 'all .5s', + padding: '10px 15px', + color: '#555555', + height: 'auto', + margin: '10px 0', + float: 'none', + fontSize: '12px', + fontWeight: '500', + [`&.${tabClasses.selected}, &.${tabClasses.root}:hover`]: { + color: '#555555', + backgroundColor: '#dce0e9', + }, +}); + +const ProviderRow = styled(Box)({ + display: 'flex', + flexDirection: 'row', + marginBottom: '16px', + '& .provider-logo': { + width: '48px', + height: '48px', + }, + '& .provider-name-fee': { + marginLeft: '10px', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + }, + '& .provider-name': { + fontFamily: 'Rubik', + fontSize: '16px', + fontWeight: 500, + lineHeight: '24px', + textAlign: 'left', + }, + '& .provider-fee': { + fontFamily: 'Rubik', + fontSize: '12px', + fontWeight: 400, + lineHeight: '16px', + letterSpacing: '0.2px', + textAlign: 'left', + }, +}); + +const Disclaimer = styled(Box)({ + color: 'var(--grayscale-contrast-900, #242838)', + fontFeatureSettings: `'clig' off, 'liga' off`, + fontFamily: 'Rubik', + fontSize: '16px', + fontStyle: 'normal', + fontWeight: 400, + lineHeight: '24px', + marginBottom: '140px', + '& header': { + fontWeight: 500, + '& svg': { + verticalAlign: 'text-bottom', + marginRight: '8px', + }, + }, + borderRadius: 'var(--corner-radius-8, 8px)', + background: 'var(--gradient-light-green-blue, linear-gradient(340deg, #C6F7ED 10%, #E4E8F7 60%))', + padding: 'var(--spacing-12, 12px) var(--spacing-16, 16px) var(--spacing-16, 16px) var(--spacing-16, 16px)' +}); + @observer export default class BuySellDialog extends Component { static contextTypes: {| intl: $npm$ReactIntl$IntlFormat |} = { @@ -64,99 +159,216 @@ export default class BuySellDialog extends Component { }; state: State = { - addressSelected: null, - walletList: null, + isBuying: true, + error: null, + amountAda: '', + isSubmitting: false, }; - async componentDidMount() { + onSubmit: () => Promise = async () => { + const { state, props } = this; + + this.setState({ isSubmitting: true }); + const api = exchangeApiMaker({ isProduction: true, partner: 'yoroi' }); + const manager = exchangeManagerMaker({ api }); + + let params; + if (state.isBuying) { + params = { + providerId: 'banxa', + queries: { + fiatType: 'USD', + coinType: 'ADA', + walletAddress: await props.receiveAdaAddressPromise, + orderType: 'buy', + returnUrl: EXCHANGE_CALLBACK_URL, + coinAmount: Number(state.amountAda), + balance: props.currentBalanceAda, + } + } + } else { + params = { + providerId: 'encryptus', + queries: { + fiatType: 'USD', + coinType: 'ADA', + walletAddress: await props.receiveAdaAddressPromise, + orderType: 'sell', + returnUrl: EXCHANGE_CALLBACK_URL, + coinAmount: Number(state.amountAda), + balance: props.currentBalanceAda, + } + } + } + + const url = await manager.referralLink.create(params); + + const self = this; + chrome.tabs.create({ url: url.href }, (exchangePageTab) => { + chrome.tabs.onRemoved.addListener((tabId) => { + if (tabId === exchangePageTab.id) { + self.setState({ isSubmitting: false }); + } + }); + + chrome.runtime.onMessage.addListener((message, sender) => { + if (message.type === 'exchange callback' && sender.tab.id === exchangePageTab.id) { + chrome.tabs.remove(sender.tab.id); + props.onExchangeCallback(); + } + }); + }); + } + + onChangeAmount: (SyntheticInputEvent) => void = (event) => { + const { value } = event.target; + + if (!value.match(/^\d*$/)) { + return; + } + + const error = (() => { + if (value === '') { + return null; + } + if (this.state.isBuying) { + if (MINIMUM_BUY_ADA.gt(value)) { + return 'lessThanBuyMinimum'; + } + } else { + if (MINIMUM_SELL_ADA.gt(value)) { + return 'lessThanSellMinimum'; + } + if (MINIMUM_SELL_ADA.gt(this.props.currentBalanceAda)) { + return 'notEnoughBalance'; + } + if (new BigNumber(value).gt(this.props.currentBalanceAda)) { + return 'notEnoughBalance'; + } + } + return null; + })(); + + this.setState({ amountAda: value, error }); + } + + renderBuySell(): Node { const { intl } = this.context; + const { state, props } = this; - const resp = await this.props.genWalletList(); - const wallets = [ - ...resp, - { - walletName: intl.formatMessage(messages.dialogManual), - currencyName: '', - anAddressFormatted: '', - }, + const [ providerLogo, providerName ] = state.isBuying ? [ + banxaPng, 'Banxa' + ] : [ + encryptusPng, 'Encryptus' ]; - this.setState({ walletList: wallets }); - } - createRows: ($npm$ReactIntl$IntlFormat, Array) => Node = (intl, wallets) => - wallets.map((wallet, i) => { - return ( - // eslint-disable-next-line react/no-array-index-key -
    -
    -
    - {wallet.currencyName ? `(${wallet.currencyName}) ` : ''} - {wallet.walletName} -
    -
    {truncateAddress(wallet.anAddressFormatted)}
    + // set a place holder so that when it becomes an error message, the height doesn't change + let helperText = ' '; + if (state.error === 'lessThanBuyMinimum') { + helperText = intl.formatMessage(messages.lessThanMinimum, { amount: MINIMUM_BUY_ADA.toString() }); + } else if (state.error === 'lessThanSellMinimum') { + helperText = intl.formatMessage(messages.lessThanMinimum, { amount: MINIMUM_SELL_ADA.toString() }); + } else if (state.error === 'notEnoughBalance') { + helperText = intl.formatMessage(messages.notEnoughBalance); + } + + return ( + <> + +
    +
    + ADA +
    + + {intl.formatMessage(messages.currentBalance, { amount: props.currentBalanceAda })} + +
    + + ), + sx: { + paddingBottom: '1lh', + }, + }} + sx={{ + paddingBottom: 0, + }} + value={state.amountAda} + onChange={this.onChangeAmount} + error={state.error !== null} + helperText={helperText} + autoFocus + /> + + +
    +
    -
    - {/* Verify Address action */} - - {/* Action block end */} +
    +
    {providerName}
    +
    2% fee
    -
    - ); - }); +
    + + + +
    + + {intl.formatMessage(messages.disclaimer)} +
    + {intl.formatMessage(messages.disclaimerText)} +
    + + ); + } render(): Node { const { intl } = this.context; - - if (this.state.walletList == null) { - return ( - - - - - - ); - } - if (this.state.addressSelected == null) { - const addressNodes = this.createRows(intl, this.state.walletList); - - return ( - } - > -
    - {intl.formatMessage(messages.dialogSelectAddress)} - {addressNodes} -
    -
    - ); - } + const { state, props } = this; return ( } + forceBottomDivider + actions={[ + { + label: intl.formatMessage(messages.proceed), + primary: true, + disabled: state.amountAda === '' || state.error !== null, + onClick: this.onSubmit, + isSubmitting: state.isSubmitting, + } + ]} + styleOverride={{ width: '648px' }} + styleFlags={{ contentNoTopPadding: true }} > -
    -
    {intl.formatMessage(messages.dialogDescription)}
    - -
    + {(environment.isDev() || environment.isNightly()) && ( + this.setState({ isBuying: !state.isBuying })} + sx={{ + width: '100%', + [`& .${tabsClasses.indicator}`]: { + display: 'none', + }, + boxShadow: 'none', + }} + > + + + + )} + {this.renderBuySell()}
    ); } diff --git a/packages/yoroi-extension/app/components/buySell/BuySellDialog.scss b/packages/yoroi-extension/app/components/buySell/BuySellDialog.scss deleted file mode 100644 index cf70c7a277..0000000000 --- a/packages/yoroi-extension/app/components/buySell/BuySellDialog.scss +++ /dev/null @@ -1,70 +0,0 @@ -@import '../../themes/mixins/underline'; - -.component { - padding-left: 40px; - padding-right: 40px; - max-height: 600px; - max-width: 600px; - - .description { - color: var(--yoroi-palette-gray-900); - font-weight: 400; - font-size: 16px; - line-height: 19px; - text-align: center; - } -} - -.content { - font-weight: 400; - font-size: 16px; - flex-direction: column; - letter-spacing: 0; - line-height: 22px; - max-width: 600px; -} - -.row { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-between; - - .left { - .nameAndCurrency { - color: var(--yoroi-palette-gray-900); - font-size: 16px; - letter-spacing: 0; - line-height: 22px; - } - .address { - color: var(--yoroi-palette-gray-600); - font-size: 14px; - letter-spacing: 0; - line-height: 22px; - } - } -} - -.verifyIcon { - cursor: pointer; - object-fit: contain; - display: inline-flex; - margin-left: 5px; - width: 32px; - height: 32px; - border-radius: 50%; - transition: background-color 0.3s; - & > svg { - display: block; - margin: auto; - height: 20px; - width: 20px; - path { - fill: var(--yoroi-palette-gray-800); - } - } - &:hover { - background-color: var(--yoroi-palette-gray-50); - } -} diff --git a/packages/yoroi-extension/app/components/buySell/ChangellyFetcher.js b/packages/yoroi-extension/app/components/buySell/ChangellyFetcher.js deleted file mode 100644 index 3b306b75ff..0000000000 --- a/packages/yoroi-extension/app/components/buySell/ChangellyFetcher.js +++ /dev/null @@ -1,104 +0,0 @@ -// @flow - -import { Component } from 'react'; -import type { Node } from 'react'; -import { action, observable } from 'mobx'; -import { intlShape, } from 'react-intl'; -import type { $npm$ReactIntl$IntlFormat } from 'react-intl'; -import { observer } from 'mobx-react'; - -type Props = {| - +children?: Node, - +widgetURL: string, - +address: ?string, -|}; - -@observer -export default class ChangellyFetcher extends Component { - static defaultProps: {|children: void|} = { - children: undefined - }; - - @observable iframe: ?HTMLIFrameElement; - @observable frameHeight: number = 0; - - @action setFrame: (null | HTMLIFrameElement) => void = (frame) => { - this.iframe = frame; - } - - componentDidMount() { - window.addEventListener('resize', this.resize); - this.resize(); - } - - componentWillUnmount() { - window.removeEventListener('resize', this.resize); - } - - static contextTypes: {|intl: $npm$ReactIntl$IntlFormat|} = { - intl: intlShape.isRequired, - }; - - addAddressToWidget: (string, ?string) => string = (widgetURL, address) => { - if (address == null) return widgetURL - return widgetURL + '&address=' + address - } - - render(): Node { - const { widgetURL, address } = this.props; - - if (widgetURL == null) { - throw new Error('Changelly URL undefined. this should never happen'); - } - - return ( -