diff --git a/.env.example b/.env.example
index 0e0598db0..fd00fab9d 100644
--- a/.env.example
+++ b/.env.example
@@ -1,34 +1,35 @@
 PRIVATE_KEY=<your private key>
 
-CREATE3_FACTORY_ADDRESS=0x93FEC2C00BfE902F733B57c5a6CeeD7CD1384AE1 # Public CREATE3 factory address
-
 # Mainnet RPCs (the 'pre-commit-checker' comment after the URL is only for our internal tool and not required in your .env file)
 ETH_NODE_URI_MAINNET=https://1rpc.io/eth #[pre-commit-checker: not a secret]
 ETH_NODE_URI_ARBITRUM=https://1rpc.io/arb #[pre-commit-checker: not a secret]
 ETH_NODE_URI_AURORA=https://1rpc.io/aurora #[pre-commit-checker: not a secret]
 ETH_NODE_URI_AVALANCHE=https://1rpc.io/avax/c #[pre-commit-checker: not a secret]
+ETH_NODE_URI_BASE=https://mainnet.base.org #[pre-commit-checker: not a secret]
+ETH_NODE_URI_BLAST=https://rpc.blast.io #[pre-commit-checker: not a secret]
 ETH_NODE_URI_BOBA=https://mainnet.boba.network #[pre-commit-checker: not a secret]
 ETH_NODE_URI_BSC=https://1rpc.io/bnb #[pre-commit-checker: not a secret]
 ETH_NODE_URI_CELO=https://1rpc.io/celo #[pre-commit-checker: not a secret]
-ETH_NODE_URI_CRONOS=https://evm.cronos.org #[pre-commit-checker: not a secret]
-ETH_NODE_URI_EVMOS=https://evmos-json-rpc.stakely.io #[pre-commit-checker: not a secret]
 ETH_NODE_URI_FANTOM=https://1rpc.io/ftm #[pre-commit-checker: not a secret]
+ETH_NODE_URI_FRAXTAL=https://rpc.frax.com #[pre-commit-checker: not a secret]
 ETH_NODE_URI_FUSE=https://rpc.fuse.io #[pre-commit-checker: not a secret]
 ETH_NODE_URI_GNOSIS=https://rpc.ankr.com/gnosis #[pre-commit-checker: not a secret]
-ETH_NODE_URI_HARMONY=https://api.harmony.one #[pre-commit-checker: not a secret]
+ETH_NODE_URI_GRAVITY=https://rpc.gravity.xyz	 #[pre-commit-checker: not a secret]
+ETH_NODE_URI_IMMUTABLEZKEVM=https://rpc.immutable.com #[pre-commit-checker: not a secret]
+ETH_NODE_URI_LINEA=https://rpc.linea.build #[pre-commit-checker: not a secret]
+ETH_NODE_URI_MANTLE=https://rpc.mantle.xyz	 #[pre-commit-checker: not a secret]
+ETH_NODE_URI_METIS=https://metis-mainnet.public.blastapi.io #[pre-commit-checker: not a secret]
+ETH_NODE_URI_MODE=https://mainnet.mode.network #[pre-commit-checker: not a secret]
 ETH_NODE_URI_MOONBEAM=https://1rpc.io/glmr #[pre-commit-checker: not a secret]
 ETH_NODE_URI_MOONRIVER=https://rpc.moonriver.moonbeam.network #[pre-commit-checker: not a secret]
-ETH_NODE_URI_NOVA=https://nova.arbitrum.io/rpc #[pre-commit-checker: not a secret]
-ETH_NODE_URI_OKX=https://exchainrpc.okex.org #[pre-commit-checker: not a secret]
-ETH_NODE_URI_OPBNB=https://opbnb-mainnet-rpc.bnbchain.org #[pre-commit-checker: not a secret]
 ETH_NODE_URI_OPTIMISM=https://1rpc.io/op #[pre-commit-checker: not a secret]
 ETH_NODE_URI_POLYGON=https://1rpc.io/matic #[pre-commit-checker: not a secret]
 ETH_NODE_URI_POLYGONZKEVM=https://zkevm-rpc.com #[pre-commit-checker: not a secret]
-ETH_NODE_URI_VELAS=https://explorer.velas.com/rpc #[pre-commit-checker: not a secret]
+ETH_NODE_URI_ROOTSTOCK=https://rootstock.drpc.org #[pre-commit-checker: not a secret].io
+ETH_NODE_URI_SEI=https://evm-rpc.sei-apis.com #[pre-commit-checker: not a secret].io
+ETH_NODE_URI_SCROLL=https://1rpc.io/scroll #[pre-commit-checker: not a secret].io
+ETH_NODE_URI_TAIKO=https://rpc.taiko.tools #[pre-commit-checker: not a secret].io
 ETH_NODE_URI_ZKSYNC=https://zksync2-mainnet.zksync #[pre-commit-checker: not a secret].io
-ETH_NODE_URI_BASE=https://mainnet.base.org #[pre-commit-checker: not a secret]
-ETH_NODE_URI_LINEA=https://rpc.linea.build #[pre-commit-checker: not a secret]
-ETH_NODE_URI_MODE=https://mainnet.mode.network #[pre-commit-checker: not a secret]
 
 # Testnet RPCs
 ETH_NODE_URI_GOERLI=https://rpc.ankr.com/eth_goerli #[pre-commit-checker: not a secret]
@@ -43,23 +44,30 @@ MAINNET_ETHERSCAN_API_KEY=
 ARBITRUM_ETHERSCAN_API_KEY=
 AURORA_ETHERSCAN_API_KEY=
 AVALANCHE_ETHERSCAN_API_KEY=
+BASE_ETHERSCAN_API_KEY=
+BLAST_ETHERSCAN_API_KEY=
 BOBA_ETHERSCAN_API_KEY=
 BSC_ETHERSCAN_API_KEY=
 CELO_ETHERSCAN_API_KEY=
-CRONOS_ETHERSCAN_API_KEY=
 FANTOM_ETHERSCAN_API_KEY=
+FRAXTAL_ETHERSCAN_API_KEY=
 FUSE_ETHERSCAN_API_KEY=
 GNOSIS_ETHERSCAN_API_KEY=
+GRAVITY_ETHERSCAN_API_KEY=
+IMMUTABLEZKEVM_ETHERSCAN_API_KEY=
+LINEA_ETHERSCAN_API_KEY=
+MANTLE_ETHERSCAN_API_KEY=
+METIS_ETHERSCAN_API_KEY=
+MODE_ETHERSCAN_API_KEY=
 MOONBEAM_ETHERSCAN_API_KEY=
 MOONRIVER_ETHERSCAN_API_KEY=
-NOVA_ETHERSCAN_API_KEY=
-OPBNB_ETHERSCAN_API_KEY=
 OPTIMISM_ETHERSCAN_API_KEY=
 POLYGON_ETHERSCAN_API_KEY=
 POLYGONZKEVM_ETHERSCAN_API_KEY=
-BASE_ETHERSCAN_API_KEY=
-LINEA_ETHERSCAN_API_KEY=
-MODE_ETHERSCAN_API_KEY=
+SCROLL_ETHERSCAN_API_KEY=
+SEI_ETHERSCAN_API_KEY=
+TAIKO_ETHERSCAN_API_KEY=
+
 
 # Testnet Explorer API Keys
 GOERLI_ETHERSCAN_API_KEY=
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index b4601c4b7..542a47ac2 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -8,7 +8,6 @@
 - [ ] This pull request is as small as possible and only tackles one problem
 - [ ] I have added tests that cover the functionality / test the bug
 - [ ] I have updated any required documentation
-- [ ] If this requires a contract version change, I have updated the version number in the source file
 
 # Checklist for reviewer (DO NOT DEPLOY and contracts BEFORE CHECKING THIS!!!)
 
diff --git a/.github/workflows/checkAuditRequired.yml b/.github/workflows/checkAuditRequired.yml
new file mode 100644
index 000000000..fd0fce09e
--- /dev/null
+++ b/.github/workflows/checkAuditRequired.yml
@@ -0,0 +1,117 @@
+# Audit Requirement Checker
+# - checks if an audit is required for a given PR
+# - an audit is required if any .sol file in path 'src/' has been modified or added
+# - if audit is required, the action will assign the label "AuditRequired", otherwise it will assign label "AuditNotRequired"
+# - it will also make sure that at the end, exactly one of these two labels is indeed assigned
+
+name: Audit Requirement Check
+
+on:
+  pull_request:
+    types: [opened, synchronize, reopened]
+
+jobs:
+  check-audit-required:
+    if: ${{ github.event.pull_request.draft == false }} # will only run once the PR is in "Ready for Review" state
+    runs-on: ubuntu-latest
+    permissions:
+      pull-requests: write
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0 ##### Fetch all history for all branches
+
+      - name: Remove existing 'AuditRequired' and 'AuditNotRequired' labels
+        uses: actions-ecosystem/action-remove-labels@v1
+        with:
+          github_token: ${{ secrets.GIT_ACTIONS_BOT_PAT_CLASSIC }}
+          labels: |
+            AuditRequired
+            AuditNotRequired
+          number: ${{ github.event.pull_request.number }}
+
+      - name: Check Git Diff for protected contracts
+        id: check_eligibility
+        run: |
+
+          ##### get all files modified by this PR
+          FILES=$(git diff --name-only origin/main HEAD)
+
+          ##### make sure that there are modified files
+          if [[ -z $FILES ]]; then
+            echo -e "\033[31mNo files found. This should not happen. Please check the code of the Github action. Aborting now.\033[0m"
+            echo "CONTINUE=false" >> $GITHUB_ENV
+          fi
+
+          ##### Initialize empty variables
+          PROTECTED_CONTRACTS=""
+
+          ##### go through all modified file names/paths and identify contracts with path 'src/*'
+          while IFS= read -r FILE; do
+            if echo "$FILE" | grep -E '^src/.*\.sol$'; then
+              ##### contract found
+              PROTECTED_CONTRACTS="${PROTECTED_CONTRACTS}${FILE}"$'\n'
+            fi
+          done <<< "$FILES"
+
+          ##### if none found, exit here as there is nothing to do
+          if [[ -z "$PROTECTED_CONTRACTS" ]]; then
+            echo -e "\033[32mNo protected contracts found in Git Diff.\033[0m"
+            echo -e "\033[32mAssigning label 'AuditNotRequired' to this PR.\033[0m"
+            echo "AUDIT_REQUIRED=false" >> $GITHUB_ENV
+            exit 0
+          else
+            echo -e "\033[31mProtected contracts found in Git Diff.\033[0m"
+            echo -e "\033[31mAssigning label 'AuditRequired' to this PR.\033[0m"
+            echo "AUDIT_REQUIRED=true" >> $GITHUB_ENV
+          fi
+
+          echo "PROTECTED_CONTRACTS: $PROTECTED_CONTRACTS"
+
+          ##### Write filenames to temporary files (using variables here was causing issues due to the file names)
+          echo -e "$PROTECTED_CONTRACTS" > protected_contracts.txt
+
+      - name: Assign correct label based on check outcome
+        uses: actions-ecosystem/action-add-labels@v1
+        id: assign_label
+        with:
+          github_token: ${{ secrets.GIT_ACTIONS_BOT_PAT_CLASSIC }} # we use the token of the git action user so the label protection check will pass
+          labels: ${{ env.AUDIT_REQUIRED == 'true' && 'AuditRequired' || 'AuditNotRequired' }} # if the action made it until here and CONTINUE was true then all checks passed. It CONTINUE was false then no audit is required
+          number: ${{ github.event.pull_request.number }}
+
+      - name: Verify label assignments (make sure exactly one of the two labels is assigned)
+        env:
+          GITHUB_TOKEN: ${{ secrets.GIT_ACTIONS_BOT_PAT_CLASSIC }}
+        run: |
+
+          echo "Fetching currently assigned labels..."
+          assigned_labels=$(gh pr view ${{ github.event.pull_request.number }} --json labels --jq '.labels | map(.name) | .[]')
+
+          echo "Assigned labels: $assigned_labels"
+
+          audit_required_assigned=0
+          audit_not_required_assigned=0
+
+          ##### go through all assigned labels and count how many protected labels are found
+          for label in $assigned_labels; do
+            if [ "$label" = "AuditRequired" ]; then
+              audit_required_assigned=$((audit_required_assigned + 1))
+            elif [ "$label" = "AuditNotRequired" ]; then
+              audit_not_required_assigned=$((audit_not_required_assigned + 1))
+            fi
+          done
+
+          total_labels_assigned=$((audit_required_assigned + audit_not_required_assigned))
+          echo "Total labels assigned: $total_labels_assigned"
+
+          ##### make sure that exactly (only) one protected label is assigned
+          if [ "$total_labels_assigned" -ne 1 ]; then
+            echo -e "\033[31mError: Exactly one of the two labels should be assigned but found $total_labels_assigned assigned labels.\033[0m"
+            exit 1
+          else
+            echo -e "\033[32mVerified that exactly one label is assigned.\033[0m"
+            echo -e "\033[32mAll good :)\033[0m"
+          fi
+
+          echo -e  "\033[31mGit Action completed successfully\033[0m"
diff --git a/.github/workflows/ensureSCCoreDevApproval.yml b/.github/workflows/ensureSCCoreDevApproval.yml
new file mode 100644
index 000000000..47624d512
--- /dev/null
+++ b/.github/workflows/ensureSCCoreDevApproval.yml
@@ -0,0 +1,119 @@
+# - Smart Contract Core Dev Approval checker
+# - makes sure that every pull_request is at least reviewed by one Smart Contract Core Dev
+#   (member of group https://github.com/orgs/lifinance/teams/smart-contract-core)
+
+name: SC Core Dev Approval Check
+
+on:
+  pull_request:
+    types: [opened, synchronize, reopened]
+
+jobs:
+  core-dev-approval:
+    if: ${{ github.event.pull_request.draft == false }} # will only run once the PR is in "Ready for Review" state
+    runs-on: ubuntu-latest
+    steps:
+      - name: Get smart-contract-core Team Members
+        env:
+          GH_PAT: ${{ secrets.GIT_TOKEN }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+
+          ##### unset the default git token (does not have sufficient rights to get team members)
+          unset GITHUB_TOKEN
+          ##### use the Personal Access Token to log into git CLI
+          echo $GH_PAT | gh auth login --with-token
+
+          ##### Function that uses github's REST API via CLI to get team members
+          getTeamMembers() {
+            local org=$1
+            local team=$2
+            gh api \
+              -H "Accept: application/vnd.github+json" \
+              -H "X-GitHub-Api-Version: 2022-11-28" \
+              "/orgs/$org/teams/$team/members" | jq -r '.[].login'
+          }
+
+          ORG_NAME="lifinance"
+          TEAM_SLUG="smart-contract-core"
+
+          # Get members of each group
+          echo "Fetching members of $TEAM_SLUG..."
+          MEMBERS=$(getTeamMembers $ORG_NAME $TEAM_SLUG)
+
+          #### check if any members were returned
+          if [[ -z $MEMBERS ]]; then
+            echo -e "\033[31mERROR: Could not retrieve team members of group $TEAM_SLUG\033[0m"
+            echo "CONTINUE=false" >> "$GITHUB_ENV"
+            exit 1
+          fi
+
+          echo "The following Github users are members of team smart-contract-core: "
+          echo "$MEMBERS"
+
+          echo -e "$MEMBERS" > sc_core_dev_members.txt
+          echo "CONTINUE=true" >> "$GITHUB_ENV"
+
+      - name: Check if PR is approved by at least one SC core dev
+        id: check-core-dev-approval
+        if: env.CONTINUE == 'true'
+        uses: actions/github-script@v7
+        env:
+          PR_NUMBER: ${{ github.event.number }}
+        with:
+          script: |
+            const fs = require('fs');
+            // ANSI escape codes for colors (used for colored output in Git action console)
+            const colors = {
+              reset: "\033[0m",
+              red: "\033[31m",
+              green: "\033[32m",
+            };
+
+            const coreDevsFile = 'sc_core_dev_members.txt';
+            // Read handles from file
+            const coreDevs = fs.readFileSync(coreDevsFile, 'utf-8').split(/\r?\n/).filter(Boolean);
+
+            // get all reviewers that have approved this PR
+            const { data: reviews } = await github.rest.pulls.listReviews({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              pull_number: process.env.PR_NUMBER,
+            });
+
+            // make sure that reviews are available
+            if(!reviews || reviews.length === 0) {
+              console.log(`${colors.red}Could not get reviewers of this PR from Github. Are there any reviews yet?${colors.reset}`);
+              console.log(`${colors.red}Check failed.${colors.reset}`);
+              core.setFailed("Required approval is missing");
+              return
+            }
+
+            // Filter to only include reviews that have "APPROVED" status
+            const approvedReviews = reviews.filter(review => review.state === 'APPROVED');
+
+            if(!approvedReviews.length === 0) {
+              console.log(`${colors.red}Could not find any reviews with approval.${colors.reset}`);
+              console.log(`${colors.red}Cannot continue. Check failed.${colors.reset}`);
+              core.setFailed("Required approval is missing");
+              return
+            }
+
+            // extract the git login handles of all reviewers that approved this PR
+            const reviewerHandles = approvedReviews.map(review => review.user.login);
+
+            if(approvedReviews.length === 0)
+              console.log(`${colors.red}This PR has no approvals${colors.reset}`);
+            else
+              console.log(`This PR has been approved by the following git members: ${reviewerHandles}`);
+
+            // check if at least one of these reviewers is member in smart-contract-core group
+            if (reviewerHandles.some((handle) => coreDevs.includes(handle))) {
+              console.log(`${colors.green}The current PR is approved by a member of the smart-contract-core group.${colors.reset}`);
+              console.log(`${colors.green}Check passed.${colors.reset}`);
+              core.setOutput('approved', 'true');
+              } else {
+              console.log(`${colors.red}The PR requires a missing approval by a member of the smart-contract-core group (https://github.com/orgs/lifinance/teams/smart-contract-core).${colors.reset}`);
+              console.log(`${colors.red}Check failed.${colors.reset}`);
+              core.setFailed("Required approval is missing");
+            }
diff --git a/.github/workflows/protectAuditLabels.yml b/.github/workflows/protectAuditLabels.yml
new file mode 100644
index 000000000..2112246cf
--- /dev/null
+++ b/.github/workflows/protectAuditLabels.yml
@@ -0,0 +1,77 @@
+# Protect Audit Labels
+# - Makes sure that the following labels can only be assigned by a GitHub Action: "AuditCompleted", "AuditRequired", and "AuditNotRequired"
+# - Will undo any unauthorized change of these labels
+# - Will fail if it runs into an error, otherwise pass
+
+name: Protect Audit Labels
+
+on:
+  pull_request:
+    types: [labeled, unlabeled]
+
+jobs:
+  protect_audit_labels:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Check for authorized actor
+        run: |
+
+
+          ##### Only allow the specific bot to manipulate audit labels
+          if [[ "${{ github.actor }}" == "lifi-action-bot" ]]; then
+            echo -e "\033[32mAction triggered by lifi-action-bot. No further checks required.\033[0m"
+            echo "CONTINUE=false" >> $GITHUB_ENV
+            exit 0
+          fi
+          echo "CONTINUE=true" >> $GITHUB_ENV
+          echo "This action was triggered by: ${{ github.actor }}"
+
+      - name: Protect Audit Labels
+        if: env.CONTINUE == 'true'
+        env:
+          GITHUB_TOKEN: ${{ secrets.GIT_ACTIONS_BOT_PAT_CLASSIC }}
+        run: |
+
+
+          ##### Define the labels to protect
+          PROTECTED_LABELS=("AuditCompleted" "AuditRequired" "AuditNotRequired")
+          TARGET_LABEL="${{ github.event.label.name }}"
+          EVENT_ACTION="${{ github.event.action }}"
+          PR_NUMBER="${{ github.event.pull_request.number }}"
+
+          ##### Fetch the current labels before action (to restore if needed)
+          CURRENT_LABELS=$(gh pr view $PR_NUMBER --json labels --jq '.labels[].name' | tr '\n' ' ')
+          echo "Current labels before processing: $CURRENT_LABELS"
+          echo "Event type: $EVENT_ACTION, Target label: $TARGET_LABEL"
+
+          ##### Check if the event involves a protected label
+          if [[ " ${PROTECTED_LABELS[*]} " =~ " $TARGET_LABEL " ]]; then
+            echo -e "\033[31mUnauthorized modification of a protected label by ${{ github.actor }}. Reverting changes...\033[0m"
+            ##### Revert to the previous state of labels
+            if [[ "$EVENT_ACTION" == "unlabeled" ]]; then
+              gh pr edit $PR_NUMBER --add-label "$TARGET_LABEL"
+            elif [[ "$EVENT_ACTION" == "labeled" ]]; then
+              gh pr edit $PR_NUMBER --remove-label "$TARGET_LABEL"
+            fi
+
+            ##### Validate if the revert was successful
+            NEW_LABELS=$(gh pr view $PR_NUMBER --json labels --jq '.labels[].name' | tr '\n' ' ')
+            echo "Labels after attempted revert: $NEW_LABELS"
+
+            ##### Check if revert was successful
+            if [[ "$EVENT_ACTION" == "unlabeled" && ! " $NEW_LABELS " =~ " $TARGET_LABEL " ]]; then
+              echo -e "\033[31mFailed to restore the '$TARGET_LABEL' label.\033[0m"
+              exit 1
+            elif [[ "$EVENT_ACTION" == "labeled" && " $NEW_LABELS " =~ " $TARGET_LABEL " ]]; then
+              echo -e "\033[31mFailed to remove the unauthorized '$TARGET_LABEL' label.\033[0m"
+              exit 1
+            fi
+
+            echo -e "\033[32mUnauthorized label modification was successfully prevented and undone.\033[0m"
+          else
+            echo -e "\033[32mNo protected labels were modified.\033[0m"
+          fi
diff --git a/.github/workflows/protectAuditorsGroup.yml b/.github/workflows/protectAuditorsGroup.yml
new file mode 100644
index 000000000..71afd805f
--- /dev/null
+++ b/.github/workflows/protectAuditorsGroup.yml
@@ -0,0 +1,67 @@
+name: Protect Auditors Group
+
+on:
+  push:
+
+jobs:
+  check_membership:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Compare Group Members
+        env:
+          GH_PAT: ${{ secrets.GIT_TOKEN }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+
+          ##### unset the default git token (does not have sufficient rights to get team members)
+          unset GITHUB_TOKEN
+          ##### use the Personal Access Token to log into git CLI
+          echo $GH_PAT | gh auth login --with-token
+
+          # Function to get team members
+          getTeamMembers() {
+            local org=$1
+            local team=$2
+            gh api \
+              -H "Accept: application/vnd.github+json" \
+              -H "X-GitHub-Api-Version: 2022-11-28" \
+              "/orgs/$org/teams/$team/members" | jq -r '.[].login'
+          }
+
+          ORG_NAME="lifinance"
+          SC_ADMINS="smart-contract-admins"
+          SC_CORE="smart-contract-core"
+          AUDITORS="auditors"
+
+          ##### Get members of each group
+          echo "Fetching members of $SC_ADMINS..."
+          groupAMembers=$(getTeamMembers $ORG_NAME $SC_ADMINS)
+
+          echo "Fetching members of $SC_CORE..."
+          groupBMembers=$(getTeamMembers $ORG_NAME $SC_CORE)
+
+          echo "Fetching members of $AUDITORS..."
+          groupCMembers=$(getTeamMembers $ORG_NAME $AUDITORS)
+
+          ##### Check overlap between smart-contract-core and auditors
+          overlap=$(echo "$groupAMembers" | grep -Fxf - <(echo "$groupCMembers"))
+          if [ -n "$overlap" ]; then
+            echo -e "\033[31mERROR: The following members are in both $SC_ADMINS and $AUDITORS: $overlap\033[0m"
+            echo -e "\033[31mAuditors must be external personnel and cannot be team members or admins\033[0m"
+            exit 1
+            else
+            echo -e "\033[32mNo overlap found between $SC_ADMINS and $AUDITORS.\033[0m"
+            fi
+
+            ##### Check overlap between smart-contract-admins and auditors
+            overlap2=$(echo "$groupBMembers" | grep -Fxf - <(echo "$groupCMembers"))
+            if [ -n "$overlap2" ]; then
+            echo -e "\033[31mERROR: The following members are in both $SC_CORE and $AUDITORS: $overlap2\033[0m"
+            echo -e "\033[31mAuditors must be external personnel and cannot be team members or admins\033[0m"
+            exit 1
+          else
+            echo -e "\033[32mNo overlap found between $SC_CORE and $AUDITORS.\033[0m"
+          fi
diff --git a/.github/workflows_deactivated/enforceTestCoverage.yml b/.github/workflows_deactivated/enforceTestCoverage.yml
new file mode 100644
index 000000000..f9a326f27
--- /dev/null
+++ b/.github/workflows_deactivated/enforceTestCoverage.yml
@@ -0,0 +1,130 @@
+name: Enforce Test Coverage
+on:
+  push:
+
+jobs:
+  enforce-coverage:
+    runs-on: ubuntu-latest
+
+    permissions:
+      pull-requests: write
+      contents: read
+    env:
+      ETH_NODE_URI_MAINNET: ${{ secrets.ETH_NODE_URI_MAINNET }}
+      ETH_NODE_URI_POLYGON: ${{ secrets.ETH_NODE_URI_POLYGON }}
+      ETH_NODE_URI_GOERLI: ${{ secrets.ETH_NODE_URI_GOERLI }}
+      ETH_NODE_URI_ARBITRUM: ${{ secrets.ETH_NODE_URI_ARBITRUM }}
+      ETH_NODE_URI_BSC: ${{ secrets.ETH_NODE_URI_BSC }}
+      ETH_NODE_URI_GNOSIS: ${{ secrets.ETH_NODE_URI_GNOSIS }}
+      GIT_TOKEN: ${{ secrets.GIT_TOKEN }}
+      MIN_TEST_COVERAGE: 80 # 80 percent for now, will be increased to 100% gradually
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Set up Node.js
+        uses: actions/setup-node@v4
+        with:
+          node-version: '20'
+
+      - name: Install Dependencies
+        run: npm install --save-dev ts-node @types/node --legacy-peer-deps
+
+      - name: Install Foundry
+        uses: foundry-rs/foundry-toolchain@v1.0.10
+        with:
+          version: nightly
+
+      - name: Install Git Submodules
+        run: |
+          git config --global url."https://github.com/".insteadOf "git@github.com:"
+          git submodule update --init --recursive
+
+      - name: Generate Coverage Report
+        run: |
+          forge coverage --report lcov --force
+          echo "Filtering coverage report to only contain coverage info about src/ folder now"
+          npx ts-node utils/filter_lcov.ts lcov.info lcov-filtered.info 'test/' 'script/'
+          echo "Coverage report filtered"
+
+      - name: Generate Coverage Summary
+        run: |
+          # Path to the lcov info file
+          LCOV_FILE="lcov-filtered.info"
+
+          # Initialize counters
+          TOTAL_LINES_FOUND=0
+          TOTAL_LINES_HIT=0
+          TOTAL_FUNCTIONS_FOUND=0
+          TOTAL_FUNCTIONS_HIT=0
+          TOTAL_BRANCHES_FOUND=0
+          TOTAL_BRANCHES_HIT=0
+
+          # Read through the lcov file
+          while IFS= read -r line; do
+              case $line in
+                  LF:*)
+                      TOTAL_LINES_FOUND=$((TOTAL_LINES_FOUND + ${line#LF:}))
+                      ;;
+                  LH:*)
+                      TOTAL_LINES_HIT=$((TOTAL_LINES_HIT + ${line#LH:}))
+                      ;;
+                  FNF:*)
+                      TOTAL_FUNCTIONS_FOUND=$((TOTAL_FUNCTIONS_FOUND + ${line#FNF:}))
+                      ;;
+                  FNH:*)
+                      TOTAL_FUNCTIONS_HIT=$((TOTAL_FUNCTIONS_HIT + ${line#FNH:}))
+                      ;;
+                  BRF:*)
+                      TOTAL_BRANCHES_FOUND=$((TOTAL_BRANCHES_FOUND + ${line#BRF:}))
+                      ;;
+                  BRH:*)
+                      TOTAL_BRANCHES_HIT=$((TOTAL_BRANCHES_HIT + ${line#BRH:}))
+                      ;;
+              esac
+          done < "$LCOV_FILE"
+
+          # Calculate percentages with high precision
+          LINE_COVERAGE_PERCENTAGE=$(echo "scale=4; $TOTAL_LINES_HIT / $TOTAL_LINES_FOUND * 100" | bc)
+          FUNCTION_COVERAGE_PERCENTAGE=$(echo "scale=4; $TOTAL_FUNCTIONS_HIT / $TOTAL_FUNCTIONS_FOUND * 100" | bc)
+          BRANCH_COVERAGE_PERCENTAGE=$(echo "scale=4; $TOTAL_BRANCHES_HIT / $TOTAL_BRANCHES_FOUND * 100" | bc)
+
+          # Format results with two decimal places and alignment
+          LINE_COVERAGE_PERCENTAGE=$(printf "%.2f" "$LINE_COVERAGE_PERCENTAGE")
+          FUNCTION_COVERAGE_PERCENTAGE=$(printf "%.2f" "$FUNCTION_COVERAGE_PERCENTAGE")
+          BRANCH_COVERAGE_PERCENTAGE=$(printf "%.2f" "$BRANCH_COVERAGE_PERCENTAGE")
+
+          # Prepare aligned output
+          LINE_COVERAGE_REPORT=$(printf "Line Coverage:      %6s%% (%4d / %4d lines)" "$LINE_COVERAGE_PERCENTAGE" "$TOTAL_LINES_HIT" "$TOTAL_LINES_FOUND")
+          FUNCTION_COVERAGE_REPORT=$(printf "Function Coverage:  %6s%% (%4d / %4d functions)" "$FUNCTION_COVERAGE_PERCENTAGE" "$TOTAL_FUNCTIONS_HIT" "$TOTAL_FUNCTIONS_FOUND")
+          BRANCH_COVERAGE_REPORT=$(printf "Branch Coverage:    %6s%% (%4d / %4d branches)" "$BRANCH_COVERAGE_PERCENTAGE" "$TOTAL_BRANCHES_HIT" "$TOTAL_BRANCHES_FOUND")
+
+          # Check against minimum threshold
+          if (( $(echo "$LINE_COVERAGE_PERCENTAGE >= $MIN_TEST_COVERAGE" | bc -l) )); then
+            RESULT_COVERAGE_REPORT="Test coverage ($LINE_COVERAGE_PERCENTAGE%) is above min threshold ($MIN_TEST_COVERAGE%). Check passed."
+          else
+            RESULT_COVERAGE_REPORT="Test coverage ($LINE_COVERAGE_PERCENTAGE%) is below min threshold ($MIN_TEST_COVERAGE%). Check failed."
+            echo $RESULT_COVERAGE_REPORT
+            exit 1
+          fi
+
+          # Output result_COVERAGE_REPORTs
+          echo "$LINE_COVERAGE_REPORT"
+          echo "$FUNCTION_COVERAGE_REPORT"
+          echo "$BRANCH_COVERAGE_REPORT"
+          echo "$RESULT_COVERAGE_REPORT"
+
+          # Store in GitHub environment variables
+          echo "LINE_COVERAGE_REPORT=$LINE_COVERAGE_REPORT" >> $GITHUB_ENV
+          echo "FUNCTION_COVERAGE_REPORT=$FUNCTION_COVERAGE_REPORT" >> $GITHUB_ENV
+          echo "BRANCH_COVERAGE_REPORT=$BRANCH_COVERAGE_REPORT" >> $GITHUB_ENV
+          echo "RESULT_COVERAGE_REPORT=$RESULT_COVERAGE_REPORT" >> $GITHUB_ENV
+
+      - name: Comment with Coverage Summary in PR
+        uses: mshick/add-pr-comment@v2
+        with:
+          message: |
+            ## Test Coverage Report
+            ${{ env.LINE_COVERAGE_REPORT }}
+            ${{ env.FUNCTION_COVERAGE_REPORT }}
+            ${{ env.BRANCH_COVERAGE_REPORT }}
+            ${{ env.RESULT_COVERAGE_REPORT }}
diff --git a/.github/workflows_deactivated/ensureDeployProcessIntegrity.yml b/.github/workflows_deactivated/ensureDeployProcessIntegrity.yml
new file mode 100644
index 000000000..6ae3bb93a
--- /dev/null
+++ b/.github/workflows_deactivated/ensureDeployProcessIntegrity.yml
@@ -0,0 +1,145 @@
+# - Ensure Deploy Process Integrity
+# - ensures that the systems in place to guarantee audits, approvals, versioning, test coverage etc. cannot be easily deactivated
+#   or altered without approval of the Information Security Manager (or CTO)
+# - protects any git actions in folder .github/workflows/*
+
+name: Ensure Deploy Process Integrity
+
+on:
+  pull_request:
+
+jobs:
+  protect-security-system:
+    runs-on: ubuntu-latest
+    permissions:
+      pull-requests: write
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0 ##### Fetch all history for all branches
+
+      - name: Check Git Diff for protected files
+        id: check_protected_files
+        run: |
+
+          ##### get all files modified by this PR
+          FILES=$(git diff --name-only origin/main HEAD)
+
+          ##### make sure that there are modified files
+          if [[ -z $FILES ]]; then
+            echo -e "\033[31mNo files found. This should not happen. Please check the code of the Github action. Aborting now.\033[0m"
+            echo "CONTINUE=false" >> $GITHUB_ENV
+            exit 1
+          fi
+
+          ##### Initialize empty variables
+          PROTECTED_FILES=""
+
+          ##### go through all modified file names/paths and identify contracts with path 'src/*'
+          while IFS= read -r FILE; do
+            if echo "$FILE" | grep -E '^.github/workflows/'; then
+
+              ##### modified git action found
+              PROTECTED_FILES="${PROTECTED_FILES}${FILE}"$'\n'
+            fi
+          done <<< "$FILES"
+
+          ##### if none found, exit here as there is nothing to do
+          if [[ -z "$PROTECTED_FILES" ]]; then
+            echo -e "\033[32mNo protected files found in Git diff.\033[0m"
+            echo -e "\033[32mNo further checks are required.\033[0m"
+            # set action output to false
+            echo "CONTINUE=false" >> $GITHUB_ENV
+            exit 0
+          else
+            ##### set action output to true
+            echo -e "\033[31mThe following protected files were found in Git diff:\033[0m"
+            echo "$PROTECTED_FILES"
+            echo "CONTINUE=true" >> $GITHUB_ENV
+          fi
+
+      - name: Get "Information Security Manager" Group Members
+        if: env.CONTINUE == 'true'
+        env:
+          GH_PAT: ${{ secrets.GIT_TOKEN }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+
+          ##### unset the default git token (does not have sufficient rights to get team members)
+          unset GITHUB_TOKEN
+
+          ##### use the Personal Access Token to log into git CLI
+          echo $GH_PAT | gh auth login --with-token
+
+          ##### Function to get team members using github CLI
+          getTeamMembers() {
+            local org=$1
+            local team=$2
+            gh api \
+              -H "Accept: application/vnd.github+json" \
+              -H "X-GitHub-Api-Version: 2022-11-28" \
+              "/orgs/$org/teams/$team/members" | jq -r '.[].login'
+          }
+
+          ORG_NAME='lifinance'
+          # GROUP_NAME='information-security-manager'
+          GROUP_NAME='smart-contract-core'
+
+          ##### get team members
+          INFORMATION_SECURITY_MEMBERS=$(getTeamMembers $ORG_NAME $GROUP_NAME)
+
+          echo "Team members of 'Information Security Manager' group: $INFORMATION_SECURITY_MEMBERS"
+
+          ##### store members in variable
+          echo -e "$INFORMATION_SECURITY_MEMBERS" > itSec_git_handles.txt
+
+      - name: Check approval of Information Security Manager
+        id: check-sec-mgr-approval
+        uses: actions/github-script@v7
+        if: env.CONTINUE == 'true'
+        with:
+          script: |
+            const fs = require('fs');
+            // ANSI escape codes for colors (used for colored output in Git action console)
+            const colors = {
+              reset: "\033[0m",
+              red: "\033[31m",
+              green: "\033[32m",
+              yellow: "\033[33m",
+            };
+
+            // Read git handles from file
+            const itSecHandlesFile = 'itSec_git_handles.txt';
+            const itSecHandles = fs.readFileSync(itSecHandlesFile, 'utf-8').split(/\r?\n/).filter(Boolean);
+
+            if(!(await github.pulls)) {
+              console.log(`${colors.red}Could not get reviewers of this PR from Github. Are there any reviews yet?${colors.reset}`);
+              console.log(`${colors.red}Check failed.${colors.reset}`);
+              core.setFailed("Required approval is missing");
+              return
+            }
+
+            // get all reviewers of the current pr
+            const { data: reviews } = await github.pulls.listReviews({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              pull_number: context.issue.number,
+            });
+
+            // extract the git login handles of all reviewers
+            const reviewerHandles = reviews.map(review => review.user.login);
+
+            console.log(`This PR has been reviewed by the following git members: ${reviewerHandles}`)
+
+            // check if at least one of these reviewers is member in information-security-manager group
+            if (reviewerHandles.some((handle) => itSecHandles.includes(handle))) {
+              console.log(`${colors.green}The current PR was approved by a member of the information-security-manager group.${colors.reset}`);
+              console.log(`${colors.green}Check passed.${colors.reset}`);
+              core.setOutput('approved', 'true');
+              } else {
+              console.log(`${colors.red}The PR requires a missing approval by a member of the information-security-manager group.${colors.reset}`);
+              console.log(`${colors.red}Find group members here: https://github.com/orgs/lifinance/teams/information-security-manager.${colors.reset}`);
+              console.log(`${colors.red}Check failed.${colors.reset}`);
+              core.setFailed("Required approval is missing");
+            }
diff --git a/.github/workflows_deactivated/protectAuditCompletedLabel.yml b/.github/workflows_deactivated/protectAuditCompletedLabel.yml
new file mode 100644
index 000000000..8a2b8e477
--- /dev/null
+++ b/.github/workflows_deactivated/protectAuditCompletedLabel.yml
@@ -0,0 +1,78 @@
+# - Protect "AuditCompleted" Label
+# - makes sure that the label "AuditCompleted" can only be assigned by a Github action and not by a human actor
+# - will undo any unauthorized change of this label
+# - will fail if it runs into an error, otherwise pass
+
+name: Protect "AuditCompleted" Label
+
+on:
+  pull_request_target: #### << needs to be changed to 'pull_request' to activate it
+    types: [labeled, unlabeled]
+
+jobs:
+  protect_audit_label:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Log Event Payload
+        run: |
+          if [[ "${{ github.actor }}" == "github-actions" ]]; then
+            echo "This action was triggered by another GitHub Action."
+          else
+            echo "This action was triggered by a user: ${{ github.actor }}."
+          fi
+          echo "${{ github.event }}"
+
+      - name: Check if "AuditCompleted" label was modified
+        env:
+          GITHUB_TOKEN: ${{ secrets.LIFI_GIT_ACTIONS_TOKEN }}
+          GH_PAT: ${{ secrets.LIFI_GIT_ACTIONS_TOKEN }}
+        run: |
+          # The label being monitored
+          TARGET_LABEL="AuditCompleted"
+
+          # Check if the event was triggered by any other github action
+          if [[ "${{ github.actor }}" != "lifiGitActions" ]]; then #### TODO: REPLACE WITH GITHUB_ACTIONS_PAT and USERNAME <<<<<-----------
+            echo "This event was triggered by ${{ github.actor }}. Checking label..."
+
+            # Determine if the label was added or removed
+            ACTION_TYPE="none"
+            if [[ "${{ github.event.action }}" == "labeled" && "${{ github.event.label.name }}" == "$TARGET_LABEL" ]]; then
+              ACTION_TYPE="added"
+            elif [[ "${{ github.event.action }}" == "unlabeled" && "${{ github.event.label.name }}" == "$TARGET_LABEL" ]]; then
+              ACTION_TYPE="removed"
+            fi
+
+            # Revert the label change if necessary
+            if [[ "$ACTION_TYPE" != "none" ]]; then
+              echo -e "\033[31mUnauthorized modification of '$TARGET_LABEL' by ${{ github.actor }}. Reverting change...\033[0m"
+
+              ##### remove or re-add label, depending on the case
+              if [[ "$ACTION_TYPE" == "added" ]]; then
+                # Remove the unauthorized label addition
+                gh pr edit ${{ github.event.pull_request.number }} --remove-label "$TARGET_LABEL"
+              elif [[ "$ACTION_TYPE" == "removed" ]]; then
+                # Re-add the unauthorized label removal
+                 gh pr edit ${{ github.event.pull_request.number }} --add-label "$TARGET_LABEL"
+              fi
+
+              # make sure that the label change was undone
+              CURRENT_LABELS=$(gh pr view ${{ github.event.pull_request.number }} --json labels --jq '.labels[].name')
+              if [[ "$ACTION_TYPE" == "added" && "$CURRENT_LABELS" == *"$TARGET_LABEL"* ]]; then
+                echo -e "\033[31Failed to remove the unauthorized 'AuditCompleted' label.\033[0m"
+                exit 1
+                elif [[ "$ACTION_TYPE" == "removed" && "$CURRENT_LABELS" != *"$TARGET_LABEL"* ]]; then
+                echo -e "\033[31Failed to re-add the 'AuditCompleted' label.\033[0m"
+                exit 1
+              fi
+
+              echo -e "\033[32Unauthorized label modification was successfully prevented and undone.\033[0m"
+            else
+              echo -e "\033[32mNo unauthorized modifications detected.\033[0m"
+            fi
+          else
+            echo -e "\033[32mLabel change initiated by GitHub Action. No checks required.\033[0m"
+          fi
diff --git a/.github/workflows_deactivated/protectAuditFolder.yml b/.github/workflows_deactivated/protectAuditFolder.yml
new file mode 100644
index 000000000..d97390a00
--- /dev/null
+++ b/.github/workflows_deactivated/protectAuditFolder.yml
@@ -0,0 +1,88 @@
+# - Audit Folder Protection
+# - makes sure that only members of team 'auditors' can make changes to 'audit/' folder
+#   https://github.com/orgs/lifinance/teams/auditors
+
+name: Audit Folder Protection
+
+on:
+  push:
+    paths:
+      - 'audit/**'
+  pull_request:
+    paths:
+      - 'audit/**'
+
+jobs:
+  protect-audit-folder:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+
+      - name: Get 'Auditors' Team Members
+        env:
+          GH_PAT: ${{ secrets.GIT_TOKEN }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+
+          ##### unset the default git token (does not have sufficient rights to get team members)
+          unset GITHUB_TOKEN
+          ##### use the Personal Access Token to log into git CLI
+          echo $GH_PAT | gh auth login --with-token
+
+          ##### Function that uses github's REST API via CLI to get team members
+          getTeamMembers() {
+            local org=$1
+            local team=$2
+            gh api \
+              -H "Accept: application/vnd.github+json" \
+              -H "X-GitHub-Api-Version: 2022-11-28" \
+              "/orgs/$org/teams/$team/members" | jq -r '.[].login'
+          }
+
+          ORG_NAME="lifinance"
+          TEAM_SLUG="auditors"
+
+          # Get members of each group
+          echo "Fetching members of $TEAM_SLUG..."
+          MEMBERS=$(getTeamMembers $ORG_NAME $TEAM_SLUG)
+
+          #### check if any members were returned
+          if [[ -z $MEMBERS ]]; then
+            echo -e "\033[31mERROR: Could not retrieve team members of group $TEAM_SLUG\033[0m"
+            echo "CONTINUE=false" >> $GITHUB_ENV
+            exit 1
+          fi
+
+          echo "Team members of $TEAM_SLUG: "
+          echo "$MEMBERS"
+
+          echo -e "$MEMBERS" > members.txt
+          echo "CONTINUE=true" >> $GITHUB_ENV
+
+      - name: Verify protected folder changes
+        if: env.CONTINUE == 'true'
+        run: |
+
+
+          echo "Files have been modified in folder 'audit/**' which is a protected folder."
+          echo "Only members of the group 'auditors' are allowed to make changes in this folder."
+          echo "Now checking if user '${{ github.actor }}' is a member of the auditors group"
+          echo "FYI: https://github.com/orgs/lifinance/teams/auditors"
+
+          # load list auditors team members
+          AUDITORS=$(cat members.txt)
+
+          #### check if user that submitted the change is indeed part of the auditors group
+          if echo "$AUDITORS" | grep -wq "${{ github.actor }}"; then
+            echo -e "\033[32mUser ${{ github.actor }} is an auditor and allowed to update the audit folder.\033[0m"
+            echo -e "\033[32mCheck passed.\033[0m"
+            exit 0
+          else
+            echo -e "\033[31mUser ${{ github.actor }} is not an auditor and is not allowed to update the audit folder.\033[0m"
+            echo -e "\033[31mPlease ask an auditor for support:\033[0m"
+            echo -e "\033[31mhttps://github.com/orgs/lifinance/teams/auditors\033[0m"
+            echo -e "\033[31mCheck failed.\033[0m"
+            exit 1
+          fi
diff --git a/.github/workflows_deactivated/versionCheck.yml b/.github/workflows_deactivated/versionCheck.yml
new file mode 100644
index 000000000..bedf016ff
--- /dev/null
+++ b/.github/workflows_deactivated/versionCheck.yml
@@ -0,0 +1,225 @@
+# - Github Version Control Checker
+# - Watches changes on contracts in the following paths:
+#   - src
+#   - src/Facets/
+#   - src/Periphery/
+# - will check all modified or new contracts in watched paths
+# - will fail if a new contract was added to watched paths without contract version
+# - will fail if an existing contract was modified but version was not updated
+# - will update the PR title to contain all contract names and their new versions (watched paths only)
+name: Version Check
+
+on:
+  pull_request:
+    types: [opened, edited, synchronize]
+
+jobs:
+  check-version:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0 ##### Fetch all history for all branches
+
+      - name: Get list of modified files by this PR
+        id: modified_files
+        run: |
+
+
+          BASE_REF="${{ github.event.pull_request.base.ref }}"
+
+          ##### get all files modified by this PR
+          FILES=$(git diff --name-only origin/${BASE_REF} HEAD)
+
+          ##### make sure that there are modified files
+          if [[ -z $FILES ]]; then
+            echo "No files found. This should not happen. Please check the code of the Github action"
+            exit 1
+          fi
+
+          ##### Initialize empty variables
+          CONTRACTS=""
+
+          ##### go through all file names and identify facet, periphery & diamond contracts (other contracts dont have versioning)
+          while IFS= read -r FILE; do
+            if echo "$FILE" | grep -E '^src/Facets/.*\.sol$'; then
+              ##### facet found
+              CONTRACTS="${CONTRACTS}${FILE}"$'\n'
+            elif echo "$FILE" | grep -E '^src/Periphery/.*\.sol$'; then
+              ##### periphery found
+              CONTRACTS="${CONTRACTS}${FILE}"$'\n'
+            elif echo "$FILE" | grep -E '^src/.*\.sol$'; then
+              ##### diamond contract found
+              CONTRACTS="${CONTRACTS}${FILE}"$'\n'
+            fi
+          done <<< "$FILES"
+
+          ##### if none found, exit here as there is nothing to do
+          if [[ -z "$CONTRACTS" ]]; then
+            echo -e "\033[32mNo version-controlled contracts found in files modified/added by this PR.\033[0m"
+            echo -e "\033[32mNo further checks are required.\033[0m"
+            # set action output to false
+            echo "CONTINUE=false" >> $GITHUB_ENV
+            exit 0
+          else
+            # set action output to true
+            echo "CONTINUE=true" >> $GITHUB_ENV
+          fi
+
+          ##### Write filenames to temporary files (using variables here was causing issues due to the file names)
+          echo -e "$CONTRACTS" > modified_contracts.txt
+
+      - name: Verify version updates on modified contracts
+        id: verify_version_changes
+        if: env.CONTINUE == 'true'
+        run: |
+
+          ##### Read tmp file into variable
+          CONTRACTS=$(cat modified_contracts.txt)
+
+          ##### Initialize variables
+          MISSING_VERSION_TAG=()
+          MISSING_VERSION_UPDATE=()
+          UPDATED_CONTRACTS=()
+
+          echo "--------------------"
+
+          ##### Process each file separately
+          while IFS= read -r FILE; do
+            echo "Now checking contract: $FILE"
+            VERSION_TAG=$(grep -E '^/// @custom:version' "$FILE" || true)
+            VERSION=$(echo "$VERSION_TAG" | sed -E 's/^\/\/\/ @custom:version ([0-9]+\.[0-9]+\.[0-9]+).*$/\1/' || true)
+
+            ##### Extract the filename without extension
+            FILENAME=$(basename "$FILE" .sol)
+
+            ##### Check if a version tag exists in the contract file
+            if [[ -z "$VERSION_TAG" ]]; then
+              echo -e "\033[31mFile does not contain a version tag\033[0m"
+              MISSING_VERSION_TAG+=("$FILE")
+            else
+              echo -e "\033[32mFile contains a custom:version tag\033[0m"
+              ##### get all changes of the current file/contract
+              DIFF_OUTPUT=$(git diff origin/${{ github.event.pull_request.base.ref }} HEAD "$FILE")
+
+              ##### Check if the version was updated in this PR (by checking if any of the git diff lines starts with '/// @custom:version')
+              if echo "$DIFF_OUTPUT" | grep -qE '^\+/// @custom:version'; then
+                echo -e "\033[32mFile version was updated in this PR to version $VERSION\033[0m"
+                ##### extract the new version and save it together with the name of the contract in an array
+                NEW_VERSION=$(echo "$VERSION_TAG" | awk '{print $NF}')
+                TARGET_STRING="${FILENAME} v${NEW_VERSION}"
+                UPDATED_CONTRACTS+=("$TARGET_STRING")
+              else
+                ##### add to files with missing version updates
+                echo -e "\033[31mFile's version was not updated in this PR\033[0m"
+                MISSING_VERSION_UPDATE+=("$FILE")
+              fi
+            fi
+            echo "--------------------"
+          done <<< "$CONTRACTS"
+
+
+          ##### If any contract files are missing a version tag, this must be corrected before continuing
+          if [[ ${#MISSING_VERSION_TAG[@]} -ne 0 ]]; then
+            echo "--------------------"
+            echo ">>>>>>"
+            echo -e "\033[31mThe following files are missing a custom:version tag in their code:\033[0m"
+            echo "${MISSING_VERSION_TAG[*]}"
+            echo -e "\033[31mEvery version-controlled contract needs to have a custom:version tag in its code.\033[0m"
+            echo -e "\033[31mThis Github action cannot complete until these issues are solved.\033[0m"
+            exit 1
+          fi
+
+          ##### if the version was not updated in any of the changed contracts, store the list of affected files in a tmp file
+          if [[ ${#MISSING_VERSION_UPDATE[@]} -ne 0 ]]; then
+            echo "--------------------"
+            echo ">>>>>>"
+            echo -e "\033[31mThe following contract(s) have been modified but their version tags were not updated:\033[0m"
+            echo "${MISSING_VERSION_UPDATE[*]}"
+            echo -e "\033[31mPlease make sure to update a contract's version whenever there are changes in the file.\033[0m"
+            echo -e "\033[31mThis Github action cannot complete until these issues are solved.\033[0m"
+            echo ""
+            exit 1
+          fi
+
+          ##### store any contracts that were correctly updated in a tmp file so we can check the PR title after for each of those
+          if [[ ${#UPDATED_CONTRACTS[@]} -ne 0 ]]; then
+            ##### create a string from the array with all contracts
+            UPDATED_CONTRACTS_STR=$(IFS=,; echo "${UPDATED_CONTRACTS[*]}")
+            echo "UPDATED_CONTRACTS=$UPDATED_CONTRACTS_STR" >> $GITHUB_ENV
+            echo -e "${UPDATED_CONTRACTS_STR[*]}" > updated_contracts.txt
+          else
+            echo -e "\033[32mDid not find any contracts for which version control is activated (only facets, periphery and diamonds).\033[0m"
+            echo -e "\033[32mNo further checks are required.\033[0m"
+            echo "CONTINUE=false" >> $GITHUB_ENV
+            exit 0
+          fi
+
+      - name: Compose updated PR title
+        if: env.CONTINUE == 'true'
+        env:
+          PR_TITLE: ${{github.event.pull_request.title}}
+        run: |
+
+
+          ##### Read tmp files into variables
+          if [ -f updated_contracts.txt ]; then
+            UPDATED_CONTRACTS=$(cat updated_contracts.txt)
+          fi
+
+          echo "UPDATED CONTRACTS: $UPDATED_CONTRACTS"
+
+          ##### Initialize PR title
+          PR_TITLE_UPDATED="$PR_TITLE ["
+
+          ##### Go through the list of target strings (contract + newVersion)
+          IFS=',' read -ra UPDATED_ARRAY <<< "$UPDATED_CONTRACTS"
+          for TARGET_STRING in "${UPDATED_ARRAY[@]}"; do
+            ##### if current PR title does not contain this contract's name....
+            if [[ ! "$PR_TITLE_UPDATED" =~ "$TARGET_STRING" ]]; then
+              ##### ... then add it to the title
+              echo "adding '$TARGET_STRING' to title"
+              PR_TITLE_UPDATED="$PR_TITLE_UPDATED$TARGET_STRING, "
+            fi
+          done
+
+          ##### Finalize the PR title
+          ##### Check if the last two characters are ", " (= contracts were added to title)
+          if [[ "${PR_TITLE_UPDATED: -2}" == ", " ]]; then
+            ##### Remove the last two characters and append a closing bracket
+            PR_TITLE_UPDATED="${PR_TITLE_UPDATED:0:-2}]"
+          ##### Check if last character is '(' (= no contracts were added to title)
+          elif [[ "${PR_TITLE_UPDATED: -1}" == "[" ]]; then
+            ##### Remove the last character (not needed)
+            PR_TITLE_UPDATED="${PR_TITLE_UPDATED:0:-1}"
+          else
+            echo "Error: Unexpected ending in PR_TITLE_UPDATED: '$PR_TITLE_UPDATED'"
+            exit 1
+          fi
+
+          ##### if there are no changes in the title, no need to continue further
+          if [[ $PR_TITLE == $PR_TITLE_UPDATED ]]; then
+            echo "No PR title updates are required."
+            echo "This github action will end here."
+            exit 0
+          fi
+
+          ##### save updated PR title in env variable
+          echo "PR_TITLE_UPDATED=$PR_TITLE_UPDATED" >> $GITHUB_ENV
+
+      - name: Update the PR title on GitHub
+        if: env.CONTINUE == 'true'
+        env:
+          GH_PAT: ${{ secrets.GIT_TOKEN }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          PR_TITLE_UPDATED: ${{ env.PR_TITLE_UPDATED }}
+        run: |
+
+          ##### unset the default git token (does not have sufficient rights to perform the update)
+          unset GITHUB_TOKEN
+          ##### use the Personal Access Token to log into git CLI
+          echo $GH_PAT | gh auth login --with-token
+          ##### update the PR title
+          gh pr edit ${{ github.event.pull_request.number }} --title "${{ env.PR_TITLE_UPDATED }}"
diff --git a/.gitignore b/.gitignore
index b4121c5bc..78985120a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,7 @@ yarn-error.log
 
 .DS_Store*
 lcov.info
+lcov-filtered.info
 
 test/logs
 
diff --git a/docs/DeBridgeDlnFacet.md b/archive/docs/DeBridgeDlnFacet.md
similarity index 100%
rename from docs/DeBridgeDlnFacet.md
rename to archive/docs/DeBridgeDlnFacet.md
diff --git a/docs/DeBridgeFacet.md b/archive/docs/DeBridgeFacet.md
similarity index 100%
rename from docs/DeBridgeFacet.md
rename to archive/docs/DeBridgeFacet.md
diff --git a/docs/MakerTeleportFacet.md b/archive/docs/MakerTeleportFacet.md
similarity index 100%
rename from docs/MakerTeleportFacet.md
rename to archive/docs/MakerTeleportFacet.md
diff --git a/docs/MultichainFacet.md b/archive/docs/MultichainFacet.md
similarity index 100%
rename from docs/MultichainFacet.md
rename to archive/docs/MultichainFacet.md
diff --git a/docs/SynapseBridgeFacet.md b/archive/docs/SynapseBridgeFacet.md
similarity index 100%
rename from docs/SynapseBridgeFacet.md
rename to archive/docs/SynapseBridgeFacet.md
diff --git a/script/tasks/solidity/AddRoutersAndTokenForMultichain.s.sol b/archive/scripts/AddRoutersAndTokenForMultichain.s.sol
similarity index 100%
rename from script/tasks/solidity/AddRoutersAndTokenForMultichain.s.sol
rename to archive/scripts/AddRoutersAndTokenForMultichain.s.sol
diff --git a/script/deploy/facets/DeployDeBridgeDlnFacet.s.sol b/archive/scripts/DeployDeBridgeDlnFacet.s.sol
similarity index 100%
rename from script/deploy/facets/DeployDeBridgeDlnFacet.s.sol
rename to archive/scripts/DeployDeBridgeDlnFacet.s.sol
diff --git a/script/deploy/facets/DeployDeBridgeFacet.s.sol b/archive/scripts/DeployDeBridgeFacet.s.sol
similarity index 100%
rename from script/deploy/facets/DeployDeBridgeFacet.s.sol
rename to archive/scripts/DeployDeBridgeFacet.s.sol
diff --git a/script/deploy/facets/DeployMakerTeleportFacet.s.sol b/archive/scripts/DeployMakerTeleportFacet.s.sol
similarity index 100%
rename from script/deploy/facets/DeployMakerTeleportFacet.s.sol
rename to archive/scripts/DeployMakerTeleportFacet.s.sol
diff --git a/script/deploy/facets/DeployMultichainFacet.s.sol b/archive/scripts/DeployMultichainFacet.s.sol
similarity index 100%
rename from script/deploy/facets/DeployMultichainFacet.s.sol
rename to archive/scripts/DeployMultichainFacet.s.sol
diff --git a/script/deploy/facets/DeploySynapseBridgeFacet.s.sol b/archive/scripts/DeploySynapseBridgeFacet.s.sol
similarity index 100%
rename from script/deploy/facets/DeploySynapseBridgeFacet.s.sol
rename to archive/scripts/DeploySynapseBridgeFacet.s.sol
diff --git a/script/deploy/facets/UpdateDeBridgeDlnFacet.s.sol b/archive/scripts/UpdateDeBridgeDlnFacet.s.sol
similarity index 100%
rename from script/deploy/facets/UpdateDeBridgeDlnFacet.s.sol
rename to archive/scripts/UpdateDeBridgeDlnFacet.s.sol
diff --git a/script/deploy/facets/UpdateDeBridgeFacet.s.sol b/archive/scripts/UpdateDeBridgeFacet.s.sol
similarity index 100%
rename from script/deploy/facets/UpdateDeBridgeFacet.s.sol
rename to archive/scripts/UpdateDeBridgeFacet.s.sol
diff --git a/script/deploy/facets/UpdateMakerTeleportFacet.s.sol b/archive/scripts/UpdateMakerTeleportFacet.s.sol
similarity index 100%
rename from script/deploy/facets/UpdateMakerTeleportFacet.s.sol
rename to archive/scripts/UpdateMakerTeleportFacet.s.sol
diff --git a/script/deploy/facets/UpdateMultichainFacet.s.sol b/archive/scripts/UpdateMultichainFacet.s.sol
similarity index 100%
rename from script/deploy/facets/UpdateMultichainFacet.s.sol
rename to archive/scripts/UpdateMultichainFacet.s.sol
diff --git a/script/deploy/facets/UpdateSynapseBridgeFacet.s.sol b/archive/scripts/UpdateSynapseBridgeFacet.s.sol
similarity index 100%
rename from script/deploy/facets/UpdateSynapseBridgeFacet.s.sol
rename to archive/scripts/UpdateSynapseBridgeFacet.s.sol
diff --git a/src_archive/AxelarExecutor.sol b/archive/src/AxelarExecutor.sol
similarity index 100%
rename from src_archive/AxelarExecutor.sol
rename to archive/src/AxelarExecutor.sol
diff --git a/src_archive/AxelarFacet.sol b/archive/src/AxelarFacet.sol
similarity index 100%
rename from src_archive/AxelarFacet.sol
rename to archive/src/AxelarFacet.sol
diff --git a/src/Facets/DeBridgeDlnFacet.sol b/archive/src/DeBridgeDlnFacet.sol
similarity index 100%
rename from src/Facets/DeBridgeDlnFacet.sol
rename to archive/src/DeBridgeDlnFacet.sol
diff --git a/src/Facets/DeBridgeFacet.sol b/archive/src/DeBridgeFacet.sol
similarity index 100%
rename from src/Facets/DeBridgeFacet.sol
rename to archive/src/DeBridgeFacet.sol
diff --git a/src_archive/FusePoolZap.sol b/archive/src/FusePoolZap.sol
similarity index 100%
rename from src_archive/FusePoolZap.sol
rename to archive/src/FusePoolZap.sol
diff --git a/src/Facets/MakerTeleportFacet.sol b/archive/src/MakerTeleportFacet.sol
similarity index 100%
rename from src/Facets/MakerTeleportFacet.sol
rename to archive/src/MakerTeleportFacet.sol
diff --git a/src/Facets/MultichainFacet.sol b/archive/src/MultichainFacet.sol
similarity index 100%
rename from src/Facets/MultichainFacet.sol
rename to archive/src/MultichainFacet.sol
diff --git a/src_archive/NXTPFacet.sol b/archive/src/NXTPFacet.sol
similarity index 100%
rename from src_archive/NXTPFacet.sol
rename to archive/src/NXTPFacet.sol
diff --git a/src/Facets/SynapseBridgeFacet.sol b/archive/src/SynapseBridgeFacet.sol
similarity index 100%
rename from src/Facets/SynapseBridgeFacet.sol
rename to archive/src/SynapseBridgeFacet.sol
diff --git a/src_archive/WormholeFacet.sol b/archive/src/WormholeFacet.sol
similarity index 100%
rename from src_archive/WormholeFacet.sol
rename to archive/src/WormholeFacet.sol
diff --git a/test/solidity/Facets/DeBridgeDlnFacet.t.sol b/archive/test/DeBridgeDlnFacet.t.sol
similarity index 100%
rename from test/solidity/Facets/DeBridgeDlnFacet.t.sol
rename to archive/test/DeBridgeDlnFacet.t.sol
diff --git a/test/solidity/Facets/DeBridgeFacet.t.sol b/archive/test/DeBridgeFacet.t.sol
similarity index 100%
rename from test/solidity/Facets/DeBridgeFacet.t.sol
rename to archive/test/DeBridgeFacet.t.sol
diff --git a/test/solidity/Facets/MakerTeleportFacet.t.sol b/archive/test/MakerTeleportFacet.t.sol
similarity index 100%
rename from test/solidity/Facets/MakerTeleportFacet.t.sol
rename to archive/test/MakerTeleportFacet.t.sol
diff --git a/test/solidity/Facets/MultiChainFacet.t.sol b/archive/test/MultiChainFacet.t.sol
similarity index 100%
rename from test/solidity/Facets/MultiChainFacet.t.sol
rename to archive/test/MultiChainFacet.t.sol
diff --git a/test/solidity/Facets/SynapseBridgeFacet.t.sol b/archive/test/SynapseBridgeFacet.t.sol
similarity index 100%
rename from test/solidity/Facets/SynapseBridgeFacet.t.sol
rename to archive/test/SynapseBridgeFacet.t.sol
diff --git a/audit/auditLog.json b/audit/auditLog.json
new file mode 100644
index 000000000..af918a2bb
--- /dev/null
+++ b/audit/auditLog.json
@@ -0,0 +1,16 @@
+{
+  "audits": {
+    "audit20240814": {
+      "auditCompletedOn": "14.08.2024",
+      "auditedBy": "Sujith Somraaj (individual security researcher)",
+      "auditorGitHandle": "sujithsomraaj",
+      "auditReportPath": "./audit/reports/2024.08.14_StargateFacetV2_ReAudit.pdf",
+      "auditCommitHash": "d622002440317580b5d0fb90ef22b839d84957e2"
+    }
+  },
+  "auditedContracts": {
+    "StargateFacetV2": {
+      "1.0.1": ["audit20240814"]
+    }
+  }
+}
diff --git a/audit/reports/2024.08.14_StargateFacetV2_ReAudit.pdf b/audit/reports/2024.08.14_StargateFacetV2_ReAudit.pdf
new file mode 100644
index 000000000..0f1e076a7
Binary files /dev/null and b/audit/reports/2024.08.14_StargateFacetV2_ReAudit.pdf differ
diff --git a/config/across.json b/config/across.json
index 6505cfed8..81c88b3b7 100644
--- a/config/across.json
+++ b/config/across.json
@@ -78,6 +78,12 @@
       "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1"
     ]
   },
+  "blast": {
+    "chainId": 81457,
+    "acrossSpokePool": "0x2D509190Ed0172ba588407D4c2df918F955Cc6E1",
+    "weth": "0x4300000000000000000000000000000000000004",
+    "tokensToApprove": []
+  },
   "arbitrum": {
     "chainId": 42161,
     "acrossSpokePool": "0xe35e9842fceaca96570b734083f4a58e8f7c5f2a",
@@ -104,5 +110,11 @@
       "0xA219439258ca9da29E9Cc4cE5596924745e12B93",
       "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4"
     ]
+  },
+  "scroll": {
+    "chainId": 534352,
+    "acrossSpokePool": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96",
+    "weth": "0x5300000000000000000000000000000000000004",
+    "tokensToApprove": []
   }
-}
+}
\ No newline at end of file
diff --git a/config/amarok.json b/config/amarok.json
index feb8b0ca6..93b12762d 100644
--- a/config/amarok.json
+++ b/config/amarok.json
@@ -49,6 +49,12 @@
     "domain": "",
     "tokensToApprove": []
   },
+  "immutablezkevm": {
+    "chainId": 13371,
+    "connextHandler": "0x0000000000000000000000000000000000000000",
+    "domain": "",
+    "tokensToApprove": []
+  },
   "polygon": {
     "chainId": 137,
     "connextHandler": "0x11984dc4465481512eb5b777E44061C158CF2259",
@@ -101,9 +107,7 @@
     "chainId": 34443,
     "connextHandler": "0x7380511493DD4c2f1dD75E9CCe5bD52C787D4B51",
     "domain": "1836016741",
-    "tokensToApprove": [
-      "0x4200000000000000000000000000000000000006"
-    ]
+    "tokensToApprove": ["0x4200000000000000000000000000000000000006"]
   },
   "arbitrum": {
     "chainId": 42161,
@@ -274,5 +278,11 @@
     "connextHandler": "0x0000000000000000000000000000000000000000",
     "domain": "",
     "tokensToApprove": []
+  },
+  "taiko": {
+    "chainId": 167000,
+    "connextHandler": "0x0000000000000000000000000000000000000000",
+    "domain": "",
+    "tokensToApprove": []
   }
-}
\ No newline at end of file
+}
diff --git a/config/dexs.json b/config/dexs.json
index d506fac89..fb97c57e2 100644
--- a/config/dexs.json
+++ b/config/dexs.json
@@ -326,6 +326,12 @@
     "0x7fA60f4A59Dd8285C5Fcd8fd2A92A2Ca45ef8a0C",
     "0x134f525AC05E4724e55C363A9C4FA35ceB13F88d"
   ],
+  "immutablezkevm": [
+    "0xAcD913Ad6936Bb662395ac9a66D75bFc77c165fF",
+    "0x5C6Dd0170348666A3e07fD033C12D9D15c83e360",
+    "0x677Fa29FFe6c8f03D6bbE789090Dceb498b7aaA4",
+    "0x1a4E99aB56BBac95810C0A957F173054f6FA8fDc"
+  ],
   "fraxtal": [
     "0x7956280Ec4B4d651C4083Ca737a1fa808b5319D8",
     "0x9870F0C91D722B3393383722968269496d919bD8",
@@ -622,7 +628,9 @@
     "0xf91bb752490473b8342a3e964e855b9f9a2a668e"
   ],
   "avalancheFujiTestnet": [],
-  "bscTestnet": ["0x1b02da8cb0d097eb8d57a175b88c7d8b47997506"],
+  "bscTestnet": [
+    "0x1b02da8cb0d097eb8d57a175b88c7d8b47997506"
+  ],
   "localanvil": [],
   "linea": [
     "0xf6C9605c6E231C1547b7a6545d93e7233f97322a",
@@ -654,5 +662,11 @@
     "0xF2ee649caB7a0edEdED7a27821B0aCDF77778aeD",
     "0x0263180888007D45340F86eC0b610d250BbDcB23",
     "0x6131b5fae19ea4f9d964eac0408e4408b66337b5"
+  ],
+  "taiko": [
+    "0xDd8A081efC90DFFD79940948a1528C51793C4B03",
+    "0xff2F39692A90262b8Ed4DFD92799bB450425773F",
+    "0xD989E929517B0e5eD0c8EfE7607Fa167B697cBa8",
+    "0xcaA342e4f781d63EF41E220D7622B97E66BAEcF3"
   ]
 }
diff --git a/config/global.json b/config/global.json
index 223033a67..39d4c3e09 100644
--- a/config/global.json
+++ b/config/global.json
@@ -2,12 +2,15 @@
   "create3Factory": {
     "default": "0x93FEC2C00BfE902F733B57c5a6CeeD7CD1384AE1",
     "linea": "0x8437A5fE47A4Df14700c96DF1870824e72FA8499",
-    "metis": "0x763f212f355433C59d734C71247d16fCE74D8785"
+    "metis": "0x763f212f355433C59d734C71247d16fCE74D8785",
+    "taiko": "0x8437A5fE47A4Df14700c96DF1870824e72FA8499"
   },
   "refundWallet": "0x156CeBba59DEB2cB23742F70dCb0a11cC775591F",
   "withdrawWallet": "0x08647cc950813966142A416D40C382e2c5DB73bB",
+  "pauserWallet": "0x3b6211981d47Fb6375E0125A6a401830616f7906",
   "lifuelRebalanceWallet": "0xC71284231A726A18ac85c94D75f9fe17A185BeAF",
   "deployerWallet": "0x11F1022cA6AdEF6400e5677528a80d49a069C00c",
+  "pauserWallet": "0x29DaCdF7cCaDf4eE67c923b4C22255A4B2494eD7",
   "approvedSigsForRefundWallet": [
     {
       "sig": "0x0d19e519",
@@ -47,6 +50,7 @@
     "fuse": "0x5336e97bA7332FAC20281Bda8B790c8892245Ded",
     "gnosis": "0x2bC523875b59A1Ddd03CEB1F1b28c5B0e8e6654A",
     "gravity": "0x245B16CaCE8730b009c5352186DcE7d73c3037A1",
+    "immutablezkevm": "0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772",
     "linea": "0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1",
     "mantle": "0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772",
     "metis": "0x925cD8289Ac2d617F52974da8338867f3bB62d56",
@@ -59,14 +63,15 @@
     "rootstock": "0xDF61270FdC1a892874Fd3C0143A0a4CBa74F4EF1",
     "scroll": "0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1",
     "sei": "0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1",
+    "taiko": "0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772",
     "zksync": "0x02f1272aEaCaf7BD8b30278bc2AA381Cc623A744"
   },
   "safeOwners": [
+    "0x11F1022cA6AdEF6400e5677528a80d49a069C00c",
     "0xb78FbE12d9C09d98ce7271Fa089c2fe437B7B4D5",
     "0x65f6F29D3eb871254d71A79CC4F74dB3AAF3b86e",
     "0x24767E3A1cb07ee500BA9A5621F2B608440Ca270",
     "0x81Dbb716aA13869323974A1766120D0854188e3e",
-    "0x11F1022cA6AdEF6400e5677528a80d49a069C00c",
     "0x498E8fF83B503aDe5e905719D27b2f11B605b45A"
   ],
   "safeApiUrls": {
@@ -84,6 +89,7 @@
     "fuse": "https://transaction-fuse.safe.fuse.io/api",
     "gnosis": "https://safe-transaction-gnosis-chain.safe.global/api",
     "gravity": "https://safe.gravity.xyz/txs/api",
+    "immutablezkevm": "https://transaction.safe.immutable.com/api",
     "linea": "https://transaction.safe.linea.build/api",
     "mantle": "https://transaction.multisig.mantle.xyz/api",
     "metis": "https://metissafe.tech/txs/api",
@@ -96,6 +102,7 @@
     "rootstock": "https://transaction.safe.rootstock.io/api",
     "scroll": "https://safe-transaction-scroll.safe.global/api",
     "sei": "https://transaction.sei-safe.protofire.io/api",
+    "taiko": "https://transaction.safe.taiko.xyz/api",
     "zksync": "https://safe-transaction-zksync.safe.global/api"
   },
   "nativeAddress": {
@@ -113,6 +120,7 @@
     "fuse": "0x0000000000000000000000000000000000000000",
     "gnosis": "0x0000000000000000000000000000000000000000",
     "gravity": "0x0000000000000000000000000000000000000000",
+    "immutablezkevm": "0x0000000000000000000000000000000000000000",
     "linea": "0x0000000000000000000000000000000000000000",
     "mantle": "0x0000000000000000000000000000000000000000",
     "metis": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000",
@@ -125,6 +133,13 @@
     "rootstock": "0x0000000000000000000000000000000000000000",
     "scroll": "0x0000000000000000000000000000000000000000",
     "sei": "0x0000000000000000000000000000000000000000",
+    "taiko": "0x0000000000000000000000000000000000000000",
     "zksync": "0x0000000000000000000000000000000000000000"
-  }
-}
\ No newline at end of file
+  },
+  "autoWhitelistPeripheryContracts": [
+    "FeeCollector",
+    "LiFuelFeeCollector",
+    "TokenWrapper",
+    "LiFiDEXAggregator"
+  ]
+}
diff --git a/config/networks.json b/config/networks.json
new file mode 100644
index 000000000..69fddd550
--- /dev/null
+++ b/config/networks.json
@@ -0,0 +1,299 @@
+{
+  "mainnet": {
+    "name": "Ethereum Mainnet",
+    "chainId": 1,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "arbitrum": {
+    "name": "Arbitrum One",
+    "chainId": 42161,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "aurora": {
+    "name": "Aurora",
+    "chainId": 1313161554,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "avalanche": {
+    "name": "Avalanche C-Chain",
+    "chainId": 43114,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "AVAX",
+    "wrappedNativeAddress": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "base": {
+    "name": "Base",
+    "chainId": 8453,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x4200000000000000000000000000000000000006",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "blast": {
+    "name": "Blast",
+    "chainId": 81457,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x4300000000000000000000000000000000000004",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "boba": {
+    "name": "Boba Network",
+    "chainId": 288,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "bsc": {
+    "name": "BNB Smart Chain",
+    "chainId": 56,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "BNB",
+    "wrappedNativeAddress": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "celo": {
+    "name": "Celo",
+    "chainId": 42220,
+    "nativeAddress": "0x471EcE3750Da237f93B8E339c536989b8978a438",
+    "nativeCurrency": "CELO",
+    "wrappedNativeAddress": "0x471EcE3750Da237f93B8E339c536989b8978a438",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "fantom": {
+    "name": "Fantom",
+    "chainId": 250,
+    "nativeCurrency": "FTM",
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "wrappedNativeAddress": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "fraxtal": {
+    "name": "Fraxtal",
+    "chainId": 252,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "frxETH",
+    "wrappedNativeAddress": "0xfc00000000000000000000000000000000000006",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "fuse": {
+    "name": "Fuse",
+    "chainId": 122,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "FUSE",
+    "wrappedNativeAddress": "0x0BE9e53fd7EDaC9F859882AfdDa116645287C629",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "gnosis": {
+    "name": "Gnosis Chain",
+    "chainId": 100,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "XDAI",
+    "wrappedNativeAddress": "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "gravity": {
+    "name": "Gravity Alpha Mainnet",
+    "chainId": 1625,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "G",
+    "wrappedNativeAddress": "0xBB859E225ac8Fb6BE1C7e38D87b767e95Fef0EbD",
+    "status": "inactive",
+    "type": "mainnet"
+  },
+  "immutablezkevm": {
+    "name": "Immutable zkEVM",
+    "chainId": 13371,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "IMX",
+    "wrappedNativeAddress": "0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d",
+    "status": "inactive",
+    "type": "mainnet"
+  },
+  "linea": {
+    "name": "Linea",
+    "chainId": 59144,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "mantle": {
+    "name": "Mantle",
+    "chainId": 5000,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "MNT",
+    "wrappedNativeAddress": "0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "metis": {
+    "name": "Metis Andromeda Mainnet",
+    "chainId": 1088,
+    "nativeAddress": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000",
+    "nativeCurrency": "METIS",
+    "wrappedNativeAddress": "0x75cb093E4D61d2A2e65D8e0BBb01DE8d89b53481",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "mode": {
+    "name": "Mode",
+    "chainId": 34443,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x4200000000000000000000000000000000000006",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "moonbeam": {
+    "name": "Moonbeam",
+    "chainId": 1284,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "GLMR",
+    "wrappedNativeAddress": "0xacc15dc74880c9944775448304b263d191c6077f",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "moonriver": {
+    "name": "Moonriver",
+    "chainId": 1285,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "MOVR",
+    "wrappedNativeAddress": "0x98878b06940ae243284ca214f92bb71a2b032b8a",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "optimism": {
+    "name": "Optimism",
+    "chainId": 10,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x4200000000000000000000000000000000000006",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "polygon": {
+    "name": "Polygon",
+    "chainId": 137,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "MATIC",
+    "wrappedNativeAddress": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "polygonzkevm": {
+    "name": "Polygon zkEVM",
+    "chainId": 1101,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x4f9a0e7fd2bf6067db6994cf12e4495df938e6e9",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "rootstock": {
+    "name": "Rootstock",
+    "chainId": 30,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "RBTC",
+    "wrappedNativeAddress": "0x542FDA317318eBf1d3DeAF76E0B632741a7e677d",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "scroll": {
+    "name": "Scroll",
+    "chainId": 534352,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x5300000000000000000000000000000000000004",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "sei": {
+    "name": "Sei Network",
+    "chainId": 1329,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "SEI",
+    "wrappedNativeAddress": "0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "zksync": {
+    "name": "zkSync Era Mainnet",
+    "chainId": 324,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91",
+    "status": "active",
+    "type": "mainnet"
+  },
+  "bsc-testnet": {
+    "name": "Binance Smart Chain Testnet",
+    "chainId": 97,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "BNB",
+    "wrappedNativeAddress": "",
+    "status": "active",
+    "type": "testnet"
+  },
+  "lineatest": {
+    "name": "Linea Testnet",
+    "chainId": 59140,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "",
+    "status": "active",
+    "type": "testnet"
+  },
+  "mumbai": {
+    "name": "Mumbai",
+    "chainId": 80001,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "MATIC",
+    "wrappedNativeAddress": "",
+    "status": "active",
+    "type": "testnet"
+  },
+  "sepolia": {
+    "name": "Sepolia",
+    "chainId": 11155111,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "",
+    "status": "active",
+    "type": "testnet"
+  },
+  "localanvil": {
+    "name": "Local Anvil (temporary Foundry test network)",
+    "chainId": 31337,
+    "nativeAddress": "0x0000000000000000000000000000000000000000",
+    "nativeCurrency": "ETH",
+    "wrappedNativeAddress": "0x0000000000000000000000000000000000000000",
+    "status": "active",
+    "type": "testnet"
+  }
+}
diff --git a/config/squid.json b/config/squid.json
index c80182423..46db34f80 100644
--- a/config/squid.json
+++ b/config/squid.json
@@ -43,5 +43,8 @@
   },
   "fraxtal": {
     "router": "0xDC3D8e1Abe590BCa428a8a2FC4CfDbD1AcF57Bd9"
+  },
+  "immutablezkevm": {
+    "router": "0xce16F69375520ab01377ce7B88f5BA8C48F8D666"
   }
 }
diff --git a/config/stargate.json b/config/stargate.json
index 27683bcba..0b37c97d0 100644
--- a/config/stargate.json
+++ b/config/stargate.json
@@ -33,6 +33,7 @@
     "mode": "0x1a44076050125825900e736c501f859c50fE728c",
     "mantle": "0x1a44076050125825900e736c501f859c50fE728c",
     "scroll": "0x1a44076050125825900e736c501f859c50fE728c",
+    "taiko": "0x1a44076050125825900e736c501f859c50fE728c",
     "zksync": "0xd07C30aF3Ff30D96BDc9c6044958230Eb797DDBF",
     "sei": "0x1a44076050125825900e736c501f859c50fE728c",
     "localanvil": "0x0000000000000000000000000000000000000000",
@@ -56,6 +57,7 @@
     "fantom": "----FantomIsNotSupportedByStargateV2----",
     "gravity": "0x9c2dc7377717603eB92b2655c5f2E7997a4945BD",
     "sei": "0x1502FA4be69d526124D453619276FacCab275d3D",
+    "taiko": "0x45d417612e177672958dC0537C45a8f8d754Ac2E",
     "zksync": "---comingSoon---"
   },
   "endpointIds": [
@@ -114,6 +116,10 @@
     {
       "chainId": 1329,
       "endpointId": 30280
+    },
+    {
+      "chainId": 167000,
+      "endpointId": 30290
     }
   ],
   "-----------  anything from here is LEGACY (for StargateFacet.sol (v1)) ----------------------------------------------------------------": {},
@@ -197,6 +203,7 @@
     "heco": "0x0000000000000000000000000000000000000000",
     "gnosis": "0x0000000000000000000000000000000000000000",
     "gravity": "0x0000000000000000000000000000000000000000",
+    "immutablezkevm": "0x0000000000000000000000000000000000000000",
     "moonbeam": "0x0000000000000000000000000000000000000000",
     "moonriver": "0x0000000000000000000000000000000000000000",
     "nova": "0x0000000000000000000000000000000000000000",
@@ -214,6 +221,7 @@
     "mode": "0x0000000000000000000000000000000000000000",
     "mantle": "0x296F55F8Fb28E498B858d0BcDA06D955B2Cb3f97",
     "scroll": "0x0000000000000000000000000000000000000000",
+    "taiko": "0x0000000000000000000000000000000000000000",
     "localanvil": "0x0000000000000000000000000000000000000000",
     "mumbai": "0x0000000000000000000000000000000000000000",
     "sepolia": "0x0000000000000000000000000000000000000000"
@@ -252,8 +260,9 @@
     "mantle": "0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590",
     "metis": "0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590",
     "scroll": "0x36d4686e19c052787D7f24E6913cEbC025714895",
+    "taiko": "0x0000000000000000000000000000000000000000",
     "localanvil": "0x0000000000000000000000000000000000000000",
     "mumbai": "0x817436a076060D158204d955E5403b6Ed0A5fac0",
     "sepolia": "0x0000000000000000000000000000000000000000"
   }
-}
\ No newline at end of file
+}
diff --git a/config/symbiosis.json b/config/symbiosis.json
index 3ae67f5b5..23c15d507 100644
--- a/config/symbiosis.json
+++ b/config/symbiosis.json
@@ -74,5 +74,9 @@
   "sei": {
     "metaRouter": "0xcE8f24A58D85eD5c5A6824f7be1F8d4711A0eb4C",
     "gateway": "0xAdB2d3b711Bb8d8Ea92ff70292c466140432c278"
+  },
+  "taiko": {
+    "metaRouter": "0x7057aB3fB2BeE9c18e0cDe4240DE4ff7f159E365",
+    "gateway": "0xa0079829B9F1Edc5DD0DE3eC104f281745C4bD81"
   }
 }
diff --git a/config/tokenwrapper.json b/config/tokenwrapper.json
index 40cb3deb8..c2eb4b2c6 100644
--- a/config/tokenwrapper.json
+++ b/config/tokenwrapper.json
@@ -38,5 +38,7 @@
   "mantle": "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8",
   "blast": "0x4300000000000000000000000000000000000004",
   "rootstock": "0x542fda317318ebf1d3deaf76e0b632741a7e677d",
-  "sei": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7"
-}
\ No newline at end of file
+  "sei": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
+  "taiko": "0xA51894664A773981C6C112C43ce576f315d5b1B6",
+  "immutablezkevm": "0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d"
+}
diff --git a/deployments/_deployments_log_file.json b/deployments/_deployments_log_file.json
index b2df44336..e5141b66d 100644
--- a/deployments/_deployments_log_file.json
+++ b/deployments/_deployments_log_file.json
@@ -446,10 +446,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0x93D06bf131a1bBB9c8EAE78F4eF05e302308Ce37",
+            "ADDRESS": "0x4305713927B95917C009b7ef30F069A910781593",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-07 13:19:25",
+            "TIMESTAMP": "2024-08-09 10:16:31",
             "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -640,6 +641,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xC9E3d116262E93c14f87032fBE0C43791e0fAfCB",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:21:24",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x429Da7043882C2A962bC4EA7b33440C3B9a033D7",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:16:31",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "DiamondLoupeFacet": {
@@ -1076,10 +1105,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0xE2FF9605Ec86bbB75042331250e27e1B9aA81783",
+            "ADDRESS": "0xA73AB25328Ff50072e5e9A4a97bdf2796C9B7caE",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-07 13:19:30",
+            "TIMESTAMP": "2024-08-09 10:16:37",
             "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -1295,6 +1325,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xa521DD4f0e6df9d56d740D0fa4f7fA2F0BC88bA7",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:21:53",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x01ABD3Dec5268802272af46FE6Ac4c2fCF0Eff10",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:16:40",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "OwnershipFacet": {
@@ -1730,11 +1788,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0x2942c143463A591Ba88B4241491796Fcb14306f0",
+            "ADDRESS": "0x59EfE38BE819457509Adba939780c4CfD1d2dA84",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-27 09:58:20",
+            "TIMESTAMP": "2024-08-09 10:16:42",
             "CONSTRUCTOR_ARGS": "0x",
-            "SALT": "26062027",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -1950,6 +2008,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xf09eF957165a5265613c5a57bDe781d363d519f0",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:22:22",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x815e97BE9122Fa64259277b1509E316Fc45D4b34",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:16:51",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "DexManagerFacet": {
@@ -2559,6 +2645,16 @@
             "SALT": "26062027",
             "VERIFIED": "false"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0xD84484f7B346b7521905c40370535b54E909BC06",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 10:16:47",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
         ]
       },
       "production": {
@@ -2841,6 +2937,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x38aDe624ebAF11ee35190046fbdF2d42e03e869a",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:22:52",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0xD1DB5abDA5918ca4aFb8982a49378D4A2Dfe5D5c",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:17:10",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "AccessManagerFacet": {
@@ -3263,10 +3387,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0x685C70986d2F90CafF61EB15Ab1BE7502bBa007D",
+            "ADDRESS": "0xa836CE919F37421B4e0990911769dE04410cd1A3",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-07 13:19:45",
+            "TIMESTAMP": "2024-08-09 10:16:52",
             "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -3464,6 +3589,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xdD6CEa60F2Bb19fA5a03F0856054E2803221c3E4",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:23:20",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xa09f97e14C8351D16558b18891938aC873787652",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:17:22",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "WithdrawFacet": {
@@ -3885,11 +4038,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0x434a5E2660eea82e5f57d70f7655033f9D8257F3",
+            "ADDRESS": "0x2157031AE43C8045abfB4405E6453B48FD901B74",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-27 09:58:37",
+            "TIMESTAMP": "2024-08-09 10:16:57",
             "CONSTRUCTOR_ARGS": "0x",
-            "SALT": "26062027",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -4074,6 +4227,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xddb090dD35ad8642DC5c79137147A6B34485B126",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:23:50",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x8A779ed5c6838e236f934Eb392D5aBdbF22404dD",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:17:40",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "PeripheryRegistryFacet": {
@@ -4495,11 +4676,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0x70aAcD515727E7057C317A4177E030f7240DF4D0",
+            "ADDRESS": "0xD51Bbb06C1234F7Eead4721915E7c6aeb99A330d",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-07 13:19:55",
+            "TIMESTAMP": "2024-08-09 10:17:01",
             "CONSTRUCTOR_ARGS": "0x",
-            "SALT": "26062027",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -4711,6 +4892,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xdd400e751B3A9D2bF02CF1EEc245c1BDFb8e0E56",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:24:20",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x0C710c59f1a656333B5AfBAC64A8f60B52C30af4",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:17:52",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "LiFiDiamond": {
@@ -5279,12 +5488,12 @@
       "production": {
         "1.0.0": [
           {
-            "ADDRESS": "0x2dea447e7dc6cd2f10b31bF10dCB30F87E838417",
+            "ADDRESS": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE",
             "OPTIMIZER_RUNS": "1000000",
             "TIMESTAMP": "2024-05-24 16:13:16",
             "CONSTRUCTOR_ARGS": "0x00000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c000000000000000000000000ad50118509eb4c8e3e39a370151b0fd5d5957013",
             "SALT": "",
-            "VERIFIED": "true"
+            "VERIFIED": "false"
           }
         ]
       }
@@ -5330,6 +5539,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:28:15",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000011f11121df7256c40339393b0fb045321022ce44000000000000000000000000c9e3d116262e93c14f87032fbe0c43791e0fafcb",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x3A9A5dBa8FE1C4Da98187cE4755701BCA182f63b",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:19:32",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c000000000000000000000000429da7043882c2a962bc4ea7b33440c3b9a033d7",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "LiFiDiamondImmutable": {
@@ -5665,6 +5902,20 @@
           }
         ]
       }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x8c582F8d09BeBAFbDdb2668dC7F7E3283d05ebA3",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:06:08",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c000000000000000000000000429da7043882c2a962bc4ea7b33440c3b9a033d7",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "AcrossFacet": {
@@ -5918,6 +6169,34 @@
           }
         ]
       }
+    },
+    "blast": {
+      "production": {
+        "2.0.0": [
+          {
+            "ADDRESS": "0x9535A1AFd986FA9a2D324657116F02C364edebFf",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-19 17:33:50",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000002d509190ed0172ba588407d4c2df918f955cc6e10000000000000000000000004300000000000000000000000000000000000004",
+            "SALT": "09072024",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "scroll": {
+      "production": {
+        "2.0.0": [
+          {
+            "ADDRESS": "0x9535A1AFd986FA9a2D324657116F02C364edebFf",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-19 17:48:39",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000003bad7ad0728f9917d1bf08af5782dcbd516cdd960000000000000000000000005300000000000000000000000000000000000004",
+            "SALT": "09072024",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "CBridgeFacet": {
@@ -6726,11 +7005,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0xAf97f8070d9823a4a6f224C2638feB6CcE44a73d",
+            "ADDRESS": "0x93d003b988c7c8976Ef41D207F4b166e35b6a1ed",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-27 09:59:27",
+            "TIMESTAMP": "2024-08-09 10:17:11",
             "CONSTRUCTOR_ARGS": "0x",
-            "SALT": "26062027",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -6915,6 +7194,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xa27992F9ef326527F85898E645AFF1d99E9609E3",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:25:19",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x5B73eFA1929c80D92C85512153392B799B022D18",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:18:18",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "HopFacetOptimized": {
@@ -8040,11 +8347,21 @@
             "SALT": "26062027",
             "VERIFIED": "false"
           }
-        ]
-      },
-      "production": {
-        "1.0.0": [
-          {
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0xb03Ed64dfB284F50fc71F358492e932bbB3A99Fd",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 10:17:06",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
+        ]
+      },
+      "production": {
+        "1.0.0": [
+          {
             "ADDRESS": "0x7d2b7aea9E451BcD5Fb08454C885e52945686aDb",
             "OPTIMIZER_RUNS": "1000000",
             "TIMESTAMP": "2023-07-05 14:53:40",
@@ -8285,6 +8602,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x75F9eaC5c368Ed9277b8952C83A063e435051332",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:24:49",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x42C1418917AE5505b5B3C79bdc1d1ba30177Ea06",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:18:05",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "MultichainFacet": {
@@ -10095,6 +10440,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xB59Cb9E4087c841577ACE23B0168CCDdf9450290",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:34:58",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000011f11121df7256c40339393b0fb045321022ce44",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x6bC43F95C5234aA749D18403753d60B91f972d3c",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:28:43",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "Executor": {
@@ -10893,6 +11266,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "2.0.0": [
+          {
+            "ADDRESS": "0xdC55d8b59441f75e32FDD2356139DC8402e52048",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:36:27",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000b59cb9e4087c841577ace23b0168ccddf9450290",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "2.0.0": [
+          {
+            "ADDRESS": "0xeCBa38d0bAc1cA1CD5A30347370e4D539d44FAA1",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:29:29",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000006bc43f95c5234aa749d18403753d60b91f972d3c",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "FeeCollector": {
@@ -11302,11 +11703,11 @@
       "staging": {
         "1.0.0": [
           {
-            "ADDRESS": "0x9a0D4c65a7C52A22fe67CCb6FC44504E82d2B9Af",
+            "ADDRESS": "0xF008fd48fFBE6d364f3d267412BBfC7dBc0c5A5B",
             "OPTIMIZER_RUNS": "1000000",
-            "TIMESTAMP": "2023-06-27 10:17:34",
-            "CONSTRUCTOR_ARGS": "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc",
-            "SALT": "26062028",
+            "TIMESTAMP": "2024-08-07 14:28:40",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000008647cc950813966142a416d40c382e2c5db73bb",
+            "SALT": "",
             "VERIFIED": "false"
           }
         ]
@@ -11492,6 +11893,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x1a4E99aB56BBac95810C0A957F173054f6FA8fDc",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:38:02",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000008647cc950813966142a416d40c382e2c5db73bb",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xDd8A081efC90DFFD79940948a1528C51793C4B03",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:30:44",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000008647cc950813966142a416d40c382e2c5db73bb",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "Receiver": {
@@ -12626,6 +13055,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "2.0.2": [
+          {
+            "ADDRESS": "0xCfDfbAa460EFAd6F58D4459d82863CfA137e4993",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:48:04",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dc55d8b59441f75e32fdd2356139dc8402e5204800000000000000000000000000000000000000000000000000000000000186a0",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "2.0.2": [
+          {
+            "ADDRESS": "0xe38326Ae727e3fA6669249063Ce7b8ea1754e756",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 14:22:52",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ecba38d0bac1ca1cd5a30347370e4d539d44faa100000000000000000000000000000000000000000000000000000000000186a0",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "ServiceFeeCollector": {
@@ -17108,6 +17565,20 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xB6faa3155683d6856ae196c4f3847D68D478E5eA",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:32:34",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d666",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "SynapseBridgeFacet": {
@@ -18052,6 +18523,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.1.0": [
+          {
+            "ADDRESS": "0x4CA4226Ea534F2Ece75A4FcDAD0bBe5AbaEA9820",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:27:18",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.1.0": [
+          {
+            "ADDRESS": "0x386bbbE35DF5E7bec5fff8aC4E74A6D7c5fDa482",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:18:39",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "CalldataVerificationFacet": {
@@ -18676,6 +19175,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.1.1": [
+          {
+            "ADDRESS": "0x93b22CF8C50f87C394837DdE0fD84E8add3100e9",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:27:48",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.1.1": [
+          {
+            "ADDRESS": "0xFf0dDC136bD881F3B8Eea805654Dd0D0d3bd800C",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:18:50",
+            "CONSTRUCTOR_ARGS": "0x",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "LiFuelFeeCollector": {
@@ -19467,6 +19994,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x677Fa29FFe6c8f03D6bbE789090Dceb498b7aaA4",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:39:30",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000c71284231a726a18ac85c94d75f9fe17a185beaf",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0xff2F39692A90262b8Ed4DFD92799bB450425773F",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:32:16",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000c71284231a726a18ac85c94d75f9fe17a185beaf",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "AcrossFacetPacked": {
@@ -19603,6 +20158,34 @@
           }
         ]
       }
+    },
+    "blast": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xFd796bf7Ff74d414b99CacF6F216eAC24bF3aC8E",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-19 17:50:49",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000002d509190ed0172ba588407d4c2df918f955cc6e1000000000000000000000000430000000000000000000000000000000000000400000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c",
+            "SALT": "09072024",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "scroll": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xFd796bf7Ff74d414b99CacF6F216eAC24bF3aC8E",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-19 17:52:23",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000003bad7ad0728f9917d1bf08af5782dcbd516cdd96000000000000000000000000530000000000000000000000000000000000000400000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c",
+            "SALT": "09072024",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "DeBridgeDlnFacet": {
@@ -20126,6 +20709,20 @@
           }
         ]
       }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xD59F68bBdECA334A05db2BCe5B6711d22f92fE7a",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:26:43",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000007057ab3fb2bee9c18e0cde4240de4ff7f159e365000000000000000000000000a0079829b9f1edc5dd0de3ec104f281745c4bd81",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "MayanBridgeFacet": {
@@ -20585,6 +21182,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x5C6Dd0170348666A3e07fD033C12D9D15c83e360",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:42:39",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xD989E929517B0e5eD0c8EfE7607Fa167B697cBa8",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:35:17",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000a51894664a773981c6c112c43ce576f315d5b1b6",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
     }
   },
   "GasRebateDistributor": {
@@ -21169,6 +21794,34 @@
           }
         ]
       }
+    },
+    "immutablezkevm": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x51504500fBFB459684E020154Dc9B2DE912d0B92",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 10:25:49",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000000000000000000000000000000000000000000000",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x147e65652FDaC507d24DE522a02C76c006A24aB9",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:18:29",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000000000000000000000000000000000000000000000",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
+        ]
+      }
     }
   },
   "StargateFacetV2": {
@@ -21195,6 +21848,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 18:28:47",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000006ce9bf8cdab780416ad1fd87b318a077d2f50eac",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21209,6 +21872,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 15:57:42",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000006d6620efa72948c5f68a3c8646d58c00d3f4a980",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
         ]
       }
     },
@@ -21223,6 +21896,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 19:36:54",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000019cfce47ed54a88614648dc3f19a5980097007dd",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21237,6 +21920,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 17:23:47",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000005f688f563dc16590e570f97b542fa87931af2fed",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
         ]
       }
     },
@@ -21251,6 +21944,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 17:37:54",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000005634c4a5fed09819e3c46d86a965dd9447d86e47",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21265,6 +21968,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 19:05:03",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000041b491285a4f888f9f636cec8a363ab9770a0aef",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21279,6 +21992,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 19:32:01",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000004e422b0acb2bd7e3ac70b5c0e5eb806e86a94038",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21293,6 +22016,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 18:33:12",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000f1fcb4cbd57b67d683972a59b6a7b1e2e8bf27e6",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21307,6 +22040,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x113E97921874646413572F2C43562463c378b6f5",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-15 12:35:13",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000005f688f563dc16590e570f97b542fa87931af2fed",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21321,6 +22064,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0xCb667deA2894ab64e8e75EACB0d5d027AC672e25",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 19:01:23",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000cbe78230cca58b9ef4c3c5d1bc0d7e4b3206588a",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21335,6 +22088,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 16:51:24",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000017e450be3ba9557f2378e20d64ad417e59ef9a34",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     },
@@ -21349,6 +22112,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 19:07:11",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000001502fa4be69d526124d453619276faccab275d3d",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
         ]
       }
     },
@@ -21363,6 +22136,16 @@
             "SALT": "",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 17:44:55",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000006e3d884c96d640526f273c61dfcf08915ebd7e2b",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       },
       "staging": {
@@ -21389,6 +22172,30 @@
             "SALT": "09072024",
             "VERIFIED": "true"
           }
+        ],
+        "1.0.1": [
+          {
+            "ADDRESS": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-14 17:45:53",
+            "CONSTRUCTOR_ARGS": "0x0000000000000000000000009c2dc7377717603eb92b2655c5f2e7997a4945bd",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.1": [
+          {
+            "ADDRESS": "0x113E97921874646413572F2C43562463c378b6f5",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:24:45",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000045d417612e177672958dc0537c45a8f8d754ac2e",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
         ]
       }
     }
@@ -21601,6 +22408,50 @@
           }
         ]
       }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0x6CA57d9846f9a1fd48368762b743a047eC4f81A6",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:34:30",
+            "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f000000000000000000000000ecba38d0bac1ca1cd5a30347370e4d539d44faa100000000000000000000000045d417612e177672958dc0537c45a8f8d754ac2e0000000000000000000000001a44076050125825900e736c501f859c50fe728c00000000000000000000000000000000000000000000000000000000000186a0",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
+        ]
+      }
+    }
+  },
+  "LiFiDEXAggregator": {
+    "bsc": {
+      "staging": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xD6f02718B9df9FAd2665c7304BC5b26D5bbD8642",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-01 16:22:40",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000029dacdf7ccadf4ee67c923b4c22255a4b2494ed7",
+            "SALT": "",
+            "VERIFIED": "true"
+          }
+        ]
+      }
+    },
+    "taiko": {
+      "production": {
+        "1.0.0": [
+          {
+            "ADDRESS": "0xcaA342e4f781d63EF41E220D7622B97E66BAEcF3",
+            "OPTIMIZER_RUNS": "1000000",
+            "TIMESTAMP": "2024-08-09 13:31:17",
+            "CONSTRUCTOR_ARGS": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000029dacdf7ccadf4ee67c923b4c22255a4b2494ed7",
+            "SALT": "",
+            "VERIFIED": "false"
+          }
+        ]
+      }
     }
   }
 }
diff --git a/deployments/arbitrum.json b/deployments/arbitrum.json
index 6dadad0c0..e4f00ccfa 100644
--- a/deployments/arbitrum.json
+++ b/deployments/arbitrum.json
@@ -45,6 +45,6 @@
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
-}
+}
\ No newline at end of file
diff --git a/deployments/aurora.json b/deployments/aurora.json
index d3ef265a7..053d62caf 100644
--- a/deployments/aurora.json
+++ b/deployments/aurora.json
@@ -28,6 +28,6 @@
   "LiFuelFeeCollector": "0x8E92e662573CBC66B0AB6A93B5FE291925508085",
   "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
 }
\ No newline at end of file
diff --git a/deployments/avalanche.json b/deployments/avalanche.json
index 5597016e4..a3eaf45a4 100644
--- a/deployments/avalanche.json
+++ b/deployments/avalanche.json
@@ -42,6 +42,6 @@
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
 }
\ No newline at end of file
diff --git a/deployments/base.json b/deployments/base.json
index 718382545..c7bc7ba43 100644
--- a/deployments/base.json
+++ b/deployments/base.json
@@ -35,6 +35,6 @@
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
-}
+}
\ No newline at end of file
diff --git a/deployments/blast.json b/deployments/blast.json
index cbf39ad7b..4c184875f 100644
--- a/deployments/blast.json
+++ b/deployments/blast.json
@@ -21,5 +21,7 @@
   "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C",
   "ServiceFeeCollector": "0xf3552b98BB4234B47674700A99a0308D74B40F51",
   "TokenWrapper": "0xF2ee649caB7a0edEdED7a27821B0aCDF77778aeD",
-  "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F"
+  "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
+  "AcrossFacet": "0x9535A1AFd986FA9a2D324657116F02C364edebFf",
+  "AcrossFacetPacked": "0xFd796bf7Ff74d414b99CacF6F216eAC24bF3aC8E"
 }
\ No newline at end of file
diff --git a/deployments/bsc.diamond.staging.json b/deployments/bsc.diamond.staging.json
index 2347fefbc..7cb553c0f 100644
--- a/deployments/bsc.diamond.staging.json
+++ b/deployments/bsc.diamond.staging.json
@@ -79,16 +79,17 @@
       }
     },
     "Periphery": {
-      "ERC20Proxy": "0xf90a432dD1D0541470BC9C440d9dEc3659755238",
-      "Executor": "0x4f3B1b1075cC19daA15b7cc681b28e2fB82145eD",
-      "FeeCollector": "0x7f98D45c7902f079fDb65811B633522e2d227BB6",
+      "ERC20Proxy": "",
+      "Executor": "",
+      "FeeCollector": "",
       "GasRebateDistributor": "",
-      "LiFuelFeeCollector": "0xc4f7A34b8d283f66925eF0f5CCdFC2AF3030DeaE",
-      "Receiver": "0x76EE0F8fb09047284B6ea89881595Fc6F5B09E12",
+      "LiFuelFeeCollector": "",
+      "Receiver": "",
       "ReceiverStargateV2": "",
       "RelayerCelerIM": "",
-      "ServiceFeeCollector": "0xdF4257A2f61E5D432Dedbc9c65917C268323421d",
-      "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
+      "ServiceFeeCollector": "",
+      "TokenWrapper": "",
+      "LiFiDEXAggregator": ""
     }
   }
 }
\ No newline at end of file
diff --git a/deployments/bsc.json b/deployments/bsc.json
index 73205f2b7..17d09cbc0 100644
--- a/deployments/bsc.json
+++ b/deployments/bsc.json
@@ -44,5 +44,5 @@
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4"
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61"
 }
\ No newline at end of file
diff --git a/deployments/bsc.staging.json b/deployments/bsc.staging.json
index 17ddfcce7..0392a4291 100644
--- a/deployments/bsc.staging.json
+++ b/deployments/bsc.staging.json
@@ -28,5 +28,6 @@
   "MayanBridgeFacet": "0x5Ba4FeD1DAd2fD057A9f687B399B8e4cF2368214",
   "MayanFacet": "0xd596C903d78870786c5DB0E448ce7F87A65A0daD",
   "GenericSwapFacetV3": "0xE871874D8AC30E8aCD0eC67529b4a5dDD73Bf0d6",
-  "StargateFacetV2": "0x089153117bffd37CBbE0c604dAE8e493D4743fA8"
-}
\ No newline at end of file
+  "StargateFacetV2": "0x089153117bffd37CBbE0c604dAE8e493D4743fA8",
+  "LiFiDEXAggregator": "0xD6f02718B9df9FAd2665c7304BC5b26D5bbD8642"
+}
diff --git a/deployments/gravity.diamond.json b/deployments/gravity.diamond.json
index 8f5ae4cee..b11a12f21 100644
--- a/deployments/gravity.diamond.json
+++ b/deployments/gravity.diamond.json
@@ -45,9 +45,13 @@
         "Name": "CalldataVerificationFacet",
         "Version": "1.1.1"
       },
-      "0xad09520Af186Ae931b668c2B9620A087fBfE127c": {
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
+      },
+      "0x83037e2fF2B3Ea09fED5A6e8150bf9899673f33A": {
+        "Name": "GenericSwapFacetV3",
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
@@ -55,6 +59,7 @@
       "Executor": "0xCdE9376F284d5CA9aaec69dD4D0761278b4ae034",
       "FeeCollector": "0x79540403cdE176Ca5f1fb95bE84A7ec91fFDEF76",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0x134f525AC05E4724e55C363A9C4FA35ceB13F88d",
       "Receiver": "0x2DeB3bFa2b19024A0c1Ba299b6b79276f1F77b14",
       "ReceiverStargateV2": "0x6A3d6652fb7be72200a47313C092342218aAeb72",
diff --git a/deployments/gravity.json b/deployments/gravity.json
index fadc17393..ea83d9c91 100644
--- a/deployments/gravity.json
+++ b/deployments/gravity.json
@@ -17,7 +17,7 @@
   "FeeCollector": "0x79540403cdE176Ca5f1fb95bE84A7ec91fFDEF76",
   "LiFuelFeeCollector": "0x134f525AC05E4724e55C363A9C4FA35ceB13F88d",
   "TokenWrapper": "0x7fA60f4A59Dd8285C5Fcd8fd2A92A2Ca45ef8a0C",
-  "StargateFacetV2": "0xad09520Af186Ae931b668c2B9620A087fBfE127c",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x6A3d6652fb7be72200a47313C092342218aAeb72",
   "Receiver": "0x2DeB3bFa2b19024A0c1Ba299b6b79276f1F77b14"
 }
\ No newline at end of file
diff --git a/deployments/immutablezkevm.diamond.json b/deployments/immutablezkevm.diamond.json
new file mode 100644
index 000000000..fc1276281
--- /dev/null
+++ b/deployments/immutablezkevm.diamond.json
@@ -0,0 +1,71 @@
+{
+  "LiFiDiamond": {
+    "Facets": {
+      "0xC9E3d116262E93c14f87032fBE0C43791e0fAfCB": {
+        "Name": "DiamondCutFacet",
+        "Version": "1.0.0"
+      },
+      "0xa521DD4f0e6df9d56d740D0fa4f7fA2F0BC88bA7": {
+        "Name": "DiamondLoupeFacet",
+        "Version": "1.0.0"
+      },
+      "0xf09eF957165a5265613c5a57bDe781d363d519f0": {
+        "Name": "OwnershipFacet",
+        "Version": "1.0.0"
+      },
+      "0xddb090dD35ad8642DC5c79137147A6B34485B126": {
+        "Name": "WithdrawFacet",
+        "Version": "1.0.0"
+      },
+      "0x38aDe624ebAF11ee35190046fbdF2d42e03e869a": {
+        "Name": "DexManagerFacet",
+        "Version": "1.0.1"
+      },
+      "0xdD6CEa60F2Bb19fA5a03F0856054E2803221c3E4": {
+        "Name": "AccessManagerFacet",
+        "Version": "1.0.0"
+      },
+      "0xdd400e751B3A9D2bF02CF1EEc245c1BDFb8e0E56": {
+        "Name": "PeripheryRegistryFacet",
+        "Version": "1.0.0"
+      },
+      "0x75F9eaC5c368Ed9277b8952C83A063e435051332": {
+        "Name": "LIFuelFacet",
+        "Version": "1.0.1"
+      },
+      "0xa27992F9ef326527F85898E645AFF1d99E9609E3": {
+        "Name": "GenericSwapFacet",
+        "Version": "1.0.0"
+      },
+      "0x51504500fBFB459684E020154Dc9B2DE912d0B92": {
+        "Name": "GenericSwapFacetV3",
+        "Version": "1.0.1"
+      },
+      "0x4CA4226Ea534F2Ece75A4FcDAD0bBe5AbaEA9820": {
+        "Name": "StandardizedCallFacet",
+        "Version": "1.1.0"
+      },
+      "0x93b22CF8C50f87C394837DdE0fD84E8add3100e9": {
+        "Name": "CalldataVerificationFacet",
+        "Version": "1.1.1"
+      },
+      "0xB6faa3155683d6856ae196c4f3847D68D478E5eA": {
+        "Name": "SquidFacet",
+        "Version": "1.0.0"
+      }
+    },
+    "Periphery": {
+      "ERC20Proxy": "0xB59Cb9E4087c841577ACE23B0168CCDdf9450290",
+      "Executor": "0xdC55d8b59441f75e32FDD2356139DC8402e52048",
+      "FeeCollector": "0x1a4E99aB56BBac95810C0A957F173054f6FA8fDc",
+      "GasRebateDistributor": "",
+      "LiFuelFeeCollector": "0x677Fa29FFe6c8f03D6bbE789090Dceb498b7aaA4",
+      "Receiver": "0xCfDfbAa460EFAd6F58D4459d82863CfA137e4993",
+      "ReceiverStargateV2": "",
+      "RelayerCelerIM": "",
+      "ServiceFeeCollector": "",
+      "TokenWrapper": "0x5C6Dd0170348666A3e07fD033C12D9D15c83e360",
+      "LiFiDEXAggregator": "0xAcD913Ad6936Bb662395ac9a66D75bFc77c165fF"
+    }
+  }
+}
\ No newline at end of file
diff --git a/deployments/immutablezkevm.json b/deployments/immutablezkevm.json
new file mode 100644
index 000000000..7a3ce9e52
--- /dev/null
+++ b/deployments/immutablezkevm.json
@@ -0,0 +1,23 @@
+{
+  "DiamondCutFacet": "0xC9E3d116262E93c14f87032fBE0C43791e0fAfCB",
+  "DiamondLoupeFacet": "0xa521DD4f0e6df9d56d740D0fa4f7fA2F0BC88bA7",
+  "OwnershipFacet": "0xf09eF957165a5265613c5a57bDe781d363d519f0",
+  "DexManagerFacet": "0x38aDe624ebAF11ee35190046fbdF2d42e03e869a",
+  "AccessManagerFacet": "0xdD6CEa60F2Bb19fA5a03F0856054E2803221c3E4",
+  "WithdrawFacet": "0xddb090dD35ad8642DC5c79137147A6B34485B126",
+  "PeripheryRegistryFacet": "0xdd400e751B3A9D2bF02CF1EEc245c1BDFb8e0E56",
+  "LIFuelFacet": "0x75F9eaC5c368Ed9277b8952C83A063e435051332",
+  "GenericSwapFacet": "0xa27992F9ef326527F85898E645AFF1d99E9609E3",
+  "GenericSwapFacetV3": "0x51504500fBFB459684E020154Dc9B2DE912d0B92",
+  "StandardizedCallFacet": "0x4CA4226Ea534F2Ece75A4FcDAD0bBe5AbaEA9820",
+  "CalldataVerificationFacet": "0x93b22CF8C50f87C394837DdE0fD84E8add3100e9",
+  "LiFiDiamond": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE",
+  "SquidFacet": "0xB6faa3155683d6856ae196c4f3847D68D478E5eA",
+  "ERC20Proxy": "0xB59Cb9E4087c841577ACE23B0168CCDdf9450290",
+  "Executor": "0xdC55d8b59441f75e32FDD2356139DC8402e52048",
+  "FeeCollector": "0x1a4E99aB56BBac95810C0A957F173054f6FA8fDc",
+  "LiFuelFeeCollector": "0x677Fa29FFe6c8f03D6bbE789090Dceb498b7aaA4",
+  "TokenWrapper": "0x5C6Dd0170348666A3e07fD033C12D9D15c83e360",
+  "Receiver": "0xCfDfbAa460EFAd6F58D4459d82863CfA137e4993",
+  "LiFiDEXAggregator": "0xAcD913Ad6936Bb662395ac9a66D75bFc77c165fF"
+}
\ No newline at end of file
diff --git a/deployments/linea.diamond.json b/deployments/linea.diamond.json
index 15d079b8d..17e316527 100644
--- a/deployments/linea.diamond.json
+++ b/deployments/linea.diamond.json
@@ -29,7 +29,7 @@
         "Name": "PeripheryRegistryFacet",
         "Version": "1.0.0"
       },
-      "0x9b686e79F7CBDe1C440dEe1766F05c99B60b8076": {
+      "0x1e2a304AE9fE9757DD0b1faab2Cf8cC3AB573EB9": {
         "Name": "LIFuelFacet",
         "Version": "1.0.1"
       },
@@ -45,11 +45,11 @@
         "Name": "CBridgeFacetPacked",
         "Version": "1.0.3"
       },
-      "0xC543CEdA9362748Be1EEC5c82B4d91845F725a7b": {
+      "0x091F6c1722a25AC789F725eA61c9220C9032f524": {
         "Name": "StandardizedCallFacet",
-        "Version": "1.0.0"
+        "Version": "1.1.0"
       },
-      "0xEDB61cDace9733f9F2dD18eb414dEa613cc0226d": {
+      "0x5654381ec2107D418B71B8c3B4FA08746CDB39ec": {
         "Name": "StargateFacet",
         "Version": "2.2.0"
       },
@@ -101,9 +101,9 @@
         "Name": "GenericSwapFacetV3",
         "Version": "1.0.0"
       },
-      "0x8C4A1847ABF1FbC1D41c8754E3A7b88028C67784": {
+      "0x113E97921874646413572F2C43562463c378b6f5": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
@@ -111,8 +111,10 @@
       "Executor": "0x2a202Ed587F0BC7dfa80ea1DD943d8470492Dd0F",
       "FeeCollector": "0xA4A24BdD4608D7dFC496950850f9763B674F0DB2",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0x68B21d21509446Bf5449B6F5F8aBD4b3cfcbc3f8",
       "Receiver": "0xdcBEcDE898c067cA58ABD01a7de51660bBD5A897",
+      "ReceiverStargateV2": "0x6CA57d9846f9a1fd48368762b743a047eC4f81A6",
       "RelayerCelerIM": "",
       "ServiceFeeCollector": "0xA8Fe73F7b3a825fF51f2200af12c16B3BA95394d",
       "TokenWrapper": "0xf6C9605c6E231C1547b7a6545d93e7233f97322a"
diff --git a/deployments/linea.json b/deployments/linea.json
index dcc0b95f0..934a4826d 100644
--- a/deployments/linea.json
+++ b/deployments/linea.json
@@ -32,6 +32,6 @@
   "AcrossFacetPacked": "0x29f9a4741EC691AE54068De461Ca291794aa1D05",
   "SquidFacet": "0xEa8EF3E532db49915FDbDdB29244a83E76768111",
   "GenericSwapFacetV3": "0xf4E73E2A9cDF1F94579cda3da07aD04031359CB5",
-  "StargateFacetV2": "0x8C4A1847ABF1FbC1D41c8754E3A7b88028C67784",
+  "StargateFacetV2": "0x113E97921874646413572F2C43562463c378b6f5",
   "ReceiverStargateV2": "0x6CA57d9846f9a1fd48368762b743a047eC4f81A6"
 }
\ No newline at end of file
diff --git a/deployments/mainnet.diamond.immutable.json b/deployments/mainnet.diamond.immutable.json
index dbc970fad..046278afc 100644
--- a/deployments/mainnet.diamond.immutable.json
+++ b/deployments/mainnet.diamond.immutable.json
@@ -2,96 +2,96 @@
   "LiFiDiamondImmutable": {
     "Facets": {
       "0xF1d67E1dddc87E2858C87EBd5b19f99a4E297541": {
-        "Name": "DiamondCutFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x49d195D3138D4E0E2b4ea88484C54AEE45B04B9F": {
-        "Name": "DiamondLoupeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x44beA2Ab010d1CedC4E60E97DA8F88b8840951B0": {
-        "Name": "OwnershipFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x428C4abf8BB3ECc893bD3E0Be12b0f363c6e81aA": {
-        "Name": "WithdrawFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x64D41a7B52CA910f4995b1df33ea68471138374b": {
-        "Name": "DexManagerFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xfaA5f885a54D22C8571806fC001E53F0191f5Aff": {
-        "Name": "AccessManagerFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2EfC66F1ff37fc5277De5526Ab5CB7650f2DD518": {
-        "Name": "PeripheryRegistryFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xa4eB2EF4064197De6517A53d36263e4591cD0B34": {
-        "Name": "CBridgeFacetPacked",
-        "Version": "1.0.3"
+        "Name": "",
+        "Version": ""
       },
       "0xbd8D369470169f9976c5bCc60318955836843a71": {
         "Name": "AmarokFacet",
         "Version": "1.0.1"
       },
       "0xA1Edc2eD671Dfa77eD2dCD2ee012F82e4807A75a": {
-        "Name": "CBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2A7568Fd6dffA6F7578cdF010398BffAa53cc7c0": {
-        "Name": "AcrossFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x987f67811Ef841da0466746E10B4139Daff95053": {
-        "Name": "ArbitrumBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x55c51beF79d16F5f0875E11207B17E885c21c13d": {
         "Name": "AxelarFacet",
         "Version": "1.0.0"
       },
       "0xf72169Fb511739CeFea9eBEffc5d39Dba1b33cD3": {
-        "Name": "CelerCircleBridgeFacet",
-        "Version": "1.0.1"
+        "Name": "",
+        "Version": ""
       },
       "0x0d26d248D4e80377f1d794AB88090e76B0903EDE": {
         "Name": "CelerIMFacetImmutable",
         "Version": "2.0.0"
       },
       "0x2fF4484bcaEf13e4a1Db84E6af882c9d66c97e3F": {
-        "Name": "GenericSwapFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x5fda594b67d38E05fb4C9A1a4Cf3B22f48c8de4E": {
-        "Name": "GnosisBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xc673c3df4fff2C499009E5fCa94bc446f5B07772": {
-        "Name": "HopFacetOptimized",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x4Dc509f0BB4db1faeba81f5F13583Ff3d95F938D": {
-        "Name": "HopFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x6e118Db5ab7018FcF195e1310074688B8A1912B3": {
-        "Name": "LIFuelFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x4cf6c406F004b7B588ec8638fBd2cC2215D87C90": {
-        "Name": "MultichainFacet",
+        "Name": "",
         "Version": ""
       },
       "0xE8Ff7BFEF5DacB57E87bC2d0B6CCFefBE5f546BC": {
-        "Name": "OptimismBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x0D062790F26947074B27da07346E4FF9FDf946EE": {
-        "Name": "PolygonBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x7E4A13BFe1200Fdc5E0FFa7eC65eFaBd8B17bc26": {
         "Name": "StargateFacet",
@@ -102,33 +102,38 @@
         "Version": "1.0.0"
       },
       "0xed662c027c985B73A732975E3B4CeadC97AAF145": {
-        "Name": "HopFacetPacked",
-        "Version": "1.0.6"
+        "Name": "",
+        "Version": ""
       },
       "0x416E2d3E39dF69bBc30244eC90477fD042812E6B": {
-        "Name": "HyphenFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xC1E20466AD79BAe875568eb08ABaaEA1F0E25b7E": {
-        "Name": "OmniBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x8446a365f3F2eF6a050E5f9a568cf5A5Ca110886": {
-        "Name": "AmarokFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xe7072402217EfF9b73cf457731cEE2A3824360dc": {
-        "Name": "AllBridgeFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x0654EbA982ec082036A3D0f59964D302f1ba5cdA",
-      "Executor": "0x2120c7A5CCf73d6Fb5C7e9B2A0d4B3A4f587E7a4",
+      "Executor": "0xBe27F03C8e6a61E2a4B1EE7940dbcb9204744d1c",
       "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "",
       "Receiver": "0xC850013FC01A264018D58D112000E32835D15fBC",
+      "ReceiverStargateV2": "",
       "RelayerCelerIM": "0x7b6d852f58C783BA3b1138C535ff57dDa4c826E0",
-      "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D"
+      "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D",
+      "TokenWrapper": ""
     }
   }
 }
\ No newline at end of file
diff --git a/deployments/mainnet.diamond.json b/deployments/mainnet.diamond.json
index 6ae616b3a..af698d53e 100644
--- a/deployments/mainnet.diamond.json
+++ b/deployments/mainnet.diamond.json
@@ -1,12 +1,20 @@
 {
   "LiFiDiamond": {
     "Facets": {
+      "0xf7993A8df974AD022647E63402d6315137c58ABf": {
+        "Name": "",
+        "Version": ""
+      },
+      "0xF5ba8Db6fEA7aF820De35C8D0c294e17DBC1b9D2": {
+        "Name": "",
+        "Version": ""
+      },
       "0x6faA6906b9e4A59020e673910105567e809789E0": {
         "Name": "OwnershipFacet",
         "Version": "1.0.0"
       },
-      "0x711e80A9c1eB906d9Ae9d37E5432E6E7aCeEdA0B": {
-        "Name": "WithdrawFacet",
+      "0xE397c4883ec89ed4Fc9D258F00C689708b2799c9": {
+        "Name": "AcrossFacetPacked",
         "Version": "1.0.0"
       },
       "0x22B31a1a81d5e594315c866616db793E799556c5": {
@@ -17,6 +25,10 @@
         "Name": "AccessManagerFacet",
         "Version": "1.0.0"
       },
+      "0x0b5726b7348efBdA8620D5C374F85Cbe8f040B6a": {
+        "Name": "",
+        "Version": ""
+      },
       "0x3F95b05a77FDC6D82162D86A72b156b55030627f": {
         "Name": "AmarokFacet",
         "Version": "3.0.0"
@@ -49,11 +61,15 @@
         "Name": "OmniBridgeFacet",
         "Version": "1.0.0"
       },
+      "0x87C10910DA7258E55dA2C5d43739fB68B12E6a4b": {
+        "Name": "",
+        "Version": ""
+      },
       "0xF609fdBA8f7A020975a7c82C82f6A1f526F9A8fC": {
         "Name": "PolygonBridgeFacet",
         "Version": "1.0.0"
       },
-      "0x31e3b5611FBb1a90d35039fCC9656649e7Fd482b": {
+      "0x7D1940fDfF0B37c137B105ce7967B3B86DB42648": {
         "Name": "StargateFacet",
         "Version": "2.2.0"
       },
@@ -61,7 +77,7 @@
         "Name": "PeripheryRegistryFacet",
         "Version": "1.0.0"
       },
-      "0x41bDcf7A9695ba3994cCA53d529DE23f54881D7F": {
+      "0x2b7D2C78bd801Cc06DDCF91DeE2e8fAE22814f7e": {
         "Name": "GenericSwapFacet",
         "Version": "2.0.0"
       },
@@ -73,9 +89,9 @@
         "Name": "HopFacetOptimized",
         "Version": "2.0.0"
       },
-      "0x51709aF40dE8feEbD9d694F26826F29ce915DcbF": {
+      "0x66861f292099cAF644F4A8b6091De49BEC5E8a15": {
         "Name": "LIFuelFacet",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       },
       "0xE7Bf43C55551B1036e796E7Fd3b125d1F9903e2E": {
         "Name": "CBridgeFacetPacked",
@@ -95,22 +111,30 @@
       },
       "0xF70A1Ed85EcC454a562A4B69ee40CBc6a4eB0b64": {
         "Name": "CelerIMFacetMutable",
-        "Version": ""
+        "Version": "2.0.0"
       },
-      "0x2E61751366B7e006f8D53becB4b697890B30144F": {
+      "0x175E7799DA0CD40E641352EaB90D8e39e02a4Ca9": {
         "Name": "StandardizedCallFacet",
-        "Version": "1.0.0"
+        "Version": "1.1.0"
       },
       "0x7A5c119ec5dDbF9631cf40f6e5DB28f31d4332a0": {
         "Name": "CalldataVerificationFacet",
         "Version": "1.1.1"
       },
+      "0xF965f52046D7095d5080bD31459601F4Eb24f72D": {
+        "Name": "",
+        "Version": ""
+      },
       "0x376f99f7EADE8A17f036fCff9eBA978E66e5fd28": {
         "Name": "ThorSwapFacet",
         "Version": "1.2.0"
       },
-      "0xE397c4883ec89ed4Fc9D258F00C689708b2799c9": {
-        "Name": "AcrossFacetPacked",
+      "0x711e80A9c1eB906d9Ae9d37E5432E6E7aCeEdA0B": {
+        "Name": "WithdrawFacet",
+        "Version": "1.0.0"
+      },
+      "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F": {
+        "Name": "GenericSwapFacetV3",
         "Version": "1.0.0"
       },
       "0xF18A285f4e6f720Eb9b4e05df71f88b9552E6ADB": {
@@ -129,24 +153,23 @@
         "Name": "MayanFacet",
         "Version": "1.0.0"
       },
-      "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F": {
-        "Name": "GenericSwapFacetV3",
-        "Version": "1.0.0"
-      },
-      "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4": {
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x5741A7FfE7c39Ca175546a54985fA79211290b51",
       "Executor": "0x2dfaDAB8266483beD9Fd9A292Ce56596a2D1378D",
       "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C",
       "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657",
+      "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
       "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97",
       "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D",
-      "LiFuelFeeCollector": "0xc4f7A34b8d283f66925eF0f5CCdFC2AF3030DeaE",
       "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
     }
   }
-}
\ No newline at end of file
+}
diff --git a/deployments/mainnet.diamond.staging.json b/deployments/mainnet.diamond.staging.json
index 0bf3c729c..a9e65624b 100644
--- a/deployments/mainnet.diamond.staging.json
+++ b/deployments/mainnet.diamond.staging.json
@@ -63,7 +63,7 @@
       },
       "0xe7072402217EfF9b73cf457731cEE2A3824360dc": {
         "Name": "AllBridgeFacet",
-        "Version": "2.0.0"
+        "Version": ""
       },
       "0x987f67811Ef841da0466746E10B4139Daff95053": {
         "Name": "ArbitrumBridgeFacet",
@@ -92,15 +92,24 @@
       "0xE8Ff7BFEF5DacB57E87bC2d0B6CCFefBE5f546BC": {
         "Name": "OptimismBridgeFacet",
         "Version": "1.0.0"
+      },
+      "0x9BE903AB2ad61dfC71f7E2171A3dBf0884a4cdBF": {
+        "Name": "",
+        "Version": ""
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x0654EbA982ec082036A3D0f59964D302f1ba5cdA",
       "Executor": "0xBe27F03C8e6a61E2a4B1EE7940dbcb9204744d1c",
       "FeeCollector": "0x9ca271A532392230EAe919Fb5460aEa9D9718424",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "0xc4f7A34b8d283f66925eF0f5CCdFC2AF3030DeaE",
       "Receiver": "0xC850013FC01A264018D58D112000E32835D15fBC",
+      "ReceiverStargateV2": "",
       "RelayerCelerIM": "",
-      "ServiceFeeCollector": "0xf068cc770f32042Ff4a8fD196045641234dFaa47"
+      "ServiceFeeCollector": "0xf068cc770f32042Ff4a8fD196045641234dFaa47",
+      "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
     }
   }
 }
\ No newline at end of file
diff --git a/deployments/mainnet.json b/deployments/mainnet.json
index 24e514b10..15d33e56e 100644
--- a/deployments/mainnet.json
+++ b/deployments/mainnet.json
@@ -53,6 +53,6 @@
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
 }
\ No newline at end of file
diff --git a/deployments/mantle.diamond.json b/deployments/mantle.diamond.json
index e1df82db2..a149ebd54 100644
--- a/deployments/mantle.diamond.json
+++ b/deployments/mantle.diamond.json
@@ -61,9 +61,9 @@
         "Name": "SquidFacet",
         "Version": "1.0.0"
       },
-      "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4": {
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
@@ -71,9 +71,10 @@
       "Executor": "0x7078d1DE45C7D3e87f71D5DA663db2a8Ee1dfEbe",
       "FeeCollector": "0xF048e5816B0C7951AC179f656C5B86e5a79Bd7b5",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C",
       "Receiver": "0x2fA14922ABc117c4737260032C8fD6D9Ab35395A",
-      "ReceiverStargateV2": "",
+      "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
       "RelayerCelerIM": "",
       "ServiceFeeCollector": "0xf3552b98BB4234B47674700A99a0308D74B40F51",
       "TokenWrapper": "0x0263180888007D45340F86eC0b610d250BbDcB23"
diff --git a/deployments/mantle.json b/deployments/mantle.json
index 63b9b54be..f652fb7fe 100644
--- a/deployments/mantle.json
+++ b/deployments/mantle.json
@@ -22,6 +22,6 @@
   "StargateFacet": "0xA4A8818D8d4e2EE27e960535D0a15299C5504605",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
   "SquidFacet": "0xc23ae3A8d74C0a428FA59E4AD3EB6aa4b2330530",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
 }
\ No newline at end of file
diff --git a/deployments/metis.diamond.json b/deployments/metis.diamond.json
index fab2004fd..584b356d7 100644
--- a/deployments/metis.diamond.json
+++ b/deployments/metis.diamond.json
@@ -62,12 +62,12 @@
         "Version": "1.0.1"
       },
       "0x7865919678265435472756b59D5141D0F76312E1": {
-        "Name": "",
-        "Version": ""
+        "Name": "CalldataVerificationFacet",
+        "Version": "1.1.1"
       },
-      "0x8a0e4Ffcc4B847A452011213cFb5cA9636fF228A": {
+      "0xCb667deA2894ab64e8e75EACB0d5d027AC672e25": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
@@ -75,9 +75,10 @@
       "Executor": "0x6696F031C099dE6089427ceBFb38258feA6fdaFE",
       "FeeCollector": "0x27f0e36dE6B1BA8232f6c2e87E00A50731048C6B",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0x851450e3b624ea4b068c3E8cFBcf79cD03D31C54",
       "Receiver": "0x0a4D7f27e8d24625eCb8d29d6445934a440A05E0",
-      "ReceiverStargateV2": "",
+      "ReceiverStargateV2": "0xe7392Fc0f61503dB53C70789c6F2c34C0675C929",
       "RelayerCelerIM": "",
       "ServiceFeeCollector": "0x0000000000000000000000000000000000001234",
       "TokenWrapper": "0x01bDf46A673FC3c081ddBD21cb51fBA4972d00aC"
diff --git a/deployments/metis.json b/deployments/metis.json
index e3d085c68..d0bf3b5eb 100644
--- a/deployments/metis.json
+++ b/deployments/metis.json
@@ -22,6 +22,6 @@
   "TokenWrapper": "0x01bDf46A673FC3c081ddBD21cb51fBA4972d00aC",
   "SymbiosisFacet": "0xA66abf226CC230eDBDeFf85C1874Ac7A9A637072",
   "GenericSwapFacetV3": "0xECb6035CD0393ebE016821EAE28bA9c57efBd5c6",
-  "StargateFacetV2": "0x8a0e4Ffcc4B847A452011213cFb5cA9636fF228A",
+  "StargateFacetV2": "0xCb667deA2894ab64e8e75EACB0d5d027AC672e25",
   "ReceiverStargateV2": "0xe7392Fc0f61503dB53C70789c6F2c34C0675C929"
 }
\ No newline at end of file
diff --git a/deployments/optimism.diamond.immutable.json b/deployments/optimism.diamond.immutable.json
index eff59e53e..48952311c 100644
--- a/deployments/optimism.diamond.immutable.json
+++ b/deployments/optimism.diamond.immutable.json
@@ -2,32 +2,32 @@
   "LiFiDiamondImmutable": {
     "Facets": {
       "0xF1d67E1dddc87E2858C87EBd5b19f99a4E297541": {
-        "Name": "DiamondCutFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x49d195D3138D4E0E2b4ea88484C54AEE45B04B9F": {
-        "Name": "DiamondLoupeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x44beA2Ab010d1CedC4E60E97DA8F88b8840951B0": {
-        "Name": "OwnershipFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x428C4abf8BB3ECc893bD3E0Be12b0f363c6e81aA": {
-        "Name": "WithdrawFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x64D41a7B52CA910f4995b1df33ea68471138374b": {
-        "Name": "DexManagerFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xfaA5f885a54D22C8571806fC001E53F0191f5Aff": {
-        "Name": "AccessManagerFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2EfC66F1ff37fc5277De5526Ab5CB7650f2DD518": {
-        "Name": "PeripheryRegistryFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xCd063F35ed6f6d9B036284475B7779FdCf1Dd76C": {
         "Name": "AcrossFacet",
@@ -38,32 +38,32 @@
         "Version": "1.0.1"
       },
       "0xA1Edc2eD671Dfa77eD2dCD2ee012F82e4807A75a": {
-        "Name": "CBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2fF4484bcaEf13e4a1Db84E6af882c9d66c97e3F": {
-        "Name": "GenericSwapFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xc673c3df4fff2C499009E5fCa94bc446f5B07772": {
-        "Name": "HopFacetOptimized",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x4Dc509f0BB4db1faeba81f5F13583Ff3d95F938D": {
-        "Name": "HopFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x416E2d3E39dF69bBc30244eC90477fD042812E6B": {
-        "Name": "HyphenFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x6e118Db5ab7018FcF195e1310074688B8A1912B3": {
-        "Name": "LIFuelFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x4cf6c406F004b7B588ec8638fBd2cC2215D87C90": {
-        "Name": "MultichainFacet",
-        "Version": "1.0.1"
+        "Name": "",
+        "Version": ""
       },
       "0x238502aDc8ca550723CBE78543c8B757599A21cC": {
         "Name": "NXTPFacet",
@@ -74,33 +74,38 @@
         "Version": "1.0.0"
       },
       "0xed662c027c985B73A732975E3B4CeadC97AAF145": {
-        "Name": "HopFacetPacked",
-        "Version": "1.0.6"
+        "Name": "",
+        "Version": ""
       },
       "0x2A7568Fd6dffA6F7578cdF010398BffAa53cc7c0": {
-        "Name": "AcrossFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xa4eB2EF4064197De6517A53d36263e4591cD0B34": {
-        "Name": "CBridgeFacetPacked",
-        "Version": "1.0.3"
+        "Name": "",
+        "Version": ""
       },
       "0x0d26d248D4e80377f1d794AB88090e76B0903EDE": {
         "Name": "CelerIMFacetImmutable",
         "Version": "2.0.0"
       },
       "0x8446a365f3F2eF6a050E5f9a568cf5A5Ca110886": {
-        "Name": "AmarokFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x0654EbA982ec082036A3D0f59964D302f1ba5cdA",
       "Executor": "0xBe27F03C8e6a61E2a4B1EE7940dbcb9204744d1c",
       "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "",
       "Receiver": "0xC850013FC01A264018D58D112000E32835D15fBC",
+      "ReceiverStargateV2": "",
       "RelayerCelerIM": "0x7b6d852f58C783BA3b1138C535ff57dDa4c826E0",
-      "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D"
+      "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D",
+      "TokenWrapper": ""
     }
   }
 }
\ No newline at end of file
diff --git a/deployments/optimism.diamond.json b/deployments/optimism.diamond.json
index 5c70366a9..f1ae60a66 100644
--- a/deployments/optimism.diamond.json
+++ b/deployments/optimism.diamond.json
@@ -1,12 +1,20 @@
 {
   "LiFiDiamond": {
     "Facets": {
+      "0xf7993A8df974AD022647E63402d6315137c58ABf": {
+        "Name": "",
+        "Version": ""
+      },
+      "0xF5ba8Db6fEA7aF820De35C8D0c294e17DBC1b9D2": {
+        "Name": "",
+        "Version": ""
+      },
       "0x6faA6906b9e4A59020e673910105567e809789E0": {
         "Name": "OwnershipFacet",
         "Version": "1.0.0"
       },
-      "0x711e80A9c1eB906d9Ae9d37E5432E6E7aCeEdA0B": {
-        "Name": "WithdrawFacet",
+      "0xE397c4883ec89ed4Fc9D258F00C689708b2799c9": {
+        "Name": "AcrossFacetPacked",
         "Version": "1.0.0"
       },
       "0x22B31a1a81d5e594315c866616db793E799556c5": {
@@ -45,7 +53,7 @@
         "Name": "HopFacetOptimized",
         "Version": "2.0.0"
       },
-      "0x31e3b5611FBb1a90d35039fCC9656649e7Fd482b": {
+      "0x7D1940fDfF0B37c137B105ce7967B3B86DB42648": {
         "Name": "StargateFacet",
         "Version": "2.2.0"
       },
@@ -53,9 +61,9 @@
         "Name": "HopFacet",
         "Version": "2.0.0"
       },
-      "0x51709aF40dE8feEbD9d694F26826F29ce915DcbF": {
+      "0x66861f292099cAF644F4A8b6091De49BEC5E8a15": {
         "Name": "LIFuelFacet",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       },
       "0xBeE13d99dD633fEAa2a0935f00CbC859F8305FA7": {
         "Name": "AcrossFacet",
@@ -71,19 +79,23 @@
       },
       "0xF70A1Ed85EcC454a562A4B69ee40CBc6a4eB0b64": {
         "Name": "CelerIMFacetMutable",
-        "Version": ""
+        "Version": "2.0.0"
       },
-      "0xA57862295BdF8A680fda893B9bd3b935236d18bA": {
-        "Name": "HopFacetPacked",
-        "Version": "1.0.1"
+      "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F": {
+        "Name": "GenericSwapFacetV3",
+        "Version": "1.0.0"
+      },
+      "0x4682d79DD4D0e7555415841b5151933AF50594A8": {
+        "Name": "MayanFacet",
+        "Version": "1.0.0"
       },
       "0xE7Bf43C55551B1036e796E7Fd3b125d1F9903e2E": {
         "Name": "CBridgeFacetPacked",
         "Version": "1.0.3"
       },
-      "0x2E61751366B7e006f8D53becB4b697890B30144F": {
+      "0x175E7799DA0CD40E641352EaB90D8e39e02a4Ca9": {
         "Name": "StandardizedCallFacet",
-        "Version": "1.0.0"
+        "Version": "1.1.0"
       },
       "0x7A5c119ec5dDbF9631cf40f6e5DB28f31d4332a0": {
         "Name": "CalldataVerificationFacet",
@@ -93,12 +105,16 @@
         "Name": "CelerCircleBridgeFacet",
         "Version": "1.0.1"
       },
+      "0xF965f52046D7095d5080bD31459601F4Eb24f72D": {
+        "Name": "",
+        "Version": ""
+      },
       "0x71205D77043848B57243A3F7eA133E11A3dd346b": {
         "Name": "AllBridgeFacet",
         "Version": "2.0.0"
       },
-      "0xE397c4883ec89ed4Fc9D258F00C689708b2799c9": {
-        "Name": "AcrossFacetPacked",
+      "0x711e80A9c1eB906d9Ae9d37E5432E6E7aCeEdA0B": {
+        "Name": "WithdrawFacet",
         "Version": "1.0.0"
       },
       "0xF18A285f4e6f720Eb9b4e05df71f88b9552E6ADB": {
@@ -113,28 +129,23 @@
         "Name": "SquidFacet",
         "Version": "1.0.0"
       },
-      "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F": {
-        "Name": "GenericSwapFacetV3",
-        "Version": "1.0.0"
-      },
-      "0x4682d79DD4D0e7555415841b5151933AF50594A8": {
-        "Name": "MayanFacet",
-        "Version": "1.0.0"
-      },
-      "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4": {
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x5741A7FfE7c39Ca175546a54985fA79211290b51",
       "Executor": "0x2dfaDAB8266483beD9Fd9A292Ce56596a2D1378D",
       "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C",
       "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657",
+      "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
       "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97",
       "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D",
-      "LiFuelFeeCollector": "0xc4f7A34b8d283f66925eF0f5CCdFC2AF3030DeaE",
       "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
     }
   }
-}
+}
\ No newline at end of file
diff --git a/deployments/optimism.diamond.staging.json b/deployments/optimism.diamond.staging.json
index 1673e11b2..e5edf9575 100644
--- a/deployments/optimism.diamond.staging.json
+++ b/deployments/optimism.diamond.staging.json
@@ -108,6 +108,10 @@
       "0x21571D628B0bCBeb954D5933A604eCac35bAF2c7": {
         "Name": "SymbiosisFacet",
         "Version": "1.0.0"
+      },
+      "0xa137Fe4C41A2E04ca34578DC9023ad45cC194389": {
+        "Name": "",
+        "Version": ""
       }
     },
     "Periphery": {
@@ -115,6 +119,7 @@
       "Executor": "0x23f882bA2fa54A358d8599465EB471f58Cc26751",
       "FeeCollector": "0x7F8E9bEBd1Dea263A36a6916B99bd84405B9654a",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0x94EA56D8049e93E0308B9c7d1418Baf6A7C68280",
       "Receiver": "0x36E9B2E8A627474683eF3b1E9Df26D2bF04396f3",
       "ReceiverStargateV2": "",
diff --git a/deployments/optimism.json b/deployments/optimism.json
index 90c508e1e..a167685fe 100644
--- a/deployments/optimism.json
+++ b/deployments/optimism.json
@@ -44,6 +44,6 @@
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
-}
+}
\ No newline at end of file
diff --git a/deployments/polygon.diamond.immutable.json b/deployments/polygon.diamond.immutable.json
index 5688a44a4..1a3d563f9 100644
--- a/deployments/polygon.diamond.immutable.json
+++ b/deployments/polygon.diamond.immutable.json
@@ -2,36 +2,36 @@
   "LiFiDiamondImmutable": {
     "Facets": {
       "0xF1d67E1dddc87E2858C87EBd5b19f99a4E297541": {
-        "Name": "DiamondCutFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x49d195D3138D4E0E2b4ea88484C54AEE45B04B9F": {
-        "Name": "DiamondLoupeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x44beA2Ab010d1CedC4E60E97DA8F88b8840951B0": {
-        "Name": "OwnershipFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x428C4abf8BB3ECc893bD3E0Be12b0f363c6e81aA": {
-        "Name": "WithdrawFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x64D41a7B52CA910f4995b1df33ea68471138374b": {
-        "Name": "DexManagerFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xfaA5f885a54D22C8571806fC001E53F0191f5Aff": {
-        "Name": "AccessManagerFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2EfC66F1ff37fc5277De5526Ab5CB7650f2DD518": {
-        "Name": "PeripheryRegistryFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2A7568Fd6dffA6F7578cdF010398BffAa53cc7c0": {
-        "Name": "AcrossFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xbd8D369470169f9976c5bCc60318955836843a71": {
         "Name": "AmarokFacet",
@@ -42,28 +42,28 @@
         "Version": "1.0.0"
       },
       "0xA1Edc2eD671Dfa77eD2dCD2ee012F82e4807A75a": {
-        "Name": "CBridgeFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x2fF4484bcaEf13e4a1Db84E6af882c9d66c97e3F": {
-        "Name": "GenericSwapFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x4Dc509f0BB4db1faeba81f5F13583Ff3d95F938D": {
-        "Name": "HopFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x416E2d3E39dF69bBc30244eC90477fD042812E6B": {
-        "Name": "HyphenFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x6e118Db5ab7018FcF195e1310074688B8A1912B3": {
-        "Name": "LIFuelFacet",
-        "Version": "1.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0x4cf6c406F004b7B588ec8638fBd2cC2215D87C90": {
-        "Name": "MultichainFacet",
-        "Version": "1.0.1"
+        "Name": "",
+        "Version": ""
       },
       "0x238502aDc8ca550723CBE78543c8B757599A21cC": {
         "Name": "NXTPFacet",
@@ -78,37 +78,42 @@
         "Version": "1.0.0"
       },
       "0xed662c027c985B73A732975E3B4CeadC97AAF145": {
-        "Name": "HopFacetPacked",
-        "Version": "1.0.6"
+        "Name": "",
+        "Version": ""
       },
       "0xc673c3df4fff2C499009E5fCa94bc446f5B07772": {
-        "Name": "HopFacetOptimized",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xa4eB2EF4064197De6517A53d36263e4591cD0B34": {
-        "Name": "CBridgeFacetPacked",
-        "Version": "1.0.3"
+        "Name": "",
+        "Version": ""
       },
       "0x0d26d248D4e80377f1d794AB88090e76B0903EDE": {
         "Name": "CelerIMFacetImmutable",
         "Version": "2.0.0"
       },
       "0x8446a365f3F2eF6a050E5f9a568cf5A5Ca110886": {
-        "Name": "AmarokFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       },
       "0xe7072402217EfF9b73cf457731cEE2A3824360dc": {
-        "Name": "AllBridgeFacet",
-        "Version": "2.0.0"
+        "Name": "",
+        "Version": ""
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x0654EbA982ec082036A3D0f59964D302f1ba5cdA",
       "Executor": "0xBe27F03C8e6a61E2a4B1EE7940dbcb9204744d1c",
       "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "",
       "Receiver": "0xC850013FC01A264018D58D112000E32835D15fBC",
+      "ReceiverStargateV2": "",
       "RelayerCelerIM": "0x7b6d852f58C783BA3b1138C535ff57dDa4c826E0",
-      "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D"
+      "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D",
+      "TokenWrapper": ""
     }
   }
 }
\ No newline at end of file
diff --git a/deployments/polygon.diamond.json b/deployments/polygon.diamond.json
index e0bffed03..65772b508 100644
--- a/deployments/polygon.diamond.json
+++ b/deployments/polygon.diamond.json
@@ -1,12 +1,20 @@
 {
   "LiFiDiamond": {
     "Facets": {
+      "0xf7993A8df974AD022647E63402d6315137c58ABf": {
+        "Name": "",
+        "Version": ""
+      },
+      "0xF5ba8Db6fEA7aF820De35C8D0c294e17DBC1b9D2": {
+        "Name": "",
+        "Version": ""
+      },
       "0x6faA6906b9e4A59020e673910105567e809789E0": {
         "Name": "OwnershipFacet",
         "Version": "1.0.0"
       },
-      "0x711e80A9c1eB906d9Ae9d37E5432E6E7aCeEdA0B": {
-        "Name": "WithdrawFacet",
+      "0xE397c4883ec89ed4Fc9D258F00C689708b2799c9": {
+        "Name": "AcrossFacetPacked",
         "Version": "1.0.0"
       },
       "0x22B31a1a81d5e594315c866616db793E799556c5": {
@@ -33,6 +41,10 @@
         "Name": "GenericSwapFacet",
         "Version": "1.0.0"
       },
+      "0x3a60730cbcD91715E31830f125bB3eF1FA0a2c66": {
+        "Name": "",
+        "Version": ""
+      },
       "0xF2c63815eBD0c4E048eF216C77E2c80aa4ecD59c": {
         "Name": "HyphenFacet",
         "Version": "1.0.0"
@@ -63,34 +75,38 @@
       },
       "0xF70A1Ed85EcC454a562A4B69ee40CBc6a4eB0b64": {
         "Name": "CelerIMFacetMutable",
-        "Version": ""
+        "Version": "2.0.0"
       },
       "0x7D507e6E89C52aE610b8D0151c8cb24c24e43bdb": {
         "Name": "HopFacetOptimized",
         "Version": "2.0.0"
       },
-      "0x51709aF40dE8feEbD9d694F26826F29ce915DcbF": {
+      "0x66861f292099cAF644F4A8b6091De49BEC5E8a15": {
         "Name": "LIFuelFacet",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       },
       "0xBeE13d99dD633fEAa2a0935f00CbC859F8305FA7": {
         "Name": "AcrossFacet",
         "Version": "2.0.0"
       },
-      "0x2E61751366B7e006f8D53becB4b697890B30144F": {
+      "0x175E7799DA0CD40E641352EaB90D8e39e02a4Ca9": {
         "Name": "StandardizedCallFacet",
-        "Version": "1.0.0"
+        "Version": "1.1.0"
       },
-      "0x31e3b5611FBb1a90d35039fCC9656649e7Fd482b": {
+      "0x7D1940fDfF0B37c137B105ce7967B3B86DB42648": {
         "Name": "StargateFacet",
         "Version": "2.2.0"
       },
+      "0x9558CacEAC173Bdf32fb4cd7067e9e3c3b4c155e": {
+        "Name": "",
+        "Version": ""
+      },
       "0x6731C946747bA54c78e7a65d416Cde39E478ECeb": {
         "Name": "CelerCircleBridgeFacet",
         "Version": "1.0.1"
       },
-      "0xE397c4883ec89ed4Fc9D258F00C689708b2799c9": {
-        "Name": "AcrossFacetPacked",
+      "0x711e80A9c1eB906d9Ae9d37E5432E6E7aCeEdA0B": {
+        "Name": "WithdrawFacet",
         "Version": "1.0.0"
       },
       "0xF18A285f4e6f720Eb9b4e05df71f88b9552E6ADB": {
@@ -113,19 +129,22 @@
         "Name": "GenericSwapFacetV3",
         "Version": "1.0.0"
       },
-      "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4": {
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
       "ERC20Proxy": "0x5741A7FfE7c39Ca175546a54985fA79211290b51",
       "Executor": "0x2dfaDAB8266483beD9Fd9A292Ce56596a2D1378D",
       "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
+      "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C",
       "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657",
+      "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
       "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97",
       "ServiceFeeCollector": "0x894b3e1e30Be0727eb138d2cceb0A99d2Fc4C55D",
-      "LiFuelFeeCollector": "0xc4f7A34b8d283f66925eF0f5CCdFC2AF3030DeaE",
       "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
     }
   }
diff --git a/deployments/polygon.diamond.staging.json b/deployments/polygon.diamond.staging.json
index 3c539d997..282f1dad8 100644
--- a/deployments/polygon.diamond.staging.json
+++ b/deployments/polygon.diamond.staging.json
@@ -119,6 +119,7 @@
       "Executor": "0x23f882bA2fa54A358d8599465EB471f58Cc26751",
       "FeeCollector": "0x7F8E9bEBd1Dea263A36a6916B99bd84405B9654a",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0x94EA56D8049e93E0308B9c7d1418Baf6A7C68280",
       "Receiver": "0x36E9B2E8A627474683eF3b1E9Df26D2bF04396f3",
       "ReceiverStargateV2": "",
diff --git a/deployments/polygon.json b/deployments/polygon.json
index 4c4d70b71..7fb5590fa 100644
--- a/deployments/polygon.json
+++ b/deployments/polygon.json
@@ -48,6 +48,6 @@
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "MayanFacet": "0x4682d79DD4D0e7555415841b5151933AF50594A8",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
-}
+}
\ No newline at end of file
diff --git a/deployments/scroll.diamond.json b/deployments/scroll.diamond.json
index e9fe13ecb..a8865f701 100644
--- a/deployments/scroll.diamond.json
+++ b/deployments/scroll.diamond.json
@@ -33,9 +33,9 @@
         "Name": "GenericSwapFacet",
         "Version": "1.0.0"
       },
-      "0x9D4B9784fC46496926ee4784e490F14d106D83a8": {
+      "0x175E7799DA0CD40E641352EaB90D8e39e02a4Ca9": {
         "Name": "StandardizedCallFacet",
-        "Version": "1.0.0"
+        "Version": "1.1.0"
       },
       "0x9157b6550D1C3209C20aCAd12A2dC57Df34Ca48b": {
         "Name": "CalldataVerificationFacet",
@@ -69,9 +69,9 @@
         "Name": "GenericSwapFacetV3",
         "Version": "1.0.0"
       },
-      "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4": {
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
         "Name": "StargateFacetV2",
-        "Version": "1.0.0"
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
@@ -79,8 +79,10 @@
       "Executor": "0x7078d1DE45C7D3e87f71D5DA663db2a8Ee1dfEbe",
       "FeeCollector": "0xF048e5816B0C7951AC179f656C5B86e5a79Bd7b5",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C",
       "Receiver": "0x0561fFe9855541C02D17951c93405A4407Df74BC",
+      "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
       "RelayerCelerIM": "",
       "ServiceFeeCollector": "0x346b1F1896f2772ffee205e34246ac7adc55B43D",
       "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d"
diff --git a/deployments/scroll.json b/deployments/scroll.json
index 84529ac6f..e67abeb50 100644
--- a/deployments/scroll.json
+++ b/deployments/scroll.json
@@ -24,6 +24,8 @@
   "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d",
   "SquidFacet": "0x5C2C3F56e33F45389aa4e1DA4D3a807A532a910c",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4",
-  "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A"
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61",
+  "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
+  "AcrossFacet": "0x9535A1AFd986FA9a2D324657116F02C364edebFf",
+  "AcrossFacetPacked": "0xFd796bf7Ff74d414b99CacF6F216eAC24bF3aC8E"
 }
\ No newline at end of file
diff --git a/deployments/sei.diamond.json b/deployments/sei.diamond.json
index 9e9cc1fd8..819c252f8 100644
--- a/deployments/sei.diamond.json
+++ b/deployments/sei.diamond.json
@@ -37,10 +37,6 @@
         "Name": "GenericSwapFacet",
         "Version": "2.0.0"
       },
-      "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F": {
-        "Name": "GenericSwapFacetV3",
-        "Version": "1.0.0"
-      },
       "0xeB98530f99e1c4406d24FdE4b590C96Ac7143aEe": {
         "Name": "StandardizedCallFacet",
         "Version": "1.1.0"
@@ -53,9 +49,13 @@
         "Name": "SymbiosisFacet",
         "Version": "1.0.0"
       },
-      "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4": {
-        "Name": "StargateFacetV2",
+      "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F": {
+        "Name": "GenericSwapFacetV3",
         "Version": "1.0.0"
+      },
+      "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61": {
+        "Name": "StargateFacetV2",
+        "Version": "1.0.1"
       }
     },
     "Periphery": {
@@ -63,8 +63,10 @@
       "Executor": "0x6d425eAb1Eb6e002Bf40c44e5d9Ff7fC6a38824a",
       "FeeCollector": "0x7956280Ec4B4d651C4083Ca737a1fa808b5319D8",
       "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "",
       "LiFuelFeeCollector": "0x9870F0C91D722B3393383722968269496d919bD8",
       "Receiver": "0xf22c55c50fF14d9AB1fa4D9DCA832085D143E854",
+      "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
       "RelayerCelerIM": "",
       "ServiceFeeCollector": "0x45d69A8a07F79DE2364F0B80F78af86e99015162",
       "TokenWrapper": "0xC82fd49be3F3D851b9E10589C50784cEAC7114a5"
diff --git a/deployments/sei.json b/deployments/sei.json
index 1a17ec7c4..01e14395d 100644
--- a/deployments/sei.json
+++ b/deployments/sei.json
@@ -21,5 +21,5 @@
   "TokenWrapper": "0xC82fd49be3F3D851b9E10589C50784cEAC7114a5",
   "GenericSwapFacetV3": "0x31a9b1835864706Af10103b31Ea2b79bdb995F5F",
   "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A",
-  "StargateFacetV2": "0x139e0a9c4C90cC40D562859e8D6d3246C1915FD4"
+  "StargateFacetV2": "0x6e378C84e657C57b2a8d183CFf30ee5CC8989b61"
 }
\ No newline at end of file
diff --git a/deployments/taiko.diamond.json b/deployments/taiko.diamond.json
new file mode 100644
index 000000000..a52bb8d2f
--- /dev/null
+++ b/deployments/taiko.diamond.json
@@ -0,0 +1,75 @@
+{
+  "LiFiDiamond": {
+    "Facets": {
+      "0x429Da7043882C2A962bC4EA7b33440C3B9a033D7": {
+        "Name": "DiamondCutFacet",
+        "Version": "1.0.0"
+      },
+      "0x01ABD3Dec5268802272af46FE6Ac4c2fCF0Eff10": {
+        "Name": "DiamondLoupeFacet",
+        "Version": "1.0.0"
+      },
+      "0x815e97BE9122Fa64259277b1509E316Fc45D4b34": {
+        "Name": "OwnershipFacet",
+        "Version": "1.0.0"
+      },
+      "0x8A779ed5c6838e236f934Eb392D5aBdbF22404dD": {
+        "Name": "WithdrawFacet",
+        "Version": "1.0.0"
+      },
+      "0xD1DB5abDA5918ca4aFb8982a49378D4A2Dfe5D5c": {
+        "Name": "DexManagerFacet",
+        "Version": "1.0.1"
+      },
+      "0xa09f97e14C8351D16558b18891938aC873787652": {
+        "Name": "AccessManagerFacet",
+        "Version": "1.0.0"
+      },
+      "0x0C710c59f1a656333B5AfBAC64A8f60B52C30af4": {
+        "Name": "PeripheryRegistryFacet",
+        "Version": "1.0.0"
+      },
+      "0x42C1418917AE5505b5B3C79bdc1d1ba30177Ea06": {
+        "Name": "LIFuelFacet",
+        "Version": "1.0.1"
+      },
+      "0x5B73eFA1929c80D92C85512153392B799B022D18": {
+        "Name": "GenericSwapFacet",
+        "Version": "1.0.0"
+      },
+      "0x147e65652FDaC507d24DE522a02C76c006A24aB9": {
+        "Name": "GenericSwapFacetV3",
+        "Version": "1.0.1"
+      },
+      "0x386bbbE35DF5E7bec5fff8aC4E74A6D7c5fDa482": {
+        "Name": "StandardizedCallFacet",
+        "Version": "1.1.0"
+      },
+      "0xFf0dDC136bD881F3B8Eea805654Dd0D0d3bd800C": {
+        "Name": "CalldataVerificationFacet",
+        "Version": "1.1.1"
+      },
+      "0x113E97921874646413572F2C43562463c378b6f5": {
+        "Name": "StargateFacetV2",
+        "Version": "1.0.1"
+      },
+      "0xD59F68bBdECA334A05db2BCe5B6711d22f92fE7a": {
+        "Name": "SymbiosisFacet",
+        "Version": "1.0.0"
+      }
+    },
+    "Periphery": {
+      "ERC20Proxy": "0x6bC43F95C5234aA749D18403753d60B91f972d3c",
+      "Executor": "0xeCBa38d0bAc1cA1CD5A30347370e4D539d44FAA1",
+      "FeeCollector": "0xDd8A081efC90DFFD79940948a1528C51793C4B03",
+      "GasRebateDistributor": "",
+      "LiFiDEXAggregator": "0xcaA342e4f781d63EF41E220D7622B97E66BAEcF3",
+      "LiFuelFeeCollector": "0xff2F39692A90262b8Ed4DFD92799bB450425773F",
+      "Receiver": "0xe38326Ae727e3fA6669249063Ce7b8ea1754e756",
+      "ReceiverStargateV2": "0x6CA57d9846f9a1fd48368762b743a047eC4f81A6",
+      "RelayerCelerIM": "",
+      "ServiceFeeCollector": "",
+      "TokenWrapper": "0xD989E929517B0e5eD0c8EfE7607Fa167B697cBa8"
+    }
+  }
+}
\ No newline at end of file
diff --git a/deployments/taiko.json b/deployments/taiko.json
new file mode 100644
index 000000000..762a45b67
--- /dev/null
+++ b/deployments/taiko.json
@@ -0,0 +1,25 @@
+{
+  "DiamondCutFacet": "0x429Da7043882C2A962bC4EA7b33440C3B9a033D7",
+  "DiamondLoupeFacet": "0x01ABD3Dec5268802272af46FE6Ac4c2fCF0Eff10",
+  "OwnershipFacet": "0x815e97BE9122Fa64259277b1509E316Fc45D4b34",
+  "DexManagerFacet": "0xD1DB5abDA5918ca4aFb8982a49378D4A2Dfe5D5c",
+  "AccessManagerFacet": "0xa09f97e14C8351D16558b18891938aC873787652",
+  "WithdrawFacet": "0x8A779ed5c6838e236f934Eb392D5aBdbF22404dD",
+  "PeripheryRegistryFacet": "0x0C710c59f1a656333B5AfBAC64A8f60B52C30af4",
+  "LIFuelFacet": "0x42C1418917AE5505b5B3C79bdc1d1ba30177Ea06",
+  "GenericSwapFacet": "0x5B73eFA1929c80D92C85512153392B799B022D18",
+  "GenericSwapFacetV3": "0x147e65652FDaC507d24DE522a02C76c006A24aB9",
+  "StandardizedCallFacet": "0x386bbbE35DF5E7bec5fff8aC4E74A6D7c5fDa482",
+  "CalldataVerificationFacet": "0xFf0dDC136bD881F3B8Eea805654Dd0D0d3bd800C",
+  "LiFiDiamond": "0x3A9A5dBa8FE1C4Da98187cE4755701BCA182f63b",
+  "StargateFacetV2": "0x113E97921874646413572F2C43562463c378b6f5",
+  "SymbiosisFacet": "0xD59F68bBdECA334A05db2BCe5B6711d22f92fE7a",
+  "ERC20Proxy": "0x6bC43F95C5234aA749D18403753d60B91f972d3c",
+  "Executor": "0xeCBa38d0bAc1cA1CD5A30347370e4D539d44FAA1",
+  "FeeCollector": "0xDd8A081efC90DFFD79940948a1528C51793C4B03",
+  "LiFiDEXAggregator": "0xcaA342e4f781d63EF41E220D7622B97E66BAEcF3",
+  "LiFuelFeeCollector": "0xff2F39692A90262b8Ed4DFD92799bB450425773F",
+  "ReceiverStargateV2": "0x6CA57d9846f9a1fd48368762b743a047eC4f81A6",
+  "TokenWrapper": "0xD989E929517B0e5eD0c8EfE7607Fa167B697cBa8",
+  "Receiver": "0xe38326Ae727e3fA6669249063Ce7b8ea1754e756"
+}
\ No newline at end of file
diff --git a/foundry.toml b/foundry.toml
index 47ea7e68b..f02dacdce 100644
--- a/foundry.toml
+++ b/foundry.toml
@@ -1,7 +1,7 @@
 [profile.default]
 test = 'test/solidity'
 solc_version = '0.8.17'
-evm_version='paris'
+evm_version = 'paris'
 optimizer = true
 optimizer_runs = 1000000
 sender = '0x00a329c0648769a73afac7f9381e08fb43dbea73'
@@ -33,23 +33,25 @@ fuse = "${ETH_NODE_URI_FUSE}"
 harmony = "${ETH_NODE_URI_HARMONY}"
 gnosis = "${ETH_NODE_URI_GNOSIS}"
 gravity = "${ETH_NODE_URI_GRAVITY}"
+immutablezkevm = "${ETH_NODE_URI_IMMUTABLEZKEVM}"
 linea = "${ETH_NODE_URI_LINEA}"
 moonbeam = "${ETH_NODE_URI_MOONBEAM}"
 moonriver = "${ETH_NODE_URI_MOONRIVER}"
 nova = "${ETH_NODE_URI_NOVA}"
+mantle = "${ETH_NODE_URI_MANTLE}"
+metis = "${ETH_NODE_URI_METIS}"
+mode = "${ETH_NODE_URI_MODE}"
 okx = "${ETH_NODE_URI_OKX}"
 opbnb = "${ETH_NODE_URI_OPBNB}"
 optimism = "${ETH_NODE_URI_OPTIMISM}"
 polygon = "${ETH_NODE_URI_POLYGON}"
 polygonzkevm = "${ETH_NODE_URI_POLYGONZKEVM}"
+rootstock = "${ETH_NODE_URI_ROOTSTOCK}"
+sei = "${ETH_NODE_URI_SEI}"
+taiko = "${ETH_NODE_URI_TAIKO}"
 velas = "${ETH_NODE_URI_VELAS}"
-metis = "${ETH_NODE_URI_METIS}"
-mode = "${ETH_NODE_URI_MODE}"
 zksync = "${ETH_NODE_URI_ZKSYNC}"
 scroll = "${ETH_NODE_URI_SCROLL}"
-mantle = "${ETH_NODE_URI_MANTLE}"
-rootstock = "${ETH_NODE_URI_ROOTSTOCK}"
-sei = "${ETH_NODE_URI_SEI}"
 
 # testnets
 goerli = "${ETH_NODE_URI_GOERLI}"
@@ -62,8 +64,10 @@ base = "${ETH_NODE_URI_BASE}"
 [etherscan]
 mainnet = { key = "${MAINNET_ETHERSCAN_API_KEY}", chain = "1" }
 arbitrum = { key = "${ARBITRUM_ETHERSCAN_API_KEY}", url = "https://api.arbiscan.io/api", chain = "42161" }
-aurora = { key = "${AURORA_ETHERSCAN_API_KEY}", url = "https://api.aurorascan.dev/api", chain = "1313161554" }
+aurora = { key = "${AURORA_ETHERSCAN_API_KEY}", url = "https://explorer.mainnet.aurora.dev/api", chain = "1313161554", verifier = "blockscout" }
 avalanche = { key = "${AVALANCHE_ETHERSCAN_API_KEY}", url = "https://api.snowtrace.io/api", chain = "43114" }
+base = { key = "${BASE_ETHERSCAN_API_KEY}", url = "https://api.basescan.org/api", chain = "8453" }
+blast = { key = "${BLAST_ETHERSCAN_API_KEY}", url = "https://api.blastscan.io/api", chain = "81457" }
 boba = { key = "${BOBA_ETHERSCAN_API_KEY}", url = "https://api.bobascan.com/api", chain = "288" }
 bsc = { key = "${BSC_ETHERSCAN_API_KEY}", url = "https://api.bscscan.com/api", chain = "56" }
 celo = { key = "${CELO_ETHERSCAN_API_KEY}", url = "https://api.celoscan.io/api", chain = "42220" }
@@ -72,20 +76,20 @@ fantom = { key = "${FANTOM_ETHERSCAN_API_KEY}", url = "https://api.ftmscan.com/a
 fraxtal = { key = "${FRAXTAL_ETHERSCAN_API_KEY}", url = "https://api.fraxscan.com/api", chain = "252" }
 fuse = { key = "${FUSE_ETHERSCAN_API_KEY}", url = "https://explorer.fuse.io/api", chain = "122" }
 gnosis = { key = "${GNOSIS_ETHERSCAN_API_KEY}", url = "https://api.gnosisscan.io/api", chain = "100" }
-gravity = { key = "${GRAVITY_ETHERSCAN_API_KEY}", url = "https://explorer.gravity.xyz/api", chain = "1625", verifier = "blockscout"}
+gravity = { key = "${GRAVITY_ETHERSCAN_API_KEY}", url = "https://explorer.gravity.xyz/api", chain = "1625", verifier = "blockscout" }
+immutablezkevm = { key = "${IMMUTABLEZKEVM_ETHERSCAN_API_KEY}", url = "https://explorer.immutable.com/api", chain = "13371", verifier = "blockscout" }
+linea = { key = "${LINEA_ETHERSCAN_API_KEY}", url = "https://api.lineascan.build/api", chain = "59144" }
+mantle = { key = "${MANTLE_ETHERSCAN_API_KEY}", url = "https://api.routescan.io/v2/network/mainnet/evm/5000/etherscan", chain = "5000" }
+metis = { key = "${METIS_ETHERSCAN_API_KEY}", url = "https://api.routescan.io/v2/network/mainnet/evm/1088/etherscan", chain = "1088" }
+mode = { key = "${MODE_ETHERSCAN_API_KEY}", url = "https://api.routescan.io/v2/network/mainnet/evm/34443/etherscan", chain = "34443" }
 moonbeam = { key = "${MOONBEAM_ETHERSCAN_API_KEY}", url = "https://api-moonbeam.moonscan.io/api", chain = "1284" }
 moonriver = { key = "${MOONRIVER_ETHERSCAN_API_KEY}", url = "https://api-moonriver.moonscan.io/api", chain = "1285" }
 optimism = { key = "${OPTIMISM_ETHERSCAN_API_KEY}", url = "https://api-optimistic.etherscan.io/api", chain = "10" }
 polygon = { key = "${POLYGON_ETHERSCAN_API_KEY}", url = "https://api.polygonscan.com/api", chain = "137" }
 polygonzkevm = { key = "${POLYGONZKEVM_ETHERSCAN_API_KEY}", url = "https://api-zkevm.polygonscan.com/api", chain = "1101" }
-base = { key = "${BASE_ETHERSCAN_API_KEY}", url = "https://api.basescan.org/api", chain = "8453" }
-linea = { key = "${LINEA_ETHERSCAN_API_KEY}", url = "https://api.lineascan.build/api", chain = "59144" }
-metis = { key = "${METIS_ETHERSCAN_API_KEY}", url = "https://api.routescan.io/v2/network/mainnet/evm/1088/etherscan", chain = "1088" }
-mode = { key = "${MODE_ETHERSCAN_API_KEY}", url = "https://api.routescan.io/v2/network/mainnet/evm/34443/etherscan", chain = "34443" }
 scroll = { key = "${SCROLL_ETHERSCAN_API_KEY}", url = "https://api.scrollscan.com/api", chain = "534352" }
-mantle = { key = "${MANTLE_ETHERSCAN_API_KEY}", url = "https://api.routescan.io/v2/network/mainnet/evm/5000/etherscan", chain = "5000" }
-blast = { key = "${BLAST_ETHERSCAN_API_KEY}", url = "https://api.blastscan.io/api", chain = "81457" }
 sei = { key = "${SEI_ETHERSCAN_API_KEY}", url = "https://seitrace.com/pacific-1/api", chain = "1329" }
+taiko = { key = "${TAIKO_ETHERSCAN_API_KEY}", url = "https://api.taikoscan.io/api", chain = "167000" }
 
 #testnets
 goerli = { key = "${MAINNET_ETHERSCAN_API_KEY}" }
diff --git a/lcov-filtered.info b/lcov-filtered.info
deleted file mode 100644
index 85a9a75de..000000000
--- a/lcov-filtered.info
+++ /dev/null
@@ -1,3784 +0,0 @@
-TN:
-SF:src/Facets/AccessManagerFacet.sol
-FN:24,AccessManagerFacet.setCanExecute
-FNDA:3,AccessManagerFacet.setCanExecute
-DA:29,3
-BRDA:29,0,0,-
-DA:30,0
-DA:32,3
-DA:33,3
-DA:36,3
-BRDA:36,1,0,2
-BRDA:36,1,1,1
-DA:37,2
-DA:39,1
-FN:46,AccessManagerFacet.addressCanExecuteMethod
-FNDA:0,AccessManagerFacet.addressCanExecuteMethod
-DA:50,0
-FNF:2
-FNH:1
-LF:8
-LH:6
-BRF:3
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/AcrossFacet.sol
-FN:44,AcrossFacet.
-FNDA:0,AcrossFacet.
-DA:45,0
-DA:46,0
-FN:54,AcrossFacet.startBridgeTokensViaAcross
-FNDA:265,AcrossFacet.startBridgeTokensViaAcross
-DA:66,260
-DA:70,258
-FN:77,AcrossFacet.swapAndStartBridgeTokensViaAcross
-FNDA:6,AcrossFacet.swapAndStartBridgeTokensViaAcross
-DA:90,3
-DA:96,2
-FN:104,AcrossFacet._startBridge
-FNDA:260,AcrossFacet._startBridge
-DA:108,260
-BRDA:108,0,0,-
-BRDA:108,0,1,258
-DA:109,2
-DA:120,258
-DA:125,258
-DA:137,260
-FNF:4
-FNH:3
-LF:11
-LH:9
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/AcrossFacetPacked.sol
-FN:47,AcrossFacetPacked.
-FNDA:0,AcrossFacetPacked.
-DA:52,0
-DA:53,0
-FN:61,AcrossFacetPacked.setApprovalForBridge
-FNDA:19,AcrossFacetPacked.setApprovalForBridge
-DA:64,19
-DA:66,38
-FN:76,AcrossFacetPacked.startBridgeTokensViaAcrossNativePacked
-FNDA:2,AcrossFacetPacked.startBridgeTokensViaAcrossNativePacked
-DA:78,2
-DA:81,2
-DA:92,2
-FN:103,AcrossFacetPacked.startBridgeTokensViaAcrossNativeMin
-FNDA:2,AcrossFacetPacked.startBridgeTokensViaAcrossNativeMin
-DA:113,2
-DA:124,2
-FN:129,AcrossFacetPacked.startBridgeTokensViaAcrossERC20Packed
-FNDA:4,AcrossFacetPacked.startBridgeTokensViaAcrossERC20Packed
-DA:130,4
-DA:131,4
-DA:134,4
-DA:141,4
-DA:144,4
-DA:155,4
-FN:168,AcrossFacetPacked.startBridgeTokensViaAcrossERC20Min
-FNDA:4,AcrossFacetPacked.startBridgeTokensViaAcrossERC20Min
-DA:180,4
-DA:187,4
-DA:198,4
-FN:209,AcrossFacetPacked.encode_startBridgeTokensViaAcrossNativePacked
-FNDA:20,AcrossFacetPacked.encode_startBridgeTokensViaAcrossNativePacked
-DA:220,20
-BRDA:220,0,0,1
-BRDA:220,0,1,19
-DA:225,19
-DA:226,19
-FN:250,AcrossFacetPacked.encode_startBridgeTokensViaAcrossERC20Packed
-FNDA:40,AcrossFacetPacked.encode_startBridgeTokensViaAcrossERC20Packed
-DA:263,40
-BRDA:263,1,0,1
-BRDA:263,1,1,39
-DA:268,39
-BRDA:268,2,0,1
-BRDA:268,2,1,38
-DA:273,38
-DA:274,38
-FN:292,AcrossFacetPacked.decode_startBridgeTokensViaAcrossNativePacked
-FNDA:1,AcrossFacetPacked.decode_startBridgeTokensViaAcrossNativePacked
-DA:302,1
-BRDA:302,3,0,-
-BRDA:302,3,1,1
-DA:308,1
-DA:311,1
-DA:312,1
-DA:313,1
-DA:316,1
-DA:317,1
-DA:318,1
-DA:319,1
-DA:321,1
-FN:326,AcrossFacetPacked.decode_startBridgeTokensViaAcrossERC20Packed
-FNDA:1,AcrossFacetPacked.decode_startBridgeTokensViaAcrossERC20Packed
-DA:336,1
-BRDA:336,4,0,-
-BRDA:336,4,1,1
-DA:342,1
-DA:344,1
-DA:345,1
-DA:346,1
-DA:347,1
-DA:348,1
-DA:351,1
-DA:352,1
-DA:353,1
-DA:354,1
-DA:356,1
-FN:365,AcrossFacetPacked.executeCallAndWithdraw
-FNDA:2,AcrossFacetPacked.executeCallAndWithdraw
-DA:374,1
-DA:377,1
-BRDA:377,5,0,1
-BRDA:377,5,1,-
-DA:379,1
-DA:380,1
-DA:383,0
-FNF:11
-FNH:10
-LF:52
-LH:49
-BRF:12
-BRH:9
-end_of_record
-TN:
-SF:src/Facets/AllBridgeFacet.sol
-FN:40,AllBridgeFacet.
-FNDA:0,AllBridgeFacet.
-DA:41,0
-FN:46,AllBridgeFacet.startBridgeTokensViaAllBridge
-FNDA:8,AllBridgeFacet.startBridgeTokensViaAllBridge
-DA:58,3
-DA:62,2
-FN:69,AllBridgeFacet.swapAndStartBridgeTokensViaAllBridge
-FNDA:6,AllBridgeFacet.swapAndStartBridgeTokensViaAllBridge
-DA:82,3
-DA:88,2
-FN:94,AllBridgeFacet._startBridge
-FNDA:4,AllBridgeFacet._startBridge
-DA:98,4
-DA:104,4
-BRDA:104,0,0,-
-BRDA:104,0,1,2
-DA:105,2
-DA:116,2
-DA:128,4
-FNF:4
-FNH:3
-LF:10
-LH:9
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/AmarokFacet.sol
-FN:43,AmarokFacet.
-FNDA:0,AmarokFacet.
-DA:44,0
-FN:52,AmarokFacet.startBridgeTokensViaAmarok
-FNDA:265,AmarokFacet.startBridgeTokensViaAmarok
-DA:64,261
-DA:66,260
-DA:71,259
-FN:78,AmarokFacet.swapAndStartBridgeTokensViaAmarok
-FNDA:6,AmarokFacet.swapAndStartBridgeTokensViaAmarok
-DA:91,3
-DA:93,3
-DA:101,2
-FN:109,AmarokFacet._startBridge
-FNDA:261,AmarokFacet._startBridge
-DA:115,261
-DA:120,260
-DA:127,260
-BRDA:127,1,0,-
-BRDA:127,1,1,258
-DA:128,2
-DA:139,258
-DA:150,260
-FN:153,AmarokFacet.validateDestinationCallFlag
-FNDA:264,AmarokFacet.validateDestinationCallFlag
-DA:158,264
-DA:159,1
-BRDA:159,2,0,1
-DA:160,1
-FNF:5
-FNH:4
-LF:16
-LH:15
-BRF:3
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/AmarokFacetPacked.sol
-FN:33,AmarokFacetPacked.
-FNDA:0,AmarokFacetPacked.
-DA:37,0
-FN:45,AmarokFacetPacked.setApprovalForBridge
-FNDA:13,AmarokFacetPacked.setApprovalForBridge
-DA:48,13
-DA:50,13
-DA:52,26
-FN:62,AmarokFacetPacked.startBridgeTokensViaAmarokERC20PackedPayFeeWithAsset
-FNDA:2,AmarokFacetPacked.startBridgeTokensViaAmarokERC20PackedPayFeeWithAsset
-DA:64,2
-DA:65,2
-DA:66,2
-DA:67,2
-DA:70,2
-DA:77,2
-DA:88,2
-FN:91,AmarokFacetPacked.startBridgeTokensViaAmarokERC20PackedPayFeeWithNative
-FNDA:2,AmarokFacetPacked.startBridgeTokensViaAmarokERC20PackedPayFeeWithNative
-DA:96,2
-DA:97,2
-DA:98,2
-DA:101,2
-DA:108,2
-DA:118,2
-FN:129,AmarokFacetPacked.startBridgeTokensViaAmarokERC20MinPayFeeWithAsset
-FNDA:2,AmarokFacetPacked.startBridgeTokensViaAmarokERC20MinPayFeeWithAsset
-DA:139,2
-DA:146,2
-DA:157,2
-FN:167,AmarokFacetPacked.startBridgeTokensViaAmarokERC20MinPayFeeWithNative
-FNDA:2,AmarokFacetPacked.startBridgeTokensViaAmarokERC20MinPayFeeWithNative
-DA:176,2
-DA:183,2
-DA:193,2
-FN:204,AmarokFacetPacked.encode_startBridgeTokensViaAmarokERC20PackedPayFeeWithAsset
-FNDA:16,AmarokFacetPacked.encode_startBridgeTokensViaAmarokERC20PackedPayFeeWithAsset
-DA:213,16
-BRDA:213,0,0,1
-BRDA:213,0,1,15
-DA:217,15
-BRDA:217,1,0,1
-BRDA:217,1,1,14
-DA:221,14
-BRDA:221,2,0,1
-BRDA:221,2,1,13
-DA:226,13
-DA:227,13
-FN:248,AmarokFacetPacked.encode_startBridgeTokensViaAmarokERC20PackedPayFeeWithNative
-FNDA:15,AmarokFacetPacked.encode_startBridgeTokensViaAmarokERC20PackedPayFeeWithNative
-DA:256,15
-BRDA:256,3,0,1
-BRDA:256,3,1,14
-DA:260,14
-BRDA:260,4,0,1
-BRDA:260,4,1,13
-DA:265,13
-DA:266,13
-FN:281,AmarokFacetPacked.decode_startBridgeTokensViaAmarokERC20PackedPayFeeWithAsset
-FNDA:1,AmarokFacetPacked.decode_startBridgeTokensViaAmarokERC20PackedPayFeeWithAsset
-DA:288,1
-BRDA:288,5,0,-
-BRDA:288,5,1,1
-DA:293,1
-DA:294,1
-DA:296,1
-DA:298,1
-DA:299,1
-DA:300,1
-DA:301,1
-DA:302,1
-DA:304,1
-DA:305,1
-DA:306,1
-DA:307,1
-DA:308,1
-DA:309,1
-DA:310,1
-DA:312,1
-FN:317,AmarokFacetPacked.decode_startBridgeTokensViaAmarokERC20PackedPayFeeWithNative
-FNDA:1,AmarokFacetPacked.decode_startBridgeTokensViaAmarokERC20PackedPayFeeWithNative
-DA:324,1
-BRDA:324,6,0,-
-BRDA:324,6,1,1
-DA:329,1
-DA:330,1
-DA:332,1
-DA:334,1
-DA:335,1
-DA:336,1
-DA:337,1
-DA:338,1
-DA:340,1
-DA:341,1
-DA:342,1
-DA:343,1
-DA:346,1
-DA:347,1
-DA:349,1
-FN:352,AmarokFacetPacked.getChainIdForDomain
-FNDA:0,AmarokFacetPacked.getChainIdForDomain
-DA:355,2
-FNF:11
-FNH:9
-LF:66
-LH:65
-BRF:14
-BRH:12
-end_of_record
-TN:
-SF:src/Facets/ArbitrumBridgeFacet.sol
-FN:46,ArbitrumBridgeFacet.
-FNDA:0,ArbitrumBridgeFacet.
-DA:47,0
-DA:48,0
-FN:56,ArbitrumBridgeFacet.startBridgeTokensViaArbitrumBridge
-FNDA:264,ArbitrumBridgeFacet.startBridgeTokensViaArbitrumBridge
-DA:68,259
-DA:69,259
-DA:72,259
-DA:77,258
-FN:84,ArbitrumBridgeFacet.swapAndStartBridgeTokensViaArbitrumBridge
-FNDA:6,ArbitrumBridgeFacet.swapAndStartBridgeTokensViaArbitrumBridge
-DA:97,3
-DA:98,3
-DA:101,3
-DA:109,2
-FN:118,ArbitrumBridgeFacet._startBridge
-FNDA:260,ArbitrumBridgeFacet._startBridge
-DA:123,260
-BRDA:123,0,0,-
-BRDA:123,0,1,258
-DA:124,2
-DA:137,258
-DA:142,258
-DA:152,260
-FNF:4
-FNH:3
-LF:15
-LH:13
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/CBridgeFacet.sol
-FN:47,CBridgeFacet.
-FNDA:0,CBridgeFacet.
-DA:48,0
-FN:56,CBridgeFacet.startBridgeTokensViaCBridge
-FNDA:267,CBridgeFacet.startBridgeTokensViaCBridge
-DA:68,262
-DA:72,260
-FN:79,CBridgeFacet.swapAndStartBridgeTokensViaCBridge
-FNDA:14,CBridgeFacet.swapAndStartBridgeTokensViaCBridge
-DA:92,10
-DA:98,9
-FN:107,CBridgeFacet.triggerRefund
-FNDA:0,CBridgeFacet.triggerRefund
-DA:114,0
-BRDA:114,0,0,-
-DA:115,0
-DA:119,0
-BRDA:119,1,0,-
-DA:120,0
-DA:124,0
-DA:125,0
-DA:126,0
-BRDA:126,2,0,-
-DA:127,0
-DA:131,0
-DA:132,0
-DA:133,0
-FN:141,CBridgeFacet._startBridge
-FNDA:269,CBridgeFacet._startBridge
-DA:145,269
-BRDA:145,3,0,-
-BRDA:145,3,1,265
-DA:146,4
-DA:155,265
-DA:161,265
-DA:171,269
-FNF:5
-FNH:3
-LF:21
-LH:9
-BRF:5
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/CBridgeFacetPacked.sol
-FN:40,CBridgeFacetPacked.
-FNDA:0,CBridgeFacetPacked.
-DA:44,0
-FN:52,CBridgeFacetPacked.setApprovalForBridge
-FNDA:28,CBridgeFacetPacked.setApprovalForBridge
-DA:55,28
-DA:57,42
-FN:74,CBridgeFacetPacked.triggerRefund
-FNDA:1,CBridgeFacetPacked.triggerRefund
-DA:82,1
-BRDA:82,0,0,-
-DA:83,0
-DA:87,1
-DA:88,1
-DA:89,1
-BRDA:89,1,0,-
-DA:90,0
-DA:94,1
-DA:95,1
-DA:96,1
-FN:101,CBridgeFacetPacked.startBridgeTokensViaCBridgeNativePacked
-FNDA:6,CBridgeFacetPacked.startBridgeTokensViaCBridgeNativePacked
-DA:102,6
-DA:110,6
-FN:119,CBridgeFacetPacked.startBridgeTokensViaCBridgeNativeMin
-FNDA:3,CBridgeFacetPacked.startBridgeTokensViaCBridgeNativeMin
-DA:126,3
-DA:134,3
-FN:139,CBridgeFacetPacked.startBridgeTokensViaCBridgeERC20Packed
-FNDA:8,CBridgeFacetPacked.startBridgeTokensViaCBridgeERC20Packed
-DA:140,8
-DA:141,8
-DA:144,8
-DA:152,8
-DA:161,8
-FN:172,CBridgeFacetPacked.startBridgeTokensViaCBridgeERC20Min
-FNDA:4,CBridgeFacetPacked.startBridgeTokensViaCBridgeERC20Min
-DA:182,4
-DA:190,4
-DA:199,4
-FN:210,CBridgeFacetPacked.encode_startBridgeTokensViaCBridgeNativePacked
-FNDA:33,CBridgeFacetPacked.encode_startBridgeTokensViaCBridgeNativePacked
-DA:217,33
-BRDA:217,2,0,1
-BRDA:217,2,1,32
-DA:221,32
-BRDA:221,3,0,1
-BRDA:221,3,1,31
-DA:226,31
-DA:227,31
-FN:241,CBridgeFacetPacked.decode_startBridgeTokensViaCBridgeNativePacked
-FNDA:1,CBridgeFacetPacked.decode_startBridgeTokensViaCBridgeNativePacked
-DA:248,1
-BRDA:248,4,0,-
-BRDA:248,4,1,1
-DA:253,1
-DA:254,1
-DA:256,1
-DA:257,1
-DA:258,1
-DA:259,1
-DA:260,1
-DA:262,1
-FN:273,CBridgeFacetPacked.encode_startBridgeTokensViaCBridgeERC20Packed
-FNDA:49,CBridgeFacetPacked.encode_startBridgeTokensViaCBridgeERC20Packed
-DA:282,49
-BRDA:282,5,0,1
-BRDA:282,5,1,48
-DA:286,48
-BRDA:286,6,0,1
-BRDA:286,6,1,47
-DA:290,47
-BRDA:290,7,0,1
-BRDA:290,7,1,46
-DA:295,46
-DA:296,46
-FN:310,CBridgeFacetPacked.decode_startBridgeTokensViaCBridgeERC20Packed
-FNDA:1,CBridgeFacetPacked.decode_startBridgeTokensViaCBridgeERC20Packed
-DA:317,1
-BRDA:317,8,0,-
-BRDA:317,8,1,1
-DA:319,1
-DA:320,1
-DA:322,1
-DA:323,1
-DA:324,1
-DA:325,1
-DA:326,1
-DA:327,1
-DA:328,1
-DA:330,1
-FNF:11
-FNH:10
-LF:53
-LH:50
-BRF:16
-BRH:12
-end_of_record
-TN:
-SF:src/Facets/CalldataVerificationFacet.sol
-FN:22,CalldataVerificationFacet.extractBridgeData
-FNDA:3,CalldataVerificationFacet.extractBridgeData
-DA:25,3
-FN:31,CalldataVerificationFacet.extractSwapData
-FNDA:4,CalldataVerificationFacet.extractSwapData
-DA:34,4
-FN:41,CalldataVerificationFacet.extractData
-FNDA:6,CalldataVerificationFacet.extractData
-DA:51,6
-DA:52,2
-BRDA:52,0,0,2
-DA:53,2
-FN:66,CalldataVerificationFacet.extractMainParameters
-FNDA:6,CalldataVerificationFacet.extractMainParameters
-DA:81,10
-DA:83,10
-BRDA:83,1,0,-
-BRDA:83,1,1,2
-DA:84,2
-DA:85,2
-DA:86,2
-DA:88,8
-DA:89,8
-DA:92,10
-FN:106,CalldataVerificationFacet.extractNonEVMAddress
-FNDA:4,CalldataVerificationFacet.extractNonEVMAddress
-DA:109,4
-DA:110,4
-DA:113,4
-DA:114,2
-BRDA:114,2,0,2
-DA:116,2
-DA:120,4
-BRDA:120,3,0,2
-BRDA:120,3,1,2
-DA:122,2
-DA:123,2
-DA:127,2
-DA:128,2
-FN:140,CalldataVerificationFacet.extractGenericSwapParameters
-FNDA:2,CalldataVerificationFacet.extractGenericSwapParameters
-DA:153,2
-DA:154,2
-DA:157,2
-DA:158,1
-BRDA:158,4,0,1
-DA:160,1
-DA:162,2
-DA:167,2
-DA:168,2
-DA:169,2
-DA:170,2
-FN:192,CalldataVerificationFacet.validateCalldata
-FNDA:4,CalldataVerificationFacet.validateCalldata
-DA:202,4
-DA:203,4
-DA:212,4
-DA:214,4
-DA:230,2
-DA:232,2
-FN:240,CalldataVerificationFacet.validateDestinationCalldata
-FNDA:18,CalldataVerificationFacet.validateDestinationCalldata
-DA:245,18
-DA:249,18
-DA:250,9
-BRDA:250,5,0,9
-DA:251,9
-DA:254,18
-DA:257,18
-BRDA:257,6,0,4
-DA:258,4
-DA:263,4
-DA:264,4
-DA:265,2
-DA:268,14
-DA:269,2
-BRDA:269,7,0,2
-DA:270,2
-DA:274,2
-DA:275,2
-DA:276,2
-DA:280,12
-BRDA:280,8,0,4
-DA:281,4
-DA:285,4
-DA:286,4
-DA:287,2
-DA:290,8
-DA:292,2
-BRDA:292,9,0,2
-DA:293,2
-DA:301,2
-DA:302,2
-DA:303,2
-DA:307,6
-DA:308,5
-BRDA:308,10,0,5
-DA:309,5
-DA:313,5
-DA:314,5
-DA:315,3
-DA:318,1
-DA:320,1
-BRDA:320,11,0,1
-DA:321,1
-DA:325,1
-DA:326,1
-DA:327,1
-DA:331,0
-FN:339,CalldataVerificationFacet._extractBridgeData
-FNDA:23,CalldataVerificationFacet._extractBridgeData
-DA:343,23
-DA:344,11
-BRDA:344,12,0,11
-DA:346,11
-DA:347,11
-DA:351,11
-DA:354,12
-FN:360,CalldataVerificationFacet._extractSwapData
-FNDA:8,CalldataVerificationFacet._extractSwapData
-DA:364,8
-DA:365,4
-BRDA:365,13,0,4
-DA:367,4
-DA:368,4
-DA:372,4
-DA:375,4
-FNF:10
-FNH:10
-LF:91
-LH:90
-BRF:16
-BRH:15
-end_of_record
-TN:
-SF:src/Facets/CelerCircleBridgeFacet.sol
-FN:34,CelerCircleBridgeFacet.
-FNDA:0,CelerCircleBridgeFacet.
-DA:35,0
-DA:36,0
-FN:43,CelerCircleBridgeFacet.startBridgeTokensViaCelerCircleBridge
-FNDA:264,CelerCircleBridgeFacet.startBridgeTokensViaCelerCircleBridge
-DA:53,259
-DA:54,258
-FN:60,CelerCircleBridgeFacet.swapAndStartBridgeTokensViaCelerCircleBridge
-FNDA:5,CelerCircleBridgeFacet.swapAndStartBridgeTokensViaCelerCircleBridge
-DA:73,2
-DA:79,1
-FN:86,CelerCircleBridgeFacet._startBridge
-FNDA:259,CelerCircleBridgeFacet._startBridge
-DA:87,259
-BRDA:87,0,0,1
-BRDA:87,0,1,258
-DA:93,258
-DA:100,258
-DA:107,258
-FNF:4
-FNH:3
-LF:10
-LH:8
-BRF:2
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/CelerIMFacetImmutable.sol
-FN:19,CelerIMFacetImmutable.
-FNDA:0,CelerIMFacetImmutable.
-FNF:1
-FNH:0
-LF:0
-LH:0
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/CelerIMFacetMutable.sol
-FN:19,CelerIMFacetMutable.
-FNDA:0,CelerIMFacetMutable.
-FNF:1
-FNH:0
-LF:0
-LH:0
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/CircleBridgeFacet.sol
-FN:34,CircleBridgeFacet.
-FNDA:0,CircleBridgeFacet.
-DA:35,0
-DA:36,0
-FN:44,CircleBridgeFacet.startBridgeTokensViaCircleBridge
-FNDA:263,CircleBridgeFacet.startBridgeTokensViaCircleBridge
-DA:55,258
-DA:56,257
-FN:63,CircleBridgeFacet.swapAndStartBridgeTokensViaCircleBridge
-FNDA:5,CircleBridgeFacet.swapAndStartBridgeTokensViaCircleBridge
-DA:77,2
-DA:83,1
-FN:91,CircleBridgeFacet._startBridge
-FNDA:258,CircleBridgeFacet._startBridge
-DA:96,258
-DA:103,258
-DA:110,258
-FNF:4
-FNH:3
-LF:9
-LH:7
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/DeBridgeDlnFacet.sol
-FN:49,DeBridgeDlnFacet.
-FNDA:0,DeBridgeDlnFacet.
-DA:50,0
-FN:58,DeBridgeDlnFacet.startBridgeTokensViaDeBridgeDln
-FNDA:264,DeBridgeDlnFacet.startBridgeTokensViaDeBridgeDln
-DA:70,259
-DA:74,258
-FN:85,DeBridgeDlnFacet.swapAndStartBridgeTokensViaDeBridgeDln
-FNDA:7,DeBridgeDlnFacet.swapAndStartBridgeTokensViaDeBridgeDln
-DA:98,4
-DA:99,4
-DA:100,4
-DA:107,3
-FN:115,DeBridgeDlnFacet._startBridge
-FNDA:261,DeBridgeDlnFacet._startBridge
-DA:120,261
-DA:135,261
-DA:136,261
-BRDA:136,0,0,-
-BRDA:136,0,1,2
-DA:138,259
-DA:144,259
-DA:151,2
-DA:152,2
-DA:160,261
-DA:162,261
-BRDA:162,1,0,-
-DA:163,0
-DA:170,261
-FNF:4
-FNH:3
-LF:18
-LH:16
-BRF:3
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/DeBridgeFacet.sol
-FN:51,DeBridgeFacet.
-FNDA:0,DeBridgeFacet.
-DA:52,0
-FN:60,DeBridgeFacet.startBridgeTokensViaDeBridge
-FNDA:265,DeBridgeFacet.startBridgeTokensViaDeBridge
-DA:71,261
-DA:73,260
-DA:77,258
-FN:84,DeBridgeFacet.swapAndStartBridgeTokensViaDeBridge
-FNDA:6,DeBridgeFacet.swapAndStartBridgeTokensViaDeBridge
-DA:96,3
-DA:98,3
-DA:106,2
-FN:114,DeBridgeFacet._startBridge
-FNDA:260,DeBridgeFacet._startBridge
-DA:118,260
-DA:120,260
-DA:124,260
-BRDA:124,0,0,-
-DA:125,0
-DA:128,260
-DA:129,260
-DA:131,260
-BRDA:131,1,0,2
-BRDA:131,1,1,258
-DA:132,2
-DA:134,258
-DA:142,260
-DA:153,260
-FN:156,DeBridgeFacet.validateDestinationCallFlag
-FNDA:264,DeBridgeFacet.validateDestinationCallFlag
-DA:161,264
-DA:163,1
-BRDA:163,2,0,1
-DA:164,1
-FNF:5
-FNH:4
-LF:21
-LH:19
-BRF:4
-BRH:3
-end_of_record
-TN:
-SF:src/Facets/DexManagerFacet.sol
-FN:27,DexManagerFacet.addDex
-FNDA:4,DexManagerFacet.addDex
-DA:28,4
-BRDA:28,0,0,-
-DA:29,0
-DA:32,4
-DA:34,2
-FN:39,DexManagerFacet.batchAddDex
-FNDA:4,DexManagerFacet.batchAddDex
-DA:40,4
-BRDA:40,1,0,-
-DA:41,0
-DA:43,4
-DA:45,4
-DA:46,12
-DA:47,12
-BRDA:47,2,0,-
-DA:48,0
-DA:50,12
-DA:51,12
-DA:52,10
-DA:54,10
-FN:61,DexManagerFacet.removeDex
-FNDA:1,DexManagerFacet.removeDex
-DA:62,1
-BRDA:62,4,0,-
-DA:63,0
-DA:65,1
-DA:66,1
-FN:71,DexManagerFacet.batchRemoveDex
-FNDA:1,DexManagerFacet.batchRemoveDex
-DA:72,1
-BRDA:72,5,0,-
-DA:73,0
-DA:75,1
-DA:76,1
-DA:77,2
-DA:78,2
-DA:80,2
-FN:88,DexManagerFacet.setFunctionApprovalBySignature
-FNDA:1,DexManagerFacet.setFunctionApprovalBySignature
-DA:92,1
-BRDA:92,6,0,-
-DA:93,0
-DA:96,1
-BRDA:96,7,0,1
-BRDA:96,7,1,-
-DA:97,1
-DA:99,0
-DA:102,1
-FN:108,DexManagerFacet.batchSetFunctionApprovalBySignature
-FNDA:1,DexManagerFacet.batchSetFunctionApprovalBySignature
-DA:112,1
-BRDA:112,8,0,-
-DA:113,0
-DA:115,1
-DA:116,1
-DA:117,5
-DA:118,5
-BRDA:118,9,0,5
-BRDA:118,9,1,-
-DA:119,5
-DA:121,0
-DA:123,5
-DA:125,5
-FN:133,DexManagerFacet.isFunctionApproved
-FNDA:6,DexManagerFacet.isFunctionApproved
-DA:136,6
-FN:141,DexManagerFacet.approvedDexs
-FNDA:4,DexManagerFacet.approvedDexs
-DA:146,4
-FNF:8
-FNH:8
-LF:44
-LH:35
-BRF:11
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/DiamondCutFacet.sol
-FN:18,DiamondCutFacet.diamondCut
-FNDA:1597,DiamondCutFacet.diamondCut
-DA:23,1597
-DA:24,1596
-FNF:1
-FNH:1
-LF:2
-LH:2
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/DiamondLoupeFacet.sol
-FN:24,DiamondLoupeFacet.facets
-FNDA:0,DiamondLoupeFacet.facets
-DA:25,0
-DA:26,0
-DA:27,0
-DA:28,0
-DA:29,0
-DA:30,0
-DA:31,0
-DA:35,0
-FN:43,DiamondLoupeFacet.facetFunctionSelectors
-FNDA:0,DiamondLoupeFacet.facetFunctionSelectors
-DA:51,0
-DA:52,0
-FN:59,DiamondLoupeFacet.facetAddresses
-FNDA:0,DiamondLoupeFacet.facetAddresses
-DA:65,0
-DA:66,0
-FN:73,DiamondLoupeFacet.facetAddress
-FNDA:0,DiamondLoupeFacet.facetAddress
-DA:76,0
-DA:77,0
-FN:83,DiamondLoupeFacet.supportsInterface
-FNDA:0,DiamondLoupeFacet.supportsInterface
-DA:86,0
-DA:87,0
-FNF:5
-FNH:0
-LF:16
-LH:0
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/GenericSwapFacet.sol
-FN:27,GenericSwapFacet.swapTokensGeneric
-FNDA:19,GenericSwapFacet.swapTokensGeneric
-DA:35,19
-BRDA:35,0,0,-
-DA:36,0
-DA:39,19
-DA:45,19
-DA:47,19
-DA:49,19
-FNF:1
-FNH:1
-LF:6
-LH:5
-BRF:1
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/GenericSwapFacetV3.sol
-FN:25,GenericSwapFacetV3.
-FNDA:0,GenericSwapFacetV3.
-DA:26,0
-FN:40,GenericSwapFacetV3.swapTokensSingleV3ERC20ToERC20
-FNDA:7,GenericSwapFacetV3.swapTokensSingleV3ERC20ToERC20
-DA:48,7
-DA:50,6
-DA:51,6
-DA:54,6
-DA:59,6
-DA:63,5
-DA:66,5
-DA:67,5
-DA:77,5
-FN:96,GenericSwapFacetV3.swapTokensSingleV3ERC20ToNative
-FNDA:6,GenericSwapFacetV3.swapTokensSingleV3ERC20ToNative
-DA:104,6
-DA:107,4
-DA:110,4
-DA:115,3
-DA:116,3
-DA:119,2
-DA:120,2
-DA:121,2
-DA:131,2
-FN:150,GenericSwapFacetV3.swapTokensSingleV3NativeToERC20
-FNDA:7,GenericSwapFacetV3.swapTokensSingleV3NativeToERC20
-DA:158,7
-DA:161,7
-DA:167,6
-DA:170,6
-BRDA:170,4,0,1
-DA:171,1
-DA:174,5
-DA:177,4
-DA:178,4
-DA:183,4
-DA:187,3
-DA:190,3
-DA:191,3
-DA:201,3
-FN:222,GenericSwapFacetV3.swapTokensMultipleV3ERC20ToNative
-FNDA:5,GenericSwapFacetV3.swapTokensMultipleV3ERC20ToNative
-DA:230,5
-DA:231,5
-DA:232,5
-FN:249,GenericSwapFacetV3.swapTokensMultipleV3ERC20ToERC20
-FNDA:10,GenericSwapFacetV3.swapTokensMultipleV3ERC20ToERC20
-DA:257,10
-DA:258,10
-DA:259,6
-FN:276,GenericSwapFacetV3.swapTokensMultipleV3NativeToERC20
-FNDA:5,GenericSwapFacetV3.swapTokensMultipleV3NativeToERC20
-DA:284,5
-DA:285,4
-FN:296,GenericSwapFacetV3._depositMultipleERC20Tokens
-FNDA:15,GenericSwapFacetV3._depositMultipleERC20Tokens
-DA:300,15
-DA:301,15
-DA:304,15
-DA:305,30
-DA:306,15
-BRDA:306,6,0,15
-DA:309,15
-DA:316,30
-FN:321,GenericSwapFacetV3._depositAndSwapERC20Single
-FNDA:13,GenericSwapFacetV3._depositAndSwapERC20Single
-DA:325,13
-DA:326,13
-DA:328,13
-DA:331,13
-DA:332,13
-DA:333,13
-DA:335,13
-DA:340,12
-DA:344,11
-DA:350,11
-BRDA:350,9,0,8
-DA:352,8
-DA:354,8
-DA:359,11
-DA:360,11
-BRDA:360,11,0,1
-DA:361,1
-DA:364,10
-FN:371,GenericSwapFacetV3._executeSwaps
-FNDA:20,GenericSwapFacetV3._executeSwaps
-DA:377,20
-DA:378,20
-DA:379,20
-DA:380,20
-DA:381,20
-DA:382,20
-DA:383,20
-DA:384,20
-DA:387,20
-DA:388,37
-DA:389,37
-DA:390,37
-DA:391,37
-DA:395,37
-DA:396,35
-DA:399,2
-BRDA:399,12,0,2
-DA:400,2
-DA:405,35
-DA:406,1
-DA:407,1
-BRDA:407,13,0,1
-DA:408,1
-DA:411,34
-BRDA:411,14,0,4
-BRDA:411,14,1,26
-DA:414,7
-DA:417,7
-BRDA:417,15,0,1
-DA:418,1
-DA:423,6
-DA:428,27
-DA:432,27
-BRDA:432,17,0,25
-DA:433,25
-DA:434,25
-DA:441,27
-DA:444,27
-BRDA:444,18,0,1
-DA:445,1
-DA:450,26
-DA:458,32
-DA:471,32
-FN:476,GenericSwapFacetV3._transferERC20TokensAndEmitEvent
-FNDA:10,GenericSwapFacetV3._transferERC20TokensAndEmitEvent
-DA:485,10
-DA:487,10
-DA:490,10
-DA:494,9
-DA:497,9
-FN:509,GenericSwapFacetV3._transferNativeTokensAndEmitEvent
-FNDA:5,GenericSwapFacetV3._transferNativeTokensAndEmitEvent
-DA:517,5
-DA:520,5
-DA:525,4
-DA:526,4
-BRDA:526,22,0,1
-DA:527,1
-DA:531,3
-FN:544,GenericSwapFacetV3._returnPositiveSlippageERC20
-FNDA:29,GenericSwapFacetV3._returnPositiveSlippageERC20
-DA:549,29
-BRDA:549,23,0,29
-DA:550,29
-DA:554,29
-BRDA:554,24,0,5
-DA:555,5
-FN:561,GenericSwapFacetV3._returnPositiveSlippageNative
-FNDA:9,GenericSwapFacetV3._returnPositiveSlippageNative
-DA:563,9
-DA:565,9
-BRDA:565,25,0,2
-DA:567,2
-DA:568,2
-FNF:14
-FNH:13
-LF:118
-LH:117
-BRF:15
-BRH:15
-end_of_record
-TN:
-SF:src/Facets/GnosisBridgeFacet.sol
-FN:32,GnosisBridgeFacet.
-FNDA:0,GnosisBridgeFacet.
-DA:33,0
-FN:40,GnosisBridgeFacet.startBridgeTokensViaXDaiBridge
-FNDA:264,GnosisBridgeFacet.startBridgeTokensViaXDaiBridge
-DA:51,259
-DA:52,258
-FN:58,GnosisBridgeFacet.swapAndStartBridgeTokensViaXDaiBridge
-FNDA:5,GnosisBridgeFacet.swapAndStartBridgeTokensViaXDaiBridge
-DA:72,2
-DA:79,1
-FN:86,GnosisBridgeFacet._startBridge
-FNDA:259,GnosisBridgeFacet._startBridge
-DA:87,259
-DA:92,259
-DA:93,258
-FNF:4
-FNH:3
-LF:8
-LH:7
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/GnosisBridgeL2Facet.sol
-FN:37,GnosisBridgeL2Facet.
-FNDA:0,GnosisBridgeL2Facet.
-DA:38,0
-FN:45,GnosisBridgeL2Facet.startBridgeTokensViaXDaiBridge
-FNDA:6,GnosisBridgeL2Facet.startBridgeTokensViaXDaiBridge
-DA:58,1
-FN:64,GnosisBridgeL2Facet.swapAndStartBridgeTokensViaXDaiBridge
-FNDA:5,GnosisBridgeL2Facet.swapAndStartBridgeTokensViaXDaiBridge
-DA:78,2
-DA:85,1
-FN:92,GnosisBridgeL2Facet._startBridge
-FNDA:2,GnosisBridgeL2Facet._startBridge
-DA:93,2
-DA:96,2
-FNF:4
-FNH:3
-LF:6
-LH:5
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/HopFacet.sol
-FN:54,HopFacet.initHop
-FNDA:27,HopFacet.initHop
-DA:55,27
-DA:57,27
-DA:59,27
-DA:60,75
-BRDA:60,0,0,-
-DA:61,0
-DA:63,75
-DA:66,27
-FN:74,HopFacet.registerBridge
-FNDA:3,HopFacet.registerBridge
-DA:75,3
-DA:77,2
-DA:79,2
-BRDA:79,1,0,1
-DA:80,1
-DA:83,1
-DA:85,1
-FN:91,HopFacet.startBridgeTokensViaHop
-FNDA:269,HopFacet.startBridgeTokensViaHop
-DA:103,263
-DA:107,261
-FN:114,HopFacet.swapAndStartBridgeTokensViaHop
-FNDA:8,HopFacet.swapAndStartBridgeTokensViaHop
-DA:127,4
-DA:134,3
-FN:142,HopFacet._startBridge
-FNDA:264,HopFacet._startBridge
-DA:146,264
-DA:147,264
-DA:148,264
-DA:151,264
-DA:157,264
-DA:161,264
-BRDA:161,2,0,-
-BRDA:161,2,1,1
-DA:163,263
-DA:175,1
-DA:186,264
-FN:190,HopFacet.getStorage
-FNDA:293,HopFacet.getStorage
-DA:191,293
-DA:194,293
-FNF:6
-FNH:6
-LF:28
-LH:27
-BRF:4
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/HopFacetOptimized.sol
-FN:34,HopFacetOptimized.setApprovalForBridges
-FNDA:72,HopFacetOptimized.setApprovalForBridges
-DA:38,72
-DA:39,72
-DA:41,232
-FN:52,HopFacetOptimized.startBridgeTokensViaHopL1ERC20
-FNDA:260,HopFacetOptimized.startBridgeTokensViaHopL1ERC20
-DA:57,260
-DA:64,259
-DA:73,257
-FN:79,HopFacetOptimized.startBridgeTokensViaHopL1Native
-FNDA:1,HopFacetOptimized.startBridgeTokensViaHopL1Native
-DA:84,1
-DA:95,1
-FN:102,HopFacetOptimized.swapAndStartBridgeTokensViaHopL1ERC20
-FNDA:4,HopFacetOptimized.swapAndStartBridgeTokensViaHopL1ERC20
-DA:108,4
-DA:117,3
-DA:126,2
-FN:133,HopFacetOptimized.swapAndStartBridgeTokensViaHopL1Native
-FNDA:1,HopFacetOptimized.swapAndStartBridgeTokensViaHopL1Native
-DA:139,1
-DA:148,1
-DA:160,1
-FN:166,HopFacetOptimized.startBridgeTokensViaHopL2ERC20
-FNDA:260,HopFacetOptimized.startBridgeTokensViaHopL2ERC20
-DA:171,260
-DA:178,259
-DA:188,257
-FN:194,HopFacetOptimized.startBridgeTokensViaHopL2Native
-FNDA:1,HopFacetOptimized.startBridgeTokensViaHopL2Native
-DA:199,1
-DA:209,1
-FN:216,HopFacetOptimized.swapAndStartBridgeTokensViaHopL2ERC20
-FNDA:5,HopFacetOptimized.swapAndStartBridgeTokensViaHopL2ERC20
-DA:222,5
-DA:229,4
-DA:239,2
-FN:246,HopFacetOptimized.swapAndStartBridgeTokensViaHopL2Native
-FNDA:1,HopFacetOptimized.swapAndStartBridgeTokensViaHopL2Native
-DA:252,1
-DA:259,1
-DA:269,1
-FNF:9
-FNH:9
-LF:25
-LH:25
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/HopFacetPacked.sol
-FN:39,HopFacetPacked.
-FNDA:0,HopFacetPacked.
-DA:43,0
-DA:45,0
-BRDA:45,0,0,-
-DA:46,0
-DA:49,0
-DA:52,0
-DA:55,0
-DA:58,0
-FN:69,HopFacetPacked.setApprovalForHopBridges
-FNDA:32,HopFacetPacked.setApprovalForHopBridges
-DA:73,32
-DA:75,32
-DA:77,160
-FN:87,HopFacetPacked.startBridgeTokensViaHopL2NativePacked
-FNDA:3,HopFacetPacked.startBridgeTokensViaHopL2NativePacked
-DA:96,3
-DA:97,3
-DA:98,3
-DA:101,3
-DA:104,3
-DA:114,3
-DA:123,3
-FN:137,HopFacetPacked.startBridgeTokensViaHopL2NativeMin
-FNDA:2,HopFacetPacked.startBridgeTokensViaHopL2NativeMin
-DA:148,2
-DA:159,2
-FN:168,HopFacetPacked.encode_startBridgeTokensViaHopL2NativePacked
-FNDA:16,HopFacetPacked.encode_startBridgeTokensViaHopL2NativePacked
-DA:175,16
-BRDA:175,1,0,-
-BRDA:175,1,1,16
-DA:179,16
-BRDA:179,2,0,-
-BRDA:179,2,1,16
-DA:183,16
-BRDA:183,3,0,-
-BRDA:183,3,1,16
-DA:188,16
-DA:189,16
-FN:201,HopFacetPacked.decode_startBridgeTokensViaHopL2NativePacked
-FNDA:1,HopFacetPacked.decode_startBridgeTokensViaHopL2NativePacked
-DA:208,1
-BRDA:208,4,0,-
-BRDA:208,4,1,1
-DA:213,1
-DA:214,1
-DA:216,1
-DA:217,1
-DA:218,1
-DA:219,1
-DA:220,1
-DA:222,1
-FN:227,HopFacetPacked.startBridgeTokensViaHopL2ERC20Packed
-FNDA:4,HopFacetPacked.startBridgeTokensViaHopL2ERC20Packed
-DA:241,4
-DA:242,4
-DA:243,4
-DA:244,4
-DA:246,4
-DA:251,4
-DA:258,4
-DA:268,4
-DA:277,4
-FN:291,HopFacetPacked.startBridgeTokensViaHopL2ERC20Min
-FNDA:4,HopFacetPacked.startBridgeTokensViaHopL2ERC20Min
-DA:304,4
-DA:311,4
-DA:322,4
-FN:336,HopFacetPacked.encode_startBridgeTokensViaHopL2ERC20Packed
-FNDA:32,HopFacetPacked.encode_startBridgeTokensViaHopL2ERC20Packed
-DA:348,32
-BRDA:348,5,0,-
-BRDA:348,5,1,32
-DA:352,32
-BRDA:352,6,0,-
-BRDA:352,6,1,32
-DA:356,32
-BRDA:356,7,0,-
-BRDA:356,7,1,32
-DA:360,32
-BRDA:360,8,0,-
-BRDA:360,8,1,32
-DA:364,32
-BRDA:364,9,0,-
-BRDA:364,9,1,32
-DA:368,32
-BRDA:368,10,0,-
-BRDA:368,10,1,32
-DA:373,32
-DA:374,32
-FN:391,HopFacetPacked.decode_startBridgeTokensViaHopL2ERC20Packed
-FNDA:2,HopFacetPacked.decode_startBridgeTokensViaHopL2ERC20Packed
-DA:398,2
-BRDA:398,11,0,-
-BRDA:398,11,1,2
-DA:403,2
-DA:404,2
-DA:406,2
-DA:407,2
-DA:408,2
-DA:409,2
-DA:410,2
-DA:411,2
-DA:412,2
-DA:413,2
-DA:416,2
-DA:417,2
-DA:419,2
-FN:424,HopFacetPacked.startBridgeTokensViaHopL1NativePacked
-FNDA:3,HopFacetPacked.startBridgeTokensViaHopL1NativePacked
-DA:436,3
-DA:448,3
-FN:459,HopFacetPacked.startBridgeTokensViaHopL1NativeMin
-FNDA:2,HopFacetPacked.startBridgeTokensViaHopL1NativeMin
-DA:469,2
-DA:479,2
-FN:490,HopFacetPacked.encode_startBridgeTokensViaHopL1NativePacked
-FNDA:16,HopFacetPacked.encode_startBridgeTokensViaHopL1NativePacked
-DA:499,16
-BRDA:499,12,0,-
-BRDA:499,12,1,16
-DA:503,16
-BRDA:503,13,0,-
-BRDA:503,13,1,16
-DA:507,16
-BRDA:507,14,0,-
-BRDA:507,14,1,16
-DA:512,16
-DA:513,16
-FN:527,HopFacetPacked.decode_startBridgeTokensViaHopL1NativePacked
-FNDA:1,HopFacetPacked.decode_startBridgeTokensViaHopL1NativePacked
-DA:534,1
-BRDA:534,15,0,-
-BRDA:534,15,1,1
-DA:539,1
-DA:540,1
-DA:542,1
-DA:543,1
-DA:544,1
-DA:545,1
-DA:550,1
-DA:552,1
-FN:557,HopFacetPacked.startBridgeTokensViaHopL1ERC20Packed
-FNDA:4,HopFacetPacked.startBridgeTokensViaHopL1ERC20Packed
-DA:570,4
-DA:573,4
-DA:580,4
-DA:590,4
-FN:603,HopFacetPacked.startBridgeTokensViaHopL1ERC20Min
-FNDA:4,HopFacetPacked.startBridgeTokensViaHopL1ERC20Min
-DA:615,4
-DA:622,4
-DA:632,4
-FN:645,HopFacetPacked.encode_startBridgeTokensViaHopL1ERC20Packed
-FNDA:32,HopFacetPacked.encode_startBridgeTokensViaHopL1ERC20Packed
-DA:656,32
-BRDA:656,16,0,-
-BRDA:656,16,1,32
-DA:660,32
-BRDA:660,17,0,-
-BRDA:660,17,1,32
-DA:664,32
-BRDA:664,18,0,-
-BRDA:664,18,1,32
-DA:668,32
-BRDA:668,19,0,-
-BRDA:668,19,1,32
-DA:673,32
-DA:674,32
-FN:690,HopFacetPacked.decode_startBridgeTokensViaHopL1ERC20Packed
-FNDA:2,HopFacetPacked.decode_startBridgeTokensViaHopL1ERC20Packed
-DA:697,2
-BRDA:697,20,0,-
-BRDA:697,20,1,2
-DA:702,2
-DA:703,2
-DA:705,2
-DA:706,2
-DA:707,2
-DA:708,2
-DA:709,2
-DA:710,2
-DA:715,2
-DA:717,2
-FNF:18
-FNH:17
-LF:109
-LH:102
-BRF:41
-BRH:20
-end_of_record
-TN:
-SF:src/Facets/HyphenFacet.sol
-FN:25,HyphenFacet.
-FNDA:0,HyphenFacet.
-DA:26,0
-FN:33,HyphenFacet.startBridgeTokensViaHyphen
-FNDA:264,HyphenFacet.startBridgeTokensViaHyphen
-DA:44,259
-DA:48,258
-FN:54,HyphenFacet.swapAndStartBridgeTokensViaHyphen
-FNDA:6,HyphenFacet.swapAndStartBridgeTokensViaHyphen
-DA:66,3
-DA:72,2
-FN:79,HyphenFacet._startBridge
-FNDA:260,HyphenFacet._startBridge
-DA:80,260
-BRDA:80,0,0,-
-BRDA:80,0,1,2
-DA:82,258
-DA:88,258
-DA:96,2
-DA:103,260
-FNF:4
-FNH:3
-LF:10
-LH:9
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/LIFuelFacet.sol
-FN:32,LIFuelFacet.startBridgeTokensViaLIFuel
-FNDA:263,LIFuelFacet.startBridgeTokensViaLIFuel
-DA:43,259
-DA:47,258
-FN:53,LIFuelFacet.swapAndStartBridgeTokensViaLIFuel
-FNDA:6,LIFuelFacet.swapAndStartBridgeTokensViaLIFuel
-DA:65,3
-DA:72,2
-FN:79,LIFuelFacet._startBridge
-FNDA:260,LIFuelFacet._startBridge
-DA:80,260
-DA:84,260
-BRDA:84,0,0,-
-BRDA:84,0,1,258
-DA:85,2
-DA:93,258
-DA:99,258
-DA:107,260
-FN:111,LIFuelFacet.getStorage
-FNDA:260,LIFuelFacet.getStorage
-DA:112,260
-DA:115,260
-FNF:4
-FNH:4
-LF:12
-LH:12
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/MakerTeleportFacet.sol
-FN:43,MakerTeleportFacet.
-FNDA:0,MakerTeleportFacet.
-DA:49,0
-DA:50,0
-DA:51,0
-DA:52,0
-FN:59,MakerTeleportFacet.startBridgeTokensViaMakerTeleport
-FNDA:263,MakerTeleportFacet.startBridgeTokensViaMakerTeleport
-DA:70,258
-DA:71,257
-FN:77,MakerTeleportFacet.swapAndStartBridgeTokensViaMakerTeleport
-FNDA:5,MakerTeleportFacet.swapAndStartBridgeTokensViaMakerTeleport
-DA:91,2
-DA:98,1
-FN:105,MakerTeleportFacet._startBridge
-FNDA:258,MakerTeleportFacet._startBridge
-DA:106,258
-DA:112,258
-DA:118,258
-FNF:4
-FNH:3
-LF:11
-LH:7
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/MayanFacet.sol
-FN:53,MayanFacet.
-FNDA:0,MayanFacet.
-DA:54,0
-FN:62,MayanFacet.startBridgeTokensViaMayan
-FNDA:265,MayanFacet.startBridgeTokensViaMayan
-DA:74,260
-DA:79,259
-BRDA:79,0,0,1
-DA:81,1
-DA:87,259
-FN:94,MayanFacet.swapAndStartBridgeTokensViaMayan
-FNDA:9,MayanFacet.swapAndStartBridgeTokensViaMayan
-DA:107,6
-DA:114,5
-DA:115,5
-DA:116,5
-DA:121,5
-DA:127,5
-BRDA:127,1,0,3
-DA:129,3
-DA:135,5
-FN:143,MayanFacet._startBridge
-FNDA:264,MayanFacet._startBridge
-DA:148,264
-BRDA:148,2,0,1
-BRDA:148,2,1,263
-DA:149,1
-BRDA:149,3,0,-
-DA:150,0
-DA:155,1
-DA:156,1
-BRDA:156,4,0,1
-DA:157,1
-DA:163,263
-DA:166,263
-BRDA:166,5,0,-
-DA:167,0
-DA:171,263
-DA:173,263
-BRDA:173,6,0,-
-BRDA:173,6,1,3
-DA:174,260
-DA:180,260
-DA:188,3
-DA:194,263
-BRDA:194,7,0,-
-DA:195,0
-DA:202,263
-FN:208,MayanFacet._parseReceiver
-FNDA:264,MayanFacet._parseReceiver
-DA:211,264
-DA:214,264
-DA:216,264
-DA:219,264
-DA:221,0
-DA:223,264
-DA:225,0
-DA:227,264
-DA:229,259
-DA:231,5
-DA:233,2
-DA:235,3
-DA:237,3
-DA:239,0
-DA:241,0
-DA:243,0
-DA:245,0
-DA:247,0
-DA:248,0
-FN:256,MayanFacet._normalizeAmount
-FNDA:6,MayanFacet._normalizeAmount
-DA:260,6
-BRDA:260,8,0,4
-DA:261,4
-DA:262,4
-DA:264,6
-FN:271,MayanFacet._replaceInputAmount
-FNDA:3,MayanFacet._replaceInputAmount
-DA:275,3
-BRDA:275,9,0,-
-BRDA:275,9,1,3
-DA:276,3
-DA:277,3
-DA:282,3
-DA:284,3
-DA:285,3
-BRDA:285,10,0,1
-BRDA:285,10,1,2
-DA:286,1
-DA:288,2
-DA:292,3
-DA:293,524
-DA:297,3
-DA:298,3
-DA:299,96
-DA:303,3
-DA:304,992
-DA:307,3
-FNF:7
-FNH:6
-LF:69
-LH:57
-BRF:15
-BRH:10
-end_of_record
-TN:
-SF:src/Facets/MultichainFacet.sol
-FN:60,MultichainFacet.initMultichain
-FNDA:26,MultichainFacet.initMultichain
-DA:64,26
-DA:66,26
-DA:68,26
-DA:70,26
-DA:71,26
-DA:72,76
-BRDA:72,0,0,-
-DA:73,0
-DA:75,76
-DA:77,76
-DA:81,26
-FN:88,MultichainFacet.updateAddressMappings
-FNDA:25,MultichainFacet.updateAddressMappings
-DA:89,25
-DA:91,24
-DA:93,24
-DA:94,48
-DA:97,48
-DA:101,24
-FN:107,MultichainFacet.registerRouters
-FNDA:2,MultichainFacet.registerRouters
-DA:111,2
-DA:113,1
-DA:115,1
-DA:116,1
-DA:117,3
-BRDA:117,1,0,-
-DA:118,0
-DA:120,3
-DA:123,3
-DA:126,1
-FN:132,MultichainFacet.startBridgeTokensViaMultichain
-FNDA:267,MultichainFacet.startBridgeTokensViaMultichain
-DA:144,262
-DA:145,262
-BRDA:145,2,0,2
-DA:146,2
-DA:148,260
-DA:154,259
-FN:161,MultichainFacet.swapAndStartBridgeTokensViaMultichain
-FNDA:6,MultichainFacet.swapAndStartBridgeTokensViaMultichain
-DA:174,3
-DA:176,3
-BRDA:176,4,0,-
-DA:177,0
-DA:180,3
-DA:186,2
-FN:194,MultichainFacet._startBridge
-FNDA:261,MultichainFacet._startBridge
-DA:199,261
-BRDA:199,5,0,-
-BRDA:199,5,1,258
-DA:200,1
-DA:205,260
-DA:206,260
-BRDA:206,6,0,-
-BRDA:206,6,1,258
-DA:208,2
-DA:217,258
-DA:223,258
-DA:228,258
-DA:239,261
-FN:243,MultichainFacet.getStorage
-FNDA:576,MultichainFacet.getStorage
-DA:244,576
-DA:247,576
-FNF:7
-FNH:7
-LF:46
-LH:43
-BRF:8
-BRH:3
-end_of_record
-TN:
-SF:src/Facets/NonStandardSelectorsRegistryFacet.sol
-FN:23,NonStandardSelectorsRegistryFacet.setNonStandardSelector
-FNDA:2,NonStandardSelectorsRegistryFacet.setNonStandardSelector
-DA:27,2
-DA:28,1
-DA:29,1
-FN:35,NonStandardSelectorsRegistryFacet.batchSetNonStandardSelectors
-FNDA:2,NonStandardSelectorsRegistryFacet.batchSetNonStandardSelectors
-DA:39,2
-DA:40,1
-DA:41,1
-BRDA:41,0,0,-
-BRDA:41,0,1,1
-DA:45,1
-DA:46,2
-FN:53,NonStandardSelectorsRegistryFacet.isNonStandardSelector
-FNDA:3,NonStandardSelectorsRegistryFacet.isNonStandardSelector
-DA:56,3
-FN:62,NonStandardSelectorsRegistryFacet.getStorage
-FNDA:5,NonStandardSelectorsRegistryFacet.getStorage
-DA:63,5
-DA:65,5
-FNF:4
-FNH:4
-LF:11
-LH:11
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/OmniBridgeFacet.sol
-FN:29,OmniBridgeFacet.
-FNDA:0,OmniBridgeFacet.
-DA:30,0
-DA:31,0
-FN:38,OmniBridgeFacet.startBridgeTokensViaOmniBridge
-FNDA:527,OmniBridgeFacet.startBridgeTokensViaOmniBridge
-DA:49,517
-DA:53,515
-FN:59,OmniBridgeFacet.swapAndStartBridgeTokensViaOmniBridge
-FNDA:11,OmniBridgeFacet.swapAndStartBridgeTokensViaOmniBridge
-DA:71,5
-DA:77,3
-FN:84,OmniBridgeFacet._startBridge
-FNDA:518,OmniBridgeFacet._startBridge
-DA:85,518
-BRDA:85,0,0,-
-BRDA:85,0,1,516
-DA:86,2
-DA:90,516
-DA:95,516
-DA:102,518
-FNF:4
-FNH:3
-LF:11
-LH:9
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/OptimismBridgeFacet.sol
-FN:57,OptimismBridgeFacet.initOptimism
-FNDA:7,OptimismBridgeFacet.initOptimism
-DA:61,7
-DA:63,7
-DA:65,0
-BRDA:65,0,0,-
-DA:66,0
-DA:69,7
-DA:70,7
-BRDA:70,1,0,-
-DA:71,0
-DA:73,7
-DA:78,7
-DA:79,7
-DA:81,7
-FN:89,OptimismBridgeFacet.registerOptimismBridge
-FNDA:0,OptimismBridgeFacet.registerOptimismBridge
-DA:90,0
-DA:92,0
-DA:94,0
-DA:96,0
-BRDA:96,3,0,-
-DA:97,0
-DA:100,0
-DA:102,0
-FN:108,OptimismBridgeFacet.startBridgeTokensViaOptimismBridge
-FNDA:6,OptimismBridgeFacet.startBridgeTokensViaOptimismBridge
-DA:120,3
-DA:124,1
-FN:131,OptimismBridgeFacet.swapAndStartBridgeTokensViaOptimismBridge
-FNDA:1,OptimismBridgeFacet.swapAndStartBridgeTokensViaOptimismBridge
-DA:144,1
-DA:150,1
-FN:158,OptimismBridgeFacet._startBridge
-FNDA:2,OptimismBridgeFacet._startBridge
-DA:162,2
-DA:163,2
-DA:166,2
-DA:172,2
-BRDA:172,4,0,-
-BRDA:172,4,1,2
-DA:173,0
-DA:179,2
-DA:185,2
-BRDA:185,5,0,-
-BRDA:185,5,1,2
-DA:186,0
-DA:188,2
-DA:199,2
-FN:203,OptimismBridgeFacet.getStorage
-FNDA:9,OptimismBridgeFacet.getStorage
-DA:204,9
-DA:207,9
-FNF:6
-FNH:5
-LF:34
-LH:22
-BRF:7
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/OwnershipFacet.sol
-FN:43,OwnershipFacet.transferOwnership
-FNDA:5,OwnershipFacet.transferOwnership
-DA:44,5
-DA:45,4
-DA:47,4
-DA:49,3
-DA:52,2
-DA:53,2
-FN:57,OwnershipFacet.cancelOwnershipTransfer
-FNDA:0,OwnershipFacet.cancelOwnershipTransfer
-DA:58,0
-DA:59,0
-DA:61,0
-DA:63,0
-FN:67,OwnershipFacet.confirmOwnershipTransfer
-FNDA:2,OwnershipFacet.confirmOwnershipTransfer
-DA:68,2
-DA:69,2
-DA:70,2
-DA:71,1
-DA:72,1
-DA:73,1
-FN:78,OwnershipFacet.owner
-FNDA:3,OwnershipFacet.owner
-DA:79,3
-FN:85,OwnershipFacet.getStorage
-FNDA:6,OwnershipFacet.getStorage
-DA:86,6
-DA:89,6
-FNF:5
-FNH:4
-LF:19
-LH:15
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/PeripheryRegistryFacet.sol
-FN:31,PeripheryRegistryFacet.registerPeripheryContract
-FNDA:22,PeripheryRegistryFacet.registerPeripheryContract
-DA:35,22
-DA:36,22
-DA:37,22
-DA:38,22
-FN:43,PeripheryRegistryFacet.getPeripheryContract
-FNDA:2,PeripheryRegistryFacet.getPeripheryContract
-DA:46,2
-FN:50,PeripheryRegistryFacet.getStorage
-FNDA:24,PeripheryRegistryFacet.getStorage
-DA:51,24
-DA:54,24
-FNF:3
-FNH:3
-LF:7
-LH:7
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Facets/PolygonBridgeFacet.sol
-FN:29,PolygonBridgeFacet.
-FNDA:0,PolygonBridgeFacet.
-DA:30,0
-DA:31,0
-FN:38,PolygonBridgeFacet.startBridgeTokensViaPolygonBridge
-FNDA:264,PolygonBridgeFacet.startBridgeTokensViaPolygonBridge
-DA:49,259
-DA:53,258
-FN:59,PolygonBridgeFacet.swapAndStartBridgeTokensViaPolygonBridge
-FNDA:6,PolygonBridgeFacet.swapAndStartBridgeTokensViaPolygonBridge
-DA:71,3
-DA:77,2
-FN:84,PolygonBridgeFacet._startBridge
-FNDA:260,PolygonBridgeFacet._startBridge
-DA:85,260
-DA:87,260
-BRDA:87,0,0,-
-BRDA:87,0,1,258
-DA:88,2
-DA:92,258
-DA:96,258
-DA:102,258
-DA:103,258
-DA:110,260
-FNF:4
-FNH:3
-LF:14
-LH:12
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/SquidFacet.sol
-FN:67,SquidFacet.
-FNDA:0,SquidFacet.
-DA:68,0
-FN:76,SquidFacet.startBridgeTokensViaSquid
-FNDA:7,SquidFacet.startBridgeTokensViaSquid
-DA:87,3
-DA:92,3
-FN:99,SquidFacet.swapAndStartBridgeTokensViaSquid
-FNDA:5,SquidFacet.swapAndStartBridgeTokensViaSquid
-DA:112,2
-DA:120,1
-FN:128,SquidFacet._startBridge
-FNDA:4,SquidFacet._startBridge
-DA:132,4
-DA:139,4
-BRDA:139,0,0,2
-DA:140,2
-DA:148,4
-BRDA:148,1,0,1
-BRDA:148,1,1,-
-DA:149,1
-DA:150,3
-BRDA:150,2,0,-
-BRDA:150,2,1,-
-DA:151,0
-DA:152,3
-BRDA:152,3,0,3
-BRDA:152,3,1,-
-DA:153,3
-DA:155,0
-DA:158,4
-FN:161,SquidFacet._bridgeCall
-FNDA:1,SquidFacet._bridgeCall
-DA:162,1
-FN:173,SquidFacet._callBridge
-FNDA:0,SquidFacet._callBridge
-DA:174,0
-FN:186,SquidFacet._callBridgeCall
-FNDA:3,SquidFacet._callBridgeCall
-DA:187,3
-FN:202,SquidFacet._calculateMsgValue
-FNDA:4,SquidFacet._calculateMsgValue
-DA:206,4
-DA:207,4
-BRDA:207,4,0,2
-DA:208,2
-DA:210,4
-FNF:8
-FNH:6
-LF:23
-LH:19
-BRF:8
-BRH:4
-end_of_record
-TN:
-SF:src/Facets/StandardizedCallFacet.sol
-FN:15,StandardizedCallFacet.standardizedCall
-FNDA:2,StandardizedCallFacet.standardizedCall
-DA:16,2
-FN:21,StandardizedCallFacet.standardizedSwapCall
-FNDA:2,StandardizedCallFacet.standardizedSwapCall
-DA:22,2
-FN:27,StandardizedCallFacet.standardizedBridgeCall
-FNDA:2,StandardizedCallFacet.standardizedBridgeCall
-DA:28,2
-FN:33,StandardizedCallFacet.standardizedSwapAndBridgeCall
-FNDA:2,StandardizedCallFacet.standardizedSwapAndBridgeCall
-DA:36,2
-FN:39,StandardizedCallFacet.execute
-FNDA:8,StandardizedCallFacet.execute
-DA:42,8
-DA:43,8
-DA:47,8
-BRDA:47,0,0,4
-DA:48,4
-DA:55,4
-DA:64,4
-DA:67,4
-DA:68,0
-DA:70,4
-DA:71,4
-FNF:5
-FNH:5
-LF:14
-LH:13
-BRF:1
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/StargateFacet.sol
-FN:80,StargateFacet.
-FNDA:0,StargateFacet.
-DA:81,0
-FN:88,StargateFacet.initStargate
-FNDA:23,StargateFacet.initStargate
-DA:89,23
-DA:91,22
-DA:93,22
-DA:94,66
-DA:98,22
-DA:100,22
-FN:108,StargateFacet.startBridgeTokensViaStargate
-FNDA:268,StargateFacet.startBridgeTokensViaStargate
-DA:119,264
-DA:120,263
-DA:124,262
-FN:131,StargateFacet.swapAndStartBridgeTokensViaStargate
-FNDA:6,StargateFacet.swapAndStartBridgeTokensViaStargate
-DA:143,3
-DA:144,3
-DA:152,2
-FN:155,StargateFacet.quoteLayerZeroFee
-FNDA:46,StargateFacet.quoteLayerZeroFee
-DA:159,46
-DA:160,46
-FN:178,StargateFacet._startBridge
-FNDA:264,StargateFacet._startBridge
-DA:182,264
-BRDA:182,0,0,-
-BRDA:182,0,1,259
-DA:183,3
-DA:201,261
-DA:207,261
-DA:224,262
-DA:226,262
-FN:229,StargateFacet.validateDestinationCallFlag
-FNDA:267,StargateFacet.validateDestinationCallFlag
-DA:234,267
-DA:236,1
-BRDA:236,1,0,1
-DA:237,1
-FN:247,StargateFacet.setLayerZeroChainId
-FNDA:2,StargateFacet.setLayerZeroChainId
-DA:251,2
-DA:252,1
-DA:254,1
-BRDA:254,2,0,-
-DA:255,0
-DA:258,1
-DA:259,1
-FN:265,StargateFacet.getLayerZeroChainId
-FNDA:310,StargateFacet.getLayerZeroChainId
-DA:268,310
-DA:269,310
-DA:270,310
-DA:271,310
-FN:274,StargateFacet.toBytes
-FNDA:310,StargateFacet.toBytes
-DA:275,310
-FN:279,StargateFacet.getStorage
-FNDA:333,StargateFacet.getStorage
-DA:280,333
-DA:283,333
-FNF:11
-FNH:10
-LF:37
-LH:35
-BRF:4
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/StargateFacetV2.sol
-FN:40,StargateFacetV2.
-FNDA:4,StargateFacetV2.
-DA:41,4
-FN:49,StargateFacetV2.startBridgeTokensViaStargate
-FNDA:23,StargateFacetV2.startBridgeTokensViaStargate
-DA:60,19
-DA:64,18
-FN:71,StargateFacetV2.swapAndStartBridgeTokensViaStargate
-FNDA:10,StargateFacetV2.swapAndStartBridgeTokensViaStargate
-DA:83,7
-DA:91,6
-FN:99,StargateFacetV2._startBridge
-FNDA:24,StargateFacetV2._startBridge
-DA:105,24
-DA:113,18
-DA:119,17
-DA:122,17
-DA:126,16
-DA:127,16
-BRDA:127,3,0,5
-BRDA:127,3,1,10
-DA:130,5
-DA:134,11
-DA:135,11
-DA:140,11
-BRDA:140,4,0,10
-DA:142,10
-BRDA:142,5,0,2
-DA:143,2
-DA:146,10
-DA:151,16
-DA:154,16
-DA:160,14
-FNF:4
-FNH:4
-LF:21
-LH:21
-BRF:4
-BRH:4
-end_of_record
-TN:
-SF:src/Facets/SymbiosisFacet.sol
-FN:49,SymbiosisFacet.
-FNDA:0,SymbiosisFacet.
-DA:53,0
-DA:54,0
-FN:62,SymbiosisFacet.startBridgeTokensViaSymbiosis
-FNDA:264,SymbiosisFacet.startBridgeTokensViaSymbiosis
-DA:74,259
-DA:79,258
-FN:88,SymbiosisFacet.swapAndStartBridgeTokensViaSymbiosis
-FNDA:6,SymbiosisFacet.swapAndStartBridgeTokensViaSymbiosis
-DA:100,3
-DA:107,2
-FN:113,SymbiosisFacet._startBridge
-FNDA:260,SymbiosisFacet._startBridge
-DA:117,260
-DA:118,260
-DA:120,260
-BRDA:120,0,0,2
-BRDA:120,0,1,258
-DA:121,2
-DA:123,258
-DA:130,260
-DA:144,260
-FNF:4
-FNH:3
-LF:13
-LH:11
-BRF:2
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/SynapseBridgeFacet.sol
-FN:37,SynapseBridgeFacet.
-FNDA:0,SynapseBridgeFacet.
-DA:38,0
-FN:46,SynapseBridgeFacet.startBridgeTokensViaSynapseBridge
-FNDA:264,SynapseBridgeFacet.startBridgeTokensViaSynapseBridge
-DA:58,259
-DA:63,258
-FN:70,SynapseBridgeFacet.swapAndStartBridgeTokensViaSynapseBridge
-FNDA:6,SynapseBridgeFacet.swapAndStartBridgeTokensViaSynapseBridge
-DA:83,3
-DA:90,2
-FN:98,SynapseBridgeFacet._startBridge
-FNDA:260,SynapseBridgeFacet._startBridge
-DA:102,260
-DA:103,260
-DA:105,260
-BRDA:105,0,0,2
-BRDA:105,0,1,258
-DA:106,2
-DA:107,2
-DA:109,258
-DA:116,260
-DA:125,260
-FNF:4
-FNH:3
-LF:13
-LH:12
-BRF:2
-BRH:2
-end_of_record
-TN:
-SF:src/Facets/ThorSwapFacet.sol
-FN:31,ThorSwapFacet.
-FNDA:0,ThorSwapFacet.
-DA:32,0
-FN:38,ThorSwapFacet.startBridgeTokensViaThorSwap
-FNDA:264,ThorSwapFacet.startBridgeTokensViaThorSwap
-DA:50,259
-DA:54,258
-FN:61,ThorSwapFacet.swapAndStartBridgeTokensViaThorSwap
-FNDA:6,ThorSwapFacet.swapAndStartBridgeTokensViaThorSwap
-DA:74,3
-DA:80,2
-FN:86,ThorSwapFacet._startBridge
-FNDA:260,ThorSwapFacet._startBridge
-DA:90,260
-DA:91,260
-DA:93,260
-BRDA:93,0,0,258
-DA:94,258
-DA:100,260
-DA:110,260
-FNF:4
-FNH:3
-LF:11
-LH:10
-BRF:1
-BRH:1
-end_of_record
-TN:
-SF:src/Facets/WithdrawFacet.sol
-FN:35,WithdrawFacet.executeCallAndWithdraw
-FNDA:5,WithdrawFacet.executeCallAndWithdraw
-DA:42,5
-BRDA:42,0,0,2
-DA:43,2
-DA:47,3
-DA:48,3
-DA:49,3
-DA:52,3
-DA:54,3
-BRDA:54,2,0,2
-BRDA:54,2,1,1
-DA:55,2
-DA:57,1
-FN:65,WithdrawFacet.withdraw
-FNDA:0,WithdrawFacet.withdraw
-DA:70,0
-BRDA:70,3,0,-
-DA:71,0
-DA:73,0
-FN:82,WithdrawFacet._withdrawAsset
-FNDA:2,WithdrawFacet._withdrawAsset
-DA:87,2
-DA:88,2
-DA:89,2
-FNF:3
-FNH:2
-LF:15
-LH:12
-BRF:4
-BRH:3
-end_of_record
-TN:
-SF:src/Helpers/CelerIMFacetBase.sol
-FN:69,CelerIMFacetBase.
-FNDA:0,CelerIMFacetBase.
-DA:76,0
-DA:83,0
-DA:84,0
-FN:92,CelerIMFacetBase.startBridgeTokensViaCelerIM
-FNDA:271,CelerIMFacetBase.startBridgeTokensViaCelerIM
-DA:103,267
-DA:104,266
-BRDA:104,0,0,262
-DA:106,262
-DA:109,262
-DA:110,262
-DA:118,261
-DA:120,0
-BRDA:120,1,0,-
-DA:121,0
-DA:125,265
-FN:132,CelerIMFacetBase.swapAndStartBridgeTokensViaCelerIM
-FNDA:9,CelerIMFacetBase.swapAndStartBridgeTokensViaCelerIM
-DA:144,5
-DA:146,5
-DA:154,4
-BRDA:154,2,0,2
-DA:156,2
-DA:159,2
-DA:160,2
-DA:167,2
-DA:169,0
-BRDA:169,3,0,-
-DA:170,0
-DA:174,4
-FN:182,CelerIMFacetBase._startBridge
-FNDA:269,CelerIMFacetBase._startBridge
-DA:188,269
-DA:193,269
-BRDA:193,4,0,1
-BRDA:193,4,1,2
-DA:195,267
-DA:203,2
-DA:206,2
-DA:209,2
-DA:216,2
-DA:227,2
-DA:231,268
-FN:237,CelerIMFacetBase._getRightAsset
-FNDA:264,CelerIMFacetBase._getRightAsset
-DA:240,264
-BRDA:240,5,0,-
-BRDA:240,5,1,-
-DA:242,0
-DA:245,264
-FN:249,CelerIMFacetBase.validateDestinationCallFlag
-FNDA:272,CelerIMFacetBase.validateDestinationCallFlag
-DA:254,272
-DA:256,1
-BRDA:256,6,0,1
-DA:257,1
-FNF:6
-FNH:5
-LF:37
-LH:29
-BRF:9
-BRH:5
-end_of_record
-TN:
-SF:src/Helpers/ExcessivelySafeCall.sol
-FN:28,ExcessivelySafeCall.excessivelySafeCall
-FNDA:0,ExcessivelySafeCall.excessivelySafeCall
-DA:36,0
-DA:37,0
-DA:38,0
-DA:44,0
-DA:54,0
-DA:55,0
-BRDA:55,0,0,-
-DA:56,0
-DA:59,0
-DA:61,0
-DA:63,0
-FN:81,ExcessivelySafeCall.excessivelySafeStaticCall
-FNDA:0,ExcessivelySafeCall.excessivelySafeStaticCall
-DA:88,0
-DA:89,0
-DA:90,0
-DA:96,0
-DA:105,0
-DA:106,0
-BRDA:106,1,0,-
-DA:107,0
-DA:110,0
-DA:112,0
-DA:114,0
-FN:126,ExcessivelySafeCall.swapSelector
-FNDA:0,ExcessivelySafeCall.swapSelector
-DA:130,0
-BRDA:130,2,0,-
-DA:131,0
-DA:133,0
-DA:136,0
-DA:139,0
-DA:140,0
-DA:141,0
-FNF:3
-FNH:0
-LF:27
-LH:0
-BRF:3
-BRH:0
-end_of_record
-TN:
-SF:src/Helpers/ReentrancyGuard.sol
-FN:29,ReentrancyGuard.nonReentrant
-FNDA:3329,ReentrancyGuard.nonReentrant
-DA:30,3329
-DA:31,3329
-DA:32,3327
-DA:34,3173
-FN:40,ReentrancyGuard.reentrancyStorage
-FNDA:6357,ReentrancyGuard.reentrancyStorage
-DA:45,6357
-DA:48,6357
-FNF:2
-FNH:2
-LF:6
-LH:6
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Helpers/SwapperV2.sol
-FN:30,SwapperV2.noLeftovers
-FNDA:68,SwapperV2.noLeftovers
-DA:35,68
-DA:36,68
-BRDA:36,0,0,4
-BRDA:36,0,1,15
-DA:37,18
-DA:38,18
-DA:42,18
-DA:43,18
-DA:45,18
-BRDA:45,1,0,15
-DA:46,15
-DA:49,15
-BRDA:49,2,0,4
-DA:50,4
-DA:58,18
-FN:71,SwapperV2.noLeftoversReserve
-FNDA:29,SwapperV2.noLeftoversReserve
-DA:77,29
-DA:78,29
-BRDA:78,3,0,-
-BRDA:78,3,1,-
-DA:79,0
-DA:80,0
-DA:84,0
-DA:85,0
-DA:87,0
-BRDA:87,4,0,-
-DA:88,0
-DA:91,0
-DA:94,0
-BRDA:94,5,0,-
-DA:95,0
-DA:103,0
-FN:114,SwapperV2.refundExcessNative
-FNDA:2799,SwapperV2.refundExcessNative
-DA:115,2799
-DA:117,2655
-DA:119,2655
-BRDA:119,6,0,6
-DA:120,6
-FN:136,SwapperV2._depositAndSwap
-FNDA:87,SwapperV2._depositAndSwap
-DA:142,87
-DA:144,87
-BRDA:144,7,0,19
-DA:145,19
-DA:148,68
-DA:149,68
-DA:151,68
-BRDA:151,8,0,20
-DA:152,20
-DA:155,68
-DA:157,68
-DA:158,68
-DA:165,68
-DA:168,68
-BRDA:168,9,0,-
-DA:169,0
-DA:172,68
-FN:181,SwapperV2._depositAndSwap
-FNDA:39,SwapperV2._depositAndSwap
-DA:188,39
-DA:190,39
-BRDA:190,10,0,10
-DA:191,10
-DA:194,29
-DA:195,29
-DA:197,29
-BRDA:197,11,0,12
-DA:198,12
-DA:201,29
-DA:203,29
-DA:204,29
-DA:209,29
-DA:211,29
-DA:214,29
-BRDA:214,12,0,12
-DA:215,12
-DA:218,29
-BRDA:218,13,0,-
-DA:219,0
-DA:222,29
-FN:232,SwapperV2._executeSwaps
-FNDA:68,SwapperV2._executeSwaps
-DA:238,18
-DA:239,18
-DA:240,36
-DA:243,36
-DA:251,36
-DA:254,36
-FN:262,SwapperV2._executeSwaps
-FNDA:29,SwapperV2._executeSwaps
-DA:275,0
-DA:276,0
-DA:277,0
-DA:280,0
-DA:288,0
-DA:291,0
-FN:299,SwapperV2._fetchBalances
-FNDA:97,SwapperV2._fetchBalances
-DA:302,97
-DA:303,97
-DA:304,97
-DA:305,97
-DA:306,115
-DA:307,115
-DA:309,115
-BRDA:309,16,0,35
-DA:310,35
-DA:314,115
-DA:318,97
-FNF:8
-FNH:8
-LF:80
-LH:62
-BRF:17
-BRH:11
-end_of_record
-TN:
-SF:src/Helpers/TransferrableOwnership.sol
-FN:24,TransferrableOwnership.
-FNDA:87,TransferrableOwnership.
-DA:25,87
-FN:28,TransferrableOwnership.onlyOwner
-FNDA:8,TransferrableOwnership.onlyOwner
-DA:29,8
-FN:35,TransferrableOwnership.transferOwnership
-FNDA:20,TransferrableOwnership.transferOwnership
-DA:36,16
-DA:37,12
-DA:38,8
-DA:39,8
-FN:43,TransferrableOwnership.cancelOwnershipTransfer
-FNDA:0,TransferrableOwnership.cancelOwnershipTransfer
-DA:44,0
-DA:46,0
-FN:50,TransferrableOwnership.confirmOwnershipTransfer
-FNDA:8,TransferrableOwnership.confirmOwnershipTransfer
-DA:51,8
-DA:52,8
-DA:53,4
-DA:54,4
-DA:55,4
-FNF:5
-FNH:4
-LF:13
-LH:11
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Helpers/Validatable.sol
-FN:11,Validatable.validateBridgeData
-FNDA:3279,Validatable.validateBridgeData
-DA:12,3279
-BRDA:12,0,0,27
-DA:13,27
-DA:15,3252
-BRDA:15,1,0,27
-DA:16,27
-DA:18,3225
-BRDA:18,2,0,27
-DA:19,27
-FN:24,Validatable.noNativeAsset
-FNDA:3,Validatable.noNativeAsset
-DA:25,3
-BRDA:25,3,0,-
-DA:26,0
-FN:31,Validatable.onlyAllowSourceToken
-FNDA:522,Validatable.onlyAllowSourceToken
-DA:35,522
-BRDA:35,4,0,-
-DA:36,0
-FN:41,Validatable.onlyAllowDestinationChain
-FNDA:262,Validatable.onlyAllowDestinationChain
-DA:45,262
-BRDA:45,5,0,-
-DA:46,0
-FN:51,Validatable.containsSourceSwaps
-FNDA:171,Validatable.containsSourceSwaps
-DA:52,171
-BRDA:52,6,0,-
-DA:53,0
-FN:58,Validatable.doesNotContainSourceSwaps
-FNDA:6116,Validatable.doesNotContainSourceSwaps
-DA:59,28
-BRDA:59,7,0,28
-DA:60,28
-FN:65,Validatable.doesNotContainDestinationCalls
-FNDA:2689,Validatable.doesNotContainDestinationCalls
-DA:68,11
-BRDA:68,8,0,11
-DA:69,11
-FNF:7
-FNH:7
-LF:18
-LH:14
-BRF:9
-BRH:5
-end_of_record
-TN:
-SF:src/LiFiDiamond.sol
-FN:13,LiFiDiamond.
-FNDA:4,LiFiDiamond.
-DA:14,2
-DA:17,2
-DA:18,2
-DA:19,2
-DA:20,2
-DA:25,2
-FN:31,LiFiDiamond.
-FNDA:12505,LiFiDiamond.
-DA:32,12505
-DA:33,12505
-DA:38,12505
-DA:42,12505
-DA:44,12505
-BRDA:44,0,0,2
-DA:45,2
-DA:52,12503
-DA:54,12503
-DA:56,12503
-DA:59,12503
-DA:60,365
-DA:62,12138
-DA:63,12138
-FNF:2
-FNH:2
-LF:19
-LH:19
-BRF:1
-BRH:1
-end_of_record
-TN:
-SF:src/LiFiDiamondImmutable.sol
-FN:13,LiFiDiamondImmutable.
-FNDA:4,LiFiDiamondImmutable.
-DA:14,2
-DA:17,2
-DA:18,2
-DA:19,2
-DA:20,2
-DA:25,2
-FN:31,LiFiDiamondImmutable.
-FNDA:4,LiFiDiamondImmutable.
-DA:32,4
-DA:33,4
-DA:38,4
-DA:42,4
-DA:44,4
-BRDA:44,0,0,2
-DA:45,2
-DA:52,2
-DA:54,2
-DA:56,2
-DA:59,2
-DA:60,1
-DA:62,1
-DA:63,1
-FNF:2
-FNH:2
-LF:19
-LH:19
-BRF:1
-BRH:1
-end_of_record
-TN:
-SF:src/Libraries/LibAccess.sol
-FN:24,LibAccess.accessStorage
-FNDA:8,LibAccess.accessStorage
-DA:29,8
-DA:32,8
-FN:39,LibAccess.addAccess
-FNDA:2,LibAccess.addAccess
-DA:40,2
-BRDA:40,0,0,-
-DA:41,0
-DA:43,2
-DA:44,2
-DA:45,2
-FN:51,LibAccess.removeAccess
-FNDA:1,LibAccess.removeAccess
-DA:52,1
-DA:53,1
-DA:54,1
-FN:59,LibAccess.enforceAccessControl
-FNDA:5,LibAccess.enforceAccessControl
-DA:60,5
-DA:61,5
-FNF:4
-FNH:4
-LF:12
-LH:11
-BRF:1
-BRH:0
-end_of_record
-TN:
-SF:src/Libraries/LibAllowList.sol
-FN:22,LibAllowList.addAllowedContract
-FNDA:850,LibAllowList.addAllowedContract
-DA:23,850
-DA:25,846
-DA:29,732
-DA:30,732
-FN:35,LibAllowList.contractIsAllowed
-FNDA:281,LibAllowList.contractIsAllowed
-DA:38,281
-FN:43,LibAllowList.removeAllowedContract
-FNDA:6,LibAllowList.removeAllowedContract
-DA:44,6
-DA:46,6
-BRDA:46,1,0,-
-DA:47,0
-DA:50,6
-DA:52,6
-DA:54,6
-DA:55,7
-BRDA:55,2,0,6
-DA:57,6
-DA:59,6
-DA:60,6
-FN:66,LibAllowList.getAllowedContracts
-FNDA:4,LibAllowList.getAllowedContracts
-DA:67,4
-FN:72,LibAllowList.addAllowedSelector
-FNDA:2538,LibAllowList.addAllowedSelector
-DA:73,2538
-FN:78,LibAllowList.removeAllowedSelector
-FNDA:0,LibAllowList.removeAllowedSelector
-DA:79,0
-FN:84,LibAllowList.selectorIsAllowed
-FNDA:174,LibAllowList.selectorIsAllowed
-DA:85,174
-FN:89,LibAllowList._getStorage
-FNDA:3849,LibAllowList._getStorage
-DA:94,3849
-DA:97,3849
-FN:103,LibAllowList._checkAddress
-FNDA:850,LibAllowList._checkAddress
-DA:104,850
-DA:106,848
-FNF:9
-FNH:8
-LF:23
-LH:21
-BRF:2
-BRH:1
-end_of_record
-TN:
-SF:src/Libraries/LibAsset.sol
-FN:25,LibAsset.getOwnBalance
-FNDA:826,LibAsset.getOwnBalance
-DA:26,826
-DA:27,826
-FN:36,LibAsset.transferNativeAsset
-FNDA:24,LibAsset.transferNativeAsset
-DA:40,24
-DA:41,24
-DA:44,24
-DA:45,24
-FN:53,LibAsset.maxApproveERC20
-FNDA:6619,LibAsset.maxApproveERC20
-DA:58,6619
-BRDA:58,3,0,6619
-DA:59,6619
-DA:61,6616
-BRDA:61,4,0,-
-DA:62,0
-DA:65,6616
-BRDA:65,5,0,6611
-DA:66,6611
-DA:67,6611
-FN:76,LibAsset.transferERC20
-FNDA:47,LibAsset.transferERC20
-DA:81,47
-BRDA:81,6,0,-
-DA:82,0
-DA:84,47
-BRDA:84,7,0,-
-DA:85,0
-DA:88,47
-DA:89,47
-BRDA:89,8,0,-
-DA:90,0
-DA:92,47
-FN:100,LibAsset.transferFromERC20
-FNDA:6575,LibAsset.transferFromERC20
-DA:106,6575
-BRDA:106,9,0,-
-DA:107,0
-DA:109,6575
-BRDA:109,10,0,-
-DA:110,0
-DA:113,6575
-DA:114,6575
-DA:115,6575
-DA:116,6572
-BRDA:116,11,0,-
-DA:117,0
-FN:121,LibAsset.depositAsset
-FNDA:6122,LibAsset.depositAsset
-DA:122,6122
-DA:123,6122
-BRDA:123,13,0,3
-BRDA:123,13,1,6053
-DA:124,43
-DA:126,6079
-DA:127,6079
-DA:128,6053
-FN:132,LibAsset.depositAssets
-FNDA:97,LibAsset.depositAssets
-DA:133,97
-DA:134,115
-DA:135,98
-BRDA:135,16,0,98
-DA:136,98
-DA:139,115
-FN:147,LibAsset.isNativeAsset
-FNDA:26954,LibAsset.isNativeAsset
-DA:148,26954
-FN:158,LibAsset.transferAsset
-FNDA:71,LibAsset.transferAsset
-DA:163,71
-FN:169,LibAsset.isContract
-FNDA:146,LibAsset.isContract
-DA:170,146
-DA:173,146
-DA:175,146
-FNF:10
-FNH:10
-LF:46
-LH:39
-BRF:12
-BRH:5
-end_of_record
-TN:
-SF:src/Libraries/LibBytes.sol
-FN:16,LibBytes.slice
-FNDA:35,LibBytes.slice
-DA:21,35
-DA:22,35
-DA:24,35
-DA:28,35
-DA:31,35
-DA:41,35
-DA:47,35
-DA:51,35
-DA:63,968
-DA:64,933
-DA:65,933
-DA:66,933
-DA:67,933
-DA:70,35
-DA:74,35
-DA:77,0
-DA:78,0
-DA:81,0
-DA:83,0
-DA:87,35
-FN:90,LibBytes.toAddress
-FNDA:0,LibBytes.toAddress
-DA:94,0
-BRDA:94,2,0,-
-DA:95,0
-DA:97,0
-DA:100,0
-DA:106,0
-FN:111,LibBytes.toHexString
-FNDA:12,LibBytes.toHexString
-DA:115,12
-DA:116,12
-DA:117,12
-DA:118,12
-DA:119,480
-DA:120,480
-DA:122,12
-BRDA:122,3,0,-
-BRDA:122,3,1,12
-DA:123,12
-FNF:3
-FNH:2
-LF:33
-LH:24
-BRF:3
-BRH:1
-end_of_record
-TN:
-SF:src/Libraries/LibDiamond.sol
-FN:53,LibDiamond.diamondStorage
-FNDA:4991,LibDiamond.diamondStorage
-DA:58,4991
-DA:61,4991
-FN:70,LibDiamond.setContractOwner
-FNDA:5,LibDiamond.setContractOwner
-DA:71,5
-DA:72,5
-DA:73,5
-DA:74,5
-FN:77,LibDiamond.contractOwner
-FNDA:24,LibDiamond.contractOwner
-DA:78,24
-FN:81,LibDiamond.enforceIsContractOwner
-FNDA:1818,LibDiamond.enforceIsContractOwner
-DA:82,1818
-FN:93,LibDiamond.diamondCut
-FNDA:1600,LibDiamond.diamondCut
-DA:98,1600
-DA:99,3136
-DA:100,3136
-BRDA:100,1,0,-
-BRDA:100,1,1,-
-DA:101,3136
-DA:105,0
-BRDA:105,2,0,-
-BRDA:105,2,1,-
-DA:106,0
-DA:110,0
-BRDA:110,3,0,-
-BRDA:110,3,1,-
-DA:111,0
-DA:116,0
-DA:119,3136
-DA:122,1600
-DA:123,1600
-FN:126,LibDiamond.addFunctions
-FNDA:3136,LibDiamond.addFunctions
-DA:130,3136
-BRDA:130,4,0,-
-DA:131,0
-DA:133,3136
-DA:134,3136
-BRDA:134,5,0,-
-DA:135,0
-DA:137,3136
-DA:141,3136
-BRDA:141,6,0,3136
-DA:142,3136
-DA:145,3136
-DA:146,15721
-DA:149,12585
-DA:150,12585
-DA:153,12585
-BRDA:153,7,0,-
-DA:154,0
-DA:156,12585
-DA:158,12585
-DA:159,12585
-FN:164,LibDiamond.replaceFunctions
-FNDA:0,LibDiamond.replaceFunctions
-DA:168,0
-BRDA:168,8,0,-
-DA:169,0
-DA:171,0
-DA:172,0
-BRDA:172,9,0,-
-DA:173,0
-DA:175,0
-DA:179,0
-BRDA:179,10,0,-
-DA:180,0
-DA:183,0
-DA:184,0
-DA:187,0
-DA:188,0
-DA:191,0
-BRDA:191,11,0,-
-DA:192,0
-DA:194,0
-DA:195,0
-DA:197,0
-DA:198,0
-FN:203,LibDiamond.removeFunctions
-FNDA:0,LibDiamond.removeFunctions
-DA:207,0
-BRDA:207,12,0,-
-DA:208,0
-DA:210,0
-DA:212,0
-BRDA:212,13,0,-
-DA:213,0
-DA:216,0
-DA:217,0
-DA:220,0
-DA:221,0
-DA:224,0
-DA:226,0
-FN:231,LibDiamond.addFacet
-FNDA:3136,LibDiamond.addFacet
-DA:235,3136
-DA:236,3136
-DA:239,3136
-FN:242,LibDiamond.addFunction
-FNDA:12585,LibDiamond.addFunction
-DA:248,12585
-DA:251,12585
-DA:254,12585
-FN:257,LibDiamond.removeFunction
-FNDA:0,LibDiamond.removeFunction
-DA:262,0
-BRDA:262,14,0,-
-DA:263,0
-DA:266,0
-BRDA:266,15,0,-
-DA:267,0
-DA:270,0
-DA:273,0
-DA:278,0
-BRDA:278,16,0,-
-DA:279,0
-DA:282,0
-DA:285,0
-DA:290,0
-DA:291,0
-DA:294,0
-BRDA:294,17,0,-
-DA:296,0
-DA:297,0
-DA:300,0
-BRDA:300,18,0,-
-DA:301,0
-DA:304,0
-DA:305,0
-DA:309,0
-DA:310,0
-FN:316,LibDiamond.initializeDiamondCut
-FNDA:1600,LibDiamond.initializeDiamondCut
-DA:320,1600
-BRDA:320,19,0,-
-BRDA:320,19,1,-
-DA:321,1592
-BRDA:321,20,0,-
-DA:322,0
-DA:325,8
-BRDA:325,21,0,-
-DA:326,0
-DA:328,8
-BRDA:328,22,0,8
-DA:329,8
-DA:332,8
-DA:333,8
-BRDA:333,23,0,-
-DA:334,0
-BRDA:334,24,0,-
-BRDA:334,24,1,-
-DA:336,0
-DA:338,0
-FN:344,LibDiamond.enforceHasContractCode
-FNDA:3144,LibDiamond.enforceHasContractCode
-DA:345,3144
-DA:348,3144
-DA:350,3144
-BRDA:350,25,0,-
-DA:351,0
-FNF:13
-FNH:10
-LF:109
-LH:45
-BRF:30
-BRH:2
-end_of_record
-TN:
-SF:src/Libraries/LibSwap.sol
-FN:30,LibSwap.swap
-FNDA:143,LibSwap.swap
-DA:31,143
-DA:32,143
-DA:33,143
-DA:34,143
-DA:37,143
-DA:40,143
-DA:44,143
-BRDA:44,2,0,120
-DA:45,120
-DA:52,143
-BRDA:52,3,0,3
-DA:53,3
-DA:60,140
-DA:63,140
-BRDA:63,4,0,1
-DA:64,1
-DA:67,139
-DA:69,139
-FNF:1
-FNH:1
-LF:15
-LH:15
-BRF:3
-BRH:3
-end_of_record
-TN:
-SF:src/Libraries/LibUtil.sol
-FN:9,LibUtil.getRevertMsg
-FNDA:0,LibUtil.getRevertMsg
-DA:13,0
-DA:14,0
-DA:15,0
-FN:21,LibUtil.isZeroAddress
-FNDA:23636,LibUtil.isZeroAddress
-DA:22,23636
-FN:25,LibUtil.revertWith
-FNDA:9,LibUtil.revertWith
-DA:27,9
-DA:28,9
-DA:29,9
-FNF:3
-FNH:2
-LF:7
-LH:4
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Libraries/OFTComposeMsgCodec.sol
-FN:22,OFTComposeMsgCodec.encode
-FNDA:3,OFTComposeMsgCodec.encode
-DA:28,3
-FN:36,OFTComposeMsgCodec.nonce
-FNDA:0,OFTComposeMsgCodec.nonce
-DA:37,0
-FN:45,OFTComposeMsgCodec.srcEid
-FNDA:0,OFTComposeMsgCodec.srcEid
-DA:46,0
-FN:54,OFTComposeMsgCodec.amountLD
-FNDA:2,OFTComposeMsgCodec.amountLD
-DA:55,2
-FN:63,OFTComposeMsgCodec.composeFrom
-FNDA:0,OFTComposeMsgCodec.composeFrom
-DA:64,0
-FN:72,OFTComposeMsgCodec.composeMsg
-FNDA:2,OFTComposeMsgCodec.composeMsg
-DA:75,2
-FN:83,OFTComposeMsgCodec.addressToBytes32
-FNDA:35,OFTComposeMsgCodec.addressToBytes32
-DA:84,35
-FN:92,OFTComposeMsgCodec.bytes32ToAddress
-FNDA:0,OFTComposeMsgCodec.bytes32ToAddress
-DA:93,0
-FNF:8
-FNH:4
-LF:8
-LH:4
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Periphery/ERC20Proxy.sol
-FN:22,ERC20Proxy.
-FNDA:3,ERC20Proxy.
-DA:23,3
-FN:29,ERC20Proxy.setAuthorizedCaller
-FNDA:6,ERC20Proxy.setAuthorizedCaller
-DA:33,6
-DA:34,6
-FN:42,ERC20Proxy.transferFrom
-FNDA:2,ERC20Proxy.transferFrom
-DA:48,2
-DA:50,2
-FNF:3
-FNH:3
-LF:5
-LH:5
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Periphery/Executor.sol
-FN:30,Executor.noLeftovers
-FNDA:13,Executor.noLeftovers
-DA:34,13
-DA:35,13
-BRDA:35,0,0,-
-BRDA:35,0,1,9
-DA:36,3
-DA:37,3
-DA:38,3
-DA:42,3
-DA:43,15
-DA:45,15
-BRDA:45,1,0,9
-DA:46,9
-DA:47,9
-BRDA:47,2,0,9
-DA:48,9
-DA:56,15
-FN:67,Executor.
-FNDA:0,Executor.
-DA:68,0
-DA:69,0
-FN:79,Executor.swapAndCompleteBridgeTokens
-FNDA:11,Executor.swapAndCompleteBridgeTokens
-DA:85,11
-FN:101,Executor.swapAndExecute
-FNDA:2,Executor.swapAndExecute
-DA:108,2
-FN:127,Executor._processSwaps
-FNDA:13,Executor._processSwaps
-DA:135,13
-DA:136,13
-DA:137,13
-DA:139,13
-BRDA:139,3,0,10
-BRDA:139,3,1,3
-DA:140,10
-DA:142,3
-DA:147,13
-BRDA:147,4,0,-
-BRDA:147,4,1,2
-DA:148,11
-DA:149,11
-BRDA:149,5,0,-
-BRDA:149,5,1,2
-DA:150,9
-DA:154,9
-DA:156,2
-DA:164,2
-DA:169,13
-DA:171,9
-DA:172,9
-BRDA:172,6,0,4
-DA:173,4
-DA:180,9
-DA:184,9
-BRDA:184,7,0,5
-DA:185,5
-DA:192,9
-FN:205,Executor._executeSwaps
-FNDA:13,Executor._executeSwaps
-DA:210,3
-DA:211,3
-DA:212,18
-BRDA:212,8,0,-
-DA:213,0
-DA:216,18
-DA:217,18
-DA:219,18
-FN:227,Executor._fetchBalances
-FNDA:3,Executor._fetchBalances
-DA:230,3
-DA:231,3
-DA:232,3
-DA:233,3
-DA:234,18
-DA:235,18
-DA:237,18
-BRDA:237,9,0,9
-DA:238,9
-DA:242,18
-DA:246,3
-FNF:7
-FNH:6
-LF:54
-LH:51
-BRF:14
-BRH:10
-end_of_record
-TN:
-SF:src/Periphery/FeeCollector.sol
-FN:44,FeeCollector.
-FNDA:26,FeeCollector.
-FN:53,FeeCollector.collectTokenFees
-FNDA:11,FeeCollector.collectTokenFees
-DA:59,11
-DA:60,11
-DA:61,11
-DA:62,11
-FN:74,FeeCollector.collectNativeFees
-FNDA:6,FeeCollector.collectNativeFees
-DA:79,6
-DA:81,6
-DA:82,6
-DA:83,6
-DA:85,6
-BRDA:85,1,0,1
-DA:87,1
-DA:90,1
-BRDA:90,2,0,-
-DA:91,0
-DA:94,6
-FN:104,FeeCollector.withdrawIntegratorFees
-FNDA:2,FeeCollector.withdrawIntegratorFees
-DA:105,2
-DA:106,2
-BRDA:106,3,0,1
-DA:107,1
-DA:109,1
-DA:110,1
-DA:111,1
-FN:116,FeeCollector.batchWithdrawIntegratorFees
-FNDA:1,FeeCollector.batchWithdrawIntegratorFees
-DA:119,1
-DA:120,1
-DA:121,1
-DA:122,2
-DA:123,2
-BRDA:123,4,0,2
-DA:124,2
-DA:125,2
-DA:130,2
-DA:133,2
-FN:140,FeeCollector.withdrawLifiFees
-FNDA:2,FeeCollector.withdrawLifiFees
-DA:141,1
-DA:142,1
-BRDA:142,5,0,-
-DA:143,0
-DA:145,1
-DA:146,1
-DA:147,1
-FN:152,FeeCollector.batchWithdrawLifiFees
-FNDA:2,FeeCollector.batchWithdrawLifiFees
-DA:155,1
-DA:156,1
-DA:157,1
-DA:158,2
-DA:159,2
-DA:160,2
-DA:165,2
-DA:167,2
-FN:175,FeeCollector.getTokenBalance
-FNDA:8,FeeCollector.getTokenBalance
-DA:179,8
-FN:184,FeeCollector.getLifiTokenBalance
-FNDA:8,FeeCollector.getLifiTokenBalance
-DA:187,8
-FNF:9
-FNH:9
-LF:44
-LH:42
-BRF:5
-BRH:3
-end_of_record
-TN:
-SF:src/Periphery/GasRebateDistributor.sol
-FN:39,GasRebateDistributor.
-FNDA:13,GasRebateDistributor.
-DA:45,13
-DA:46,13
-DA:47,13
-DA:48,13
-FN:56,GasRebateDistributor.claim
-FNDA:10,GasRebateDistributor.claim
-DA:61,9
-DA:65,8
-DA:68,7
-DA:69,7
-DA:73,4
-DA:76,4
-DA:78,4
-FN:85,GasRebateDistributor.withdrawUnclaimed
-FNDA:3,GasRebateDistributor.withdrawUnclaimed
-DA:89,1
-DA:91,1
-DA:96,1
-DA:100,1
-FN:109,GasRebateDistributor.updateMerkleRoot
-FNDA:3,GasRebateDistributor.updateMerkleRoot
-DA:115,2
-DA:118,2
-DA:121,2
-DA:124,2
-FN:128,GasRebateDistributor.pauseContract
-FNDA:3,GasRebateDistributor.pauseContract
-DA:129,3
-FN:133,GasRebateDistributor.unpauseContract
-FNDA:1,GasRebateDistributor.unpauseContract
-DA:134,1
-FNF:6
-FNH:6
-LF:21
-LH:21
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Periphery/LiFuelFeeCollector.sol
-FN:33,LiFuelFeeCollector.
-FNDA:20,LiFuelFeeCollector.
-FN:42,LiFuelFeeCollector.collectTokenGasFees
-FNDA:262,LiFuelFeeCollector.collectTokenGasFees
-DA:48,262
-DA:49,262
-FN:55,LiFuelFeeCollector.collectNativeGasFees
-FNDA:4,LiFuelFeeCollector.collectNativeGasFees
-DA:60,4
-DA:66,4
-DA:67,4
-BRDA:67,0,0,-
-DA:68,0
-DA:69,0
-BRDA:69,1,0,-
-DA:70,0
-FN:77,LiFuelFeeCollector.withdrawFees
-FNDA:2,LiFuelFeeCollector.withdrawFees
-DA:78,1
-DA:79,1
-DA:80,1
-FN:85,LiFuelFeeCollector.batchWithdrawFees
-FNDA:1,LiFuelFeeCollector.batchWithdrawFees
-DA:88,1
-DA:89,1
-DA:90,1
-DA:91,2
-DA:92,2
-DA:97,2
-DA:99,2
-FNF:5
-FNH:5
-LF:18
-LH:15
-BRF:2
-BRH:0
-end_of_record
-TN:
-SF:src/Periphery/Receiver.sol
-FN:33,Receiver.onlySGRouter
-FNDA:2,Receiver.onlySGRouter
-DA:34,2
-BRDA:34,0,0,-
-DA:35,0
-FN:39,Receiver.onlyAmarokRouter
-FNDA:2,Receiver.onlyAmarokRouter
-DA:40,2
-BRDA:40,1,0,-
-DA:41,0
-FN:47,Receiver.
-FNDA:0,Receiver.
-DA:54,0
-DA:55,0
-DA:56,0
-DA:57,0
-DA:58,0
-DA:59,0
-DA:60,0
-DA:61,0
-FN:74,Receiver.xReceive
-FNDA:2,Receiver.xReceive
-DA:82,2
-DA:87,2
-FN:105,Receiver.sgReceive
-FNDA:2,Receiver.sgReceive
-DA:113,2
-DA:118,2
-DA:123,2
-FN:138,Receiver.swapAndCompleteBridgeTokens
-FNDA:0,Receiver.swapAndCompleteBridgeTokens
-DA:144,0
-BRDA:144,2,0,-
-BRDA:144,2,1,-
-DA:145,0
-DA:154,0
-DA:158,0
-DA:159,0
-FN:174,Receiver.pullToken
-FNDA:2,Receiver.pullToken
-DA:179,1
-BRDA:179,3,0,-
-BRDA:179,3,1,-
-DA:181,0
-DA:182,0
-DA:184,1
-FN:197,Receiver._swapAndCompleteBridgeTokens
-FNDA:4,Receiver._swapAndCompleteBridgeTokens
-DA:205,4
-DA:207,4
-BRDA:207,5,0,-
-BRDA:207,5,1,2
-DA:209,0
-DA:210,0
-BRDA:210,6,0,-
-DA:213,0
-DA:214,0
-DA:216,0
-DA:223,0
-DA:229,0
-DA:233,0
-DA:235,0
-DA:236,0
-DA:238,0
-DA:248,4
-DA:249,4
-DA:250,4
-DA:252,4
-BRDA:252,9,0,1
-DA:254,1
-DA:256,1
-DA:263,1
-DA:267,3
-DA:269,3
-DA:272,0
-DA:273,1
-DA:274,1
-DA:283,3
-FNF:8
-FNH:6
-LF:52
-LH:23
-BRF:10
-BRH:2
-end_of_record
-TN:
-SF:src/Periphery/ReceiverStargateV2.sol
-FN:52,ReceiverStargateV2.onlyEndpointV2
-FNDA:5,ReceiverStargateV2.onlyEndpointV2
-DA:53,5
-BRDA:53,0,0,3
-DA:54,3
-FN:60,ReceiverStargateV2.
-FNDA:8,ReceiverStargateV2.
-DA:67,5
-DA:68,3
-DA:69,3
-DA:70,2
-DA:71,4
-FN:83,ReceiverStargateV2.lzCompose
-FNDA:5,ReceiverStargateV2.lzCompose
-DA:92,2
-DA:95,2
-DA:98,2
-DA:102,2
-DA:108,2
-FN:121,ReceiverStargateV2.pullToken
-FNDA:4,ReceiverStargateV2.pullToken
-DA:126,3
-BRDA:126,2,0,1
-BRDA:126,2,1,1
-DA:128,2
-DA:129,2
-DA:131,1
-FN:143,ReceiverStargateV2._swapAndCompleteBridgeTokens
-FNDA:2,ReceiverStargateV2._swapAndCompleteBridgeTokens
-DA:150,2
-DA:152,2
-BRDA:152,4,0,-
-BRDA:152,4,1,1
-DA:154,1
-BRDA:154,5,0,-
-DA:157,0
-DA:158,0
-DA:160,0
-DA:167,0
-DA:173,1
-DA:177,0
-DA:179,1
-DA:180,1
-DA:182,1
-DA:192,1
-DA:193,1
-DA:195,1
-BRDA:195,8,0,-
-DA:197,0
-DA:199,0
-DA:206,0
-DA:210,1
-DA:212,1
-DA:215,0
-DA:216,0
-DA:217,0
-DA:226,1
-FNF:5
-FNH:5
-LF:40
-LH:29
-BRF:7
-BRH:4
-end_of_record
-TN:
-SF:src/Periphery/RelayerCelerIM.sol
-FN:40,RelayerCelerIM.onlyCBridgeMessageBus
-FNDA:2,RelayerCelerIM.onlyCBridgeMessageBus
-DA:41,2
-FN:44,RelayerCelerIM.onlyDiamond
-FNDA:268,RelayerCelerIM.onlyDiamond
-DA:45,268
-FN:51,RelayerCelerIM.
-FNDA:0,RelayerCelerIM.
-DA:56,0
-DA:57,0
-DA:58,0
-FN:73,RelayerCelerIM.executeMessageWithTransfer
-FNDA:3,RelayerCelerIM.executeMessageWithTransfer
-DA:87,2
-DA:92,2
-DA:97,2
-DA:106,2
-FN:117,RelayerCelerIM.executeMessageWithTransferRefund
-FNDA:2,RelayerCelerIM.executeMessageWithTransferRefund
-DA:128,1
-DA:134,1
-DA:136,1
-DA:144,1
-FN:153,RelayerCelerIM.sendTokenTransfer
-FNDA:268,RelayerCelerIM.sendTokenTransfer
-DA:164,268
-BRDA:164,2,0,-
-BRDA:164,2,1,-
-DA:165,263
-DA:166,263
-BRDA:166,3,0,-
-BRDA:166,3,1,259
-DA:168,4
-DA:179,259
-DA:185,259
-DA:194,263
-DA:202,5
-BRDA:201,4,0,-
-BRDA:201,4,1,-
-DA:204,1
-DA:205,1
-DA:210,1
-DA:217,1
-DA:225,4
-BRDA:224,5,0,-
-BRDA:224,5,1,-
-DA:227,1
-DA:228,1
-DA:233,1
-DA:239,1
-DA:246,3
-BRDA:245,6,0,-
-BRDA:245,6,1,-
-DA:248,2
-DA:249,2
-BRDA:249,7,0,-
-BRDA:249,7,1,1
-DA:251,1
-DA:260,1
-DA:265,1
-DA:274,1
-BRDA:273,8,0,-
-BRDA:273,8,1,-
-DA:276,1
-DA:277,1
-DA:282,1
-DA:290,0
-BRDA:289,9,0,-
-BRDA:289,9,1,-
-DA:293,0
-DA:294,0
-DA:299,0
-DA:307,0
-FN:320,RelayerCelerIM.forwardSendMessageWithTransfer
-FNDA:2,RelayerCelerIM.forwardSendMessageWithTransfer
-DA:327,2
-FN:346,RelayerCelerIM._swapAndCompleteBridgeTokens
-FNDA:2,RelayerCelerIM._swapAndCompleteBridgeTokens
-DA:354,2
-DA:355,2
-DA:360,2
-BRDA:360,10,0,-
-BRDA:360,10,1,1
-DA:362,0
-DA:368,0
-DA:369,0
-DA:370,0
-DA:372,0
-DA:373,0
-BRDA:373,11,0,-
-DA:374,0
-DA:378,2
-DA:379,2
-DA:380,2
-DA:383,2
-DA:389,1
-DA:390,1
-DA:391,1
-DA:392,1
-DA:394,2
-DA:397,2
-BRDA:397,12,0,1
-DA:398,1
-FN:412,RelayerCelerIM.withdraw
-FNDA:0,RelayerCelerIM.withdraw
-DA:417,0
-BRDA:417,13,0,-
-BRDA:417,13,1,-
-DA:419,0
-DA:420,0
-BRDA:420,14,0,-
-DA:421,0
-DA:424,0
-DA:426,0
-FN:435,RelayerCelerIM.triggerRefund
-FNDA:1,RelayerCelerIM.triggerRefund
-DA:442,1
-DA:446,1
-DA:447,0
-DA:448,0
-DA:449,0
-DA:450,0
-DA:451,0
-BRDA:451,15,0,-
-DA:452,0
-DA:457,1
-DA:460,1
-BRDA:460,16,0,1
-BRDA:460,16,1,-
-DA:461,1
-DA:462,1
-DA:463,1
-DA:465,0
-FNF:10
-FNH:8
-LF:87
-LH:59
-BRF:26
-BRH:5
-end_of_record
-TN:
-SF:src/Periphery/ServiceFeeCollector.sol
-FN:39,ServiceFeeCollector.
-FNDA:20,ServiceFeeCollector.
-FN:47,ServiceFeeCollector.collectTokenInsuranceFees
-FNDA:4,ServiceFeeCollector.collectTokenInsuranceFees
-DA:52,4
-DA:53,4
-FN:58,ServiceFeeCollector.collectNativeInsuranceFees
-FNDA:2,ServiceFeeCollector.collectNativeInsuranceFees
-DA:59,2
-FN:68,ServiceFeeCollector.withdrawFees
-FNDA:2,ServiceFeeCollector.withdrawFees
-DA:69,1
-DA:70,1
-DA:71,1
-FN:76,ServiceFeeCollector.batchWithdrawFees
-FNDA:1,ServiceFeeCollector.batchWithdrawFees
-DA:79,1
-DA:80,1
-DA:81,1
-DA:82,2
-DA:83,2
-DA:88,2
-DA:90,2
-FNF:5
-FNH:5
-LF:13
-LH:13
-BRF:0
-BRH:0
-end_of_record
-TN:
-SF:src/Periphery/TokenWrapper.sol
-FN:27,TokenWrapper.
-FNDA:0,TokenWrapper.
-DA:28,0
-DA:29,0
-FN:35,TokenWrapper.deposit
-FNDA:1,TokenWrapper.deposit
-DA:36,1
-DA:37,1
-FN:41,TokenWrapper.withdraw
-FNDA:1,TokenWrapper.withdraw
-DA:46,1
-DA:47,1
-DA:48,1
-DA:49,1
-DA:50,1
-BRDA:50,0,0,-
-DA:51,0
-FNF:3
-FNH:2
-LF:10
-LH:7
-BRF:1
-BRH:0
-end_of_record
-TN:
diff --git a/networks b/networks
index 292ceb72f..25671c586 100644
--- a/networks
+++ b/networks
@@ -12,6 +12,7 @@ fraxtal
 fuse
 gnosis
 gravity
+immutablezkevm
 linea
 mantle
 metis
@@ -24,6 +25,7 @@ polygonzkevm
 rootstock
 scroll
 sei
+taiko
 zksync
 bsc-testnet
 lineatest
diff --git a/package.json b/package.json
index a9b161371..01d99889d 100644
--- a/package.json
+++ b/package.json
@@ -81,7 +81,8 @@
     "healthcheck": "tsx ./script/deploy/healthCheck.mts",
     "propose-safe-tx": "ts-node ./script/deploy/safe/propose-to-safe.ts",
     "confirm-safe-tx": "ts-node ./script/deploy/safe/confirm-safe-tx.ts",
-    "add-safe-owners": "ts-node ./script/deploy/safe/add-owners-to-safe.ts"
+    "add-safe-owners": "ts-node ./script/deploy/safe/add-owners-to-safe.ts",
+    "flatten": "forge flatten --output"
   },
   "dependencies": {
     "@arbitrum/sdk": "^3.0.0",
@@ -105,7 +106,7 @@
     "notify-send": "^0.1.2",
     "pino": "^7.9.2",
     "tsx": "^4.7.2",
-    "viem": "^2.11.1",
+    "viem": "^2.18.7",
     "zx": "^8.0.2"
   },
   "lint-staged": {
diff --git a/script/deploy/_targetState.json b/script/deploy/_targetState.json
index c6c06940c..c129e7483 100644
--- a/script/deploy/_targetState.json
+++ b/script/deploy/_targetState.json
@@ -5,15 +5,15 @@
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -21,10 +21,12 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AcrossFacet": "2.0.0",
         "AcrossFacetPacked": "1.0.0",
         "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "ArbitrumBridgeFacet": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
@@ -35,30 +37,34 @@
         "GnosisBridgeFacet": "1.0.0",
         "HopFacet": "2.0.0",
         "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "OmniBridgeFacet": "1.0.0",
         "OptimismBridgeFacet": "1.0.0",
         "PolygonBridgeFacet": "1.0.0",
         "SquidFacet": "1.0.0",
         "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
         "ThorSwapFacet": "1.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -66,10 +72,12 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AcrossFacet": "2.0.0",
         "AcrossFacetPacked": "1.0.0",
         "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "ArbitrumBridgeFacet": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
@@ -80,76 +88,20 @@
         "GnosisBridgeFacet": "1.0.0",
         "HopFacet": "2.0.0",
         "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "OmniBridgeFacet": "1.0.0",
         "OptimismBridgeFacet": "1.0.0",
         "PolygonBridgeFacet": "1.0.0",
         "SquidFacet": "1.0.0",
         "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
         "ThorSwapFacet": "1.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "ArbitrumBridgeFacet": "1.0.0",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "CircleBridgeFacet": "1.0.0",
-        "DeBridgeFacet": "1.0.0",
-        "GnosisBridgeFacet": "1.0.0",
-        "GravityFacet": "1.0.0",
-        "OmniBridgeFacet": "1.0.0",
-        "OptimismBridgeFacet": "1.0.0",
-        "PolygonBridgeFacet": "1.0.0",
-        "RoninBridgeFacet": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "SynapseBridgeFacet": "1.0.0",
-        "ThorSwapFacet": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "CCIPFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "CCIPFacet": "1.0.0"
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       }
     }
   },
@@ -159,15 +111,15 @@
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -175,10 +127,12 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AcrossFacet": "2.0.0",
         "AcrossFacetPacked": "1.0.0",
         "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
         "CelerCircleBridgeFacet": "1.0.1",
@@ -186,26 +140,30 @@
         "CelerIMFacetMutable": "2.0.0",
         "HopFacet": "2.0.0",
         "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
         "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -213,10 +171,12 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AcrossFacet": "2.0.0",
         "AcrossFacetPacked": "1.0.0",
         "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
         "CelerCircleBridgeFacet": "1.0.1",
@@ -224,28 +184,34 @@
         "CelerIMFacetImmutable": "2.0.0",
         "HopFacet": "2.0.0",
         "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
         "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       }
-    },
-    "staging": {
+    }
+  },
+  "bsc": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -253,37 +219,38 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetMutable": "2.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "OpBNBBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OpBNBBridgeFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
         "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "ThorSwapFacet": "1.2.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -291,41 +258,42 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetImmutable": "2.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "OpBNBBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OpBNBBridgeFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
         "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "ThorSwapFacet": "1.2.0"
       }
     }
   },
-  "base": {
+  "gnosis": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -333,33 +301,29 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "CircleBridgeFacet": "1.0.0",
+        "GnosisBridgeL2Facet": "1.0.0",
         "HopFacet": "2.0.0",
         "HopFacetPacked": "1.0.6",
-        "StargateFacet": "2.2.0",
         "HopFacetOptimized": "2.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "OmniBridgeFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -367,78 +331,33 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
         "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "CircleBridgeFacet": "1.0.0",
+        "GnosisBridgeL2Facet": "1.0.0",
         "HopFacet": "2.0.0",
         "HopFacetPacked": "1.0.6",
-        "StargateFacet": "2.2.0",
         "HopFacetOptimized": "2.0.0",
-        "SymbiosisFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "OmniBridgeFacet": "1.0.0"
       }
     }
   },
-  "bsc": {
+  "fantom": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -446,32 +365,28 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetMutable": "2.0.0",
         "HyphenFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "ThorSwapFacet": "1.2.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "StargateFacet": "2.2.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -479,97 +394,82 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetImmutable": "2.0.0",
         "HyphenFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "ThorSwapFacet": "1.2.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "StargateFacet": "2.2.0"
       }
     }
   },
-  "gnosis": {
+  "okx": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "GnosisBridgeL2Facet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "OmniBridgeFacet": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "GnosisBridgeL2Facet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "OmniBridgeFacet": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0"
       }
     }
   },
-  "fantom": {
+  "avalanche": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -577,26 +477,38 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
         "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetMutable": "2.0.0",
+        "CircleBridgeFacet": "1.0.0",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0"
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "ThorSwapFacet": "1.2.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -604,1731 +516,1010 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
         "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetImmutable": "2.0.0",
+        "CircleBridgeFacet": "1.0.0",
         "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
         "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0"
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "ThorSwapFacet": "1.2.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       }
-    },
-    "staging": {
+    }
+  },
+  "arbitrum": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      }
-    }
-  },
-  "okx": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      }
-    }
-  },
-  "avalanche": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HyphenFacet": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "ThorSwapFacet": "1.2.0",
-        "SymbiosisFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HyphenFacet": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "ThorSwapFacet": "1.2.0",
-        "SymbiosisFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "CircleBridgeFacet": "1.0.0",
-        "ThorSwapFacet": "1.0.0",
-        "CCIPFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "CCIPFacet": "1.0.0"
-      }
-    }
-  },
-  "arbitrum": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0"
-      }
-    }
-  },
-  "optimism": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.2",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "AmarokFacet": "2.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "CelerCircleBridgeFacet": "1.0.1",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0",
-        "CircleBridgeFacet": "1.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
-        "HyphenFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
-      }
-    }
-  },
-  "moonriver": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      }
-    }
-  },
-  "moonbeam": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "SquidFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "SquidFacet": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      }
-    }
-  },
-  "celo": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "SquidFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "SquidFacet": "1.0.0"
-      }
-    }
-  },
-  "fuse": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      }
-    }
-  },
-  "cronos": {},
-  "velas": {
-    "production": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0",
+        "CircleBridgeFacet": "1.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "SquidFacet": "1.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0",
+        "CircleBridgeFacet": "1.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "HyphenFacet": "1.0.0",
+        "MayanFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "SquidFacet": "1.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       }
     }
   },
-  "harmony": {
+  "optimism": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0",
+        "CircleBridgeFacet": "1.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "HyphenFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "AmarokFacetPacked": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0",
+        "CircleBridgeFacet": "1.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "HyphenFacet": "1.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       }
     }
   },
-  "evmos": {
+  "moonriver": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0"
       }
-    },
-    "staging": {
+    }
+  },
+  "moonbeam": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "GravityFacet": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "SquidFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "SquidFacet": "1.0.0"
       }
     }
   },
-  "aurora": {
+  "fuse": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       }
-    },
-    "staging": {
+    }
+  },
+  "velas": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0"
       }
     }
   },
-  "boba": {
+  "harmony": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       }
-    },
-    "staging": {
+    }
+  },
+  "evmos": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0"
       }
     }
   },
-  "nova": {
-    "staging": {
+  "aurora": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0"
       }
     }
   },
-  "zksyncera": {
-    "staging": {
+  "boba": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "polygonzkevm": {
+  "arbitrumnova": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.1",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetMutable": "2.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
         "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.1",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "RelayerCelerIM": "2.0.0",
         "CelerIMFacetImmutable": "2.0.0",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
         "SymbiosisFacet": "1.0.0"
       }
-    },
-    "staging": {
+    }
+  },
+  "zksync": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerIMFacetMutable": "2.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerIMFacetImmutable": "2.0.0",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "goerli": {},
-  "bsc-testnet": {
+  "polygonzkevm": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
         "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0"
+        "CelerIMFacetMutable": "2.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
         "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0"
+        "CelerIMFacetImmutable": "2.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "OFTWrapperFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract OFTWrapperFacet\u001b[0m\u001b[0m",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "sepolia": {
+  "linea": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AmarokFacet": "3.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AmarokFacet": "3.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "mumbai": {
+  "base": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
+        "CircleBridgeFacet": "1.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "AmarokFacet": "3.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "CelerCircleBridgeFacet": "1.0.1",
+        "CircleBridgeFacet": "1.0.0",
+        "HopFacet": "2.0.0",
+        "HopFacetPacked": "1.0.6",
+        "HopFacetOptimized": "2.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0",
+        "AllbridgeCircleBridgeFacet": "\u001b[31m[error] the following filepath is invalid: \u001b[31m[error] could not find src FILE path for contract AllbridgeCircleBridgeFacet\u001b[0m\u001b[0m"
       }
     }
   },
-  "lineatest": {
+  "opbnb": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       }
     }
   },
-  "zksynceratest": {},
-  "linea": {
+  "metis": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -2336,28 +1527,26 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AmarokFacet": "3.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
         "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
@@ -2365,375 +1554,348 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "AmarokFacet": "3.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "HopFacet": "2.0.0",
-        "HopFacetPacked": "1.0.6",
         "StargateFacet": "2.2.0",
-        "HopFacetOptimized": "2.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
-        "AccessManagerFacet": "1.0.0",
-        "WithdrawFacet": "1.0.0",
-        "PeripheryRegistryFacet": "1.0.0",
-        "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
-        "ERC20Proxy": "1.0.0",
-        "Executor": "2.0.0",
-        "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0"
-      }
     }
   },
-  "localanvil": {},
-  "binancesmartchain": {
-    "staging": {
+  "scroll": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "AllBridgeFacet": "2.0.0",
-        "OFTWrapperFacet": "0.0.3",
-        "OpBNBBridgeFacet": "1.0.0",
-        "AmarokFacetPacked": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "OpBNBBridgeFacet": "1.0.0",
-        "AmarokFacetPacked": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "CBridgeFacet": "1.0.0",
+        "CBridgeFacetPacked": "1.0.3",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "xdai": {
-    "staging": {
+  "mode": {
+    "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "GnosisBridgeL2Facet": "1.0.0",
-        "OmniBridgeFacet": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AmarokFacet": "3.0.0",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "LIFuelFacet": "1.0.0",
-        "CalldataVerificationFacet": "1.1.0",
-        "StandardizedCallFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
+        "CalldataVerificationFacet": "1.1.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
-        "ServiceFeeCollector": "1.0.0",
-        "LiFuelFeeCollector": "1.0.0",
-        "HopFacetOptimized": "2.0.0",
-        "AmarokFacetPacked": "1.0.0"
+        "Receiver": "2.0.2",
+        "LiFuelFeeCollector": "1.0.1",
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "AcrossFacet": "2.0.0",
+        "AcrossFacetPacked": "1.0.0",
+        "AmarokFacet": "3.0.0",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "binancesmartchaintestnet": {},
-  "polygon-mumbai": {},
-  "lineatestnet": {},
-  "zksync-testnet": {
+  "mantle": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0",
+        "StargateFacet": "2.2.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "arbitrumnova": {
+  "celo": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetMutable": "2.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "SquidFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "RelayerCelerIM": "2.0.0",
-        "CelerIMFacetImmutable": "2.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "AllBridgeFacet": "2.0.0",
+        "SquidFacet": "1.0.0"
       }
     }
   },
-  "zksync": {
+  "blast": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.1",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
-        "CelerIMFacetMutable": "2.0.0",
+        "SquidFacet": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.1",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
         "CBridgeFacet": "1.0.0",
         "CBridgeFacetPacked": "1.0.3",
-        "CelerIMFacetImmutable": "2.0.0",
+        "SquidFacet": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "polygon-zkevm": {},
-  "opbnb": {
+  "rootstock": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.1",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.1",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
-      }
-    },
-    "staging": {
-      "LiFiDiamond": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0",
-        "OwnershipFacet": "1.0.0"
-      },
-      "LiFiDiamondImmutable": {
-        "DiamondCutFacet": "1.0.0",
-        "DiamondLoupeFacet": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "metis": {
+  "sei": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
@@ -2755,8 +1917,10 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AmarokFacet": "3.0.0",
-        "StargateFacet": "2.2.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
@@ -2779,275 +1943,275 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AmarokFacet": "3.0.0",
-        "StargateFacet": "2.2.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "scroll": {
+  "fraxtal": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "StargateFacet": "2.2.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "StargateFacet": "2.2.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "mode": {
+  "taiko": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AmarokFacet": "3.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "AcrossFacet": "2.0.0",
-        "AcrossFacetPacked": "1.0.0",
-        "AmarokFacet": "3.0.0",
+        "LiFiDEXAggregator": "1.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0",
         "SymbiosisFacet": "1.0.0"
       }
     }
   },
-  "mantle": {
+  "gravity": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
+        "StandardizedCallFacet": "1.1.0",
         "LiFiDiamondImmutable": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
-        "Receiver": "2.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "StargateFacet": "2.2.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "StargateFacetV2": "1.0.1",
+        "ReceiverStargateV2": "1.0.0"
       }
     }
   },
-  "blast": {
+  "immutablezkevm": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "SquidFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
         "GenericSwapFacetV3": "1.0.1",
-        "LIFuelFacet": "1.0.0",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.1",
-        "ERC20Proxy": "1.0.1",
-        "Executor": "2.0.1",
-        "FeeCollector": "1.0.1",
-        "Receiver": "2.0.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
+        "ERC20Proxy": "1.0.0",
+        "Executor": "2.0.0",
+        "FeeCollector": "1.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "CBridgeFacet": "1.0.0",
-        "CBridgeFacetPacked": "1.0.3",
-        "SquidFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "SquidFacet": "1.0.0"
       }
     }
   },
-  "rootstock": {
+  "bsc-testnet": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamond": "1.0.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamond": "1.0.0",
         "ERC20Proxy": "1.0.0",
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
         "DiamondLoupeFacet": "1.0.0",
         "OwnershipFacet": "1.0.0",
-        "DexManagerFacet": "1.0.0",
+        "DexManagerFacet": "1.0.1",
         "AccessManagerFacet": "1.0.0",
         "WithdrawFacet": "1.0.0",
         "PeripheryRegistryFacet": "1.0.0",
         "GenericSwapFacet": "1.0.0",
-        "GenericSwapFacetV3": "1.0.0",
-        "LIFuelFacet": "1.0.0",
+        "GenericSwapFacetV3": "1.0.1",
+        "LIFuelFacet": "1.0.1",
         "CalldataVerificationFacet": "1.1.1",
-        "StandardizedCallFacet": "1.0.0",
-        "LiFiDiamondImmutable": "1.0.1",
-        "ERC20Proxy": "1.0.1",
-        "Executor": "2.0.1",
-        "FeeCollector": "1.0.1",
-        "Receiver": "2.0.1",
+        "StandardizedCallFacet": "1.1.0",
+        "LiFiDiamondImmutable": "1.0.0",
+        "ERC20Proxy": "1.0.0",
+        "Executor": "2.0.0",
+        "FeeCollector": "1.0.0",
+        "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0"
       }
     }
   },
-  "sei": {
+  "sepolia": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
@@ -3069,8 +2233,7 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
@@ -3092,12 +2255,11 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0"
       }
     }
   },
-  "fraxtal": {
+  "mumbai": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
@@ -3119,8 +2281,9 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
@@ -3142,12 +2305,13 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SquidFacet": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0"
       }
     }
   },
-  "taiko": {
+  "lineatest": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
@@ -3169,7 +2333,9 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetMutable": "2.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
@@ -3191,11 +2357,13 @@
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
         "TokenWrapper": "1.0.0",
-        "SymbiosisFacet": "1.0.0"
+        "LiFiDEXAggregator": "1.0.0",
+        "RelayerCelerIM": "2.0.0",
+        "CelerIMFacetImmutable": "2.0.0"
       }
     }
   },
-  "gravity": {
+  "zksync-testnet": {
     "production": {
       "LiFiDiamond": {
         "DiamondCutFacet": "1.0.0",
@@ -3215,10 +2383,9 @@
         "Executor": "2.0.0",
         "FeeCollector": "1.0.0",
         "Receiver": "2.0.2",
-        "StargateFacetV2": "1.0.0",
-        "ReceiverStargateV2": "1.0.0",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0"
       },
       "LiFiDiamondImmutable": {
         "DiamondCutFacet": "1.0.0",
@@ -3239,7 +2406,8 @@
         "FeeCollector": "1.0.0",
         "Receiver": "2.0.2",
         "LiFuelFeeCollector": "1.0.1",
-        "TokenWrapper": "1.0.0"
+        "TokenWrapper": "1.0.0",
+        "LiFiDEXAggregator": "1.0.0"
       }
     }
   }
diff --git a/script/deploy/deployAllContracts.sh b/script/deploy/deployAllContracts.sh
index ff915ee26..c81f40113 100755
--- a/script/deploy/deployAllContracts.sh
+++ b/script/deploy/deployAllContracts.sh
@@ -75,14 +75,6 @@ deployAllContracts() {
   checkFailure $? "update approve deployer wallet to execute config-related functions"
   echo "[info] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< deployer wallet approved"
 
-  # run sync dexs script
-  echo ""
-  diamondSyncDEXs "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME"
-
-  # run sync sigs script
-  echo ""
-  diamondSyncSigs "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME"
-
   # deploy all non-core facets (that are in target_state.JSON) and add to diamond
   echo ""
   echo ""
@@ -116,6 +108,17 @@ deployAllContracts() {
   # update periphery registry
   diamondUpdatePeriphery "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME" true false ""
 
+  # add core periphery addresses to dexs.json for whitelisting in subsequent steps
+  addPeripheryToDexsJson "$NETWORK" "$ENVIRONMENT"
+
+  # run sync dexs script
+  echo ""
+  diamondSyncDEXs "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME"
+
+  # run sync sigs script
+  echo ""
+  diamondSyncSigs "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME"
+
   echo ""
   echo "[info] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< deployAllContracts completed"
 }
diff --git a/script/deploy/deploySingleContract.sh b/script/deploy/deploySingleContract.sh
index 48bdc899a..d327d40bd 100755
--- a/script/deploy/deploySingleContract.sh
+++ b/script/deploy/deploySingleContract.sh
@@ -11,11 +11,11 @@ deploySingleContract() {
 
   # read function arguments into variables
   local CONTRACT="$1"
-  NETWORK="$2"
-  ENVIRONMENT="$3"
-  VERSION="$4"
-  EXIT_ON_ERROR="$5"
-  DIAMOND_TYPE="$6" # optional parameter (only used by CelerIMFacet)
+  local NETWORK="$2"
+  local ENVIRONMENT="$3"
+  local VERSION="$4"
+  local EXIT_ON_ERROR="$5"
+  local DIAMOND_TYPE="$6" # optional parameter (only used by CelerIMFacet)
 
   # load env variables
   source .env
@@ -93,17 +93,19 @@ deploySingleContract() {
   if [[ -z "$CONTRACT" ]]; then
     # get user-selected deploy script and contract from list
     SCRIPT=$(ls -1 "$DEPLOY_SCRIPT_DIRECTORY" | sed -e 's/\.s.sol$//' | grep 'Deploy' | gum filter --placeholder "Deploy Script")
-    CONTRACT=$(echo $SCRIPT | sed -e 's/Deploy//')
+    local CONTRACT=$(echo $SCRIPT | sed -e 's/Deploy//')
   else
     SCRIPT="Deploy"$CONTRACT
   fi
 
   # Display contract-specific information, if existing
   if grep -q "^$CONTRACT=" "$CONTRACT_REMINDERS"; then
-    echo ""
+    echo -e "\n\n"
+    printf '\033[31m%s\031\n' "--------------------------------------- !!!!!!!! ATTENTION !!!!!!!! ---------------------------------------"
     warning "Please read the following information carefully: "
     warning "${!CONTRACT}"
-    echo ""
+    printf '\033[31m%s\031\n' "-----------------------------------------------------------------------------------------------------------"
+    echo -e "\n\n"
   fi
 
   # check if deploy script exists
@@ -250,8 +252,10 @@ deploySingleContract() {
 
     # end this script according to flag
     if [[ -z "$EXIT_ON_ERROR" ]]; then
+      echo "return 1"
       return 1
     else
+      echo "exit 1"
       exit 1
     fi
   fi
diff --git a/script/deploy/facets/DeployLiFiDEXAggregator.s.sol b/script/deploy/facets/DeployLiFiDEXAggregator.s.sol
new file mode 100644
index 000000000..ba89e01c4
--- /dev/null
+++ b/script/deploy/facets/DeployLiFiDEXAggregator.s.sol
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.17;
+
+import { DeployScriptBase } from "./utils/DeployScriptBase.sol";
+import { stdJson } from "forge-std/Script.sol";
+import { LiFiDEXAggregator } from "lifi/Periphery/LiFiDEXAggregator.sol";
+
+contract DeployScript is DeployScriptBase {
+    using stdJson for string;
+
+    constructor() DeployScriptBase("LiFiDEXAggregator") {}
+
+    function run()
+        public
+        returns (LiFiDEXAggregator deployed, bytes memory constructorArgs)
+    {
+        constructorArgs = getConstructorArgs();
+
+        deployed = LiFiDEXAggregator(
+            deploy(type(LiFiDEXAggregator).creationCode)
+        );
+    }
+
+    function getConstructorArgs() internal override returns (bytes memory) {
+        string memory path = string.concat(root, "/config/global.json");
+        string memory json = vm.readFile(path);
+
+        address[] memory priviledgedUsers = new address[](1);
+        priviledgedUsers[0] = json.readAddress(".pauserWallet");
+
+        // the original RouteProcessor4.sol is also deployed with address(0) for _bentoBox
+
+        return abi.encode(address(0), priviledgedUsers);
+    }
+}
diff --git a/script/deploy/healthCheck.mts b/script/deploy/healthCheck.mts
index 21a2daf64..546156fac 100644
--- a/script/deploy/healthCheck.mts
+++ b/script/deploy/healthCheck.mts
@@ -15,6 +15,31 @@ import {
   parseAbi,
 } from 'viem'
 
+const chainNameMappings: Record<string, string> = {
+  zksync: 'zkSync',
+  polygonzkevm: 'polygonZkEvm',
+  immutablezkevm: 'immutableZkEvm',
+}
+
+const chainMap: Record<string, Chain> = {}
+for (const [k, v] of Object.entries(chains)) {
+  // @ts-ignore
+  chainMap[k] = v
+}
+
+// TODO: remove this and import from ./utils/viemScriptHelpers.ts instead (did not work when I tried it)
+export const getViemChainForNetworkName = (networkName: string): Chain => {
+  const chainName = chainNameMappings[networkName] || networkName
+  const chain: Chain = chainMap[chainName]
+
+  if (!chain)
+    throw new Error(
+      `Chain ${networkName} (aka '${chainName}', if a mapping exists) not supported by viem or requires name mapping. Check if you can find your chain here: https://github.com/wevm/viem/tree/main/src/chains/definitions`
+    )
+
+  return chain
+}
+
 const SAFE_THRESHOLD = 3
 
 const louperCmd = 'louper-cli'
@@ -44,12 +69,6 @@ const corePeriphery = [
   'TokenWrapper',
 ]
 
-const chainMap: Record<string, Chain> = {}
-for (const [k, v] of Object.entries(chains)) {
-  // @ts-ignore
-  chainMap[k] = v
-}
-
 const errors: string[] = []
 const main = defineCommand({
   meta: {
@@ -105,7 +124,8 @@ const main = defineCommand({
 
     const globalConfig = await import('../../config/global.json')
 
-    const chain = chainMap[network]
+    const chain = getViemChainForNetworkName(network)
+
     const publicClient = createPublicClient({
       batch: { multicall: true },
       chain,
@@ -172,15 +192,18 @@ const main = defineCommand({
     //          ╰─────────────────────────────────────────────────────────╯
     consola.box('Checking facets registered in diamond...')
     $.quiet = true
+
+    const string = `${louperCmd} inspect diamond -a ${diamondAddress} -n ${network} --json`
+    console.log(`string: ${string}`)
     const facetsResult =
       await $`${louperCmd} inspect diamond -a ${diamondAddress} -n ${network} --json`
 
-    const resgisteredFacets = JSON.parse(facetsResult.stdout).facets.map(
+    const registeredFacets = JSON.parse(facetsResult.stdout).facets.map(
       (f: { name: string }) => f.name
     )
 
     for (const facet of [...coreFacets, ...nonCoreFacets]) {
-      if (!resgisteredFacets.includes(facet)) {
+      if (!registeredFacets.includes(facet)) {
         logError(
           `Facet ${facet} not registered in Diamond or possibly unverified`
         )
@@ -406,9 +429,9 @@ const main = defineCommand({
 
         // Check that threshold is correct
         if (safeConfig.threshold < SAFE_THRESHOLD) {
-          logError(`SAFE signtaure threshold is less than ${SAFE_THRESHOLD}`)
+          logError(`SAFE signature threshold is less than ${SAFE_THRESHOLD}`)
         } else {
-          consola.success(`SAFE signtaure threshold is ${safeConfig.threshold}`)
+          consola.success(`SAFE signature threshold is ${safeConfig.threshold}`)
         }
       }
 
diff --git a/script/deploy/resources/contractSpecificReminders.sh b/script/deploy/resources/contractSpecificReminders.sh
index 87cea7d08..90bac1c30 100644
--- a/script/deploy/resources/contractSpecificReminders.sh
+++ b/script/deploy/resources/contractSpecificReminders.sh
@@ -5,3 +5,7 @@
 
 # EXAMPLE:
 # CelerIMFacet="RelayerCelerIM needs to be deployed prior to deploying this facet (CelerIMFacet)"
+FeeCollector="Please do not forget to add the new contract address to whitelisted DEXs before using it"
+LiFuelFeeCollector="Please do not forget to add the new contract address to whitelisted DEXs before using it"
+TokenWrapper="Please do not forget to add the new contract address to whitelisted DEXs before using it"
+LiFiDEXAggregator="Please do not forget to add the new contract address to whitelisted DEXs before using it"
diff --git a/script/deploy/resources/deployRequirements.json b/script/deploy/resources/deployRequirements.json
index 49cff1354..3c3585753 100644
--- a/script/deploy/resources/deployRequirements.json
+++ b/script/deploy/resources/deployRequirements.json
@@ -192,6 +192,15 @@
       }
     }
   },
+  "LiFiDEXAggregator": {
+    "configData": {
+      "_privilegedUser": {
+        "configFileName": "global.json",
+        "keyInConfigFile": ".pauserWallet",
+        "allowToDeployWithZeroAddress": "false"
+      }
+    }
+  },
   "MakerTeleportFacet": {
     "configData": {
       "_teleportGateway": {
diff --git a/script/deploy/safe/add-owners-to-safe.ts b/script/deploy/safe/add-owners-to-safe.ts
index 580600a03..1db2b99d2 100644
--- a/script/deploy/safe/add-owners-to-safe.ts
+++ b/script/deploy/safe/add-owners-to-safe.ts
@@ -1,25 +1,11 @@
 import { defineCommand, runMain } from 'citty'
 import { type SafeApiKitConfig } from '@safe-global/api-kit'
-import { type Chain, getAddress } from 'viem'
-import Safe, {
-  ContractNetworksConfig,
-  EthersAdapter,
-} from '@safe-global/protocol-kit'
+import { getAddress } from 'viem'
+import Safe, { EthersAdapter } from '@safe-global/protocol-kit'
 import SafeApiKit from '@safe-global/api-kit'
 import { ethers } from 'ethers6'
-import * as chains from 'viem/chains'
-import {
-  chainNameMappings,
-  getSafeUtilityContracts,
-  safeAddresses,
-  safeApiUrls,
-} from './config'
-
-const chainMap: Record<string, Chain> = {}
-for (const [k, v] of Object.entries(chains)) {
-  // @ts-ignore
-  chainMap[k] = v
-}
+import { getSafeUtilityContracts, safeAddresses, safeApiUrls } from './config'
+import { getViemChainForNetworkName } from '../../../utils/viemScriptHelpers'
 
 const main = defineCommand({
   meta: {
@@ -48,17 +34,18 @@ const main = defineCommand({
     },
   },
   async run({ args }) {
-    const chainName = chainNameMappings[args.network] || args.network
-    const chain: Chain = chainMap[chainName]
+    const { network, privateKey } = args
+
+    const chain = getViemChainForNetworkName(network)
 
     const config: SafeApiKitConfig = {
       chainId: BigInt(chain.id),
-      txServiceUrl: safeApiUrls[chainName.toLowerCase()],
+      txServiceUrl: safeApiUrls[network],
     }
 
     const safeService = new SafeApiKit(config)
 
-    const safeAddress = getAddress(safeAddresses[chainName.toLowerCase()])
+    const safeAddress = getAddress(safeAddresses[network])
 
     const rpcUrl = args.rpcUrl || chain.rpcUrls.default.http[0]
     const provider = new ethers.JsonRpcProvider(rpcUrl)
@@ -104,7 +91,6 @@ const main = defineCommand({
       console.info('Adding owner', owner)
       console.info('Signer Address', senderAddress)
       console.info('Safe Address', safeAddress)
-      console.info('Network', chainName)
 
       // Propose transaction to the service
       await safeService.proposeTransaction({
diff --git a/script/deploy/safe/config.ts b/script/deploy/safe/config.ts
index da076e3de..c344ccb9f 100644
--- a/script/deploy/safe/config.ts
+++ b/script/deploy/safe/config.ts
@@ -1,4 +1,5 @@
 import { ContractNetworksConfig } from '@safe-global/protocol-kit'
+import { immutableZkEvm } from 'viem/chains'
 
 export const safeApiUrls: Record<string, string> = {
   mainnet: 'https://safe-transaction-mainnet.safe.global/api',
@@ -15,6 +16,7 @@ export const safeApiUrls: Record<string, string> = {
   fuse: 'https://transaction-fuse.safe.fuse.io/api',
   gnosis: 'https://safe-transaction-gnosis-chain.safe.global/api',
   gravity: 'https://safe.gravity.xyz/txs/api',
+  immutablezkevm: 'https://transaction.safe.immutable.com/api',
   linea: 'https://transaction.safe.linea.build/api',
   mantle: 'https://transaction.multisig.mantle.xyz/api',
   metis: 'https://metissafe.tech/txs/api',
@@ -27,6 +29,7 @@ export const safeApiUrls: Record<string, string> = {
   rootstock: 'https://transaction.safe.rootstock.io/api',
   scroll: 'https://safe-transaction-scroll.safe.global/api',
   sei: 'https://transaction.sei-safe.protofire.io/api',
+  taiko: 'https://api.taikoscan.io/api',
   zksync: 'https://safe-transaction-zksync.safe.global/api',
 }
 
@@ -45,6 +48,7 @@ export const safeAddresses: Record<string, string> = {
   fuse: '0x5336e97bA7332FAC20281Bda8B790c8892245Ded',
   gnosis: '0x2bC523875b59A1Ddd03CEB1F1b28c5B0e8e6654A',
   gravity: '0x245B16CaCE8730b009c5352186DcE7d73c3037A1',
+  immutablezkevm: '0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772',
   linea: '0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1',
   mantle: '0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772',
   metis: '0x925cD8289Ac2d617F52974da8338867f3bB62d56',
@@ -57,20 +61,17 @@ export const safeAddresses: Record<string, string> = {
   rootstock: '0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1',
   scroll: '0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1',
   sei: '0xdf61270fDC1A892874Fd3C0143A0A4CBA74F4EF1',
+  taiko: '0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772',
   zksync: '0x02f1272aEaCaf7BD8b30278bc2AA381Cc623A744',
 }
 
-export const chainNameMappings: Record<string, string> = {
-  zksync: 'zkSync',
-  polygonzkevm: 'polygonZkEvm',
-}
-
 export const getSafeUtilityContracts = (chainId: number) => {
   let contractNetworks: ContractNetworksConfig
   switch (chainId) {
     case 288:
     case 1088:
-      // Boba
+    case 13371:
+      // Boba, Metis, IMX
       contractNetworks = {
         [chainId.toString()]: {
           multiSendAddress: '0x998739BFdAAdde7C933B942a68053933098f9EDa',
diff --git a/script/deploy/safe/confirm-safe-tx.ts b/script/deploy/safe/confirm-safe-tx.ts
index 334675a89..bdb8a109b 100644
--- a/script/deploy/safe/confirm-safe-tx.ts
+++ b/script/deploy/safe/confirm-safe-tx.ts
@@ -6,12 +6,8 @@ import SafeApiKit from '@safe-global/api-kit'
 import { ethers } from 'ethers6'
 import consola from 'consola'
 import * as chains from 'viem/chains'
-import {
-  chainNameMappings,
-  getSafeUtilityContracts,
-  safeAddresses,
-  safeApiUrls,
-} from './config'
+import { getSafeUtilityContracts, safeAddresses, safeApiUrls } from './config'
+import { getViemChainForNetworkName } from '../../../utils/viemScriptHelpers'
 
 const ABI_LOOKUP_URL = `https://api.openchain.xyz/signature-database/v1/lookup?function=%SELECTOR%&filter=true`
 
@@ -31,6 +27,8 @@ const skipNetworks: string[] = [
   // 'fraxtal',
   // 'fuse',
   // 'gnosis',
+  // 'gravity',
+  // 'immutablezkevm',
   // 'linea',
   // 'mantle',
   // 'metis',
@@ -77,17 +75,16 @@ for (const [k, v] of Object.entries(chains)) {
 }
 
 const func = async (network: string, privateKey: string, rpcUrl?: string) => {
-  const chainName = chainNameMappings[network] || network
-  const chain: Chain = chainMap[chainName]
+  const chain = getViemChainForNetworkName(network)
 
   const config: SafeApiKitConfig = {
     chainId: BigInt(chain.id),
-    txServiceUrl: safeApiUrls[chainName.toLowerCase()],
+    txServiceUrl: safeApiUrls[network.toLowerCase()],
   }
 
   const safeService = new SafeApiKit(config)
 
-  const safeAddress = safeAddresses[chainName.toLowerCase()]
+  const safeAddress = safeAddresses[network.toLowerCase()]
 
   const parsedRpcUrl = rpcUrl || chain.rpcUrls.default.http[0]
   const provider = new ethers.JsonRpcProvider(parsedRpcUrl)
diff --git a/script/deploy/safe/propose-to-safe.ts b/script/deploy/safe/propose-to-safe.ts
index 527809f70..75248faeb 100644
--- a/script/deploy/safe/propose-to-safe.ts
+++ b/script/deploy/safe/propose-to-safe.ts
@@ -9,12 +9,8 @@ import {
   type SafeTransactionDataPartial,
 } from '@safe-global/safe-core-sdk-types'
 import * as chains from 'viem/chains'
-import {
-  chainNameMappings,
-  getSafeUtilityContracts,
-  safeAddresses,
-  safeApiUrls,
-} from './config'
+import { getViemChainForNetworkName } from '../../../utils/network'
+import { getSafeUtilityContracts, safeAddresses, safeApiUrls } from './config'
 
 const chainMap: Record<string, Chain> = {}
 for (const [k, v] of Object.entries(chains)) {
@@ -54,17 +50,16 @@ const main = defineCommand({
     },
   },
   async run({ args }) {
-    const chainName = chainNameMappings[args.network] || args.network
-    const chain: Chain = chainMap[chainName]
+    const chain = getViemChainForNetworkName(args.network)
 
     const config: SafeApiKitConfig = {
       chainId: BigInt(chain.id),
-      txServiceUrl: safeApiUrls[chainName.toLowerCase()],
+      txServiceUrl: safeApiUrls[args.network.toLowerCase()],
     }
 
     const safeService = new SafeApiKit(config)
 
-    const safeAddress = safeAddresses[chainName.toLowerCase()]
+    const safeAddress = safeAddresses[args.network.toLowerCase()]
 
     const rpcUrl = args.rpcUrl || chain.rpcUrls.default.http[0]
     const provider = new ethers.JsonRpcProvider(rpcUrl)
@@ -100,7 +95,7 @@ const main = defineCommand({
 
     console.info('Signer Address', senderAddress)
     console.info('Safe Address', safeAddress)
-    console.info('Network', chainName)
+    console.info('Network', chain.name)
     console.info('Proosing transaction to', args.to)
 
     // Propose transaction to the service
diff --git a/script/helperFunctions.sh b/script/helperFunctions.sh
index 74ec735d7..9eb79eca9 100755
--- a/script/helperFunctions.sh
+++ b/script/helperFunctions.sh
@@ -1307,6 +1307,73 @@ function getBytecodeFromArtifact() {
   fi
 }
 
+function addPeripheryToDexsJson() {
+  echo "[info] now adding all contracts listed in WHITELIST_PERIPHERY (config.sh) to config/dexs.json"
+  # read function arguments into variables
+  local NETWORK="$1"
+  local ENVIRONMENT="$2"
+
+  local FILEPATH_DEXS="config/dexs.json"
+  local FILEPATH_GLOBAL_CONFIG="config/global.json"
+
+  WHITELIST_PERIPHERY=($(jq -r '.autoWhitelistPeripheryContracts[] | select(length > 0)' "$FILEPATH_GLOBAL_CONFIG"))
+
+  # Get all contracts that need to be whitelisted and convert the comma-separated string into an array
+  # IFS=',' read -r -a CONTRACTS <<< "$WHITELIST_PERIPHERY"
+  CONTRACTS=("${WHITELIST_PERIPHERY[@]}")
+
+  # get number of periphery contracts to be added
+  local ADD_COUNTER=${#CONTRACTS[@]}
+
+
+  # get number of existing DEX addresses in the file for the given network
+  local EXISTING_DEXS=$(jq --arg network "$NETWORK" '.[$network] | length' "$FILEPATH_DEXS")
+
+  # Iterate through all contracts
+  for CONTRACT in "${CONTRACTS[@]}"; do
+    # get contract address
+    local CONTRACT_ADDRESS=$(getContractAddressFromDeploymentLogs "$NETWORK" "$ENVIRONMENT" "$CONTRACT")
+
+    if [[ -z "$CONTRACT_ADDRESS" ]]; then
+      error "Could not find contract address for contract $CONTRACT on network $NETWORK ($ENVIRONMENT) in deploy log."
+      error "Please manually whitelist this contract after this task has been completed."
+      # reduce add counter since we are not adding this contract
+      ((ADD_COUNTER--))
+      continue
+    fi
+
+    # check if address already exists in dexs.json for the given network
+    local EXISTS=$(jq --arg address "$CONTRACT_ADDRESS" --arg network "$NETWORK" '(.[$network] // []) | any(. == $address)' $FILEPATH_DEXS)
+
+    if [ "$EXISTS" == "true" ]; then
+      echo "The address $CONTRACT_ADDRESS is already part of the whitelisted DEXs in network $NETWORK."
+
+      # since this address is already in the list and will not be added, we have to reduce the "ADD_COUNTER" variable which will be used later to make sure that all addresses were indeed added
+      ((ADD_COUNTER--)) # reduces by 1
+    else
+      # add the address to dexs.json
+      local TMP_FILE="tmp.$$.json"
+      jq --arg address "$CONTRACT_ADDRESS" --arg network "$NETWORK" '(.[$network] //= []) | .[$network] += [$address]' $FILEPATH_DEXS > "$TMP_FILE" && mv "$TMP_FILE" $FILEPATH_DEXS
+      rm -f "$TMP_FILE"
+
+
+      success "$CONTRACT address $CONTRACT_ADDRESS added to dexs.json[$NETWORK]"
+    fi
+  done
+
+  # check how many DEX addresses are in the dexs.json now
+  local ADDRESS_COUNTER=${#CONTRACTS[@]}
+
+  EXPECTED_DEXS=$((EXISTING_DEXS + ADD_COUNTER))
+
+  # make sure dexs.json has been updated correctly
+  if [ $EXPECTED_DEXS -eq $((EXISTING_DEXS + ADD_COUNTER)) ]; then
+    success "$ADD_COUNTER addresses were added to config/dexs.json"
+  else
+    error "The array in dexs.json for network $NETWORK does not have the expected number of elements after executing this script (expected: $, got: $ADDRESS_COUNTER)."
+    exit 1
+  fi
+}
 # <<<<< working with directories and reading other files
 
 # >>>>> writing to blockchain & verification
@@ -1360,6 +1427,9 @@ function verifyContract() {
       # only show output if DEBUG flag is activated
       if [[ "$DEBUG" == *"true"* ]]; then
         forge verify-contract --watch --chain "$CHAIN_ID" "$ADDRESS" "$FULL_PATH" --skip-is-verified-check -e "${!API_KEY}"
+
+        # TODO: add code that automatically identifies blockscout verification
+        # forge verify-contract --watch --chain "$CHAIN_ID" "$ADDRESS" "$FULL_PATH" --verifier blockscout --verifier-url "https://explorer.immutable.com/api?"
       else
         forge verify-contract --watch --chain "$CHAIN_ID" "$ADDRESS" "$FULL_PATH"  --skip-is-verified-check -e "${!API_KEY}" >/dev/null 2>&1
       fi
@@ -2054,6 +2124,9 @@ function echoDebug() {
     printf "$BLUE[debug] %s$NC\n" "$MESSAGE"
   fi
 }
+function success() {
+  printf '\033[32m%s\033[0m\n' "$1"
+}
 function error() {
   printf '\033[31m[error] %s\033[0m\n' "$1"
 }
@@ -2871,6 +2944,14 @@ function getChainId() {
     echo "1329"
     return 0
     ;;
+  "immutablezkevm")
+    echo "13371"
+    return 0
+    ;;
+  "taiko")
+    echo "167000"
+    return 0
+    ;;
   *)
     return 1
     ;;
@@ -3743,27 +3824,38 @@ function test_getContractNameFromDeploymentLogs() {
 
 function test_tmp() {
 
-  CONTRACT="AllBridgeFacet"
-  NETWORK="optimism"
-  # ADDRESS="0xbEbCDb5093B47Cd7add8211E4c77B6826aF7bc5F"
-  ADDRESS="0x2cE0ea020872a75bdE21a7e4e97556236Eb79e02"
-  ENVIRONMENT="staging"
+  CONTRACT="LiFiDEXAggregator"
+  NETWORK="immutablezkevm"
+  ADDRESS=""
+  ENVIRONMENT="production"
   VERSION="2.0.0"
   DIAMOND_CONTRACT_NAME="LiFiDiamondImmutable"
-  ARGS="0x0000000000000000000000007775d63836987f444e2f14aa0fa2602204d7d3e0"
-  # ARGS="0x000000000000000000000000b9c0de368bece5e76b52545a8e377a4c118f597b"
-
+  ARGS="0x"
+  RPC_URL=$(getRPCUrl "$NETWORK" "$ENVIRONMENT")
   #  ADDRESS=$(getContractOwner "$NETWORK" "$ENVIRONMENT" "ERC20Proxy");
   #  if [[ "$ADDRESS" != "$ZERO_ADDRESS" ]]; then
   #    error "ERC20Proxy ownership was not transferred to address(0)"
   #    exit 1
   #  fi
   #getPeripheryAddressFromDiamond "$NETWORK" "0x9b11bc9FAc17c058CAB6286b0c785bE6a65492EF" "RelayerCelerIM"
-  verifyContract "$NETWORK" "$CONTRACT" "$ADDRESS" "$ARGS"
+  # verifyContract "$NETWORK" "$CONTRACT" "$ADDRESS" "$ARGS"
+
+  # forge verify-contract "$ADDRESS" "$CONTRACT" --chain-id 13371 --verifier blockscout --verifier-url https://explorer.immutable.com/api --skip-is-verified-check
+  # forge verify-contract 0x8CDDE82cFB4555D6ca21B5b28F97630265DA94c4 Counter --verifier oklink --verifier-url https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER  --api-key $OKLINK_API_KEY
+
 
-  # transferContractOwnership "$PRIVATE_KEY_OLD" "$PRIVATE_KEY" "$ADDRESS" "$NETWORK"
+  # transferContractOwnership "$PRIVATE_KEY_PRODUCTION" "$PRIVATE_KEY" "$ADDRESS" "$NETWORK"
   # RESPONSE=$(cast call "$ADDRESS" "owner()" --rpc-url $(getRPCUrl "$NETWORK"))
   # echo "RESPONSE: $RESPONSE"
-}
+  # ADDRESS_NEW_OWNER=0xa89a87986e8ee1Ac8fDaCc5Ac91627010Ec9f772
+  # cast call "$ADDRESS" "pendingOwner()" --rpc-url $(getRPCUrl "$NETWORK")
+  # cast call "$ADDRESS" "facets() returns ((address,bytes4[])[] )" --rpc-url $(getRPCUrl "$NETWORK")
+  # RESPONSE=$(cast send "$ADDRESS" "transferOwnership(address)" "$ADDRESS_NEW_OWNER" --private-key $PRIVATE_KEY_PRODUCTION --rpc-url "$RPC_URL")
+  # echo "RESPONSE: $RESPONSE"
+
+  # RESULT=$(yarn add-safe-owners --network immutablezkevm --rpc-url "$(getRPCUrl "$NETWORK" "$ENVIRONMENT")" --privateKey "$PRIVATE_KEY_PRODUCTION" --owners "0xb78FbE12d9C09d98ce7271Fa089c2fe437B7B4D5,0x65f6F29D3eb871254d71A79CC4F74dB3AAF3b86e,0x24767E3A1cb07ee500BA9A5621F2B608440Ca270,0x81Dbb716aA13869323974A1766120D0854188e3e,0x11F1022cA6AdEF6400e5677528a80d49a069C00c,0x498E8fF83B503aDe5e905719D27b2f11B605b45A")
 
-# test_tmp
+  # RESPONSE=$(yarn add-safe-owners --network taiko --rpc-url $(getRPCUrl $NETWORK $ENVIRONMENT) --privateKey $PRIVATE_KEY_PRODUCTION --owners "0xb78FbE12d9C09d98ce7271Fa089c2fe437B7B4D5,0x65f6F29D3eb871254d71A79CC4F74dB3AAF3b86e,0x24767E3A1cb07ee500BA9A5621F2B608440Ca270,0x81Dbb716aA13869323974A1766120D0854188e3e,0x11F1022cA6AdEF6400e5677528a80d49a069C00c,0x498E8fF83B503aDe5e905719D27b2f11B605b45A")
+  # echo "RESPONSE: $RESPONSE"
+}
+test_tmp
diff --git a/script/resources/gasZipChainIds.json b/script/resources/gasZipChainIds.json
new file mode 100644
index 000000000..3b1f50584
--- /dev/null
+++ b/script/resources/gasZipChainIds.json
@@ -0,0 +1,590 @@
+{
+  "CheckGasZipDocsForMoreChains >> https://dev.gas.zip/gas/chain-support/outbound": {
+    "networkName": "n/a",
+    "gasZipChainId": 0
+  },
+  "2649": {
+    "networkName": "AILayer",
+    "gasZipChainId": 261
+  },
+  "10241024": {
+    "networkName": "AlienX",
+    "gasZipChainId": 233
+  },
+  "888888888": {
+    "networkName": "Ancient8",
+    "gasZipChainId": 128
+  },
+  "42170": {
+    "networkName": "Arbitrum Nova",
+    "gasZipChainId": 53
+  },
+  "42161": {
+    "networkName": "Arbitrum One",
+    "gasZipChainId": 57
+  },
+  "592": {
+    "networkName": "Astar",
+    "gasZipChainId": 40
+  },
+  "3776": {
+    "networkName": "Astar zkEVM",
+    "gasZipChainId": 99
+  },
+  "1313161554": {
+    "networkName": "Aurora",
+    "gasZipChainId": 62
+  },
+  "43114": {
+    "networkName": "Avalanche",
+    "gasZipChainId": 15
+  },
+  "8453": {
+    "networkName": "Base Mainnet",
+    "gasZipChainId": 54
+  },
+  "4337": {
+    "networkName": "Beam",
+    "gasZipChainId": 24
+  },
+  "11501": {
+    "networkName": "BEVM",
+    "gasZipChainId": 138
+  },
+  "3068": {
+    "networkName": "BiFrost",
+    "gasZipChainId": 85
+  },
+  "32520": {
+    "networkName": "Bitgert",
+    "gasZipChainId": 91
+  },
+  "200901": {
+    "networkName": "Bitlayer",
+    "gasZipChainId": 147
+  },
+  "199": {
+    "networkName": "BitTorrent",
+    "gasZipChainId": 18
+  },
+  "81457": {
+    "networkName": "Blast",
+    "gasZipChainId": 96
+  },
+  "60808": {
+    "networkName": "BOB",
+    "gasZipChainId": 150
+  },
+  "288": {
+    "networkName": "Boba",
+    "gasZipChainId": 140
+  },
+  "6001": {
+    "networkName": "BounceBit",
+    "gasZipChainId": 237
+  },
+  "56": {
+    "networkName": "BSC Mainnet",
+    "gasZipChainId": 14
+  },
+  "223": {
+    "networkName": "B² Network",
+    "gasZipChainId": 148
+  },
+  "820": {
+    "networkName": "Callisto",
+    "gasZipChainId": 126
+  },
+  "7700": {
+    "networkName": "Canto",
+    "gasZipChainId": 11
+  },
+  "42220": {
+    "networkName": "Celo",
+    "gasZipChainId": 21
+  },
+  "383353": {
+    "networkName": "CHEESE",
+    "gasZipChainId": 241
+  },
+  "8853": {
+    "networkName": "Clique",
+    "gasZipChainId": 264
+  },
+  "9980": {
+    "networkName": "Combo",
+    "gasZipChainId": 84
+  },
+  "1030": {
+    "networkName": "ConFlux",
+    "gasZipChainId": 65
+  },
+  "1116": {
+    "networkName": "CoreDAO",
+    "gasZipChainId": 34
+  },
+  "25": {
+    "networkName": "Cronos",
+    "gasZipChainId": 36
+  },
+  "7560": {
+    "networkName": "Cyber",
+    "gasZipChainId": 135
+  },
+  "666666666": {
+    "networkName": "Degen",
+    "gasZipChainId": 133
+  },
+  "432204": {
+    "networkName": "Dexalot",
+    "gasZipChainId": 63
+  },
+  "53935": {
+    "networkName": "DFK",
+    "gasZipChainId": 32
+  },
+  "2000": {
+    "networkName": "Dogechain",
+    "gasZipChainId": 46
+  },
+  "1100": {
+    "networkName": "Dymension",
+    "gasZipChainId": 134
+  },
+  "17777": {
+    "networkName": "EOS EVM",
+    "gasZipChainId": 142
+  },
+  "1": {
+    "networkName": "Ethereum",
+    "gasZipChainId": 255
+  },
+  "10001": {
+    "networkName": "ETHW",
+    "gasZipChainId": 71
+  },
+  "9001": {
+    "networkName": "EVMOS",
+    "gasZipChainId": 39
+  },
+  "530": {
+    "networkName": "f(x)Core",
+    "gasZipChainId": 86
+  },
+  "250": {
+    "networkName": "Fantom",
+    "gasZipChainId": 20
+  },
+  "314": {
+    "networkName": "Filecoin",
+    "gasZipChainId": 76
+  },
+  "14": {
+    "networkName": "Flare",
+    "gasZipChainId": 38
+  },
+  "252": {
+    "networkName": "Fraxtal",
+    "gasZipChainId": 10
+  },
+  "122": {
+    "networkName": "Fuse",
+    "gasZipChainId": 31
+  },
+  "32659": {
+    "networkName": "Fusion",
+    "gasZipChainId": 37
+  },
+  "12024": {
+    "networkName": "Gelios",
+    "gasZipChainId": 7
+  },
+  "100": {
+    "networkName": "Gnosis",
+    "gasZipChainId": 16
+  },
+  "1625": {
+    "networkName": "Gravity",
+    "gasZipChainId": 240
+  },
+  "5112": {
+    "networkName": "Ham",
+    "gasZipChainId": 247
+  },
+  "1666600000": {
+    "networkName": "Harmony",
+    "gasZipChainId": 66
+  },
+  "7332": {
+    "networkName": "Horizen",
+    "gasZipChainId": 49
+  },
+  "2911": {
+    "networkName": "Hychain",
+    "gasZipChainId": 132
+  },
+  "881": {
+    "networkName": "Hypr",
+    "gasZipChainId": 127
+  },
+  "13371": {
+    "networkName": "Immutable zkEVM",
+    "gasZipChainId": 95
+  },
+  "2525": {
+    "networkName": "Injective EVM",
+    "gasZipChainId": 78
+  },
+  "4689": {
+    "networkName": "IoTeX",
+    "gasZipChainId": 67
+  },
+  "2222": {
+    "networkName": "Kava",
+    "gasZipChainId": 22
+  },
+  "321": {
+    "networkName": "KCC",
+    "gasZipChainId": 90
+  },
+  "8217": {
+    "networkName": "Klayton",
+    "gasZipChainId": 33
+  },
+  "255": {
+    "networkName": "Kroma",
+    "gasZipChainId": 80
+  },
+  "12324": {
+    "networkName": "L3X Network",
+    "gasZipChainId": 243
+  },
+  "92000": {
+    "networkName": "Lambda",
+    "gasZipChainId": 145
+  },
+  "1890": {
+    "networkName": "Lightlink",
+    "gasZipChainId": 79
+  },
+  "59144": {
+    "networkName": "Linea",
+    "gasZipChainId": 59
+  },
+  "1135": {
+    "networkName": "Lisk",
+    "gasZipChainId": 238
+  },
+  "5151706": {
+    "networkName": "Loot",
+    "gasZipChainId": 25
+  },
+  "42": {
+    "networkName": "Lukso",
+    "gasZipChainId": 87
+  },
+  "8866": {
+    "networkName": "Lumio",
+    "gasZipChainId": 100
+  },
+  "169": {
+    "networkName": "Manta",
+    "gasZipChainId": 60
+  },
+  "5000": {
+    "networkName": "Mantle Mainnet",
+    "gasZipChainId": 13
+  },
+  "22776": {
+    "networkName": "MAP",
+    "gasZipChainId": 257
+  },
+  "4200": {
+    "networkName": "Merlin",
+    "gasZipChainId": 9
+  },
+  "1750": {
+    "networkName": "Metal",
+    "gasZipChainId": 144
+  },
+  "82": {
+    "networkName": "Meter",
+    "gasZipChainId": 26
+  },
+  "1088": {
+    "networkName": "Metis",
+    "gasZipChainId": 30
+  },
+  "185": {
+    "networkName": "Mint",
+    "gasZipChainId": 253
+  },
+  "34443": {
+    "networkName": "Mode",
+    "gasZipChainId": 73
+  },
+  "360": {
+    "networkName": "Molten",
+    "gasZipChainId": 263
+  },
+  "1284": {
+    "networkName": "Moonbeam",
+    "gasZipChainId": 28
+  },
+  "1285": {
+    "networkName": "Moonriver",
+    "gasZipChainId": 29
+  },
+  "4078": {
+    "networkName": "Muster Network",
+    "gasZipChainId": 97
+  },
+  "18686": {
+    "networkName": "MXC zkEVM",
+    "gasZipChainId": 129
+  },
+  "5551": {
+    "networkName": "Nahmii",
+    "gasZipChainId": 70
+  },
+  "245022934": {
+    "networkName": "Neon EVM",
+    "gasZipChainId": 92
+  },
+  "10507": {
+    "networkName": "Numbers",
+    "gasZipChainId": 259
+  },
+  "42262": {
+    "networkName": "Oasis Emerald",
+    "gasZipChainId": 23
+  },
+  "248": {
+    "networkName": "Oasys",
+    "gasZipChainId": 69
+  },
+  "66": {
+    "networkName": "OKX",
+    "gasZipChainId": 35
+  },
+  "27563": {
+    "networkName": "OnChain",
+    "gasZipChainId": 252
+  },
+  "10": {
+    "networkName": "OP Mainnet",
+    "gasZipChainId": 55
+  },
+  "204": {
+    "networkName": "opBNB",
+    "gasZipChainId": 58
+  },
+  "62050": {
+    "networkName": "Optopia",
+    "gasZipChainId": 236
+  },
+  "291": {
+    "networkName": "Orderly",
+    "gasZipChainId": 74
+  },
+  "669": {
+    "networkName": "OX Chain",
+    "gasZipChainId": 244
+  },
+  "20201022": {
+    "networkName": "PEGO",
+    "gasZipChainId": 88
+  },
+  "210425": {
+    "networkName": "PlatON",
+    "gasZipChainId": 5
+  },
+  "70700": {
+    "networkName": "Play Apex",
+    "gasZipChainId": 98
+  },
+  "137": {
+    "networkName": "Polygon",
+    "gasZipChainId": 17
+  },
+  "1101": {
+    "networkName": "Polygon zkEVM",
+    "gasZipChainId": 52
+  },
+  "369": {
+    "networkName": "Pulsechain",
+    "gasZipChainId": 12
+  },
+  "1380012617": {
+    "networkName": "Rari",
+    "gasZipChainId": 82
+  },
+  "111188": {
+    "networkName": "Re.al",
+    "gasZipChainId": 139
+  },
+  "690": {
+    "networkName": "Redstone",
+    "gasZipChainId": 149
+  },
+  "1729": {
+    "networkName": "Reya",
+    "gasZipChainId": 234
+  },
+  "570": {
+    "networkName": "Rollux",
+    "gasZipChainId": 141
+  },
+  "30": {
+    "networkName": "Rootstock",
+    "gasZipChainId": 254
+  },
+  "12553": {
+    "networkName": "RSS3",
+    "gasZipChainId": 125
+  },
+  "1996": {
+    "networkName": "Sanko",
+    "gasZipChainId": 131
+  },
+  "3109": {
+    "networkName": "SatoshiVM",
+    "gasZipChainId": 6
+  },
+  "1329": {
+    "networkName": "Sei",
+    "gasZipChainId": 246
+  },
+  "109": {
+    "networkName": "Shibarium",
+    "gasZipChainId": 42
+  },
+  "336": {
+    "networkName": "Shiden",
+    "gasZipChainId": 130
+  },
+  "148": {
+    "networkName": "ShimmerEVM",
+    "gasZipChainId": 93
+  },
+  "501474": {
+    "networkName": "Solana",
+    "gasZipChainId": 245
+  },
+  "19": {
+    "networkName": "Songbird",
+    "gasZipChainId": 68
+  },
+  "1234": {
+    "networkName": "Step",
+    "gasZipChainId": 64
+  },
+  "254": {
+    "networkName": "Swan",
+    "gasZipChainId": 256
+  },
+  "416": {
+    "networkName": "SX Network",
+    "gasZipChainId": 19
+  },
+  "5101": {
+    "networkName": "Syndicate Frame",
+    "gasZipChainId": 137
+  },
+  "167000": {
+    "networkName": "Taiko",
+    "gasZipChainId": 249
+  },
+  "911": {
+    "networkName": "Taproot",
+    "gasZipChainId": 260
+  },
+  "40": {
+    "networkName": "Telos",
+    "gasZipChainId": 47
+  },
+  "1559": {
+    "networkName": "Tenet",
+    "gasZipChainId": 27
+  },
+  "108": {
+    "networkName": "ThunderCore",
+    "gasZipChainId": 258
+  },
+  "1000001": {
+    "networkName": "Tron",
+    "gasZipChainId": 75
+  },
+  "1231": {
+    "networkName": "Ultron",
+    "gasZipChainId": 83
+  },
+  "88": {
+    "networkName": "Viction",
+    "gasZipChainId": 43
+  },
+  "207": {
+    "networkName": "VinuChain",
+    "gasZipChainId": 45
+  },
+  "888": {
+    "networkName": "Wanchain",
+    "gasZipChainId": 89
+  },
+  "1111": {
+    "networkName": "Wemix",
+    "gasZipChainId": 81
+  },
+  "196": {
+    "networkName": "X Layer",
+    "gasZipChainId": 146
+  },
+  "660279": {
+    "networkName": "XAI",
+    "gasZipChainId": 77
+  },
+  "94524": {
+    "networkName": "XCHAIN",
+    "gasZipChainId": 242
+  },
+  "37": {
+    "networkName": "XPLA",
+    "gasZipChainId": 48
+  },
+  "2702128": {
+    "networkName": "Xterio",
+    "gasZipChainId": 239
+  },
+  "7000": {
+    "networkName": "Zeta",
+    "gasZipChainId": 94
+  },
+  "381": {
+    "networkName": "zkAmoeba",
+    "gasZipChainId": 143
+  },
+  "1456": {
+    "networkName": "zkBase",
+    "gasZipChainId": 235
+  },
+  "42766": {
+    "networkName": "zkFair",
+    "gasZipChainId": 50
+  },
+  "810180": {
+    "networkName": "zkLink Nova",
+    "gasZipChainId": 136
+  },
+  "534352": {
+    "networkName": "zkScroll",
+    "gasZipChainId": 41
+  },
+  "324": {
+    "networkName": "zkSync Era",
+    "gasZipChainId": 51
+  },
+  "7777777": {
+    "networkName": "Zora",
+    "gasZipChainId": 56
+  }
+}
diff --git a/script/scriptMaster.sh b/script/scriptMaster.sh
index e7be7618e..62b98ea09 100755
--- a/script/scriptMaster.sh
+++ b/script/scriptMaster.sh
@@ -466,7 +466,7 @@ scriptMaster() {
     )
     echo "[info] selected option: $SELECTION_NETWORK"
 
-    if [[ "$SELECTION_DIAMOND_TYPE" == "1)"* ]]; then
+    if [[ "$SELECTION_NETWORK" == "1)"* ]]; then
       # call update diamond log function
       updateDiamondLogs
     else
diff --git a/script/tasks/diamondSyncDEXs.sh b/script/tasks/diamondSyncDEXs.sh
index fb1d1b792..909f01fb8 100755
--- a/script/tasks/diamondSyncDEXs.sh
+++ b/script/tasks/diamondSyncDEXs.sh
@@ -80,9 +80,21 @@ function diamondSyncDEXs {
 
     # get addresses of DEXs that are already approved in the diamond contract
     RESULT=$(cast call "$DIAMOND_ADDRESS" "approvedDexs() returns (address[])" --rpc-url "$RPC_URL")
-    DEXS=($(echo ${RESULT:1:${#RESULT}-1} | tr ',' '\n' | tr '[:upper:]' '[:lower:]'))
 
-    echoDebug "${#DEXS[@]} approved DEXs found on diamond $DIAMOND_ADDRESS"
+    # Check if any approved DEXs were found
+    if [[ "$RESULT" == "[]" ]]; then
+      DEXS=()
+    else
+      # reformat
+      DEXS=($(echo ${RESULT:1:${#RESULT}-1} | tr ',' '\n' | tr '[:upper:]' '[:lower:]'))
+    fi
+
+    # Check the length of the array
+    if [ ${#DEXS[@]} -eq 0 ]; then
+      echoDebug "0 approved DEXs found on diamond $DIAMOND_ADDRESS"
+    else
+      echoDebug "${#DEXS[@]} approved DEXs found on diamond $DIAMOND_ADDRESS: $DEXS ${DEXS[@]}"
+    fi
 
     # Loop through all DEX addresses from config and check if they are already known by the diamond
     NEW_DEXS=()
diff --git a/script/tasks/diamondSyncSigs.sh b/script/tasks/diamondSyncSigs.sh
index 53f2cd720..71fbdd442 100755
--- a/script/tasks/diamondSyncSigs.sh
+++ b/script/tasks/diamondSyncSigs.sh
@@ -74,10 +74,38 @@ function diamondSyncSigs {
       # ensure that gas price is below maximum threshold (for mainnet only)
       doNotContinueUnlessGasIsBelowThreshold "$NETWORK"
 
+      # try to run the typescript script (will fail if the network is not yet supported by viem)
       ts-node ./script/tasks/diamondSyncSigs.ts --network "$NETWORK" --rpcUrl "$RPC_URL" --privateKey "$PRIVATE_KEY" --environment "$ENVIRONMENT"
+      RETURN_CODE=$?
+
+      # check the typescript script failed
+      if [ $RETURN_CODE -ne 0 ]; then
+        echoDebug "diamondSyncSigs.ts was not successful, trying the old approach now"
+
+        # do this stuff only on the first iteration to prepare the params for the call
+        if [[ $ATTEMPTS == 1 ]]; then
+          # get function selectors (sigs) from config files
+          local CFG_SIGS=($(jq -r '.[] | @sh' "./config/sigs.json" | tr -d \' | tr '[:upper:]' '[:lower:]' ))
+
+          # prepare parameter for batchSetFunctionApprovalBySignature call (=add all sigs to an array)
+          for d in "${CFG_SIGS[@]}"; do
+            local PARAMS+="${d},"
+          done
+        fi
+
+        # call diamond using the old approach (just registering all signatures)
+        if [[ "$DEBUG" == *"true"* ]]; then
+          # print output to console
+          cast send "$DIAMOND_ADDRESS" "batchSetFunctionApprovalBySignature(bytes4[],bool)" "[${PARAMS::${#PARAMS}-1}]" true --rpc-url $RPC_URL --private-key $(getPrivateKey "$NETWORK" "$ENVIRONMENT") --legacy
+        else
+          # do not print output to console
+          cast send "$DIAMOND_ADDRESS" "batchSetFunctionApprovalBySignature(bytes4[],bool)" "[${PARAMS::${#PARAMS}-1}]" true --rpc-url $RPC_URL --private-key $(getPrivateKey "$NETWORK" "$ENVIRONMENT") --legacy >/dev/null 2>&1
+        fi
+        RETURN_CODE=$?
+      fi
 
       # check the return code of the last call
-      if [ $? -eq 0 ]; then
+      if [ $RETURN_CODE -eq 0 ]; then
         break # exit the loop if the operation was successful
       fi
 
diff --git a/script/tasks/diamondSyncSigs.ts b/script/tasks/diamondSyncSigs.ts
index 27ff736da..281520a5b 100644
--- a/script/tasks/diamondSyncSigs.ts
+++ b/script/tasks/diamondSyncSigs.ts
@@ -11,6 +11,7 @@ import {
 import { ethers } from 'ethers6'
 import * as chains from 'viem/chains'
 import { privateKeyToAccount } from 'viem/accounts'
+import { getViemChainForNetworkName } from '../../utils/viemScriptHelpers'
 
 export const chainNameMappings: Record<string, string> = {
   zksync: 'zkSync',
@@ -52,8 +53,7 @@ const main = defineCommand({
   async run({ args }) {
     const { network, privateKey, environment } = args
 
-    const chainName = chainNameMappings[network] || network
-    const chain: Chain = chainMap[chainName]
+    const chain = getViemChainForNetworkName(network)
 
     console.log(`Checking signature for ${chain.name}`)
 
diff --git a/script/tasks/diamondUpdateFacet.sh b/script/tasks/diamondUpdateFacet.sh
index 6e18bc9eb..b084d929c 100755
--- a/script/tasks/diamondUpdateFacet.sh
+++ b/script/tasks/diamondUpdateFacet.sh
@@ -105,14 +105,47 @@ diamondUpdateFacet() {
   attempts=1
   while [ $attempts -le "$MAX_ATTEMPTS_PER_SCRIPT_EXECUTION" ]; do
     echo "[info] trying to execute $SCRIPT on $DIAMOND_CONTRACT_NAME now - attempt ${attempts} (max attempts:$MAX_ATTEMPTS_PER_SCRIPT_EXECUTION)"
-    # try to execute call
+    # check if command output should be printed to console
     if [[ "$DEBUG" == *"true"* ]]; then
-      # print output to console
-      RAW_RETURN_DATA=$(NETWORK=$NETWORK FILE_SUFFIX=$FILE_SUFFIX USE_DEF_DIAMOND=$USE_MUTABLE_DIAMOND NO_BROADCAST=false PRIVATE_KEY=$(getPrivateKey "$NETWORK" "$ENVIRONMENT") forge script "$SCRIPT_PATH" -f $NETWORK -vvvv --json --silent --broadcast --skip-simulation --legacy)
+      # check if we are deploying to PROD
+      if [[ "$ENVIRONMENT" == "production" ]]; then
+          # PROD: suggest diamondCut transaction to SAFE
+          UPDATE_SCRIPT=$(echo "$DEPLOY_SCRIPT_DIRECTORY""$SCRIPT".s.sol)
+          PRIVATE_KEY=$(getPrivateKey $NETWORK $ENVIRONMENT)
+          echoDebug "Calculating facet cuts for $SCRIPT..."
+          RAW_RETURN_DATA=$(NO_BROADCAST=true NETWORK=$NETWORK FILE_SUFFIX=$FILE_SUFFIX USE_DEF_DIAMOND=$USE_MUTABLE_DIAMOND PRIVATE_KEY=$PRIVATE_KEY forge script "$UPDATE_SCRIPT" -f $NETWORK -vvvv --json --silent --skip-simulation --legacy)
+          CLEAN_RETURN_DATA=$(echo $RAW_RETURN_DATA | sed 's/^.*{\"logs/{\"logs/')
+          FACET_CUT=$(echo $CLEAN_RETURN_DATA | jq -r '.returns.cutData.value')
+
+          if [ "$FACET_CUT" != "0x" ]; then
+            echoDebug "Proposing facet cut for $SCRIPT..."
+            DIAMOND_ADDRESS=$(getContractAddressFromDeploymentLogs "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME")
+            ts-node script/deploy/safe/propose-to-safe.ts --to "$DIAMOND_ADDRESS" --calldata "$FACET_CUT" --network "$NETWORK" --rpcUrl "$(getRPCUrl $NETWORK)" --privateKey "$SAFE_SIGNER_PRIVATE_KEY"
+          fi
+        else
+          # STAGING: just deploy normally without further checks
+          RAW_RETURN_DATA=$(NETWORK=$NETWORK FILE_SUFFIX=$FILE_SUFFIX USE_DEF_DIAMOND=$USE_MUTABLE_DIAMOND NO_BROADCAST=false PRIVATE_KEY=$(getPrivateKey "$NETWORK" "$ENVIRONMENT") forge script "$SCRIPT_PATH" -f $NETWORK -vvvv --json --silent --broadcast --skip-simulation --legacy)
+      fi
     else
-      # do not print output to console
-      RAW_RETURN_DATA=$(NETWORK=$NETWORK FILE_SUFFIX=$FILE_SUFFIX USE_DEF_DIAMOND=$USE_MUTABLE_DIAMOND NO_BROADCAST=false PRIVATE_KEY=$(getPrivateKey "$NETWORK" "$ENVIRONMENT") forge script "$SCRIPT_PATH" -f $NETWORK -vvvv --json --silent --broadcast --skip-simulation --legacy) 2>/dev/null
-    fi
+      # check if we are deploying to PROD
+      if [[ "$ENVIRONMENT" == "production" ]]; then
+        # PROD: suggest diamondCut transaction to SAFE
+        UPDATE_SCRIPT=$(echo "$DEPLOY_SCRIPT_DIRECTORY"Update"$SCRIPT".s.sol)
+        PRIVATE_KEY=$(getPrivateKey $NETWORK $ENVIRONMENT)
+        echoDebug "Calculating facet cuts for $script..."
+        RAW_RETURN_DATA=$(NO_BROADCAST=true NETWORK=$NETWORK FILE_SUFFIX=$FILE_SUFFIX USE_DEF_DIAMOND=$USE_MUTABLE_DIAMOND PRIVATE_KEY=$PRIVATE_KEY forge script "$UPDATE_SCRIPT" -f $NETWORK -vvvv --json --silent --skip-simulation --legacy)
+        CLEAN_RETURN_DATA=$(echo $RAW_RETURN_DATA | sed 's/^.*{\"logs/{\"logs/')
+        FACET_CUT=$(echo $CLEAN_RETURN_DATA | jq -r '.returns.cutData.value')
+        if [ "$FACET_CUT" != "0x" ]; then
+          echo "Proposing facet cut for $script on network $NETWROK..."
+          DIAMOND_ADDRESS=$(getContractAddressFromDeploymentLogs "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME")
+          ts-node script/deploy/safe/propose-to-safe.ts --to "$DIAMOND_ADDRESS" --calldata "$FACET_CUT" --network "$NETWORK" --rpcUrl $(getRPCUrl $NETWORK) --privateKey "$SAFE_SIGNER_PRIVATE_KEY"
+        fi
+      else
+        # STAGING: just deploy normally without further checks
+        RAW_RETURN_DATA=$(NETWORK=$NETWORK FILE_SUFFIX=$FILE_SUFFIX USE_DEF_DIAMOND=$USE_MUTABLE_DIAMOND NO_BROADCAST=false PRIVATE_KEY=$(getPrivateKey "$NETWORK" "$ENVIRONMENT") forge script "$SCRIPT_PATH" -f $NETWORK -vvvv --json --silent --broadcast --skip-simulation --legacy)
+      fi
+     fi
     RETURN_CODE=$?
     echoDebug "RAW_RETURN_DATA: $RAW_RETURN_DATA"
 
@@ -142,8 +175,10 @@ diamondUpdateFacet() {
     return 1
   fi
 
-  # save facet addresses
-  saveDiamondFacets "$NETWORK" "$ENVIRONMENT" "$USE_MUTABLE_DIAMOND" "$FACETS"
+  # save facet addresses (only if deploying to PROD, otherwise we update the logs before the diamondCut tx gets signed in the SAFE)
+  if [[ "$ENVIRONMENT" != "production" ]]; then
+    saveDiamondFacets "$NETWORK" "$ENVIRONMENT" "$USE_MUTABLE_DIAMOND" "$FACETS"
+  fi
 
   echo "[info] $SCRIPT successfully executed on network $NETWORK in $ENVIRONMENT environment"
   return 0
diff --git a/script/tasks/fundNewWalletOnAllChains.ts b/script/tasks/fundNewWalletOnAllChains.ts
new file mode 100644
index 000000000..0413ef286
--- /dev/null
+++ b/script/tasks/fundNewWalletOnAllChains.ts
@@ -0,0 +1,239 @@
+import { defineCommand, runMain } from 'citty'
+import { createPublicClient, createWalletClient, http, parseAbi } from 'viem'
+import { privateKeyToAccount } from 'viem/accounts'
+
+import { getAllNetworks, getViemChainForNetworkName } from '../../utils/network'
+import gasZipChainIds from '../resources/gasZipChainIds.json'
+import { BigNumber, BigNumberish } from 'ethers'
+import axios from 'axios'
+import { mainnet } from 'viem/chains'
+import { network } from 'hardhat'
+
+const GAS_ZIP_ROUTER_MAINNET = '0x9e22ebec84c7e4c4bd6d4ae7ff6f4d436d6d8390'
+const testnets = [
+  'bsc-testnet',
+  'lineatest',
+  'mumbai',
+  'sepolia',
+  'localanvil',
+  'virtualtestnet',
+]
+
+/// TYPES ///
+type HexString = `0x${string}`
+
+type GasZipChainIds = {
+  [key: string]: {
+    networkName: string
+    gasZipChainId: number
+  }
+}
+
+// this script is designed to be executed on mainnet (only)
+// it will get a list of all networks we support (minus testnets) and send an equal USD
+// amount worth of native tokens to each of these target networks using Gas.zip protocol
+
+// call this script
+// ts-node ./script/tasks/fundNewWalletOnAllChains.ts --privKeyFundingWallet "$PRIVATE_KEY" --receivingWallet "$PAUSER_WALLET" --doNotFundChains "[97,80001]" --fundAmountUSD "5"
+
+const main = defineCommand({
+  meta: {
+    name: 'fund-new-wallet-on-all-chains',
+    description:
+      'Funds a wallet with equal value of native gas on all supported chains',
+  },
+  args: {
+    privKeyFundingWallet: {
+      type: 'string',
+      description: 'Private key of the funding wallet',
+      required: true,
+    },
+    receivingWallet: {
+      type: 'string',
+      description: 'Address of the receiving wallet',
+      required: true,
+    },
+    doNotFundChains: {
+      type: 'string',
+      description: 'An array with chainIds that should not be funded',
+      required: true,
+    },
+    fundAmountUSD: {
+      type: 'string',
+      description: 'The amount of USD that should be sent to every chain',
+      required: true,
+    },
+  },
+  async run({ args }) {
+    const {
+      privKeyFundingWallet,
+      receivingWallet,
+      doNotFundChains,
+      fundAmountUSD,
+    } = args
+    const fundingWallet = privateKeyToAccount(
+      `0x${privKeyFundingWallet}` as HexString
+    )
+
+    console.log(`fundingWalletAddress: ${fundingWallet.address}`)
+    console.log(`receivingWallet: ${receivingWallet}`)
+    console.log(`doNotFundChains: ${doNotFundChains}`)
+    console.log(`fundAmountUSD: ${fundAmountUSD}`)
+
+    // get viem public client to read from blockchain
+    const publicClient = createPublicClient({
+      chain: mainnet,
+      transport: http(),
+    })
+
+    // create wallet client to write to chain
+    const walletClient = createWalletClient({
+      chain: mainnet,
+      transport: http(),
+      account: fundingWallet,
+    })
+
+    // get a list of all target networks
+    const networks = getAllTargetNetworks()
+    console.log(`${networks.length} target networks identified`)
+
+    // calculate total amount USD needed (fundAmount * networks)
+    const amountUSDPerNetwork = BigNumber.from(fundAmountUSD)
+    const amountRequiredUSD = amountUSDPerNetwork.mul(networks.length)
+    console.log(
+      `USD amount required to fund all networks: $ ${amountRequiredUSD.toString()}`
+    )
+
+    // get current native price and calculate nativeAmount required
+    const ethPrice = Math.round(await getEthPrice())
+    console.log(`Current ETH price: $${ethPrice}`)
+    // const amountRequiredNative = amountRequiredUSD.div(ethPrice)
+    const amountRequiredNative = getNativeAmountRequired(
+      amountRequiredUSD,
+      ethPrice,
+      10
+    )
+    console.log(
+      `Native amount required to fund all networks: ${amountRequiredNative.toString()}`
+    )
+
+    // get fundingWallet's native balance
+    const nativeBalance = BigNumber.from(
+      await publicClient.getBalance({
+        address: fundingWallet.address,
+      })
+    )
+
+    // make sure that balance is sufficient
+    if (nativeBalance.lt(amountRequiredNative))
+      throw new Error(
+        `Native balance of funding wallet is insufficient (required: ${amountRequiredNative}, available: ${nativeBalance}`
+      )
+    else
+      console.log(
+        'Funding wallet native balance is sufficient for this action: \nbalance: ${nativeBalance}, \nrequired: ${amountRequiredNative}'
+      )
+
+    // get an array with target chainIds
+    const chainIds = networks.map((network) => network.id)
+    console.log(`ChainIds: [${chainIds}]`)
+
+    // prepare calldata (get list of gasZip chainIds and combine them)
+    const chainsBN = chainIds.reduce(
+      (p, c) => (p << BigInt(8)) + BigInt(c),
+      BigInt(0)
+    )
+
+    // simulate transaction
+    const result = await publicClient.simulateContract({
+      account: fundingWallet,
+      address: GAS_ZIP_ROUTER_MAINNET,
+      abi: parseAbi(['function deposit(uint256,address) external payable']),
+      functionName: 'deposit',
+      value: amountRequiredNative.toBigInt(),
+      args: [chainsBN, receivingWallet as HexString],
+    })
+    console.dir(result, { depth: null, colors: true })
+
+    // execute transaction
+    const txHash = await walletClient.writeContract(result.request)
+    console.log(`Transaction successfully submitted: ${txHash}`)
+  },
+})
+
+const getNativeAmountRequired = (
+  dividend: BigNumberish,
+  divisor: BigNumberish,
+  precision: number
+): BigNumber => {
+  if (precision > 10) throw new Error('max precision is 10 decimals')
+  // calculate division result with precision
+  const multiplier = BigNumber.from(10).pow(precision)
+  const decimalResult = BigNumber.from(dividend).mul(multiplier).div(divisor)
+
+  // adjust the amount to 10 ** 18
+  const scaleFactor = BigNumber.from(10).pow(18 - precision)
+  const nativeAmount = decimalResult.mul(scaleFactor)
+
+  return nativeAmount
+}
+
+// Function to get ETH price from CoinGecko
+const getEthPrice = async () => {
+  try {
+    const response = await axios.get(
+      'https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd'
+    )
+    const ethPrice = response.data.ethereum.usd
+    // console.log(`Current ETH price: $${ethPrice}`)
+    return ethPrice
+  } catch (error) {
+    console.error('Error fetching ETH price:', error)
+    throw error
+  }
+}
+
+const getAllTargetNetworks = () => {
+  // get a list of all target networks
+  const allNetworks = getAllNetworks()
+
+  // remove testnets
+  const allProdNetworks = allNetworks.filter(
+    (network) => !testnets.includes(network)
+  )
+
+  // get an array with Viem networks
+  const allViemNetworks = allProdNetworks.map((network) => {
+    const chain = getViemChainForNetworkName(network)
+    return {
+      ...chain,
+      nameLiFi: network,
+    }
+  })
+
+  // identify networks that gasZip does not support
+  const gasZipChainIdsTyped: GasZipChainIds = gasZipChainIds
+  const unsupportedNetworks = allViemNetworks.filter(
+    (network) => !gasZipChainIdsTyped[network.id.toString()]
+  )
+
+  if (unsupportedNetworks.length > 0)
+    console.log(
+      `Viem does not support ${
+        unsupportedNetworks.length
+      } of our networks: [${unsupportedNetworks.map((network) => network.id)}]`
+    )
+
+  // identify networks that gasZip does not support
+  const targetNetworks = allViemNetworks.filter(
+    (network) => gasZipChainIdsTyped[network.id.toString()]
+  )
+
+  return targetNetworks
+}
+
+function sleep(ms: number): Promise<void> {
+  return new Promise((resolve) => setTimeout(resolve, ms))
+}
+
+runMain(main)
diff --git a/script/tasks/moveAllFundsToNewWallet.ts b/script/tasks/moveAllFundsToNewWallet.ts
deleted file mode 100644
index b882472f7..000000000
--- a/script/tasks/moveAllFundsToNewWallet.ts
+++ /dev/null
@@ -1,480 +0,0 @@
-import { defineCommand, runMain } from 'citty'
-import {
-  Abi,
-  Hex,
-  PrivateKeyAccount,
-  createPublicClient,
-  createWalletClient,
-  encodeFunctionData,
-  erc20Abi,
-  http,
-  multicall3Abi,
-  parseAbi,
-  type Chain,
-} from 'viem'
-import * as chains from 'viem/chains'
-import { privateKeyToAccount } from 'viem/accounts'
-import { getAllNetworks, node_url } from '../../utils/network'
-import axios from 'axios'
-import { mainnet } from 'viem/chains'
-import { erc20 } from '@uma/sdk/dist/types/clients'
-import { call, readContract, simulateContract, multicall } from 'viem/actions'
-import { BigNumber } from 'ethers'
-import BigNumberJs from 'bignumber.js'
-import { getMulticall3AddressForChain } from '../../utils/getMulticallAddress'
-import { Multicall2 } from '@arbitrum/sdk/dist/lib/abi/Multicall2'
-
-const MAX_BATCH_SIZE_MULTICALLS = 500 // the max amount of multicalls we do in one call
-const MIN_USD_THRESHOLD_BALANCE_TRANSFER = 5 // balances must be worth more than 5 USD, otherwise we leave them
-const ADDRESS_USDC_ETH = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
-const ADDRESS_WETH_ETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
-const ADDRESS_MULTICALL3_ETH = '0xcA11bde05977b3631167028862bE2a173976CA11'
-const BALANCE_OF_ABI = parseAbi([
-  'function balanceOf(address) external view returns (uint256)',
-])
-
-/// TYPES ///
-
-type Token = {
-  chainId: number
-  address: string
-  symbol: string
-  name: string
-  decimals: number
-  priceUSD: string
-  coinKey: string
-  logoURI: string
-}
-
-interface TokensByChainId {
-  [chainId: string]: Token[]
-}
-
-interface TokenAPIResponse {
-  tokens: TokensByChainId
-}
-
-type BalanceNotFound = 'BalanceNotFound'
-
-type TokenBalance = {
-  token: Token
-  balance: string | BalanceNotFound
-}
-
-type Contract = {
-  address: `0x${string}`
-  abi: Abi
-}
-
-enum CallType {
-  'balanceOf',
-  'transfer',
-}
-
-type HexString = `0x${string}`
-
-type MultiCall3 = {
-  target: HexString
-  allowFailure: boolean
-  callData: HexString
-}
-type MultiCallResponse = {
-  success: string
-  returnData: HexString
-}
-type MultiCall = Contract & {
-  functionName: string
-  args?: any[]
-  client?: any
-}
-
-export const chainNameMappings: Record<string, string> = {
-  zksync: 'zkSync',
-  polygonzkevm: 'polygonZkEvm',
-}
-
-// will contain a list of all tokens
-const BASE_URL_LIFI_API = `https://partner-test.li.quest/v1`
-const fullURL = `${BASE_URL_LIFI_API}/tokens`
-let allTokens: TokenAPIResponse
-
-const getAllTokens = async () => {
-  // not yet initialized
-  if (!allTokens) {
-    try {
-      // get a list of all tokens
-      const result = await axios(fullURL)
-
-      // return only the "tokens" property
-      allTokens = result.data
-    } catch (err) {
-      const msg = JSON.stringify(err, null, 2)
-      throw new Error(msg)
-    }
-  }
-
-  if (!allTokens) throw Error(`could not get a list of all ERC20 tokens`)
-
-  return allTokens
-}
-
-const getAllKnownERC20TokensForChain = async (chainId: number) => {
-  const allTokens = await getAllTokens()
-
-  if (!allTokens.tokens)
-    throw Error('Error while getting all known ERC20 tokens')
-
-  // return only the tokens for the given chainId, or throw an error if none exist
-  if (allTokens.tokens[chainId.toString()]) {
-    return allTokens.tokens[chainId.toString()]
-  } else {
-    throw new Error(`No tokens found for chainId: ${chainId}`)
-  }
-}
-
-const doNotExecuteOnNetworks = [
-  'localanvil',
-  'sepolia',
-  'mumbai',
-  'lineatest',
-  'bsc-testnet',
-  'virtualtestnet',
-]
-
-const getAllSupportedNetworks = () => {
-  // get a list of all networks
-  const networks = getAllNetworks()
-
-  // filter out all testnets and local networks
-  return networks.filter((network) => !doNotExecuteOnNetworks.includes(network))
-}
-
-const chainMap: Record<string, Chain> = {}
-for (const [k, v] of Object.entries(chains)) {
-  // @ts-ignore
-  chainMap[k] = v
-}
-
-const main = defineCommand({
-  meta: {
-    name: 'move-all-funds-to-new-wallet',
-    description:
-      'Moves all ERC20 and native funds of a wallet to another address on all supported chains',
-  },
-  args: {
-    privateKey: {
-      type: 'string',
-      description: 'Private key of the source wallet',
-      required: true,
-    },
-    newWallet: {
-      type: 'string',
-      description: 'Address of the receiving wallet',
-      required: true,
-    },
-  },
-  async run({ args }) {
-    const { privateKey, newWallet } = args
-    const srcWallet = privateKeyToAccount(`0x${privateKey}` as `0x${string}`)
-
-    let networks = await getAllSupportedNetworks()
-    networks = ['mainnet', 'bsc']
-    networks = ['mainnet']
-    console.log(`${networks.length} networks found`)
-
-    // iterate through the list of networks
-    const promises = await Promise.allSettled(
-      networks.map((network) =>
-        performTaskOnNetwork(network, srcWallet, newWallet as HexString)
-      )
-    )
-
-    // create an overview to show results per network
-    const overview = promises.map((result, index) => {
-      const network = networks[index]
-      return {
-        network,
-        status: result.status,
-        reason: result.status === 'rejected' ? result.reason : undefined,
-      }
-    })
-
-    console.log('Task Overview:')
-    overview.forEach((result) => {
-      if (result.status === 'fulfilled') {
-        console.log(`Network: ${result.network}: Success`)
-      } else {
-        console.log(
-          `Network: ${result.network}: Not executed - ${result.reason}`
-        )
-      }
-    })
-  },
-})
-
-const getCalldata = (type: CallType, args: any): string => {
-  let callData
-  try {
-    callData = encodeFunctionData({
-      abi: erc20Abi,
-      functionName: type == CallType.balanceOf ? 'balanceOf' : 'transfer',
-      args,
-    })
-  } catch (error: any) {
-    console.error(`ERROR: ${error.message})`)
-  }
-
-  if (!callData) throw new Error('no calldata')
-
-  return callData
-}
-
-const getMulticall = (
-  contractAddress: HexString,
-  type: CallType,
-  args: any
-): MultiCall3 => {
-  const callData = getCalldata(type, args) as HexString
-
-  const call: MultiCall3 = {
-    target: contractAddress,
-    allowFailure: true,
-    callData,
-  }
-  return call
-}
-
-const isAboveMinUSDThreshold = (balance: TokenBalance): boolean => {
-  const usdAmount = new BigNumberJs(balance.balance)
-    .multipliedBy(balance.token.priceUSD)
-    .shiftedBy(-balance.token.decimals)
-
-  return usdAmount.gte(MIN_USD_THRESHOLD_BALANCE_TRANSFER)
-}
-
-const transferBalances = async (
-  publicClient: any,
-  srcWallet: PrivateKeyAccount,
-  balances: TokenBalance[],
-  receiverAddress: HexString,
-  multicall3Address: HexString
-) => {
-  // console.log(`[${publicClient.chain.name}] in transferBalances`)
-
-  // get transfer() multicalls for each balance
-  const multicalls = balances
-    .map((balance) => {
-      // check if balance is above min USD value, otherwise neglect this token
-      if (isAboveMinUSDThreshold(balance)) {
-        // create multicall for it
-        return getMulticall(
-          balance.token.address as HexString,
-          CallType.transfer,
-          [receiverAddress, balance.balance]
-        )
-      }
-    })
-    // filter out all empty multicalls
-    .filter((call) => call != null)
-
-  console.log(
-    `[${publicClient.chain.name}] ${multicalls.length} transfer calls prepared`
-  )
-
-  // if exceedingly many potential transfers with min USD value are found, stop here and let the user check before proceeding
-  if (multicalls.length > 30)
-    throw new Error(
-      `\n\n[${publicClient.chain.name}] more than ${
-        multicalls.length
-      } potential transfers found. Not continuing for protection of native funds.
-      Please check if all transfers are legit and then run the script again. \n\n Multicalls: ${JSON.stringify(
-        multicalls,
-        null,
-        2
-      )}`
-    )
-
-  // send transaction
-  // const { result } = await publicClient.writeContract({
-  //   account: srcWallet.address,
-  //   address: multicall3Address,
-  //   abi: multicall3Abi,
-  //   functionName: 'aggregate3',
-  //   args: [multicalls],
-  // })
-
-  // check success
-}
-
-// Function to perform some asynchronous task on a network
-const performTaskOnNetwork = async (
-  network: string,
-  srcWallet: PrivateKeyAccount,
-  newWallet: HexString
-): Promise<void> => {
-  // get the (viem) chain for this network
-  const chainName = chainNameMappings[network] || network
-  const chain: Chain = chainMap[chainName]
-  console.log(`[${chain.name}] in performTaskOnNetwork`)
-
-  // get RPC URL
-  const rpcUrl = node_url(network)
-
-  // get viem public client to read from blockchain
-  const publicClient = createPublicClient({
-    chain,
-    transport: http(),
-  })
-
-  // create wallet client for this chain
-  const walletClient = createWalletClient({
-    chain,
-    transport: http(),
-    account: srcWallet,
-  })
-
-  // get multicall3 address for network
-  const multicall3Address = (await getMulticall3AddressForChain(
-    chain.id
-  )) as HexString
-  console.log(`[${chain.name}] multicall3 address found: ${multicall3Address}`)
-
-  // check get native balance
-  // const nativeBalance = await publicClient.getBalance({
-  //   address: srcWallet,
-  // })
-  // console.log(`[${network}] native Balance (${network}): ${nativeBalance} `)
-
-  // get balances of source wallet
-  const balances = await getAllERC20BalancesForWallet(
-    srcWallet,
-    chain.id,
-    publicClient,
-    multicall3Address
-  )
-  console.log(
-    `[${chain.name}] ${balances.length} balances above threshold ($ ${MIN_USD_THRESHOLD_BALANCE_TRANSFER}) found`
-  )
-
-  // transfer all balances
-  const transferResults = await transferBalances(
-    publicClient,
-    srcWallet,
-    balances,
-    newWallet as Hex,
-    multicall3Address
-  )
-
-  // check results
-}
-
-const convertBalanceFromMulticallResponse = (
-  response: MultiCallResponse
-): string => {
-  // check if data is available
-  if (!response || !response.success) {
-    return 'BalanceNotFound'
-  }
-
-  // some contracts respond with empty string
-  if (response.returnData === '0x') return '0'
-
-  // convert hex to string
-  return BigNumber.from(response.returnData).toString()
-}
-
-const batchExecuteMulticall = async (
-  tokens: Token[],
-  srcWallet: PrivateKeyAccount,
-  publicClient: any,
-  multicall3Address: HexString
-) => {
-  const calls: MultiCall3[] = []
-  const results: MultiCallResponse[] = []
-
-  // create a multicall call object for each token and execute one multicall for all
-  const processBatch = async (batch: Token[]) => {
-    batch.forEach((token) => {
-      // get a multicall object for each token address
-      const multicall = getMulticall(
-        token.address as HexString,
-        CallType.balanceOf,
-        [srcWallet.address]
-      )
-
-      // add multicall object to calls array
-      calls.push(multicall)
-    })
-
-    const { result } = await publicClient.simulateContract({
-      account: srcWallet,
-      address: multicall3Address,
-      abi: multicall3Abi,
-      functionName: 'aggregate3',
-      args: [calls],
-    })
-
-    console.log(`[${publicClient.chain.name}] result[0]: ${result[0]} `)
-    console.log(
-      `[${publicClient.chain.name}] ${result.length} results received from this batch`
-    )
-
-    return results.push(...result)
-  }
-
-  for (let i = 0; i < tokens.length; i += MAX_BATCH_SIZE_MULTICALLS) {
-    // Get tokens for current batch
-    const batchTokens = tokens.slice(i, i + MAX_BATCH_SIZE_MULTICALLS)
-
-    console.log(
-      `Processing chunk from index ${i} to ${i + MAX_BATCH_SIZE_MULTICALLS - 1}`
-    )
-
-    // create multicalls and execute them for this batch
-    await processBatch(batchTokens)
-  }
-
-  console.log(`${calls.length} multicalls executed`)
-  console.log(`${results.length} results received`)
-  return results
-}
-
-const getAllERC20BalancesForWallet = async (
-  srcWallet: PrivateKeyAccount,
-  chainId: number,
-  publicClient: any,
-  multicall3Address: HexString
-): Promise<TokenBalance[]> => {
-  // get all tokens
-  const chainTokens = await getAllKnownERC20TokensForChain(chainId)
-  console.log(
-    `[${publicClient.chain.name}] ${chainTokens.length} tokens found on this network`
-  )
-
-  const multicallResults = await batchExecuteMulticall(
-    chainTokens,
-    srcWallet,
-    publicClient,
-    multicall3Address
-  )
-
-  return (
-    chainTokens
-      .map((token, index) => {
-        const tokenBalance: TokenBalance = {
-          token,
-          balance: convertBalanceFromMulticallResponse(multicallResults[index]),
-        }
-
-        return tokenBalance
-      })
-      // filter out zero and unavailable balances
-      .filter(
-        (tokenBalance) =>
-          tokenBalance.balance !== '0' &&
-          tokenBalance.balance !== 'BalanceNotFound'
-      )
-  )
-}
-
-runMain(main)
diff --git a/script/tasks/solidity/RemoveUnusableSelectorsFromImmutableDiamond.s.sol b/script/tasks/solidity/RemoveUnusableSelectorsFromImmutableDiamond.s.sol
index ab8765866..0bfe018b4 100644
--- a/script/tasks/solidity/RemoveUnusableSelectorsFromImmutableDiamond.s.sol
+++ b/script/tasks/solidity/RemoveUnusableSelectorsFromImmutableDiamond.s.sol
@@ -17,7 +17,6 @@ import { CBridgeFacetPacked } from "lifi/Facets/CBridgeFacetPacked.sol";
 import { HopFacet } from "lifi/Facets/HopFacet.sol";
 import { HopFacetOptimized } from "lifi/Facets/HopFacetOptimized.sol";
 import { HopFacetPacked } from "lifi/Facets/HopFacetPacked.sol";
-import { MultichainFacet } from "lifi/Facets/MultichainFacet.sol";
 import { OptimismBridgeFacet } from "lifi/Facets/OptimismBridgeFacet.sol";
 import { StargateFacet } from "lifi/Facets/StargateFacet.sol";
 
@@ -92,16 +91,6 @@ contract DeployScript is UpdateScriptBase {
             selectors.push(HopFacetPacked.setApprovalForHopBridges.selector);
         }
 
-        // MultichainFacet
-        if (
-            DiamondLoupeFacet(diamond).facetAddress(
-                MultichainFacet.registerRouters.selector
-            ) != address(0)
-        ) {
-            selectors.push(MultichainFacet.registerRouters.selector);
-            selectors.push(MultichainFacet.updateAddressMappings.selector);
-        }
-
         // OptimismBridgeFacet
         if (
             DiamondLoupeFacet(diamond).facetAddress(
diff --git a/src/Errors/GenericErrors.sol b/src/Errors/GenericErrors.sol
index a5d1121b4..75fd3dff0 100644
--- a/src/Errors/GenericErrors.sol
+++ b/src/Errors/GenericErrors.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 error AlreadyInitialized();
diff --git a/src/Helpers/CelerIMFacetBase.sol b/src/Helpers/CelerIMFacetBase.sol
index 79e413be6..00d3147f9 100644
--- a/src/Helpers/CelerIMFacetBase.sol
+++ b/src/Helpers/CelerIMFacetBase.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/src/Helpers/ExcessivelySafeCall.sol b/src/Helpers/ExcessivelySafeCall.sol
index 7532a319f..40375cd94 100644
--- a/src/Helpers/ExcessivelySafeCall.sol
+++ b/src/Helpers/ExcessivelySafeCall.sol
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: MIT OR Apache-2.0
 // This contract has been taken from: https://github.com/nomad-xyz/ExcessivelySafeCall
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { InvalidCallData } from "../Errors/GenericErrors.sol";
diff --git a/src/Helpers/ReentrancyGuard.sol b/src/Helpers/ReentrancyGuard.sol
index fd8d2a356..a03b5a61f 100644
--- a/src/Helpers/ReentrancyGuard.sol
+++ b/src/Helpers/ReentrancyGuard.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: UNLICENSED
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 /// @title Reentrancy Guard
diff --git a/src/Helpers/SwapperV2.sol b/src/Helpers/SwapperV2.sol
index 85920d7e0..6b5e14fa9 100644
--- a/src/Helpers/SwapperV2.sol
+++ b/src/Helpers/SwapperV2.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { ILiFi } from "../Interfaces/ILiFi.sol";
diff --git a/src/Helpers/TransferrableOwnership.sol b/src/Helpers/TransferrableOwnership.sol
index 79a2537c3..c833651d3 100644
--- a/src/Helpers/TransferrableOwnership.sol
+++ b/src/Helpers/TransferrableOwnership.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { IERC173 } from "../Interfaces/IERC173.sol";
diff --git a/src/Helpers/Validatable.sol b/src/Helpers/Validatable.sol
index e0ea85831..7edc8fd54 100644
--- a/src/Helpers/Validatable.sol
+++ b/src/Helpers/Validatable.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: UNLICENSED
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { LibAsset } from "../Libraries/LibAsset.sol";
diff --git a/src/Interfaces/IAcrossSpokePool.sol b/src/Interfaces/IAcrossSpokePool.sol
index 8e8e194ce..fe5e97b6c 100644
--- a/src/Interfaces/IAcrossSpokePool.sol
+++ b/src/Interfaces/IAcrossSpokePool.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IAcrossSpokePool {
diff --git a/src/Interfaces/IAllBridge.sol b/src/Interfaces/IAllBridge.sol
index 7fe0a3b19..3b9c934db 100644
--- a/src/Interfaces/IAllBridge.sol
+++ b/src/Interfaces/IAllBridge.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 /// @title AllBridge Interface
diff --git a/src/Interfaces/ICBridge.sol b/src/Interfaces/ICBridge.sol
index c019f1289..9f4b30b3b 100644
--- a/src/Interfaces/ICBridge.sol
+++ b/src/Interfaces/ICBridge.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ICBridge {
diff --git a/src/Interfaces/ICircleBridgeProxy.sol b/src/Interfaces/ICircleBridgeProxy.sol
index b01ad3a91..29da3adc2 100644
--- a/src/Interfaces/ICircleBridgeProxy.sol
+++ b/src/Interfaces/ICircleBridgeProxy.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ICircleBridgeProxy {
diff --git a/src/Interfaces/IConnextHandler.sol b/src/Interfaces/IConnextHandler.sol
index 4398a0234..c70bdbde1 100644
--- a/src/Interfaces/IConnextHandler.sol
+++ b/src/Interfaces/IConnextHandler.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IConnextHandler {
diff --git a/src/Interfaces/IDeBridgeGate.sol b/src/Interfaces/IDeBridgeGate.sol
index 8829dbaca..feade3e58 100644
--- a/src/Interfaces/IDeBridgeGate.sol
+++ b/src/Interfaces/IDeBridgeGate.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IDeBridgeGate {
diff --git a/src/Interfaces/IDiamondCut.sol b/src/Interfaces/IDiamondCut.sol
index d3f531b9c..cab5553c3 100644
--- a/src/Interfaces/IDiamondCut.sol
+++ b/src/Interfaces/IDiamondCut.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IDiamondCut {
diff --git a/src/Interfaces/IDiamondLoupe.sol b/src/Interfaces/IDiamondLoupe.sol
index ee6ee5589..6089ff06d 100644
--- a/src/Interfaces/IDiamondLoupe.sol
+++ b/src/Interfaces/IDiamondLoupe.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 // A loupe is a small magnifying glass used to look at diamonds.
diff --git a/src/Interfaces/IDlnSource.sol b/src/Interfaces/IDlnSource.sol
index 13789b30f..b3ca24414 100644
--- a/src/Interfaces/IDlnSource.sol
+++ b/src/Interfaces/IDlnSource.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IDlnSource {
diff --git a/src/Interfaces/IERC165.sol b/src/Interfaces/IERC165.sol
index 15cad26b6..5d1ddaefb 100644
--- a/src/Interfaces/IERC165.sol
+++ b/src/Interfaces/IERC165.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IERC165 {
diff --git a/src/Interfaces/IERC173.sol b/src/Interfaces/IERC173.sol
index 3bdcc568d..474c42f57 100644
--- a/src/Interfaces/IERC173.sol
+++ b/src/Interfaces/IERC173.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 /// @title ERC-173 Contract Ownership Standard
diff --git a/src/Interfaces/IERC20Proxy.sol b/src/Interfaces/IERC20Proxy.sol
index 207e1fe03..521686a81 100644
--- a/src/Interfaces/IERC20Proxy.sol
+++ b/src/Interfaces/IERC20Proxy.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IERC20Proxy {
diff --git a/src/Interfaces/IExecutor.sol b/src/Interfaces/IExecutor.sol
index 1dc82adb3..07f101681 100644
--- a/src/Interfaces/IExecutor.sol
+++ b/src/Interfaces/IExecutor.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { LibSwap } from "../Libraries/LibSwap.sol";
diff --git a/src/Interfaces/IGatewayRouter.sol b/src/Interfaces/IGatewayRouter.sol
index 95dc7a665..0ee520736 100644
--- a/src/Interfaces/IGatewayRouter.sol
+++ b/src/Interfaces/IGatewayRouter.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: BUSL-1.1
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IGatewayRouter {
diff --git a/src/Interfaces/IHopBridge.sol b/src/Interfaces/IHopBridge.sol
index e3f8e8720..102619825 100644
--- a/src/Interfaces/IHopBridge.sol
+++ b/src/Interfaces/IHopBridge.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IHopBridge {
diff --git a/src/Interfaces/IHyphenRouter.sol b/src/Interfaces/IHyphenRouter.sol
index 1674d4a85..b07c54004 100644
--- a/src/Interfaces/IHyphenRouter.sol
+++ b/src/Interfaces/IHyphenRouter.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 // https://github.com/bcnmy/hyphen-contract/blob/master/contracts/hyphen/LiquidityPool.sol
diff --git a/src/Interfaces/IL1StandardBridge.sol b/src/Interfaces/IL1StandardBridge.sol
index ede673018..b8aff2634 100644
--- a/src/Interfaces/IL1StandardBridge.sol
+++ b/src/Interfaces/IL1StandardBridge.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: BUSL-1.1
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IL1StandardBridge {
diff --git a/src/Interfaces/ILiFi.sol b/src/Interfaces/ILiFi.sol
index 0b27e0946..31d9adab5 100644
--- a/src/Interfaces/ILiFi.sol
+++ b/src/Interfaces/ILiFi.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ILiFi {
diff --git a/src/Interfaces/IMayan.sol b/src/Interfaces/IMayan.sol
index 6c8bfb8ef..b6c4f3657 100644
--- a/src/Interfaces/IMayan.sol
+++ b/src/Interfaces/IMayan.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IMayan {
diff --git a/src/Interfaces/IMultichainRouter.sol b/src/Interfaces/IMultichainRouter.sol
index 7334b01c8..b14e110d1 100644
--- a/src/Interfaces/IMultichainRouter.sol
+++ b/src/Interfaces/IMultichainRouter.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IMultichainRouter {
diff --git a/src/Interfaces/IMultichainToken.sol b/src/Interfaces/IMultichainToken.sol
index 8349d1bcb..386c0022f 100644
--- a/src/Interfaces/IMultichainToken.sol
+++ b/src/Interfaces/IMultichainToken.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IMultichainToken {
diff --git a/src/Interfaces/IOmniBridge.sol b/src/Interfaces/IOmniBridge.sol
index 489e00b7e..68ab30937 100644
--- a/src/Interfaces/IOmniBridge.sol
+++ b/src/Interfaces/IOmniBridge.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IOmniBridge {
diff --git a/src/Interfaces/IRootChainManager.sol b/src/Interfaces/IRootChainManager.sol
index 49ac21539..7b3803c13 100644
--- a/src/Interfaces/IRootChainManager.sol
+++ b/src/Interfaces/IRootChainManager.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: BUSL-1.1
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IRootChainManager {
diff --git a/src/Interfaces/ISquidMulticall.sol b/src/Interfaces/ISquidMulticall.sol
index 844106075..dfc4df6bf 100644
--- a/src/Interfaces/ISquidMulticall.sol
+++ b/src/Interfaces/ISquidMulticall.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ISquidMulticall {
diff --git a/src/Interfaces/ISquidRouter.sol b/src/Interfaces/ISquidRouter.sol
index dee9926d3..f28c99da4 100644
--- a/src/Interfaces/ISquidRouter.sol
+++ b/src/Interfaces/ISquidRouter.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { ISquidMulticall } from "./ISquidMulticall.sol";
diff --git a/src/Interfaces/IStargate.sol b/src/Interfaces/IStargate.sol
index 1536acb97..cc3e46d9c 100644
--- a/src/Interfaces/IStargate.sol
+++ b/src/Interfaces/IStargate.sol
@@ -1,5 +1,5 @@
 // Interface for Stargate V2
-
+/// @custom:version 1.0.0
 // SPDX-License-Identifier: BUSL-1.1
 pragma solidity =0.8.17;
 
diff --git a/src/Interfaces/IStargateRouter.sol b/src/Interfaces/IStargateRouter.sol
index bd702c1fd..7fbda9a6e 100644
--- a/src/Interfaces/IStargateRouter.sol
+++ b/src/Interfaces/IStargateRouter.sol
@@ -1,4 +1,5 @@
 // Interface for Stargate V1
+/// @custom:version 1.0.0
 
 // SPDX-License-Identifier: BUSL-1.1
 pragma solidity 0.8.17;
diff --git a/src/Interfaces/ISymbiosisMetaRouter.sol b/src/Interfaces/ISymbiosisMetaRouter.sol
index b60c46e4f..8ad1afd2a 100644
--- a/src/Interfaces/ISymbiosisMetaRouter.sol
+++ b/src/Interfaces/ISymbiosisMetaRouter.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ISymbiosisMetaRouter {
diff --git a/src/Interfaces/ISynapseRouter.sol b/src/Interfaces/ISynapseRouter.sol
index dd6aba939..804177ea4 100644
--- a/src/Interfaces/ISynapseRouter.sol
+++ b/src/Interfaces/ISynapseRouter.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ISynapseRouter {
diff --git a/src/Interfaces/ITeleportGateway.sol b/src/Interfaces/ITeleportGateway.sol
index 1c5b83517..9a31f3647 100644
--- a/src/Interfaces/ITeleportGateway.sol
+++ b/src/Interfaces/ITeleportGateway.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ITeleportGateway {
diff --git a/src/Interfaces/IThorSwap.sol b/src/Interfaces/IThorSwap.sol
index 99445f4c9..244ef05ed 100644
--- a/src/Interfaces/IThorSwap.sol
+++ b/src/Interfaces/IThorSwap.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 /// @title ThorSwap Interface
diff --git a/src/Interfaces/ITokenMessenger.sol b/src/Interfaces/ITokenMessenger.sol
index 817ffc803..7ac314ebc 100644
--- a/src/Interfaces/ITokenMessenger.sol
+++ b/src/Interfaces/ITokenMessenger.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ITokenMessenger {
diff --git a/src/Interfaces/ITransactionManager.sol b/src/Interfaces/ITransactionManager.sol
index b585a75fa..83f162860 100644
--- a/src/Interfaces/ITransactionManager.sol
+++ b/src/Interfaces/ITransactionManager.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: UNLICENSED
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface ITransactionManager {
diff --git a/src/Interfaces/IXDaiBridge.sol b/src/Interfaces/IXDaiBridge.sol
index 9b9d88bc3..951d29886 100644
--- a/src/Interfaces/IXDaiBridge.sol
+++ b/src/Interfaces/IXDaiBridge.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IXDaiBridge {
diff --git a/src/Interfaces/IXDaiBridgeL2.sol b/src/Interfaces/IXDaiBridgeL2.sol
index 3880e4d8b..a26f392a3 100644
--- a/src/Interfaces/IXDaiBridgeL2.sol
+++ b/src/Interfaces/IXDaiBridgeL2.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 interface IXDaiBridgeL2 {
diff --git a/src/Libraries/LibAccess.sol b/src/Libraries/LibAccess.sol
index a6b9e9847..583f59e90 100644
--- a/src/Libraries/LibAccess.sol
+++ b/src/Libraries/LibAccess.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { CannotAuthoriseSelf, UnAuthorized } from "../Errors/GenericErrors.sol";
diff --git a/src/Libraries/LibAllowList.sol b/src/Libraries/LibAllowList.sol
index 7e2794e5a..c347cb5e0 100644
--- a/src/Libraries/LibAllowList.sol
+++ b/src/Libraries/LibAllowList.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { InvalidContract } from "../Errors/GenericErrors.sol";
diff --git a/src/Libraries/LibAsset.sol b/src/Libraries/LibAsset.sol
index 910d13aca..d3b54b606 100644
--- a/src/Libraries/LibAsset.sol
+++ b/src/Libraries/LibAsset.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: UNLICENSED
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 import { InsufficientBalance, NullAddrIsNotAnERC20Token, NullAddrIsNotAValidSpender, NoTransferToNullAddress, InvalidAmount, NativeAssetTransferFailed } from "../Errors/GenericErrors.sol";
 import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/src/Libraries/LibBytes.sol b/src/Libraries/LibBytes.sol
index d79b34812..4a19bca17 100644
--- a/src/Libraries/LibBytes.sol
+++ b/src/Libraries/LibBytes.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 library LibBytes {
diff --git a/src/Libraries/LibDiamond.sol b/src/Libraries/LibDiamond.sol
index f6adcb109..39559b361 100644
--- a/src/Libraries/LibDiamond.sol
+++ b/src/Libraries/LibDiamond.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { IDiamondCut } from "../Interfaces/IDiamondCut.sol";
diff --git a/src/Libraries/LibSwap.sol b/src/Libraries/LibSwap.sol
index 6646340fa..62c3ae81e 100644
--- a/src/Libraries/LibSwap.sol
+++ b/src/Libraries/LibSwap.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import { LibAsset } from "./LibAsset.sol";
diff --git a/src/Libraries/LibUtil.sol b/src/Libraries/LibUtil.sol
index bde149493..1f633a5d1 100644
--- a/src/Libraries/LibUtil.sol
+++ b/src/Libraries/LibUtil.sol
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: MIT
+/// @custom:version 1.0.0
 pragma solidity 0.8.17;
 
 import "./LibBytes.sol";
diff --git a/src/Libraries/OFTComposeMsgCodec.sol b/src/Libraries/OFTComposeMsgCodec.sol
index 79ca7a15e..619a079e6 100644
--- a/src/Libraries/OFTComposeMsgCodec.sol
+++ b/src/Libraries/OFTComposeMsgCodec.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-
+/// @custom:version 1.0.0
 pragma solidity =0.8.17;
 
 // This library was taken from: https://github.com/LayerZero-Labs/LayerZero-v2/tree/38278c8d8f4606d0ce247d6edd473fc96674769b/packages/layerzero-v2/evm/oapp/contracts/oft/libs
diff --git a/src/Periphery/LiFiDEXAggregator.sol b/src/Periphery/LiFiDEXAggregator.sol
new file mode 100644
index 000000000..a61f38245
--- /dev/null
+++ b/src/Periphery/LiFiDEXAggregator.sol
@@ -0,0 +1,1180 @@
+// SPDX-License-Identifier: UNLICENSED
+
+pragma solidity ^0.8.17;
+
+import { SafeERC20, IERC20, IERC20Permit } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
+
+address constant NATIVE_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
+address constant IMPOSSIBLE_POOL_ADDRESS = 0x0000000000000000000000000000000000000001;
+address constant INTERNAL_INPUT_SOURCE = 0x0000000000000000000000000000000000000000;
+
+uint8 constant LOCKED = 2;
+uint8 constant NOT_LOCKED = 1;
+uint8 constant PAUSED = 2;
+uint8 constant NOT_PAUSED = 1;
+
+/// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)
+uint160 constant MIN_SQRT_RATIO = 4295128739;
+/// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)
+uint160 constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;
+
+/// @title LiFi DEX Aggregator
+/// @author Ilya Lyalin (contract copied from: https://github.com/sushiswap/sushiswap/blob/c8c80dec821003eb72eb77c7e0446ddde8ca9e1e/protocols/route-processor/contracts/RouteProcessor4.sol)
+/// @notice Processes calldata to swap using various DEXs
+/// @custom:version 1.0.0
+contract LiFiDEXAggregator is Ownable {
+    using SafeERC20 for IERC20;
+    using Approve for IERC20;
+    using SafeERC20 for IERC20Permit;
+    using InputStream for uint256;
+
+    event Route(
+        address indexed from,
+        address to,
+        address indexed tokenIn,
+        address indexed tokenOut,
+        uint256 amountIn,
+        uint256 amountOutMin,
+        uint256 amountOut
+    );
+
+    error MinimalOutputBalanceViolation(uint256 amountOut);
+
+    IBentoBoxMinimal public immutable bentoBox;
+    mapping(address => bool) public priviledgedUsers;
+    address private lastCalledPool;
+
+    uint8 private unlocked = NOT_LOCKED;
+    uint8 private paused = NOT_PAUSED;
+    modifier lock() {
+        require(unlocked == NOT_LOCKED, "RouteProcessor is locked");
+        require(paused == NOT_PAUSED, "RouteProcessor is paused");
+        unlocked = LOCKED;
+        _;
+        unlocked = NOT_LOCKED;
+    }
+
+    modifier onlyOwnerOrPriviledgedUser() {
+        require(
+            msg.sender == owner() || priviledgedUsers[msg.sender],
+            "RP: caller is not the owner or a privileged user"
+        );
+        _;
+    }
+
+    constructor(address _bentoBox, address[] memory priviledgedUserList) {
+        bentoBox = IBentoBoxMinimal(_bentoBox);
+        lastCalledPool = IMPOSSIBLE_POOL_ADDRESS;
+
+        for (uint256 i = 0; i < priviledgedUserList.length; i++) {
+            priviledgedUsers[priviledgedUserList[i]] = true;
+        }
+    }
+
+    function setPriviledge(address user, bool priviledge) external onlyOwner {
+        priviledgedUsers[user] = priviledge;
+    }
+
+    function pause() external onlyOwnerOrPriviledgedUser {
+        paused = PAUSED;
+    }
+
+    function resume() external onlyOwnerOrPriviledgedUser {
+        paused = NOT_PAUSED;
+    }
+
+    /// @notice For native unwrapping
+    receive() external payable {}
+
+    /// @notice Processes the route generated off-chain. Has a lock
+    /// @param tokenIn Address of the input token
+    /// @param amountIn Amount of the input token
+    /// @param tokenOut Address of the output token
+    /// @param amountOutMin Minimum amount of the output token
+    /// @return amountOut Actual amount of the output token
+    function processRoute(
+        address tokenIn,
+        uint256 amountIn,
+        address tokenOut,
+        uint256 amountOutMin,
+        address to,
+        bytes memory route
+    ) external payable lock returns (uint256 amountOut) {
+        return
+            processRouteInternal(
+                tokenIn,
+                amountIn,
+                tokenOut,
+                amountOutMin,
+                to,
+                route
+            );
+    }
+
+    /// @notice Transfers some value to <transferValueTo> and then processes the route
+    /// @param transferValueTo Address where the value should be transferred
+    /// @param amountValueTransfer How much value to transfer
+    /// @param tokenIn Address of the input token
+    /// @param amountIn Amount of the input token
+    /// @param tokenOut Address of the output token
+    /// @param amountOutMin Minimum amount of the output token
+    /// @return amountOut Actual amount of the output token
+    function transferValueAndprocessRoute(
+        address payable transferValueTo,
+        uint256 amountValueTransfer,
+        address tokenIn,
+        uint256 amountIn,
+        address tokenOut,
+        uint256 amountOutMin,
+        address to,
+        bytes memory route
+    ) external payable lock returns (uint256 amountOut) {
+        (bool success, bytes memory returnBytes) = transferValueTo.call{
+            value: amountValueTransfer
+        }("");
+        if (!success) {
+            assembly {
+                revert(add(32, returnBytes), mload(returnBytes))
+            }
+        }
+        return
+            processRouteInternal(
+                tokenIn,
+                amountIn,
+                tokenOut,
+                amountOutMin,
+                to,
+                route
+            );
+    }
+
+    /// @notice Processes the route generated off-chain
+    /// @param tokenIn Address of the input token
+    /// @param amountIn Amount of the input token
+    /// @param tokenOut Address of the output token
+    /// @param amountOutMin Minimum amount of the output token
+    /// @return amountOut Actual amount of the output token
+    function processRouteInternal(
+        address tokenIn,
+        uint256 amountIn,
+        address tokenOut,
+        uint256 amountOutMin,
+        address to,
+        bytes memory route
+    ) private returns (uint256 amountOut) {
+        uint256 balanceInInitial = tokenIn == NATIVE_ADDRESS
+            ? 0
+            : IERC20(tokenIn).balanceOf(msg.sender);
+        uint256 balanceOutInitial = tokenOut == NATIVE_ADDRESS
+            ? address(to).balance
+            : IERC20(tokenOut).balanceOf(to);
+
+        uint256 realAmountIn = amountIn;
+        {
+            uint256 step = 0;
+            uint256 stream = InputStream.createStream(route);
+            while (stream.isNotEmpty()) {
+                uint8 commandCode = stream.readUint8();
+                if (commandCode == 1) {
+                    uint256 usedAmount = processMyERC20(stream);
+                    if (step == 0) realAmountIn = usedAmount;
+                } else if (commandCode == 2)
+                    processUserERC20(stream, amountIn);
+                else if (commandCode == 3) {
+                    uint256 usedAmount = processNative(stream);
+                    if (step == 0) realAmountIn = usedAmount;
+                } else if (commandCode == 4) processOnePool(stream);
+                else if (commandCode == 5) processInsideBento(stream);
+                else if (commandCode == 6) applyPermit(tokenIn, stream);
+                else revert("RouteProcessor: Unknown command code");
+                ++step;
+            }
+        }
+
+        uint256 balanceInFinal = tokenIn == NATIVE_ADDRESS
+            ? 0
+            : IERC20(tokenIn).balanceOf(msg.sender);
+        require(
+            balanceInFinal + amountIn >= balanceInInitial,
+            "RouteProcessor: Minimal input balance violation"
+        );
+
+        uint256 balanceOutFinal = tokenOut == NATIVE_ADDRESS
+            ? address(to).balance
+            : IERC20(tokenOut).balanceOf(to);
+        if (balanceOutFinal < balanceOutInitial + amountOutMin)
+            revert MinimalOutputBalanceViolation(
+                balanceOutFinal - balanceOutInitial
+            );
+
+        amountOut = balanceOutFinal - balanceOutInitial;
+
+        emit Route(
+            msg.sender,
+            to,
+            tokenIn,
+            tokenOut,
+            realAmountIn,
+            amountOutMin,
+            amountOut
+        );
+    }
+
+    /// @notice Applies ERC-2612 permit
+    /// @param tokenIn permitted token
+    /// @param stream Streamed program
+    function applyPermit(address tokenIn, uint256 stream) private {
+        uint256 value = stream.readUint();
+        uint256 deadline = stream.readUint();
+        uint8 v = stream.readUint8();
+        bytes32 r = stream.readBytes32();
+        bytes32 s = stream.readBytes32();
+        IERC20Permit(tokenIn).safePermit(
+            msg.sender,
+            address(this),
+            value,
+            deadline,
+            v,
+            r,
+            s
+        );
+    }
+
+    /// @notice Processes native coin: call swap for all pools that swap from native coin
+    /// @param stream Streamed program
+    function processNative(
+        uint256 stream
+    ) private returns (uint256 amountTotal) {
+        amountTotal = address(this).balance;
+        distributeAndSwap(stream, address(this), NATIVE_ADDRESS, amountTotal);
+    }
+
+    /// @notice Processes ERC20 token from this contract balance:
+    /// @notice Call swap for all pools that swap from this token
+    /// @param stream Streamed program
+    function processMyERC20(
+        uint256 stream
+    ) private returns (uint256 amountTotal) {
+        address token = stream.readAddress();
+        amountTotal = IERC20(token).balanceOf(address(this));
+        unchecked {
+            if (amountTotal > 0) amountTotal -= 1; // slot undrain protection
+        }
+        distributeAndSwap(stream, address(this), token, amountTotal);
+    }
+
+    /// @notice Processes ERC20 token from msg.sender balance:
+    /// @notice Call swap for all pools that swap from this token
+    /// @param stream Streamed program
+    /// @param amountTotal Amount of tokens to take from msg.sender
+    function processUserERC20(uint256 stream, uint256 amountTotal) private {
+        address token = stream.readAddress();
+        distributeAndSwap(stream, msg.sender, token, amountTotal);
+    }
+
+    /// @notice Processes ERC20 token for cases when the token has only one output pool
+    /// @notice In this case liquidity is already at pool balance. This is an optimization
+    /// @notice Call swap for all pools that swap from this token
+    /// @param stream Streamed program
+    function processOnePool(uint256 stream) private {
+        address token = stream.readAddress();
+        swap(stream, INTERNAL_INPUT_SOURCE, token, 0);
+    }
+
+    /// @notice Processes Bento tokens
+    /// @notice Call swap for all pools that swap from this token
+    /// @param stream Streamed program
+    function processInsideBento(uint256 stream) private {
+        address token = stream.readAddress();
+        uint256 amountTotal = bentoBox.balanceOf(token, address(this));
+        unchecked {
+            if (amountTotal > 0) amountTotal -= 1; // slot undrain protection
+        }
+        distributeAndSwap(stream, address(this), token, amountTotal);
+    }
+
+    /// @notice Distributes amountTotal to several pools according to their shares and calls swap for each pool
+    /// @param stream Streamed program
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountTotal Total amount of tokenIn for swaps
+    function distributeAndSwap(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountTotal
+    ) private {
+        uint8 num = stream.readUint8();
+        unchecked {
+            for (uint256 i = 0; i < num; ++i) {
+                uint16 share = stream.readUint16();
+                uint256 amount = (amountTotal * share) /
+                    type(uint16).max /*65535*/;
+                amountTotal -= amount;
+                swap(stream, from, tokenIn, amount);
+            }
+        }
+    }
+
+    /// @notice Makes swap
+    /// @param stream Streamed program
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function swap(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        uint8 poolType = stream.readUint8();
+        if (poolType == 0) swapUniV2(stream, from, tokenIn, amountIn);
+        else if (poolType == 1) swapUniV3(stream, from, tokenIn, amountIn);
+        else if (poolType == 2) wrapNative(stream, from, tokenIn, amountIn);
+        else if (poolType == 3) bentoBridge(stream, from, tokenIn, amountIn);
+        else if (poolType == 4) swapTrident(stream, from, tokenIn, amountIn);
+        else if (poolType == 5) swapCurve(stream, from, tokenIn, amountIn);
+        else revert("RouteProcessor: Unknown pool type");
+    }
+
+    /// @notice Wraps/unwraps native token
+    /// @param stream [direction & fake, recipient, wrapToken?]
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function wrapNative(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        uint8 directionAndFake = stream.readUint8();
+        address to = stream.readAddress();
+
+        if (directionAndFake & 1 == 1) {
+            // wrap native
+            address wrapToken = stream.readAddress();
+            if (directionAndFake & 2 == 0)
+                IWETH(wrapToken).deposit{ value: amountIn }();
+            if (to != address(this))
+                IERC20(wrapToken).safeTransfer(to, amountIn);
+        } else {
+            // unwrap native
+            if (directionAndFake & 2 == 0) {
+                if (from == msg.sender)
+                    IERC20(tokenIn).safeTransferFrom(
+                        msg.sender,
+                        address(this),
+                        amountIn
+                    );
+                IWETH(tokenIn).withdraw(amountIn);
+            }
+            (bool success, ) = payable(to).call{ value: amountIn }("");
+            require(
+                success,
+                "RouteProcessor.wrapNative: Native token transfer failed"
+            );
+        }
+    }
+
+    /// @notice Bridge/unbridge tokens to/from Bento
+    /// @param stream [direction, recipient]
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function bentoBridge(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        uint8 direction = stream.readUint8();
+        address to = stream.readAddress();
+
+        if (direction > 0) {
+            // outside to Bento
+            // deposit to arbitrary recipient is possible only from address(bentoBox)
+            if (from == address(this))
+                IERC20(tokenIn).safeTransfer(address(bentoBox), amountIn);
+            else if (from == msg.sender)
+                IERC20(tokenIn).safeTransferFrom(
+                    msg.sender,
+                    address(bentoBox),
+                    amountIn
+                );
+            else {
+                // tokens already are at address(bentoBox)
+                amountIn =
+                    IERC20(tokenIn).balanceOf(address(bentoBox)) +
+                    bentoBox.strategyData(tokenIn).balance -
+                    bentoBox.totals(tokenIn).elastic;
+            }
+            bentoBox.deposit(tokenIn, address(bentoBox), to, amountIn, 0);
+        } else {
+            // Bento to outside
+            if (from != INTERNAL_INPUT_SOURCE) {
+                bentoBox.transfer(tokenIn, from, address(this), amountIn);
+            } else amountIn = bentoBox.balanceOf(tokenIn, address(this));
+            bentoBox.withdraw(tokenIn, address(this), to, 0, amountIn);
+        }
+    }
+
+    /// @notice UniswapV2 pool swap
+    /// @param stream [pool, direction, recipient, fee]
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function swapUniV2(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        address pool = stream.readAddress();
+        uint8 direction = stream.readUint8();
+        address to = stream.readAddress();
+        uint24 fee = stream.readUint24(); // pool fee in 1/1_000_000
+
+        if (from == address(this))
+            IERC20(tokenIn).safeTransfer(pool, amountIn);
+        else if (from == msg.sender)
+            IERC20(tokenIn).safeTransferFrom(msg.sender, pool, amountIn);
+
+        (uint256 r0, uint256 r1, ) = IUniswapV2Pair(pool).getReserves();
+        require(r0 > 0 && r1 > 0, "Wrong pool reserves");
+        (uint256 reserveIn, uint256 reserveOut) = direction == 1
+            ? (r0, r1)
+            : (r1, r0);
+        amountIn = IERC20(tokenIn).balanceOf(pool) - reserveIn; // tokens already were transferred
+
+        uint256 amountInWithFee = amountIn * (1_000_000 - fee);
+        uint256 amountOut = (amountInWithFee * reserveOut) /
+            (reserveIn * 1_000_000 + amountInWithFee);
+        (uint256 amount0Out, uint256 amount1Out) = direction == 1
+            ? (uint256(0), amountOut)
+            : (amountOut, uint256(0));
+        IUniswapV2Pair(pool).swap(amount0Out, amount1Out, to, new bytes(0));
+    }
+
+    /// @notice Trident pool swap
+    /// @param stream [pool, swapData]
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function swapTrident(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        address pool = stream.readAddress();
+        bytes memory swapData = stream.readBytes();
+
+        if (from != INTERNAL_INPUT_SOURCE) {
+            bentoBox.transfer(tokenIn, from, pool, amountIn);
+        }
+
+        IPool(pool).swap(swapData);
+    }
+
+    /// @notice UniswapV3 pool swap
+    /// @param stream [pool, direction, recipient]
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function swapUniV3(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        address pool = stream.readAddress();
+        bool zeroForOne = stream.readUint8() > 0;
+        address recipient = stream.readAddress();
+
+        if (from == msg.sender)
+            IERC20(tokenIn).safeTransferFrom(
+                msg.sender,
+                address(this),
+                uint256(amountIn)
+            );
+
+        lastCalledPool = pool;
+        IUniswapV3Pool(pool).swap(
+            recipient,
+            zeroForOne,
+            int256(amountIn),
+            zeroForOne ? MIN_SQRT_RATIO + 1 : MAX_SQRT_RATIO - 1,
+            abi.encode(tokenIn)
+        );
+        require(
+            lastCalledPool == IMPOSSIBLE_POOL_ADDRESS,
+            "RouteProcessor.swapUniV3: unexpected"
+        ); // Just to be sure
+    }
+
+    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
+    /// @dev In the implementation you must pay the pool tokens owed for the swap.
+    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.
+    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
+    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by
+    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.
+    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by
+    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.
+    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call
+    function uniswapV3SwapCallback(
+        int256 amount0Delta,
+        int256 amount1Delta,
+        bytes calldata data
+    ) public {
+        require(
+            msg.sender == lastCalledPool,
+            "RouteProcessor.uniswapV3SwapCallback: call from unknown source"
+        );
+        int256 amount = amount0Delta > 0 ? amount0Delta : amount1Delta;
+        require(
+            amount > 0,
+            "RouteProcessor.uniswapV3SwapCallback: not positive amount"
+        );
+
+        lastCalledPool = IMPOSSIBLE_POOL_ADDRESS;
+        address tokenIn = abi.decode(data, (address));
+        IERC20(tokenIn).safeTransfer(msg.sender, uint256(amount));
+    }
+
+    /// @notice Called to `msg.sender` after executing a swap via IAlgebraPool#swap.
+    /// @dev In the implementation you must pay the pool tokens owed for the swap.
+    /// The caller of this method _must_ be checked to be a AlgebraPool deployed by the canonical AlgebraFactory.
+    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
+    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by
+    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.
+    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by
+    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.
+    /// @param data Any data passed through by the caller via the IAlgebraPoolActions#swap call
+    function algebraSwapCallback(
+        int256 amount0Delta,
+        int256 amount1Delta,
+        bytes calldata data
+    ) external {
+        uniswapV3SwapCallback(amount0Delta, amount1Delta, data);
+    }
+
+    /// @notice Called to `msg.sender` after executing a swap via PancakeV3Pool#swap.
+    /// @dev In the implementation you must pay the pool tokens owed for the swap.
+    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by
+    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.
+    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by
+    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.
+    /// @param data Any data passed through by the caller via the PancakeV3Pool#swap call
+    function pancakeV3SwapCallback(
+        int256 amount0Delta,
+        int256 amount1Delta,
+        bytes calldata data
+    ) external {
+        uniswapV3SwapCallback(amount0Delta, amount1Delta, data);
+    }
+
+    /// @notice Curve pool swap. Legacy pools that don't return amountOut and have native coins are not supported
+    /// @param stream [pool, poolType, fromIndex, toIndex, recipient, output token]
+    /// @param from Where to take liquidity for swap
+    /// @param tokenIn Input token
+    /// @param amountIn Amount of tokenIn to take for swap
+    function swapCurve(
+        uint256 stream,
+        address from,
+        address tokenIn,
+        uint256 amountIn
+    ) private {
+        address pool = stream.readAddress();
+        uint8 poolType = stream.readUint8();
+        int128 fromIndex = int8(stream.readUint8());
+        int128 toIndex = int8(stream.readUint8());
+        address to = stream.readAddress();
+        address tokenOut = stream.readAddress();
+
+        uint256 amountOut;
+        if (tokenIn == NATIVE_ADDRESS) {
+            amountOut = ICurve(pool).exchange{ value: amountIn }(
+                fromIndex,
+                toIndex,
+                amountIn,
+                0
+            );
+        } else {
+            if (from == msg.sender)
+                IERC20(tokenIn).safeTransferFrom(
+                    msg.sender,
+                    address(this),
+                    amountIn
+                );
+            IERC20(tokenIn).approveSafe(pool, amountIn);
+            if (poolType == 0)
+                amountOut = ICurve(pool).exchange(
+                    fromIndex,
+                    toIndex,
+                    amountIn,
+                    0
+                );
+            else {
+                uint256 balanceBefore = IERC20(tokenOut).balanceOf(
+                    address(this)
+                );
+                ICurveLegacy(pool).exchange(fromIndex, toIndex, amountIn, 0);
+                uint256 balanceAfter = IERC20(tokenOut).balanceOf(
+                    address(this)
+                );
+                amountOut = balanceAfter - balanceBefore;
+            }
+        }
+
+        if (to != address(this)) {
+            if (tokenOut == NATIVE_ADDRESS) {
+                (bool success, ) = payable(to).call{ value: amountOut }("");
+                require(
+                    success,
+                    "RouteProcessor.swapCurve: Native token transfer failed"
+                );
+            } else {
+                IERC20(tokenOut).safeTransfer(to, amountOut);
+            }
+        }
+    }
+}
+
+/// @notice Minimal BentoBox vault interface.
+/// @dev `token` is aliased as `address` from `IERC20` for simplicity.
+interface IBentoBoxMinimal {
+    /// @notice Balance per ERC-20 token per account in shares.
+    function balanceOf(address, address) external view returns (uint256);
+
+    /// @dev Helper function to represent an `amount` of `token` in shares.
+    /// @param token The ERC-20 token.
+    /// @param amount The `token` amount.
+    /// @param roundUp If the result `share` should be rounded up.
+    /// @return share The token amount represented in shares.
+    function toShare(
+        address token,
+        uint256 amount,
+        bool roundUp
+    ) external view returns (uint256 share);
+
+    /// @dev Helper function to represent shares back into the `token` amount.
+    /// @param token The ERC-20 token.
+    /// @param share The amount of shares.
+    /// @param roundUp If the result should be rounded up.
+    /// @return amount The share amount back into native representation.
+    function toAmount(
+        address token,
+        uint256 share,
+        bool roundUp
+    ) external view returns (uint256 amount);
+
+    /// @notice Registers this contract so that users can approve it for BentoBox.
+    function registerProtocol() external;
+
+    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.
+    /// @param token The ERC-20 token to deposit.
+    /// @param from which account to pull the tokens.
+    /// @param to which account to push the tokens.
+    /// @param amount Token amount in native representation to deposit.
+    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.
+    /// @return amountOut The amount deposited.
+    /// @return shareOut The deposited amount represented in shares.
+    function deposit(
+        address token,
+        address from,
+        address to,
+        uint256 amount,
+        uint256 share
+    ) external payable returns (uint256 amountOut, uint256 shareOut);
+
+    /// @notice Withdraws an amount of `token` from a user account.
+    /// @param token_ The ERC-20 token to withdraw.
+    /// @param from which user to pull the tokens.
+    /// @param to which user to push the tokens.
+    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.
+    /// @param share Like above, but `share` takes precedence over `amount`.
+    function withdraw(
+        address token_,
+        address from,
+        address to,
+        uint256 amount,
+        uint256 share
+    ) external returns (uint256 amountOut, uint256 shareOut);
+
+    /// @notice Transfer shares from a user account to another one.
+    /// @param token The ERC-20 token to transfer.
+    /// @param from which user to pull the tokens.
+    /// @param to which user to push the tokens.
+    /// @param share The amount of `token` in shares.
+    function transfer(
+        address token,
+        address from,
+        address to,
+        uint256 share
+    ) external;
+
+    /// @dev Reads the Rebase `totals`from storage for a given token
+    function totals(address token) external view returns (Rebase memory total);
+
+    function strategyData(
+        address token
+    ) external view returns (StrategyData memory total);
+
+    /// @dev Approves users' BentoBox assets to a "master" contract.
+    function setMasterContractApproval(
+        address user,
+        address masterContract,
+        bool approved,
+        uint8 v,
+        bytes32 r,
+        bytes32 s
+    ) external;
+
+    function harvest(
+        address token,
+        bool balance,
+        uint256 maxChangeAmount
+    ) external;
+}
+
+interface ICurve {
+    function exchange(
+        int128 i,
+        int128 j,
+        uint256 dx,
+        uint256 min_dy
+    ) external payable returns (uint256);
+}
+
+interface ICurveLegacy {
+    function exchange(
+        int128 i,
+        int128 j,
+        uint256 dx,
+        uint256 min_dy
+    ) external payable;
+}
+
+/// @notice Trident pool interface.
+interface IPool {
+    /// @notice Executes a swap from one token to another.
+    /// @dev The input tokens must've already been sent to the pool.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return finalAmountOut The amount of output tokens that were sent to the user.
+    function swap(
+        bytes calldata data
+    ) external returns (uint256 finalAmountOut);
+
+    /// @notice Executes a swap from one token to another with a callback.
+    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return finalAmountOut The amount of output tokens that were sent to the user.
+    function flashSwap(
+        bytes calldata data
+    ) external returns (uint256 finalAmountOut);
+
+    /// @notice Mints liquidity tokens.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return liquidity The amount of liquidity tokens that were minted for the user.
+    function mint(bytes calldata data) external returns (uint256 liquidity);
+
+    /// @notice Burns liquidity tokens.
+    /// @dev The input LP tokens must've already been sent to the pool.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.
+    function burn(
+        bytes calldata data
+    ) external returns (TokenAmount[] memory withdrawnAmounts);
+
+    /// @notice Burns liquidity tokens for a single output token.
+    /// @dev The input LP tokens must've already been sent to the pool.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return amountOut The amount of output tokens that were sent to the user.
+    function burnSingle(
+        bytes calldata data
+    ) external returns (uint256 amountOut);
+
+    /// @return A unique identifier for the pool type.
+    function poolIdentifier() external pure returns (bytes32);
+
+    /// @return An array of tokens supported by the pool.
+    function getAssets() external view returns (address[] memory);
+
+    /// @notice Simulates a trade and returns the expected output.
+    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.
+    function getAmountOut(
+        bytes calldata data
+    ) external view returns (uint256 finalAmountOut);
+
+    /// @notice Simulates a trade and returns the expected output.
+    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.
+    /// @param data ABI-encoded params that the pool requires.
+    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.
+    function getAmountIn(
+        bytes calldata data
+    ) external view returns (uint256 finalAmountIn);
+
+    /// @dev This event must be emitted on all swaps.
+    event Swap(
+        address indexed recipient,
+        address indexed tokenIn,
+        address indexed tokenOut,
+        uint256 amountIn,
+        uint256 amountOut
+    );
+
+    /// @dev This struct frames output tokens for burns.
+    struct TokenAmount {
+        address token;
+        uint256 amount;
+    }
+}
+
+interface ITridentCLPool {
+    function token0() external returns (address);
+
+    function token1() external returns (address);
+
+    function swap(
+        address recipient,
+        bool zeroForOne,
+        int256 amountSpecified,
+        uint160 sqrtPriceLimitX96,
+        bool unwrapBento,
+        bytes calldata data
+    ) external returns (int256 amount0, int256 amount1);
+}
+
+interface IUniswapV2Pair {
+    event Approval(address indexed owner, address indexed spender, uint value);
+    event Transfer(address indexed from, address indexed to, uint value);
+
+    function name() external pure returns (string memory);
+
+    function symbol() external pure returns (string memory);
+
+    function decimals() external pure returns (uint8);
+
+    function totalSupply() external view returns (uint);
+
+    function balanceOf(address owner) external view returns (uint);
+
+    function allowance(
+        address owner,
+        address spender
+    ) external view returns (uint);
+
+    function approve(address spender, uint value) external returns (bool);
+
+    function transfer(address to, uint value) external returns (bool);
+
+    function transferFrom(
+        address from,
+        address to,
+        uint value
+    ) external returns (bool);
+
+    function DOMAIN_SEPARATOR() external view returns (bytes32);
+
+    function PERMIT_TYPEHASH() external pure returns (bytes32);
+
+    function nonces(address owner) external view returns (uint);
+
+    function permit(
+        address owner,
+        address spender,
+        uint value,
+        uint deadline,
+        uint8 v,
+        bytes32 r,
+        bytes32 s
+    ) external;
+
+    event Mint(address indexed sender, uint amount0, uint amount1);
+    event Burn(
+        address indexed sender,
+        uint amount0,
+        uint amount1,
+        address indexed to
+    );
+    event Swap(
+        address indexed sender,
+        uint amount0In,
+        uint amount1In,
+        uint amount0Out,
+        uint amount1Out,
+        address indexed to
+    );
+    event Sync(uint112 reserve0, uint112 reserve1);
+
+    function MINIMUM_LIQUIDITY() external pure returns (uint);
+
+    function factory() external view returns (address);
+
+    function token0() external view returns (address);
+
+    function token1() external view returns (address);
+
+    function getReserves()
+        external
+        view
+        returns (
+            uint112 reserve0,
+            uint112 reserve1,
+            uint32 blockTimestampLast
+        );
+
+    function price0CumulativeLast() external view returns (uint);
+
+    function price1CumulativeLast() external view returns (uint);
+
+    function kLast() external view returns (uint);
+
+    function mint(address to) external returns (uint liquidity);
+
+    function burn(address to) external returns (uint amount0, uint amount1);
+
+    function swap(
+        uint amount0Out,
+        uint amount1Out,
+        address to,
+        bytes calldata data
+    ) external;
+
+    function skim(address to) external;
+
+    function sync() external;
+
+    function initialize(address, address) external;
+}
+
+interface IUniswapV3Pool {
+    function token0() external returns (address);
+
+    function token1() external returns (address);
+
+    function swap(
+        address recipient,
+        bool zeroForOne,
+        int256 amountSpecified,
+        uint160 sqrtPriceLimitX96,
+        bytes calldata data
+    ) external returns (int256 amount0, int256 amount1);
+}
+
+interface IWETH {
+    function deposit() external payable;
+
+    function transfer(address to, uint256 value) external returns (bool);
+
+    function withdraw(uint256) external;
+}
+
+/** @notice Simple read stream */
+library InputStream {
+    /** @notice Creates stream from data
+     * @param data data
+     */
+    function createStream(
+        bytes memory data
+    ) internal pure returns (uint256 stream) {
+        assembly {
+            stream := mload(0x40)
+            mstore(0x40, add(stream, 64))
+            mstore(stream, data)
+            let length := mload(data)
+            mstore(add(stream, 32), add(data, length))
+        }
+    }
+
+    /** @notice Checks if stream is not empty
+     * @param stream stream
+     */
+    function isNotEmpty(uint256 stream) internal pure returns (bool) {
+        uint256 pos;
+        uint256 finish;
+        assembly {
+            pos := mload(stream)
+            finish := mload(add(stream, 32))
+        }
+        return pos < finish;
+    }
+
+    /** @notice Reads uint8 from the stream
+     * @param stream stream
+     */
+    function readUint8(uint256 stream) internal pure returns (uint8 res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 1)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads uint16 from the stream
+     * @param stream stream
+     */
+    function readUint16(uint256 stream) internal pure returns (uint16 res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 2)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads uint24 from the stream
+     * @param stream stream
+     */
+    function readUint24(uint256 stream) internal pure returns (uint24 res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 3)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads uint32 from the stream
+     * @param stream stream
+     */
+    function readUint32(uint256 stream) internal pure returns (uint32 res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 4)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads uint256 from the stream
+     * @param stream stream
+     */
+    function readUint(uint256 stream) internal pure returns (uint256 res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 32)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads bytes32 from the stream
+     * @param stream stream
+     */
+    function readBytes32(uint256 stream) internal pure returns (bytes32 res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 32)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads address from the stream
+     * @param stream stream
+     */
+    function readAddress(uint256 stream) internal pure returns (address res) {
+        assembly {
+            let pos := mload(stream)
+            pos := add(pos, 20)
+            res := mload(pos)
+            mstore(stream, pos)
+        }
+    }
+
+    /** @notice Reads bytes from the stream
+     * @param stream stream
+     */
+    function readBytes(
+        uint256 stream
+    ) internal pure returns (bytes memory res) {
+        assembly {
+            let pos := mload(stream)
+            res := add(pos, 32)
+            let length := mload(res)
+            mstore(stream, add(res, length))
+        }
+    }
+}
+
+library Approve {
+    /**
+     * @dev ERC20 approve that correct works with token.approve which returns bool or nothing (USDT for example)
+     * @param token The token targeted by the call.
+     * @param spender token spender
+     * @param amount token amount
+     */
+    function approveStable(
+        IERC20 token,
+        address spender,
+        uint256 amount
+    ) internal returns (bool) {
+        (bool success, bytes memory data) = address(token).call(
+            abi.encodeWithSelector(token.approve.selector, spender, amount)
+        );
+        return success && (data.length == 0 || abi.decode(data, (bool)));
+    }
+
+    /**
+     * @dev ERC20 approve that correct works with token.approve which reverts if amount and
+     *      current allowance are not zero simultaniously (USDT for example).
+     *      In second case it tries to set allowance to 0, and then back to amount.
+     * @param token The token targeted by the call.
+     * @param spender token spender
+     * @param amount token amount
+     */
+    function approveSafe(
+        IERC20 token,
+        address spender,
+        uint256 amount
+    ) internal returns (bool) {
+        return
+            approveStable(token, spender, amount) ||
+            (approveStable(token, spender, 0) &&
+                approveStable(token, spender, amount));
+    }
+}
+
+struct Rebase {
+    uint128 elastic;
+    uint128 base;
+}
+
+struct StrategyData {
+    uint64 strategyStartDate;
+    uint64 targetPercentage;
+    uint128 balance; // the balance of the strategy that BentoBox thinks is in there
+}
+
+/// @notice A rebasing library
+library RebaseLibrary {
+    /// @notice Calculates the base value in relationship to `elastic` and `total`.
+    function toBase(
+        Rebase memory total,
+        uint256 elastic
+    ) internal pure returns (uint256 base) {
+        if (total.elastic == 0) {
+            base = elastic;
+        } else {
+            base = (elastic * total.base) / total.elastic;
+        }
+    }
+
+    /// @notice Calculates the elastic value in relationship to `base` and `total`.
+    function toElastic(
+        Rebase memory total,
+        uint256 base
+    ) internal pure returns (uint256 elastic) {
+        if (total.base == 0) {
+            elastic = base;
+        } else {
+            elastic = (base * total.elastic) / total.base;
+        }
+    }
+}
diff --git a/test/solidity/Facets/CBridgeFacetPacked.t.sol b/test/solidity/Facets/CBridgeFacetPacked.t.sol
index a6c6a56d5..d4c176ec9 100644
--- a/test/solidity/Facets/CBridgeFacetPacked.t.sol
+++ b/test/solidity/Facets/CBridgeFacetPacked.t.sol
@@ -24,7 +24,7 @@ contract CBridgeFacetPackedTest is Test, DiamondTest {
     address internal constant CBRIDGE_ROUTER =
         0x1619DE6B6B20eD217a58d00f37B9d47C7663feca;
     address internal constant USDT_ADDRESS =
-        0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8;
+        0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9;
     address internal constant USDC_ADDRESS =
         0xaf88d065e77c8cC2239327C5EDb3A432268e5831;
     address internal constant WHALE =
diff --git a/tsconfig.json b/tsconfig.json
index f39e542db..5fa2df4a1 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,7 +7,9 @@
     "moduleResolution": "node",
     "forceConsistentCasingInFileNames": true,
     "outDir": "dist",
-    "resolveJsonModule": true
+    "resolveJsonModule": true,
+    "lib": ["es2015"],
+    "types": ["node"]
   },
   "include": [
     "hardhat.config.ts",
diff --git a/utils/network.ts b/utils/network.ts
index 8a6f08b69..b9ab4bd46 100644
--- a/utils/network.ts
+++ b/utils/network.ts
@@ -1,4 +1,8 @@
 import 'dotenv/config'
+import * as fs from 'fs'
+import path from 'path'
+import { Chain } from 'viem'
+import * as chains from 'viem/chains'
 export function node_url(networkName: string): string {
   if (networkName) {
     const uri = process.env['ETH_NODE_URI_' + networkName.toUpperCase()]
@@ -46,3 +50,45 @@ export function getMnemonic(networkName?: string): string {
 export function accounts(networkName?: string): { mnemonic: string } {
   return { mnemonic: getMnemonic(networkName) }
 }
+
+// get a list of all networks from our ./networks file
+export function getAllNetworks(): string[] {
+  try {
+    // Read file contents
+    const fileContents = fs.readFileSync(
+      path.join(__dirname, '../networks'),
+      'utf-8'
+    )
+
+    // Split the contents by new lines to get an array of network names
+    const networkNames = fileContents
+      .split('\n')
+      .map((name) => name.trim())
+      .filter((name) => name !== '')
+
+    return networkNames
+  } catch (error) {
+    console.error(`Error reading file: ${JSON.stringify(error, null, 2)}`)
+    return []
+  }
+}
+
+// viem chain handling
+const chainNameMappings: Record<string, string> = {
+  zksync: 'zkSync',
+  polygonzkevm: 'polygonZkEvm',
+}
+
+const chainMap: Record<string, Chain> = {}
+for (const [k, v] of Object.entries(chains)) {
+  // @ts-ignore
+  chainMap[k] = v
+}
+
+export const getViemChainForNetworkName = (network: string): Chain => {
+  const chainName = chainNameMappings[network] || network
+  const chain: Chain = chainMap[chainName]
+
+  if (!chain) throw new Error(`Viem chain not found for network ${network}`)
+  return chain
+}
diff --git a/utils/viemScriptHelpers.ts b/utils/viemScriptHelpers.ts
new file mode 100644
index 000000000..470029461
--- /dev/null
+++ b/utils/viemScriptHelpers.ts
@@ -0,0 +1,26 @@
+import { Chain } from 'viem'
+import * as chains from 'viem/chains'
+
+const chainNameMappings: Record<string, string> = {
+  zksync: 'zkSync',
+  polygonzkevm: 'polygonZkEvm',
+  immutablezkevm: 'immutableZkEvm',
+}
+
+const chainMap: Record<string, Chain> = {}
+for (const [k, v] of Object.entries(chains)) {
+  // @ts-ignore
+  chainMap[k] = v
+}
+
+export const getViemChainForNetworkName = (networkName: string): Chain => {
+  const chainName = chainNameMappings[networkName] || networkName
+  const chain: Chain = chainMap[chainName]
+
+  if (!chain)
+    throw new Error(
+      `Chain ${networkName} (aka '${chainName}', if a mapping exists) not supported by viem or requires name mapping. Check if you can find your chain here: https://github.com/wevm/viem/tree/main/src/chains/definitions`
+    )
+
+  return chain
+}
diff --git a/yarn.lock b/yarn.lock
index 4e2485232..4b7829c2c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9924,10 +9924,10 @@ viem@^1.6.0:
     isows "1.0.3"
     ws "8.13.0"
 
-viem@^2.11.1:
-  version "2.18.4"
-  resolved "https://registry.yarnpkg.com/viem/-/viem-2.18.4.tgz#6af97b68141faa68f624b7cded4956065432a078"
-  integrity sha512-JGdN+PgBnZMbm7fc9o0SfHvL0CKyfrlhBUtaz27V+PeHO43Kgc9Zd4WyIbM8Brafq4TvVcnriRFW/FVGOzwEJw==
+viem@^2.18.7:
+  version "2.18.7"
+  resolved "https://registry.yarnpkg.com/viem/-/viem-2.18.7.tgz#a7020b67ee14fd27f8c038efb4a4cf6cf5e55a4a"
+  integrity sha512-0Xy5ypk+n4lYthsvC96jsZE97quKoq1t53RrbhKElmq84Dt705uUjQDgH0/LqAV02Oe6341M3jPTU9JLbs2K2Q==
   dependencies:
     "@adraffy/ens-normalize" "1.10.0"
     "@noble/curves" "1.4.0"