diff --git a/.github/actions/publish_website/action.yml b/.github/actions/publish_website/action.yml index e7f546f..cfed17e 100644 --- a/.github/actions/publish_website/action.yml +++ b/.github/actions/publish_website/action.yml @@ -5,10 +5,6 @@ inputs: description: 'Publish to staging.deriv.com' required: true default: 'false' - site_label_webflow: - description: 'Publish to webflow.deriv.com' - required: true - default: 'false' site_label_deriv_com: description: 'Publish to deriv.com' required: true @@ -27,9 +23,6 @@ inputs: staging_site_id: description: 'Staging Site ID' required: true - webflow_site_id: - description: 'Webflow Site ID' - required: true deriv_com_site_id: description: 'Deriv.com Site ID' required: true @@ -59,10 +52,6 @@ runs: SITES_TO_PUBLISH+=("\"staging.deriv.com\"") SITES_DEPLOY_IDS+=("\"${{ inputs.staging_site_id }}\"") fi - if [ "${{ inputs.site_label_webflow }}" == "true" ]; then - SITES_TO_PUBLISH+=("\"webflow.deriv.com\"") - SITES_DEPLOY_IDS+=("\"${{ inputs.webflow_site_id }}\"") - fi if [ "${{ inputs.site_label_deriv_com }}" == "true" ]; then SITES_TO_PUBLISH+=("\"deriv.com\"") SITES_DEPLOY_IDS+=("\"${{ inputs.deriv_com_site_id }}\"") diff --git a/.github/modify_sitemap.js b/.github/modify_sitemap.js index 7394613..5b22b4d 100644 --- a/.github/modify_sitemap.js +++ b/.github/modify_sitemap.js @@ -34,7 +34,7 @@ fs.readFile(inputFile, "utf8", (err, data) => { const urlBlockPattern = /([\s\S]*?<\/url>)/g; let filteredContent = newContent.replace(urlBlockPattern, (match) => { - if (/https:\/\/deriv\.com\/eu\//.test(match)) { + if (/https:\/\/deriv\.com(\/[a-z-]{2,5})?\/eu\//.test(match)) { return ""; } return match; diff --git a/.github/workflows/generate-bundle-url.yml b/.github/workflows/generate-bundle-url.yml new file mode 100644 index 0000000..76e1e18 --- /dev/null +++ b/.github/workflows/generate-bundle-url.yml @@ -0,0 +1,41 @@ +name: Generate Bundle CDN URL + +on: + pull_request: + types: [opened, synchronize, reopened] + +permissions: + pull-requests: write # Ensure the token has write access to PRs + +jobs: + generate-url: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Install dependencies + run: npm install + + - name: Generate CDN URL + id: generate-url + run: | + # Generate the URL and capture it as an output + URL=$(node scripts/generate-bundle-url.js) + echo "URL=$URL" >> $GITHUB_ENV + + - name: Create or update PR comment with CDN URL + uses: peter-evans/create-or-update-comment@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.pull_request.number }} + body: | + ### CUSTOM FOOTER SCRIPT + + ${{ env.URL }} + diff --git a/.github/workflows/publish-website.yml b/.github/workflows/publish-website.yml index 33cd944..6f818b0 100644 --- a/.github/workflows/publish-website.yml +++ b/.github/workflows/publish-website.yml @@ -7,10 +7,6 @@ on: type: boolean description: "staging.deriv.com" default: false - site_label_webflow: - type: boolean - description: "webflow.deriv.com" - default: false site_label_deriv_com: type: boolean description: "deriv.com" @@ -41,13 +37,11 @@ jobs: uses: ./.github/actions/publish_website with: site_label_staging: ${{ github.event.inputs.site_label_staging }} - site_label_webflow: ${{ github.event.inputs.site_label_webflow }} site_label_deriv_com: ${{ github.event.inputs.site_label_deriv_com }} site_label_deriv_me: ${{ github.event.inputs.site_label_deriv_me }} site_label_deriv_be: ${{ github.event.inputs.site_label_deriv_be }} webflow_api_token: ${{ secrets.WEBFLOW_API_TOKEN }} staging_site_id: ${{ secrets.STAGING_SITE_ID }} - webflow_site_id: ${{ secrets.WEBFLOW_SITE_ID }} deriv_com_site_id: ${{ secrets.DERIV_COM_SITE_ID }} deriv_me_site_id: ${{ secrets.DERIV_ME_SITE_ID }} deriv_be_site_id: ${{ secrets.DERIV_BE_SITE_ID }} @@ -76,7 +70,7 @@ jobs: generate_sitemap_and_robots: runs-on: ubuntu-latest needs: publish_site - if: ${{ needs.publish_site.result == 'success' && (github.event.inputs.site_label_webflow == 'true' || github.event.inputs.site_label_deriv_com == 'true' || github.event.inputs.site_label_deriv_me == 'true' || github.event.inputs.site_label_deriv_be == 'true') }} + if: ${{ needs.publish_site.result == 'success' && ( github.event.inputs.site_label_deriv_com == 'true' || github.event.inputs.site_label_deriv_me == 'true' || github.event.inputs.site_label_deriv_be == 'true') }} steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..906da39 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,2 @@ + +npm run pre-commit:generate-bundle diff --git a/package-lock.json b/package-lock.json index 52505ac..b2b640a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,12 @@ "@semantic-release/release-notes-generator": "^14.0.0", "autoprefixer": "^10.4.19", "cssnano": "^7.0.2", + "http-server": "^14.1.1", + "husky": "^9.1.6", + "npm-run-all": "^4.1.5", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-terser": "^7.0.2", - "vite": "^5.2.13" + "vite": "^5.2.14" } }, "node_modules/@babel/code-frame": { @@ -1422,7 +1425,6 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -1445,7 +1447,6 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, - "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -1463,6 +1464,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, "node_modules/autoprefixer": { "version": "10.4.19", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", @@ -1505,7 +1515,6 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, - "peer": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -1516,6 +1525,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/before-after-hook": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", @@ -1534,6 +1567,16 @@ "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", "dev": true }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -1589,7 +1632,6 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, - "peer": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -1818,6 +1860,12 @@ "dot-prop": "^5.1.0" } }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "node_modules/concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", @@ -1911,6 +1959,15 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -2177,7 +2234,6 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -2195,7 +2251,6 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2213,7 +2268,6 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -2257,7 +2311,6 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, - "peer": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2275,7 +2328,6 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, - "peer": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2511,7 +2563,6 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "peer": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -2521,7 +2572,6 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, - "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -2582,7 +2632,6 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, - "peer": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -2595,7 +2644,6 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" } @@ -2605,7 +2653,6 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, - "peer": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -2618,7 +2665,6 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, - "peer": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -2633,7 +2679,6 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "peer": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2862,12 +2907,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "peer": true, "dependencies": { "is-callable": "^1.1.3" } @@ -2950,7 +3014,6 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -2969,7 +3032,6 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2998,7 +3060,6 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, - "peer": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -3030,7 +3091,6 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -3075,7 +3135,6 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, - "peer": true, "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -3124,7 +3183,6 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, - "peer": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -3164,7 +3222,6 @@ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3183,7 +3240,6 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, - "peer": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -3196,7 +3252,6 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -3209,7 +3264,6 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -3222,7 +3276,6 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "peer": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -3245,6 +3298,15 @@ "node": ">= 0.4" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -3280,6 +3342,32 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -3293,6 +3381,51 @@ "node": ">= 14" } }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-server/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/http-server/node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, "node_modules/https-proxy-agent": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", @@ -3315,6 +3448,34 @@ "node": ">=18.18.0" } }, + "node_modules/husky": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/icss-replace-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", @@ -3454,7 +3615,6 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, - "peer": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -3485,7 +3645,6 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -3501,15 +3660,13 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "peer": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -3522,7 +3679,6 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3539,7 +3695,6 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -3564,7 +3719,6 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, - "peer": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -3580,7 +3734,6 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3627,7 +3780,6 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -3649,7 +3801,6 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3686,7 +3837,6 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3703,7 +3853,6 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -3731,7 +3880,6 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3747,7 +3895,6 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "peer": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -3763,7 +3910,6 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, - "peer": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -3791,7 +3937,6 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -3874,8 +4019,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -3920,7 +4064,6 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -3936,7 +4079,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "peer": true, "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -3950,7 +4092,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -4100,6 +4241,15 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -4168,6 +4318,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -4177,6 +4339,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4225,6 +4399,12 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "node_modules/node-emoji": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", @@ -4436,6 +4616,213 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/npm-run-path": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", @@ -4465,6 +4852,7 @@ }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4481,6 +4869,7 @@ }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -4492,11 +4881,13 @@ }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4513,6 +4904,7 @@ }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4527,11 +4919,13 @@ }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { "version": "2.2.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4547,6 +4941,7 @@ }, "node_modules/npm/node_modules/@npmcli/arborist": { "version": "7.5.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4595,6 +4990,7 @@ }, "node_modules/npm/node_modules/@npmcli/config": { "version": "8.3.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4613,6 +5009,7 @@ }, "node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4624,6 +5021,7 @@ }, "node_modules/npm/node_modules/@npmcli/git": { "version": "5.0.7", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4642,6 +5040,7 @@ }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.1.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4657,6 +5056,7 @@ }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4671,6 +5071,7 @@ }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "7.1.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4686,6 +5087,7 @@ }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -4694,6 +5096,7 @@ }, "node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -4702,6 +5105,7 @@ }, "node_modules/npm/node_modules/@npmcli/package-json": { "version": "5.1.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4719,6 +5123,7 @@ }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "7.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4730,6 +5135,7 @@ }, "node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4741,6 +5147,7 @@ }, "node_modules/npm/node_modules/@npmcli/redact": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -4749,6 +5156,7 @@ }, "node_modules/npm/node_modules/@npmcli/run-script": { "version": "8.1.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4765,6 +5173,7 @@ }, "node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "dev": true, "inBundle": true, "license": "MIT", "optional": true, @@ -4774,6 +5183,7 @@ }, "node_modules/npm/node_modules/@sigstore/bundle": { "version": "2.3.2", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4785,6 +5195,7 @@ }, "node_modules/npm/node_modules/@sigstore/core": { "version": "1.1.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -4793,6 +5204,7 @@ }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.3.2", + "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -4801,6 +5213,7 @@ }, "node_modules/npm/node_modules/@sigstore/sign": { "version": "2.3.2", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4817,6 +5230,7 @@ }, "node_modules/npm/node_modules/@sigstore/tuf": { "version": "2.3.4", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4829,6 +5243,7 @@ }, "node_modules/npm/node_modules/@sigstore/verify": { "version": "1.2.1", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4842,6 +5257,7 @@ }, "node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -4850,6 +5266,7 @@ }, "node_modules/npm/node_modules/@tufjs/models": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4862,6 +5279,7 @@ }, "node_modules/npm/node_modules/abbrev": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -4870,6 +5288,7 @@ }, "node_modules/npm/node_modules/agent-base": { "version": "7.1.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4881,6 +5300,7 @@ }, "node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4893,6 +5313,7 @@ }, "node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -4901,6 +5322,7 @@ }, "node_modules/npm/node_modules/ansi-styles": { "version": "6.2.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -4912,21 +5334,25 @@ }, "node_modules/npm/node_modules/aproba": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/archy": { "version": "1.0.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { "version": "4.0.4", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4941,6 +5367,7 @@ }, "node_modules/npm/node_modules/binary-extensions": { "version": "2.3.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -4952,6 +5379,7 @@ }, "node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4960,6 +5388,7 @@ }, "node_modules/npm/node_modules/cacache": { "version": "18.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4982,6 +5411,7 @@ }, "node_modules/npm/node_modules/chalk": { "version": "5.3.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -4993,6 +5423,7 @@ }, "node_modules/npm/node_modules/chownr": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5001,6 +5432,7 @@ }, "node_modules/npm/node_modules/ci-info": { "version": "4.0.0", + "dev": true, "funding": [ { "type": "github", @@ -5015,6 +5447,7 @@ }, "node_modules/npm/node_modules/cidr-regex": { "version": "4.1.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -5026,6 +5459,7 @@ }, "node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5034,6 +5468,7 @@ }, "node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5046,6 +5481,7 @@ }, "node_modules/npm/node_modules/cmd-shim": { "version": "6.0.3", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5054,6 +5490,7 @@ }, "node_modules/npm/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5065,16 +5502,19 @@ }, "node_modules/npm/node_modules/color-name": { "version": "1.1.4", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5088,6 +5528,7 @@ }, "node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5102,6 +5543,7 @@ }, "node_modules/npm/node_modules/cssesc": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", "bin": { @@ -5113,6 +5555,7 @@ }, "node_modules/npm/node_modules/debug": { "version": "4.3.4", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5129,11 +5572,13 @@ }, "node_modules/npm/node_modules/debug/node_modules/ms": { "version": "2.1.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/diff": { "version": "5.2.0", + "dev": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -5142,16 +5587,19 @@ }, "node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/encoding": { "version": "0.1.13", + "dev": true, "inBundle": true, "license": "MIT", "optional": true, @@ -5161,6 +5609,7 @@ }, "node_modules/npm/node_modules/env-paths": { "version": "2.2.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5169,16 +5618,19 @@ }, "node_modules/npm/node_modules/err-code": { "version": "2.0.3", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5187,6 +5639,7 @@ }, "node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5202,6 +5655,7 @@ }, "node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5213,6 +5667,7 @@ }, "node_modules/npm/node_modules/function-bind": { "version": "1.1.2", + "dev": true, "inBundle": true, "license": "MIT", "funding": { @@ -5221,6 +5676,7 @@ }, "node_modules/npm/node_modules/glob": { "version": "10.4.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5242,11 +5698,13 @@ }, "node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/hasown": { "version": "2.0.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5258,6 +5716,7 @@ }, "node_modules/npm/node_modules/hosted-git-info": { "version": "7.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5269,11 +5728,13 @@ }, "node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/http-proxy-agent": { "version": "7.0.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5286,6 +5747,7 @@ }, "node_modules/npm/node_modules/https-proxy-agent": { "version": "7.0.4", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5298,6 +5760,7 @@ }, "node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", + "dev": true, "inBundle": true, "license": "MIT", "optional": true, @@ -5310,6 +5773,7 @@ }, "node_modules/npm/node_modules/ignore-walk": { "version": "6.0.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5321,6 +5785,7 @@ }, "node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5329,6 +5794,7 @@ }, "node_modules/npm/node_modules/indent-string": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5337,6 +5803,7 @@ }, "node_modules/npm/node_modules/ini": { "version": "4.1.3", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5345,6 +5812,7 @@ }, "node_modules/npm/node_modules/init-package-json": { "version": "6.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5362,6 +5830,7 @@ }, "node_modules/npm/node_modules/ip-address": { "version": "9.0.5", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5374,6 +5843,7 @@ }, "node_modules/npm/node_modules/ip-regex": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5385,6 +5855,7 @@ }, "node_modules/npm/node_modules/is-cidr": { "version": "5.1.0", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -5396,6 +5867,7 @@ }, "node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5407,6 +5879,7 @@ }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5415,16 +5888,19 @@ }, "node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/isexe": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { "version": "3.1.2", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5442,11 +5918,13 @@ }, "node_modules/npm/node_modules/jsbn": { "version": "1.1.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.2", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5455,6 +5933,7 @@ }, "node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", + "dev": true, "inBundle": true, "license": "ISC", "funding": { @@ -5463,6 +5942,7 @@ }, "node_modules/npm/node_modules/jsonparse": { "version": "1.3.1", + "dev": true, "engines": [ "node >= 0.2.0" ], @@ -5471,16 +5951,19 @@ }, "node_modules/npm/node_modules/just-diff": { "version": "6.0.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { "version": "8.0.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5493,6 +5976,7 @@ }, "node_modules/npm/node_modules/libnpmdiff": { "version": "6.1.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5511,6 +5995,7 @@ }, "node_modules/npm/node_modules/libnpmexec": { "version": "8.1.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5531,6 +6016,7 @@ }, "node_modules/npm/node_modules/libnpmfund": { "version": "5.0.11", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5542,6 +6028,7 @@ }, "node_modules/npm/node_modules/libnpmhook": { "version": "10.0.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5554,6 +6041,7 @@ }, "node_modules/npm/node_modules/libnpmorg": { "version": "6.0.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5566,6 +6054,7 @@ }, "node_modules/npm/node_modules/libnpmpack": { "version": "7.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5580,6 +6069,7 @@ }, "node_modules/npm/node_modules/libnpmpublish": { "version": "9.0.9", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5598,6 +6088,7 @@ }, "node_modules/npm/node_modules/libnpmsearch": { "version": "7.0.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5609,6 +6100,7 @@ }, "node_modules/npm/node_modules/libnpmteam": { "version": "6.0.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5621,6 +6113,7 @@ }, "node_modules/npm/node_modules/libnpmversion": { "version": "6.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5636,6 +6129,7 @@ }, "node_modules/npm/node_modules/lru-cache": { "version": "10.2.2", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5644,6 +6138,7 @@ }, "node_modules/npm/node_modules/make-fetch-happen": { "version": "13.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5666,6 +6161,7 @@ }, "node_modules/npm/node_modules/minimatch": { "version": "9.0.4", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5680,6 +6176,7 @@ }, "node_modules/npm/node_modules/minipass": { "version": "7.1.2", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5688,6 +6185,7 @@ }, "node_modules/npm/node_modules/minipass-collect": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5699,6 +6197,7 @@ }, "node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.5", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5715,6 +6214,7 @@ }, "node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5726,6 +6226,7 @@ }, "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5737,6 +6238,7 @@ }, "node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5746,6 +6248,7 @@ }, "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5757,6 +6260,7 @@ }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5768,6 +6272,7 @@ }, "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5779,6 +6284,7 @@ }, "node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5790,6 +6296,7 @@ }, "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5801,6 +6308,7 @@ }, "node_modules/npm/node_modules/minizlib": { "version": "2.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5813,6 +6321,7 @@ }, "node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5824,6 +6333,7 @@ }, "node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", + "dev": true, "inBundle": true, "license": "MIT", "bin": { @@ -5835,11 +6345,13 @@ }, "node_modules/npm/node_modules/ms": { "version": "2.1.3", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5848,6 +6360,7 @@ }, "node_modules/npm/node_modules/negotiator": { "version": "0.6.3", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -5856,6 +6369,7 @@ }, "node_modules/npm/node_modules/node-gyp": { "version": "10.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5879,6 +6393,7 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5887,6 +6402,7 @@ }, "node_modules/npm/node_modules/nopt": { "version": "7.2.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5901,6 +6417,7 @@ }, "node_modules/npm/node_modules/normalize-package-data": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -5915,6 +6432,7 @@ }, "node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5923,6 +6441,7 @@ }, "node_modules/npm/node_modules/npm-bundled": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5934,6 +6453,7 @@ }, "node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -5945,6 +6465,7 @@ }, "node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -5953,6 +6474,7 @@ }, "node_modules/npm/node_modules/npm-package-arg": { "version": "11.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5967,6 +6489,7 @@ }, "node_modules/npm/node_modules/npm-packlist": { "version": "8.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5978,6 +6501,7 @@ }, "node_modules/npm/node_modules/npm-pick-manifest": { "version": "9.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5992,6 +6516,7 @@ }, "node_modules/npm/node_modules/npm-profile": { "version": "10.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6004,6 +6529,7 @@ }, "node_modules/npm/node_modules/npm-registry-fetch": { "version": "17.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6022,6 +6548,7 @@ }, "node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -6030,6 +6557,7 @@ }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6044,6 +6572,7 @@ }, "node_modules/npm/node_modules/pacote": { "version": "18.0.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6074,6 +6603,7 @@ }, "node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6087,6 +6617,7 @@ }, "node_modules/npm/node_modules/path-key": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -6095,6 +6626,7 @@ }, "node_modules/npm/node_modules/path-scurry": { "version": "1.11.1", + "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6110,6 +6642,7 @@ }, "node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6122,6 +6655,7 @@ }, "node_modules/npm/node_modules/proc-log": { "version": "4.2.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6130,6 +6664,7 @@ }, "node_modules/npm/node_modules/proggy": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6138,6 +6673,7 @@ }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "ISC", "funding": { @@ -6146,6 +6682,7 @@ }, "node_modules/npm/node_modules/promise-call-limit": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC", "funding": { @@ -6154,11 +6691,13 @@ }, "node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6171,6 +6710,7 @@ }, "node_modules/npm/node_modules/promzard": { "version": "1.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6182,6 +6722,7 @@ }, "node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", + "dev": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -6189,6 +6730,7 @@ }, "node_modules/npm/node_modules/read": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6200,6 +6742,7 @@ }, "node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6208,6 +6751,7 @@ }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6220,6 +6764,7 @@ }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -6228,12 +6773,14 @@ }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", + "dev": true, "inBundle": true, "license": "MIT", "optional": true }, "node_modules/npm/node_modules/semver": { "version": "7.6.2", + "dev": true, "inBundle": true, "license": "ISC", "bin": { @@ -6245,6 +6792,7 @@ }, "node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6256,6 +6804,7 @@ }, "node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -6264,6 +6813,7 @@ }, "node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6275,6 +6825,7 @@ }, "node_modules/npm/node_modules/sigstore": { "version": "2.3.1", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -6291,6 +6842,7 @@ }, "node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -6300,6 +6852,7 @@ }, "node_modules/npm/node_modules/socks": { "version": "2.8.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6313,6 +6866,7 @@ }, "node_modules/npm/node_modules/socks-proxy-agent": { "version": "8.0.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6326,6 +6880,7 @@ }, "node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -6335,6 +6890,7 @@ }, "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6344,11 +6900,13 @@ }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", + "dev": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6358,16 +6916,19 @@ }, "node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.18", + "dev": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/npm/node_modules/sprintf-js": { "version": "1.1.3", + "dev": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ssri": { "version": "10.0.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6379,6 +6940,7 @@ }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6393,6 +6955,7 @@ "node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6406,6 +6969,7 @@ }, "node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6418,6 +6982,7 @@ "node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6429,6 +6994,7 @@ }, "node_modules/npm/node_modules/supports-color": { "version": "9.4.0", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -6440,6 +7006,7 @@ }, "node_modules/npm/node_modules/tar": { "version": "6.2.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6456,6 +7023,7 @@ }, "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6467,6 +7035,7 @@ }, "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6478,6 +7047,7 @@ }, "node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6486,16 +7056,19 @@ }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/treeverse": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6504,6 +7077,7 @@ }, "node_modules/npm/node_modules/tuf-js": { "version": "2.2.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6517,6 +7091,7 @@ }, "node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6528,6 +7103,7 @@ }, "node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6539,11 +7115,13 @@ }, "node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", + "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -6553,6 +7131,7 @@ }, "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6562,6 +7141,7 @@ }, "node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.1", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6570,11 +7150,13 @@ }, "node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", + "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/which": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6589,6 +7171,7 @@ }, "node_modules/npm/node_modules/which/node_modules/isexe": { "version": "3.1.1", + "dev": true, "inBundle": true, "license": "ISC", "engines": { @@ -6597,6 +7180,7 @@ }, "node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6614,6 +7198,7 @@ "node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6630,6 +7215,7 @@ }, "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6644,6 +7230,7 @@ }, "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -6655,11 +7242,13 @@ }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", + "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6676,6 +7265,7 @@ }, "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", + "dev": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6690,6 +7280,7 @@ }, "node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", + "dev": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6702,6 +7293,7 @@ }, "node_modules/npm/node_modules/yallist": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "ISC" }, @@ -6732,7 +7324,6 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6742,7 +7333,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" } @@ -6752,7 +7342,6 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -6782,6 +7371,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/p-each-series": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", @@ -7035,6 +7633,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", @@ -7061,12 +7671,34 @@ "node": ">=4" } }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" } @@ -7677,6 +8309,21 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7802,7 +8449,6 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -7838,6 +8484,12 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -8608,7 +9260,6 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -8626,8 +9277,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/safe-buffer": { "version": "5.2.1", @@ -8660,7 +9310,6 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -8673,6 +9322,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, "node_modules/semantic-release": { "version": "24.0.0", "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.0.0.tgz", @@ -8854,7 +9515,6 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "peer": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -8872,7 +9532,6 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, - "peer": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -8904,12 +9563,20 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -9187,12 +9854,29 @@ "node": ">=8" } }, + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9211,7 +9895,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9226,7 +9909,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9257,7 +9939,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -9557,7 +10238,6 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -9572,7 +10252,6 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -9592,7 +10271,6 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, - "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -9613,7 +10291,6 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -9668,7 +10345,6 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -9707,6 +10383,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -9793,9 +10481,9 @@ } }, "node_modules/vite": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.13.tgz", - "integrity": "sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.14.tgz", + "integrity": "sha512-TFQLuwWLPms+NBNlh0D9LZQ+HXW471COABxw/9TEUBrjuHMo9BrYBPrN/SYAwIuVL+rLerycxiLT41t4f5MZpA==", "dev": true, "dependencies": { "esbuild": "^0.20.1", @@ -9882,6 +10570,18 @@ "fsevents": "~2.3.2" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -9902,7 +10602,6 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "peer": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -9919,7 +10618,6 @@ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, - "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", diff --git a/package.json b/package.json index 3c5d2bd..373abbd 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,10 @@ "scripts": { "dev": "vite", "build": "vite build", - "preview": "vite preview" + "preview": "vite preview", + "serve": "npm run build && http-server ./dist -p 3456 --cors", + "prepare": "husky install", + "pre-commit:generate-bundle": "node scripts/generate-bundle-script.js" }, "devDependencies": { "@semantic-release/changelog": "^6.0.3", @@ -20,8 +23,11 @@ "@semantic-release/release-notes-generator": "^14.0.0", "autoprefixer": "^10.4.19", "cssnano": "^7.0.2", + "http-server": "^14.1.1", + "husky": "^9.1.6", + "npm-run-all": "^4.1.5", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-terser": "^7.0.2", - "vite": "^5.2.13" + "vite": "^5.2.14" } } diff --git a/scripts/generate-bundle-script.js b/scripts/generate-bundle-script.js new file mode 100644 index 0000000..83dd142 --- /dev/null +++ b/scripts/generate-bundle-script.js @@ -0,0 +1,37 @@ + +const { exec } = require("child_process"); +const fs = require("fs"); +const path = require("path"); + +const rootDir = path.resolve(__dirname, ".."); +const srcFile = path.join(rootDir, "dist/js/footer_scripts.min.js"); +const destFile = path.join(rootDir, "src/bundle-script.min.js"); + +// Step 1: Run the build command +exec("npm run build", { cwd: rootDir }, (err, stdout, stderr) => { + if (err) { + console.error(`Error during build: ${stderr}`); + process.exit(1); + } + console.log(stdout); + + // Step 2: Copy the file from dist/js/footer_scripts.min.js to src/bundle-script.min.js + fs.copyFile(srcFile, destFile, (copyErr) => { + if (copyErr) { + console.error(`Error copying file: ${copyErr.message}`); + process.exit(1); + } + + // Step 3: Add the file to git + exec( + `git add ${destFile}`, + { cwd: rootDir }, + (gitErr, gitStdout, gitStderr) => { + if (gitErr) { + console.error(`Error adding file to git: ${gitStderr}`); + process.exit(1); + } + } + ); + }); +}); diff --git a/scripts/generate-bundle-url.js b/scripts/generate-bundle-url.js new file mode 100644 index 0000000..866b9cb --- /dev/null +++ b/scripts/generate-bundle-url.js @@ -0,0 +1,20 @@ +// scripts/generate-latest-url.js +const { exec } = require('child_process'); + +// Define your GitHub repository details +const repoName = 'deriv-com/webflow-deriv-com-scripts'; +const filePath = 'src/bundle-script.min.js'; + +// Step 1: Get the latest commit hash +exec('git rev-parse HEAD', (err, stdout, stderr) => { + if (err) { + console.error(`Error getting latest commit hash: ${stderr}`); + process.exit(1); + } + + const latestCommitHash = stdout.trim(); + + // Step 2: Generate the URL with the latest commit hash + const generatedUrl = `https://cdn.jsdelivr.net/gh/${repoName}@${latestCommitHash}/${filePath}`; + console.log(`Generated URL: ${generatedUrl}`); +}); diff --git a/src/bundle-script.min.js b/src/bundle-script.min.js new file mode 100644 index 0000000..ba4230c --- /dev/null +++ b/src/bundle-script.min.js @@ -0,0 +1 @@ +var e,o,n,i,t,a,r,d,c,s;import{initializeApp as l}from"https://www.gstatic.com/firebasejs/10.8.1/firebase-app.js";import{getDatabase as u,ref as p,onValue as w}from"https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js";function h(e,o,n,i){let t="";if(n){let e=new Date;e.setTime(e.getTime()+24*n*60*60*1e3),t="; expires="+e.toUTCString()}document.cookie=i?e+"="+(o||"")+t+`;domain=${i};path=/`:e+"="+(o||"")+t+";path=/"}function m(e,o){const n={};return e.split(";").forEach((e=>{const[o,i]=e.split("=").map((e=>e.trim()));n[o]=decodeURIComponent(i)})),n[o]}function y(e){h("webflow-user-language",e,30)}function N(e){document.cookie=e+"=; Max-Age=-99999999;"}window.emailRegex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,window.toggleErrorField=(e,o)=>{o?e.classList.remove("error-field"):e.classList.add("error-field")},window.disableButton=function(e){e.disabled=!0,e.style.opacity="0.5"},window.isEuRegion=function(e){const o=e.replace(/\/$/,"");return/^\/(?:[^\/]+\/)?eu(?:\/|$)/.test(o)},window.enableButton=function(e){e.disabled=!1,e.style.opacity="1"},window.getOauthUrl=function(){var e=window.location.href,o=new URL(e).hostname,n=["deriv.com","deriv.be","deriv.me"].find((e=>o.endsWith(e)));return n?`https://oauth.${n}`:"https://oauth.deriv.com"},window.getClientCountry=function(){var e;const o=m(document.cookie,"clients_country"),n=m(document.cookie,"client_information");return n&&(null==(e=JSON.parse(n))?void 0:e.residence)||o},window.deriv_com_url="deriv.com",window.deriv_me_url="deriv.me",window.deriv_be_url="deriv.be",window.webflow_domain="webflow.deriv.com",window.staging_url="staging.deriv.com",window.staging_deriv_be_url="staging.deriv.be",window.domain_list_app_id={[window.deriv_com_url]:"16929",[window.deriv_me_url]:"1411",[window.deriv_be_url]:"30767",[window.webflow_domain]:"53503",[window.staging_url]:"16303"},window.getDomain=()=>{var e=window.location.href;return new URL(e).hostname},window.getAppId=()=>{const e=window.getDomain(),o=new URLSearchParams(window.location.search||"").get("app_id");if(o)return o;const n=localStorage.getItem("config.app_id");if(n)return n;const i={[window.webflow_domain]:window.domain_list_app_id[window.webflow_domain],[window.deriv_be_url]:window.domain_list_app_id[window.deriv_be_url],[window.deriv_me_url]:window.domain_list_app_id[window.deriv_me_url],[window.staging_url]:window.domain_list_app_id[window.staging_url]};return i[e]?i[e]:window.domain_list_app_id[window.deriv_com_url]};const g=()=>{const e=localStorage.getItem("config.server_url"),o=m(document.cookie,"webflow-user-language");let n=o?o.toLowerCase():"en";"zh-cn"!==n&&"zh-tw"!==n||(n=n.replace("-","_"));const i=(e=>{let o="";return e&&Object.keys(e).forEach((n=>{o+=`&${n}=${e[n]}`})),o})((()=>{const e=m(document.cookie,"utm_data");if(e){const o=JSON.parse(e),n={};return["utm_source","utm_ad_id","utm_adgroup_id","utm_adrollclk_id","utm_campaign","utm_campaign_id","utm_content","utm_fbcl_id","utm_gl_client_id","utm_medium","utm_msclk_id","utm_term"].forEach((e=>{o.hasOwnProperty(e)&&(n[e]=o[e])})),n}return null})()),t=m(document.cookie,"affiliate_tracking"),a=t?`&affiliate_token=${t}`:"",r=void["mt5","bot","derivx"].filter((e=>window.location.pathname.includes(e)&&e))||"";return e&&/qa/.test(e)?`https://${e}/oauth2/authorize?app_id=${window.getAppId()}&l=${n}&brand=deriv${a}${i}&platform=${r}`:`${window.getOauthUrl()}/oauth2/authorize?app_id=${(()=>{const e=window.getDomain();return e===window.deriv_me_url?window.domain_list_app_id[window.deriv_me_url]:e===window.deriv_be_url?window.domain_list_app_id[window.deriv_be_url]:e===window.webflow_domain?window.domain_list_app_id[window.webflow_domain]:window.domain_list_app_id[window.deriv_com_url]})()}&l=${n}&brand=deriv${a}${i}&platform=${r}`};if(!!!m(document.cookie,"client_information")){var f=document.createElement("iframe");f.src=(()=>{const e=window.location.hostname;let o;switch(o="deriv.com"===e||"deriv.be"===e||"deriv.me"===e?"production":"staging.deriv.com"===e?"staging":"development",o){case"production":return"https://hub.deriv.com/tradershub/signup";case"staging":return"https://staging-hub.deriv.com/tradershub/signup";default:return"https://dev-hub.deriv.com/tradershub/signup"}})(),f.style.width="0",f.style.height="0",f.style.border="none",f.style.visibility="hidden",f.setAttribute("sandbox","allow-same-origin allow-scripts"),document.body.appendChild(f)}window.establishWebSocketConnection=()=>new Promise(((e,o)=>{const n=m(document.cookie,"webflow-user-language"),i=n?n.toLowerCase():"en",t=localStorage.getItem("config.server_url")||"green.derivws.com";window.websocket=new WebSocket(`wss://${t}/websockets/v3?app_id=${window.getAppId()}&l=${i||"en"}&brand=deriv`),window.websocket.addEventListener("open",(o=>{window.websocket.addEventListener("close",(()=>{window.websocket.close()})),window.websocket.addEventListener("message",(e=>{JSON.parse(e.data)})),e(window.websocket)})),window.websocket.addEventListener("error",(e=>{var n;null==(n=null==window?void 0:window.websocket)||n.close(),o(e)}))})),window.socketMessageSend=async(e,o)=>{var n;try{return(null==window?void 0:window.websocket)&&(null==(n=null==window?void 0:window.websocket)?void 0:n.readyState)===(null==WebSocket?void 0:WebSocket.OPEN)?(window.websocket.send(e),new Promise(((e,n)=>{window.websocket.addEventListener("message",(i=>{const t=JSON.parse(i.data);o===t.msg_type&&(t.error?n(t.error):e(t))}))}))):establishWebSocketConnection().then((()=>(websocket.send(e),new Promise(((e,n)=>{websocket.addEventListener("message",(i=>{const t=JSON.parse(i.data);o===t.msg_type&&(t.error?n(t.error):e(t))}))}))))).catch((e=>Promise.reject(e)))}catch(i){return Promise.reject(i)}};const v=[{id:"appgallery",selectors:[".footer_banner-badge.gallery.w-inline-block",".app-download_link-wrapper.appgallery.w-inline-block"],countries:["af","ax","al","dz","as","ad","ao","aq","am","au","at","az","bh","bd","by","be","bj","bm","bt","bo","ba","bw","bv","br","io","bn","bg","bf","bi","kh","cm","ca","cv","bq","cf","td","cn","cx","cc","km","cg","cd","ck","ci","hr","cu","cw","cy","cz","dk","dj","dm","eg","gq","er","ee","et","fk","fo","fj","fi","fr","pf","tf","ga","gm","ge","de","gh","gi","gr","gl","gu","gg","gn","gw","hm","va","hu","is","in","id","ir","iq","ie","im","il","it","jp","je","jo","kz","ke","ki","kr","kp","kw","kg","la","lv","lb","ls","lr","ly","li","lt","lu","mo","mk","mg","mw","my","mv","ml","mt","mh","mr","mu","yt","mx","fm","md","mc","mn","me","ma","mz","mm","na","nr","np","nl","nc","nz","ne","ng","nu","nf","mp","no","om","pk","pw","ps","pg","pe","ph","pn","pl","pt","qa","re","ro","ru","rw","sh","kn","pm","bl","mf","ws","sm","st","sa","sn","rs","sc","sl","sg","sx","sk","si","sb","so","gs","ss","es","lk","sd","sj","sz","se","ch","sy","tw","tj","tz","th","tl","tg","tk","to","tn","tr","tm","tc","tv","ug","ua","ae","gb","um","us","uz","vu","vi","wf","eh","ye","zm","zw"]},{id:"googlePlay",selectors:[".footer_banner-badge.google.w-inline-block",".app-download_link-wrapper.google.w-inline-block"],countries:["af","ax","as","ad","ai","aq","au","bb","bt","bv","io","bn","bi","ca","bq","cf","cx","cc","cg","cd","ck","cw","gq","et","fk","fo","gf","pf","tf","gl","gp","gu","gg","gy","hm","va","hk","ir","im","jp","je","ki","kp","ls","ly","mg","mw","mh","mq","mr","yt","fm","mn","me","ms","nr","nc","nz","ng","nu","nf","mp","pw","ps","pn","pr","re","sh","kn","lc","pm","vc","bl","mf","st","sg","sx","gs","ss","sj","sz","sy","tl","tk","tc","tv","um","us","vg","vi","wf","eh"]},{id:"appstore",selectors:[".footer_banner-badge.store.w-inline-block",".app-download_link-wrapper.appstore.w-inline-block"],countries:["ax","al","as","ad","aq","aw","au","at","bd","be","bv","io","bg","bi","ca","bq","cf","cx","cc","km","ck","hr","cu","cw","cy","cz","dk","dj","gq","er","ee","et","fk","fo","fi","fr","gf","pf","tf","de","gi","gr","gl","gp","gu","gg","gn","ht","hm","va","hk","hu","is","ir","iq","ie","im","il","it","je","ki","kp","lv","ls","ly","li","lt","lu","mt","mh","mq","yt","fm","me","nl","nc","nz","ng","nu","nf","mp","no","ps","pn","pl","pt","pr","re","ro","sh","pm","bl","mf","ws","sm","sg","sx","sk","si","so","gs","ss","es","sd","sj","se","ch","sy","tw","tl","tg","tk","tr","tv","gb","um","us","vu","vi","wf","eh"]},{id:"p2p",selectors:["#p2payment.accordion_toggle-block","#p2component.section_dp2p","#card_block_p2p.help_category"],countries:["as","au","at","be","bg","ca","hr","cy","cz","dk","ee","fi","fr","gr","gu","gg","hk","hu","ir","ie","im","il","it","je","ng","mm","sy","kp","lv","lt","lu","my","mt","nl","nz","mp","py","pl","pt","pr","ro","rw","sk","si","es","se","ae","gb","us","um","vu","vi","ky","cu","de"]},{id:"w-dyn-item-p2p",selectors:["div.w-dyn-item"],countries:["as","au","at","be","bg","ca","hr","cy","cz","dk","ee","fi","fr","gr","gu","gg","hk","hu","ir","ie","im","il","it","je","ng","mm","sy","kp","lv","lt","lu","my","mt","nl","nz","mp","py","pl","pt","pr","ro","rw","sk","si","es","se","ae","gb","us","um","vu","vi","ky","cu","de"]},{id:"hideRow",selectors:["#footer_social-icons_row","#footer_text_row",".footer_risk-warning.w-richtext"],countries:["br","uy","lk","ch","za","ec"]},{id:"hideDiel",selectors:["#footer_text_diel","#footer_social-icons_diel"],countries:["br","uy","lk","ch","za","ec"]}],Y=[{id:"showElems",selectors:[".banner_disclaimer"],countries:["br","uy","lk","ch","za","ec"]}],_=()=>{const e=window.getClientCountry();v.forEach((o=>{const n="hideDiel"===o.id?!o.countries.includes(e):o.countries.includes(e);if(e&&n)return o.selectors.forEach((e=>{document.querySelectorAll(e).forEach((e=>{if(e)if("w-dyn-item-p2p"===o.id){e.querySelector("#card_block_p2p.help_category")&&(e.style.display="none")}else e.style.display="none"}))}));if(!n){const e=document.querySelector(".footer_social-icons.diel");e&&(e.style.display="flex")}})),Y.forEach((o=>{e&&o.countries.includes(e)?o.selectors.forEach((e=>{document.querySelectorAll(e).forEach((o=>{if(o){const n=document.querySelector(".page-wrapper");".banner_disclaimer"===e?(n.classList.add("disclaimer-show"),o.classList.remove("hide-element")):o.style.display="block"}}))})):o.selectors.forEach((e=>{document.querySelectorAll(e).forEach((o=>{o&&(".banner_disclaimer"===e?o.classList.add("hide-element"):o.style.display="none")}))}))}))},A=JSON.stringify({website_status:1});!async function(){try{const e=await fetch("https://www.cloudflare.com/cdn-cgi/trace"),o=await e.text(),n=Object.fromEntries(o.split("\n").map((e=>e.split("=",2)))).loc.toLowerCase();n!==m(document.cookie,"clients_country")&&(N("clients_country"),h("clients_country",n,30)),_()}catch(e){_()}}();m(document.cookie,"clients_country")||window.socketMessageSend(A,"website_status").then((e=>{m(document.cookie,"clients_country")!==e.website_status.clients_country&&(N("clients_country"),h("clients_country",e.website_status.clients_country,30)),_()})).catch((e=>{}));const b=["ar","bn","de","en","es","fr","it","ko","pl","pt","ru","si","sw","th","tr","vi","zh_cn","zh_tw","zh-cn","zh-tw"];(()=>{var e;const o=window.location.pathname,n=window.location.hash,i=window.location.search,t=o.split("/"),a=t[1],r=b.includes(a||""),d=t.includes("careers")||t.includes("locations")||t.includes("derivtech")||t.includes("derivlife")||t.includes("eu-careers")||t.includes("our-locations");r&&y(a);const c=(null==(e=m(document.cookie,"webflow-user-language"))?void 0:e.toLowerCase())||"en",s=r?a:c;if((r||"en"!==c)&&a!==c)if(r&&a!==c)y(s);else if(!d){const e=(r?t.map((e=>e===a?s:e)).join("/"):s+t.join("/"))+i+n;window.location.href="/"+e}})();const k=function(){let e,o=!1,n=!1;const i=()=>{n=!0,o=!!m(document.cookie,"client_information"),o&&clearInterval(e),document.dispatchEvent(new Event("authStatusChange"))};return i(),e=setInterval(i,800),{getLoggedInStatus:()=>o,getAuthCheckedStatus:()=>n,onAuthStatusChange:e=>document.addEventListener("authStatusChange",e)}}();k.onAuthStatusChange((()=>{if(k.getAuthCheckedStatus()&&k.getLoggedInStatus()){document.querySelectorAll(".logged-in-btn").forEach((e=>{e.classList.remove("hide-element")}));document.querySelectorAll(".logged-out-btn").forEach((e=>{e.classList.add("hide-element")}))}else if(k.getAuthCheckedStatus()&&!k.getLoggedInStatus()){document.querySelectorAll(".logged-out-btn").forEach((e=>{e.classList.remove("hide-element")}));document.querySelectorAll(".logged-in-btn").forEach((e=>{e.classList.add("hide-element")}))}}));const L=window.location.href;if(["help-centre"].some((e=>L.includes(e)))){const e=new URL(L).searchParams;e.has("platform")&&"derivgo"===e.get("platform")&&(S=".derivgo-query-element",document.querySelectorAll(S).forEach((e=>{e.style.display="none"})))}var S;const E=document.querySelector(".banner_disclaimer"),C=document.querySelector(".main-wrapper");if(E){new ResizeObserver((e=>{for(let o of e)if(o.target===E){let e=o.target.getBoundingClientRect();C&&(C.style.paddingTop=e.height+"px")}})).observe(E)}window.addEventListener("pageshow",(function(e){if(e.persisted){const e=document.querySelector(".w-nav-overlay");e&&(e.style.display="none",document.querySelector("body").click())}}));const q=u(l({databaseURL:window.location.hostname.includes("staging")?"https://app-config-staging.firebaseio.com":"https://app-config-prod.firebaseio.com"}));let I=!1,z=!1;!function(){var e;const o=document.getElementById("live_chat-wrapper");try{const e=p(q,"remote_config/deriv-com/chat");w(e,(e=>{const n=e.val();I=n.live_chat,z=n.whatsapp_chat;const i=document.querySelector(".whatsapp_chat"),t=document.querySelector(".livechatbtn");i&&(i.style.visibility=z?"visible":"hidden"),t&&(t.style.visibility=I?"visible":"hidden");if(window.location.pathname.includes("/help-centre")){const e=document.querySelectorAll(".livechatbtn");I?e.forEach((e=>{e.style.visibility="visible"})):e.forEach((e=>{e.style.visibility="hidden"}));const o=document.querySelectorAll(".whatsapp_chat");z?o.forEach((e=>{e.style.visibility="visible"})):o.forEach((e=>{e.style.visibility="hidden"}))}window.addEventListener("scroll",(function(){var e,n;(I||z)&&(null==(e=null==o?void 0:o.classList)||e.remove("hide-element")),I||z||null==(n=null==o?void 0:o.classList)||n.add("hide-element")}))}),(e=>{var n;null==(n=null==o?void 0:o.classList)||n.remove("hide-element")}))}catch(n){null==(e=null==o?void 0:o.classList)||e.remove("hide-element")}}();new MutationObserver((function(e){for(const o of e)if(o.addedNodes.length)for(const e of o.addedNodes)e.nodeType===Node.ELEMENT_NODE&&"chat-widget-minimized"===e.id&&(e.style.opacity="0")})).observe(document.body,{childList:!0,subtree:!0});const x=window.getClientCountry();const j=[{country:"af",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"ax",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"al",apple:"No",android:"Yes",huawei:"No"},{country:"dz",apple:"Yes",android:"Yes",huawei:"No"},{country:"as",apple:"N/A",android:"No",huawei:"N/A"},{country:"ad",apple:"N/A",android:"N/A",huawei:"No"},{country:"ao",apple:"Yes",android:"Yes",huawei:"No"},{country:"ai",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"aq",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ag",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ar",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"am",apple:"Yes",android:"Yes",huawei:"No"},{country:"aw",apple:"N/A",android:"Yes",huawei:"Yes"},{country:"au",apple:"No",android:"No",huawei:"No"},{country:"at",apple:"No",android:"Yes",huawei:"No"},{country:"az",apple:"Yes",android:"Yes",huawei:"No"},{country:"bs",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"bh",apple:"Yes",android:"Yes",huawei:"No"},{country:"bd",apple:"N/A",android:"Yes",huawei:"No"},{country:"bb",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"by",apple:"Yes",android:"Yes",huawei:"No"},{country:"be",apple:"No",android:"Yes",huawei:"No"},{country:"bz",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"bj",apple:"Yes",android:"Yes",huawei:"No"},{country:"bm",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"bt",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"bo",apple:"Yes",android:"Yes",huawei:"No"},{country:"ba",apple:"Yes",android:"Yes",huawei:"No"},{country:"bw",apple:"Yes",android:"Yes",huawei:"No"},{country:"bv",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"br",apple:"Yes",android:"Yes",huawei:"No"},{country:"io",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"bn",apple:"Yes",android:"N/A",huawei:"No"},{country:"bg",apple:"No",android:"Yes",huawei:"No"},{country:"bf",apple:"Yes",android:"Yes",huawei:"No"},{country:"bi",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kh",apple:"Yes",android:"Yes",huawei:"No"},{country:"cm",apple:"Yes",android:"Yes",huawei:"No"},{country:"ca",apple:"No",android:"No",huawei:"No"},{country:"cv",apple:"Yes",android:"Yes",huawei:"No"},{country:"bq",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ky",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"cf",apple:"N/A",android:"N/A",huawei:"No"},{country:"td",apple:"Yes",android:"Yes",huawei:"No"},{country:"cl",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"cn",apple:"Yes",android:"Yes",huawei:"No"},{country:"cx",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"cc",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"co",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"km",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"cg",apple:"Yes",android:"N/A",huawei:"No"},{country:"cd",apple:"Yes",android:"N/A",huawei:"No"},{country:"ck",apple:"N/A",android:"N/A",huawei:"No"},{country:"cr",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ci",apple:"Yes",android:"Yes",huawei:"No"},{country:"hr",apple:"No",android:"Yes",huawei:"No"},{country:"cu",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"cw",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"cy",apple:"No",android:"Yes",huawei:"No"},{country:"cz",apple:"No",android:"Yes",huawei:"No"},{country:"dk",apple:"No",android:"Yes",huawei:"No"},{country:"dj",apple:"N/A",android:"Yes",huawei:"No"},{country:"dm",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"do",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ec",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"eg",apple:"Yes",android:"Yes",huawei:"No"},{country:"sv",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gq",apple:"N/A",android:"N/A",huawei:"No"},{country:"er",apple:"N/A",android:"Yes",huawei:"No"},{country:"ee",apple:"No",android:"Yes",huawei:"No"},{country:"et",apple:"N/A",android:"N/A",huawei:"No"},{country:"fk",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"fo",apple:"N/A",android:"N/A",huawei:"No"},{country:"fj",apple:"Yes",android:"Yes",huawei:"No"},{country:"fi",apple:"No",android:"Yes",huawei:"No"},{country:"fr",apple:"No",android:"Yes",huawei:"No"},{country:"gf",apple:"N/A",android:"N/A",huawei:"Yes"},{country:"pf",apple:"N/A",android:"N/A",huawei:"No"},{country:"tf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ga",apple:"Yes",android:"Yes",huawei:"No"},{country:"gm",apple:"Yes",android:"Yes",huawei:"No"},{country:"ge",apple:"Yes",android:"Yes",huawei:"No"},{country:"de",apple:"No",android:"Yes",huawei:"No"},{country:"gh",apple:"Yes",android:"Yes",huawei:"No"},{country:"gi",apple:"N/A",android:"Yes",huawei:"No"},{country:"gr",apple:"No",android:"Yes",huawei:"No"},{country:"gl",apple:"N/A",android:"N/A",huawei:"No"},{country:"gd",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gp",apple:"N/A",android:"N/A",huawei:"Yes"},{country:"gu",apple:"N/A",android:"No",huawei:"N/A"},{country:"gt",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gg",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"gn",apple:"N/A",android:"Yes",huawei:"No"},{country:"gw",apple:"Yes",android:"Yes",huawei:"No"},{country:"gy",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"ht",apple:"N/A",android:"Yes",huawei:"Yes"},{country:"hm",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"va",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"hn",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"hk",apple:"No",android:"No",huawei:"Yes"},{country:"hu",apple:"No",android:"Yes",huawei:"No"},{country:"is",apple:"No",android:"Yes",huawei:"No"},{country:"in",apple:"Yes",android:"Yes",huawei:"No"},{country:"id",apple:"Yes",android:"Yes",huawei:"No"},{country:"ir",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"iq",apple:"No",android:"Yes",huawei:"N/A"},{country:"ie",apple:"No",android:"Yes",huawei:"No"},{country:"im",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"il",apple:"No",android:"Yes",huawei:"No"},{country:"it",apple:"No",android:"Yes",huawei:"No"},{country:"jm",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"jp",apple:"Yes",android:"No",huawei:"No"},{country:"je",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"jo",apple:"Yes",android:"Yes",huawei:"No"},{country:"kz",apple:"Yes",android:"Yes",huawei:"No"},{country:"ke",apple:"Yes",android:"Yes",huawei:"No"},{country:"ki",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kr",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"kp",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kw",apple:"Yes",android:"Yes",huawei:"No"},{country:"kg",apple:"Yes",android:"Yes",huawei:"No"},{country:"la",apple:"Yes",android:"Yes",huawei:"No"},{country:"lv",apple:"No",android:"Yes",huawei:"No"},{country:"lb",apple:"Yes",android:"Yes",huawei:"No"},{country:"ls",apple:"N/A",android:"N/A",huawei:"No"},{country:"lr",apple:"Yes",android:"Yes",huawei:"No"},{country:"ly",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"li",apple:"N/A",android:"Yes",huawei:"No"},{country:"lt",apple:"No",android:"Yes",huawei:"No"},{country:"lu",apple:"No",android:"Yes",huawei:"No"},{country:"mo",apple:"Yes",android:"Yes",huawei:"No"},{country:"mk",apple:"Yes",android:"Yes",huawei:"No"},{country:"mg",apple:"Yes",android:"N/A",huawei:"No"},{country:"mw",apple:"Yes",android:"N/A",huawei:"No"},{country:"my",apple:"Yes",android:"Yes",huawei:"No"},{country:"mv",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"ml",apple:"Yes",android:"Yes",huawei:"No"},{country:"mt",apple:"No",android:"Yes",huawei:"No"},{country:"mh",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"mq",apple:"N/A",android:"N/A",huawei:"Yes"},{country:"mr",apple:"Yes",android:"N/A",huawei:"No"},{country:"mu",apple:"Yes",android:"Yes",huawei:"No"},{country:"yt",apple:"N/A",android:"N/A",huawei:"No"},{country:"mx",apple:"Yes",android:"Yes",huawei:"No"},{country:"fm",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"md",apple:"Yes",android:"Yes",huawei:"No"},{country:"mc",apple:"Yes",android:"Yes",huawei:"No"},{country:"mn",apple:"Yes",android:"N/A",huawei:"No"},{country:"me",apple:"No",android:"N/A",huawei:"No"},{country:"ms",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"ma",apple:"Yes",android:"Yes",huawei:"No"},{country:"mz",apple:"Yes",android:"Yes",huawei:"No"},{country:"mm",apple:"Yes",android:"Yes",huawei:"No"},{country:"na",apple:"Yes",android:"Yes",huawei:"No"},{country:"nr",apple:"Yes",android:"N/A",huawei:"No"},{country:"np",apple:"Yes",android:"Yes",huawei:"No"},{country:"nl",apple:"No",android:"Yes",huawei:"No"},{country:"nc",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"nz",apple:"No",android:"No",huawei:"No"},{country:"ni",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ne",apple:"Yes",android:"Yes",huawei:"No"},{country:"ng",apple:"No",android:"No",huawei:"No"},{country:"nu",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"nf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"mp",apple:"N/A",android:"No",huawei:"N/A"},{country:"no",apple:"No",android:"Yes",huawei:"No"},{country:"om",apple:"Yes",android:"Yes",huawei:"No"},{country:"pk",apple:"Yes",android:"Yes",huawei:"No"},{country:"pw",apple:"Yes",android:"No",huawei:"N/A"},{country:"ps",apple:"N/A",android:"N/A",huawei:"No"},{country:"pa",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"pg",apple:"Yes",android:"Yes",huawei:"No"},{country:"py",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"pe",apple:"Yes",android:"Yes",huawei:"No"},{country:"ph",apple:"Yes",android:"Yes",huawei:"No"},{country:"pn",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"pl",apple:"No",android:"Yes",huawei:"No"},{country:"pt",apple:"No",android:"Yes",huawei:"No"},{country:"pr",apple:"N/A",android:"No",huawei:"Yes"},{country:"qa",apple:"Yes",android:"Yes",huawei:"No"},{country:"re",apple:"N/A",android:"N/A",huawei:"No"},{country:"ro",apple:"No",android:"Yes",huawei:"No"},{country:"ru",apple:"Yes",android:"Yes",huawei:"No"},{country:"rw",apple:"Yes",android:"Yes",huawei:"No"},{country:"sh",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kn",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"lc",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"pm",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"vc",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"bl",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"mf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ws",apple:"N/A",android:"Yes",huawei:"No"},{country:"sm",apple:"N/A",android:"Yes",huawei:"No"},{country:"st",apple:"Yes",android:"N/A",huawei:"No"},{country:"sa",apple:"Yes",android:"Yes",huawei:"No"},{country:"sn",apple:"Yes",android:"Yes",huawei:"No"},{country:"rs",apple:"Yes",android:"Yes",huawei:"No"},{country:"sc",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"sl",apple:"Yes",android:"Yes",huawei:"No"},{country:"sg",apple:"No",android:"No",huawei:"No"},{country:"sx",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"sk",apple:"No",android:"Yes",huawei:"No"},{country:"si",apple:"No",android:"Yes",huawei:"No"},{country:"sb",apple:"Yes",android:"Yes",huawei:"No"},{country:"so",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"za",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gs",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ss",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"es",apple:"No",android:"Yes",huawei:"No"},{country:"lk",apple:"Yes",android:"Yes",huawei:"No"},{country:"sd",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"sr",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"sj",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"sz",apple:"Yes",android:"N/A",huawei:"No"},{country:"se",apple:"No",android:"Yes",huawei:"No"},{country:"ch",apple:"No",android:"Yes",huawei:"No"},{country:"sy",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"tw",apple:"No",android:"Yes",huawei:"No"},{country:"tj",apple:"Yes",android:"Yes",huawei:"No"},{country:"tz",apple:"Yes",android:"Yes",huawei:"No"},{country:"th",apple:"Yes",android:"Yes",huawei:"No"},{country:"tl",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"tg",apple:"N/A",android:"Yes",huawei:"No"},{country:"tk",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"to",apple:"Yes",android:"Yes",huawei:"No"},{country:"tt",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"tn",apple:"Yes",android:"Yes",huawei:"No"},{country:"tr",apple:"No",android:"Yes",huawei:"No"},{country:"tm",apple:"Yes",android:"Yes",huawei:"No"},{country:"tc",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"tv",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ug",apple:"Yes",android:"Yes",huawei:"No"},{country:"ua",apple:"Yes",android:"Yes",huawei:"No"},{country:"ae",apple:"Yes",android:"Yes",huawei:"No"},{country:"gb",apple:"No",android:"Yes",huawei:"No"},{country:"um",apple:"N/A",android:"No",huawei:"N/A"},{country:"us",apple:"No",android:"No",huawei:"N/A"},{country:"uy",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"uz",apple:"Yes",android:"Yes",huawei:"No"},{country:"vu",apple:"No",android:"Yes",huawei:"N/A"},{country:"ve",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"vn",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"vg",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"vi",apple:"N/A",android:"No",huawei:"N/A"},{country:"wf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"eh",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ye",apple:"Yes",android:"Yes",huawei:"No"},{country:"zm",apple:"Yes",android:"Yes",huawei:"No"},{country:"zw",apple:"Yes",android:"Yes",huawei:"No"}].find((e=>e.country===x)),O=j?function(e){const{apple:o,android:n,huawei:i}=e;return"Yes"===o&&"Yes"===n&&"Yes"===i?"Android, iOS & Huawei":"Yes"===o&&"Yes"===n&&"Yes"!==i?"Android, and iOS":"Yes"===o&&"Yes"===i&&"Yes"!==n?"iOS, and Huawei":"Yes"===n&&"Yes"!==o&&"Yes"!==i?"Android":"Yes"===o&&"Yes"===i&&"Yes"!==n?"iOS, and Huawei":"Yes"===o&&"Yes"!==n&&"Yes"!==i?"iOS":"Yes"!==o&&"Yes"!==n&&"Yes"===i?"Huawei":""}(j):"",$=document.getElementById("app-download-heading");$&&($.innerText=O);const B=document.querySelector(".redirection_background-wrapper"),D=document.getElementById("cancel-redirect"),P=document.getElementById("proceed-redirect");if(window.isEuRegion(window.location.pathname)&&B&&D&&P){const e=["deriv.me","deriv.be","deriv.com","app.deriv.me","app.deriv.be","app.deriv.com","docs.deriv.com","community.deriv.com","deriv.statuspage.io","signup.deriv.com","login.deriv.com","api.deriv.com"];let o="",n="_self";document.querySelectorAll("a").forEach((function(i){const t=new URL(i.href,window.location.href),a=new URL(window.location.href);e.includes(t.host)||t.host===a.host||i.addEventListener("click",(function(e){e.preventDefault(),o=t.href,n=i.target||"_self",B.classList.remove("hide-element"),document.body.style.overflow="hidden"}))})),D.addEventListener("click",(function(){B.classList.add("hide-element"),document.body.style.overflow="auto",o=""})),P.addEventListener("click",(function(){o&&(window.open(o,n),o="",B.classList.add("hide-element"),document.body.style.overflow="auto")}))}document.querySelector(".banner_disclaimer")?document.body.classList.add("disclaimer-visible"):document.body.classList.remove("disclaimer-visible");const W=document.querySelectorAll(".navbar_accordion-item");function R(){const e=document.querySelector(".navbar_accordion-trigger.open");e&&e.scrollIntoView({behavior:"smooth",block:"start"})}W.forEach((e=>{e.querySelector(".navbar_accordion-trigger").classList.remove("open");const o=e.querySelector(".navbar_accordion-content");o.classList.remove("open"),o.style.maxHeight="0px",o.style.overflow="hidden",o.style.transition="max-height 0.3s ease-in, opacity 0.3s ease-in",o.style.opacity="0"})),W.forEach((e=>{const o=e.querySelector(".navbar_accordion-trigger");o.addEventListener("click",(function(){const e=o.classList.contains("open");if(W.forEach((e=>{e.querySelector(".navbar_accordion-trigger").classList.remove("open");const o=e.querySelector(".navbar_accordion-content");o.classList.remove("open"),o.style.maxHeight="0px",o.style.opacity="0"})),!e){o.classList.add("open");const e=o.nextElementSibling;e.classList.add("open"),e.style.maxHeight=e.scrollHeight+"px",e.style.opacity="1"}}))}));document.querySelectorAll(".navbar_accordion-trigger").forEach((e=>{e.addEventListener("click",(function(){setTimeout(R,300)}))}));const U=new MutationObserver((e=>{e.forEach((e=>{if("class"===e.attributeName){const o=e.target;o.classList.contains("open")&&o.scrollIntoView({behavior:"smooth",block:"start"})}}))}));document.querySelectorAll(".navbar_accordion-item").forEach((e=>{U.observe(e,{attributes:!0})}));const J=new URL(window.location.href),T=new URLSearchParams(J.search),F=T.get("t");if(T.has("referrer")&&null!=F){m(document.cookie,"referrer_token")!==F&&(N("referrer_token"),h("referrer_token",F,365,".deriv.com"))}const H=document.getElementById("navbar-home_login");H&&H.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()}));const M=document.getElementById("res-navbar-home_login");M&&M.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()}));const V=document.getElementById("white-navbar_login");V&&V.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()}));const G=document.getElementById("res-white-navbar_login");G&&G.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()})),window.fallbackLoader="Migrated All + Removal of Webflow array functions";let K=document.querySelectorAll(".navbar_accordion-trigger");K.forEach((e=>{e.addEventListener("click",(function(){K.forEach((e=>e.classList.remove("current"))),this.classList.add("current")}))}));let Z=document.querySelector(".navbar_accordion-link.w--current");if(Z){let e=Z.closest(".navbar_accordion-item");if(e){let o=e.querySelector(".navbar_accordion-trigger");o&&o.classList.add("current")}}let Q=document.querySelector(".locale > .new-navbar_dropdown-link.w--current");if(Q){let e=Q.getAttribute("hreflang"),o=document.querySelectorAll(".current-locale-iso-code");if(e&&o.length)for(let n of o)n.innerText=e}function X(e,o,n){let i="";{let e=new Date;e.setTime(e.getTime()+24*n*60*60*1e3),i="; expires="+e.toUTCString()}document.cookie=e+"="+(o||"")+i+"; path=/"}let ee=document.querySelectorAll(".w-locales-items");if(ee.length>0){let e=function(e){let o=document.querySelector('a[hreflang="'+e+'"]');o&&window.location.pathname!==o.getAttribute("href")&&o.click()};ee.forEach((function(e){e.querySelectorAll("a").forEach((function(e){e.addEventListener("click",(function(o){o.preventDefault(),X("webflow-user-language",e.getAttribute("hreflang"),30),window.location.href=e.href}))}))})),window.setLanguageCookie=e=>{X("webflow-user-language",e,30)};let o=function(e){let o=document.cookie.split(";");for(let n=0;ni.includes(e))),o&&t&&e(o)}if(document.querySelector(".new-navbar_component")){let e=function(){document.body.classList.add("disable-scroll")},o=function(){document.body.classList.remove("disable-scroll")};const n=document.querySelector(".new-navbar_component");n.addEventListener("mouseenter",(()=>{window.innerWidth>991&&e()})),n.addEventListener("mouseleave",(()=>{window.innerWidth>991&&o()}))}window.getClientCountry();const oe=window.parseCookies(document.cookie,"webflow-user-language"),ne=["as","au","at","be","bg","ca","hr","cy","cz","dk","ee","fi","fr","gr","gu","gg","hk","hu","ir","ie","im","il","it","je","ng","mm","sy","kp","lv","lt","lu","my","mt","nl","nz","mp","py","pl","pt","pr","ro","rw","sk","si","es","se","ae","gb","us","um","vu","vi","ky","cu","de"];if(window.location.pathname.endsWith("p2p")&&!window.location.pathname.startsWith("/blog")){const e=window.getClientCountry();e&&ne.includes(e)&&("en"===oe?window.location.replace("/404"):window.location.replace(`/${oe}/404`))}if(void 0!==window.parseCookies(document.cookie,"client_information")){let e=function(e){e.forEach((e=>{e.href="https://app.deriv.com/appstore/traders-hub"}))},o=document.querySelectorAll("a.live-markets_button.is-secondary.is-small.is-purchase.w-button"),n=document.querySelectorAll("a.live-markets_button.is-secondary.is-small.is-sell.w-button");e(o),e(n)}document.getElementById("mobile-menu"),document.getElementById("live_chat-wrapper");const ie=()=>{window.LC_API&&window.LC_API.open_chat_window&&window.LC_API.open_chat_window()},te=()=>{"true"===new URLSearchParams(window.location.search).get("is_livechat_open")&&ie()},ae=e=>{var o;null==(o=null==window?void 0:window.LiveChatWidget)||o.on("ready",(()=>{window.LC_API.open_chat_window(),window.LC_API.hide_chat_window(),te();const o=window.parseCookies(document.cookie,"utm_data"),n=o?JSON.parse(o):{},{utm_source:i,utm_medium:t,utm_campaign:a}=n,r=window.parseCookies(document.cookie,"client_information"),d=new URLSearchParams(window.location.search),{loginid:c,email:s,landing_company_shortcode:l,currency:u,residence:p,first_name:w,last_name:h}=r?JSON.parse(r):{},m={is_logged_in:e,loginid:c??"",landing_company_shortcode:l??"",currency:u??"",residence:p??"",email:s??"",platform:d.get("platform")??"",utm_source:i??"",utm_medium:t??"",utm_campaign:a??""};window.LiveChatWidget.call("set_session_variables",m),e?(s&&window.LiveChatWidget.call("set_customer_email",s),w&&h&&window.LiveChatWidget.call("set_customer_name",`${w} ${h}`)):window.LC_API.on_chat_ended=()=>{window.LiveChatWidget.call("set_customer_email"," "),window.LiveChatWidget.call("set_customer_name"," ")},te(),window.LiveChatWidget.on("new_event",(e=>{e.greeting&&window.LC_API.open_chat_window()}))}))};let re=!1;const de=()=>{const e=!!window.parseCookies(document.cookie,"client_information");e!==re&&(ae(e),re=e)};de(),setInterval(de,2e3),(()=>{if(window.__lc=window.__lc||{},window.__lc.license="12049137",window.LC_API=window.LC_API||{loaded:!1},window.LC_API.loaded)te();else{const e=document.createElement("script");e.async=!0,e.src="https://cdn.livechatinc.com/tracking.js",e.onload=()=>{window.LC_API.loaded=!0,window.LC_API.on_after_load=function(){ae(!!window.parseCookies(document.cookie,"client_information")),te()},"undefined"!=typeof LiveChatWidget&&LiveChatWidget.init&&LiveChatWidget.init()},document.body.appendChild(e)}})();const ce=document.querySelectorAll(".livechatbtn");ce.length>0&&ce.forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),ie()}))}));const se=document.getElementById("liveChatBtn");se&&se.addEventListener("click",(e=>{e.preventDefault(),ie()}));document.querySelectorAll('a[rel="liveChatBtn"]').forEach((e=>{null==e||e.addEventListener("click",(e=>{e.preventDefault(),ie()}))}));let le=document.querySelector(".navbar_menu-button");le&&le.addEventListener("click",(function(){let e=window.innerHeight,o=document.querySelector(".new-navbar_main-wrapper");if(o){let n=e-o.offsetHeight,i=document.querySelector(".new-navbar_menu");i&&(i.style.height=`${n}px`)}}));let ue=document.querySelector(".lang-mob");ue&&ue.addEventListener("click",(function(){let e=document.querySelector(".new-navbar_menu-wrapper");e&&e.scrollBy({top:-3e3})}));class pe{constructor(e){this.cookieName=e}setItem(e){const o=new Date;o.setDate(o.getDate()+30);const n="expires="+o.toUTCString(),i=encodeURIComponent(JSON.stringify(e));document.cookie=`${this.cookieName}=${i};${n};path=/`}getItem(){const e=document.cookie.split(";");for(let o=0;ove.includes(e)))&&document.head.querySelectorAll("link").forEach((function(e){e.hasAttribute("hreflang")&&"x-default"!==e.getAttribute("hreflang")&&e.remove()}));const Ye=e=>{window.rudderanalytics?window.rudderanalytics.track(e.name,e.properties):(e=>{let o=[],n=parseCookies(document.cookie,"cached_analytics_events");n&&(o=JSON.parse(n)),o.push(e),document.cookie=`cached_analytics_events=${JSON.stringify(o)}; path=/; Domain=.deriv.com`})(e)};window.addClickListener=function(e,o,n){e&&e.addEventListener("click",(function(){Ye({name:o,properties:n})}))};var _e=null==document?void 0:document.getElementsByClassName("livechatbtn"),Ae=null==document?void 0:document.getElementsByClassName("whatsapp_chat"),be=null==document?void 0:document.getElementsByClassName("tradershub-btn"),ke=document.querySelectorAll(".btn-free-demo .w-button"),Le=document.querySelectorAll('.btn-free-demo [data-class="w-button"]');const Se=document.querySelectorAll('[data-attributes="btn-primary-nav"]'),Ee=document.querySelectorAll('[data-attributes="btn-secondary-nav"]');_e&&Array.from(_e).forEach((e=>{window.addClickListener(e,"ce_widget_usage_form",{action:"click",widget_name:"livechat"})})),Ae&&Array.from(Ae).forEach((e=>{window.addClickListener(e,"ce_widget_usage_form",{action:"click",widget_name:"whatsapp"})})),be&&Array.from(be).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Traders Hub"})})),ke&&Array.from(ke).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Try free demo"})})),Le&&Array.from(Le).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Try free demo"})})),Se&&Array.from(Se).forEach((e=>{e.classList.contains("tradershub-btn")||window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Try free demo"})})),Ee&&Array.from(Ee).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Login"})}));var Ce,qe,Ie;"deriv.com"===window.location.hostname||"deriv.be"===window.location.hostname||"deriv.me"===window.location.hostname?(Ce="sdk-UhZV3cNEg5nLNLNS",Ie="nre64BV0dNIa44zW4tz5ow==",qe="1oV5agvlcnCZ6IH94wCKM1oR8Pd"):(Ce="sdk-9wuqJ1mlcQsSyZQ",Ie="",qe="1lN3tsFD2nruGFgM5F074DC2hMB");const ze=(Ne=window.parseCookies(document.cookie,"client_information"))?JSON.parse(Ne):null,xe=window.parseCookies(document.cookie,"utm_data"),je=xe?JSON.parse(xe):{},Oe=window.parseCookies(document.cookie,"signup_device");let $e=null;Oe&&($e=(null==(e=JSON.parse(Oe))?void 0:e.signup_device)||null);const Be={growthbookKey:Ce,growthbookDecryptionKey:Ie,rudderstackKey:qe,growthbookOptions:{navigate:e=>window.location.replace(e),antiFlicker:!1,navigateDelay:0,attributes:{country:window.parseCookies(document.cookie,"clients_country")||window.parseCookies(document.cookie,"website_status"),user_language:window.parseCookies(document.cookie,"user_language")||("undefined"!=typeof window?localStorage.getItem("i18n")||navigator.language:null),device_language:window.parseCookies(document.cookie,"language")||" ",device_type:$e,utm_source:null==je?void 0:je.utm_source,utm_medium:null==je?void 0:je.utm_medium,utm_campaign:null==je?void 0:je.utm_campaign,is_authorised:!!window.parseCookies(document.cookie,"client_information"),loggedIn:!!window.parseCookies(document.cookie,"client_information"),url:window.location.href}}};try{null==Analytics||Analytics.Analytics.initialise(Be);const e=(null==ze?void 0:ze.user_id)?null==ze?void 0:ze.user_id:null==(i=null==(n=null==(o=null==Analytics?void 0:Analytics.Analytics)?void 0:o.getInstances)?void 0:n.call(o).tracking)?void 0:i.getAnonymousId();null==(t=null==Analytics?void 0:Analytics.Analytics)||t.identifyEvent(e)}catch(Pe){}null==(a=null==Analytics?void 0:Analytics.Analytics)||a.pageView(location.pathname,"Deriv.com"),window.useGrowthbookFeatureFlag=function({featureFlag:e}){var o,n,i,t,a;let r=null==(o=null==Analytics?void 0:Analytics.Analytics)?void 0:o.getFeatureValue(e);return null==(a=null==(t=null==(i=null==(n=null==Analytics?void 0:Analytics.Analytics)?void 0:n.getInstances())?void 0:i.ab)?void 0:t.GrowthBook)||a.setRenderer((function(){var o;const n=null==(o=null==Analytics?void 0:Analytics.Analytics)?void 0:o.getFeatureValue(e);r=n})),r};const De=window.parseCookies(document.cookie,"client_information")?JSON.parse(window.parseCookies(document.cookie,"client_information")):null;(null==De?void 0:De.loginid)&&(null==window||window.hj("identify",De.loginid,{is_logged_in:!!window.parseCookies(document.cookie,"client_information"),landing_company_shortcode:De.landing_company_shortcode||"null"}));null==(s=null==(c=null==(d=null==(r=null==Analytics?void 0:Analytics.Analytics)?void 0:r.getInstances())?void 0:d.ab)?void 0:c.GrowthBook)||s.loadFeatures().then((()=>{window.location.href.indexOf("/partners")>-1==!1&&(()=>{var e;const o=(null==(e=null==Analytics?void 0:Analytics.Analytics)?void 0:e.getFeatureValue("trigger_os_signup_wf"))?function(){const e=navigator.userAgent.toLowerCase();return/ipad|iphone|ipod/.test(e)}()||function(){const e=navigator.userAgent.toLowerCase();return/safari/.test(e)&&!/chrome/.test(e)&&!/crios/.test(e)}()?`https://${window.location.host}/signup`:(()=>{const e=window.location.hostname;let o;switch(o="deriv.com"===e||"deriv.be"===e||"deriv.me"===e?"production":"staging.deriv.com"===e?"staging":"development",o){case"production":return"https://hub.deriv.com/tradershub/signup";case"staging":return"https://staging-hub.deriv.com/tradershub/signup";default:return"https://dev-hub.deriv.com/tradershub/signup"}})():`https://${window.location.host}/signup`,n=document.getElementById("cta-home-btn-navbar");n&&(n.href=o);const i=document.querySelectorAll(".logged-out-btn");null==i||i.forEach((e=>{var n;(null==(n=null==e?void 0:e.href)?void 0:n.indexOf("/signup"))>0&&(e.href=o)}));const t=document.querySelectorAll(".logged-out-btn a");null==t||t.forEach((e=>{var n;(null==(n=null==e?void 0:e.href)?void 0:n.indexOf("/signup"))>0&&(e.href=o)}))})()})); diff --git a/src/js/footer/cookies/index.js b/src/js/footer/cookies/index.js index 9a75518..cb9a065 100644 --- a/src/js/footer/cookies/index.js +++ b/src/js/footer/cookies/index.js @@ -1,33 +1,38 @@ -export function setCookie(name, value, days) { - let expires = ""; - if (days) { - let date = new Date(); - date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); - expires = "; expires=" + date.toUTCString(); - } - document.cookie = name + "=" + (value || "") + expires + "; path=/"; +export function setCookie(name, value, days, domain) { + let expires = ""; + if (days) { + let date = new Date(); + date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); + expires = "; expires=" + date.toUTCString(); + } + if (domain) { + document.cookie = + name + "=" + (value || "") + expires + `;domain=${domain}` + `;path=/`; + } else { + document.cookie = name + "=" + (value || "") + expires + ";path=/"; + } } export function getCookie(name) { - let cookies = document.cookie.split(';'); - for (let i = 0; i < cookies.length; i++) { - let cookie = cookies[i].trim(); - if (cookie.startsWith(name + '=')) { - return cookie.substring(name.length + 1); - } + let cookies = document.cookie.split(";"); + for (let i = 0; i < cookies.length; i++) { + let cookie = cookies[i].trim(); + if (cookie.startsWith(name + "=")) { + return cookie.substring(name.length + 1); } - return null; + } + return null; } export function getCookieByKey(cookieString, key) { - const cookies = {}; - cookieString.split(';').forEach(cookie => { - const [key, val] = cookie.split('=').map(c => c.trim()); - cookies[key] = decodeURIComponent(val); - }); - return cookies[key]; - }; + const cookies = {}; + cookieString.split(";").forEach((cookie) => { + const [key, val] = cookie.split("=").map((c) => c.trim()); + cookies[key] = decodeURIComponent(val); + }); + return cookies[key]; +} export function setLanguageCookie(language) { - setCookie('webflow-user-language', language, 30); + setCookie("webflow-user-language", language, 30); } export function deleteCookie(name) { - document.cookie = name + '=; Max-Age=-99999999;'; -} \ No newline at end of file + document.cookie = name + "=; Max-Age=-99999999;"; +} diff --git a/src/js/footer/disclaimerAddClassname/index.js b/src/js/footer/disclaimerAddClassname/index.js index 4be9ac3..2b1ad40 100644 --- a/src/js/footer/disclaimerAddClassname/index.js +++ b/src/js/footer/disclaimerAddClassname/index.js @@ -1,9 +1,7 @@ -document.addEventListener("DOMContentLoaded", function () { - var hasBannerDisclaimer = document.querySelector(".banner_disclaimer"); +var hasBannerDisclaimer = document.querySelector(".banner_disclaimer"); - if (hasBannerDisclaimer) { - document.body.classList.add("disclaimer-visible"); - } else { - document.body.classList.remove("disclaimer-visible"); - } -}); +if (hasBannerDisclaimer) { + document.body.classList.add("disclaimer-visible"); +} else { + document.body.classList.remove("disclaimer-visible"); +} diff --git a/src/js/footer/dynamicCtaLabels/index.js b/src/js/footer/dynamicCtaLabels/index.js index c4ba47b..3ccc017 100644 --- a/src/js/footer/dynamicCtaLabels/index.js +++ b/src/js/footer/dynamicCtaLabels/index.js @@ -33,40 +33,39 @@ function useAuthCheck() { document.addEventListener("authStatusChange", callback), }; } -document.addEventListener("DOMContentLoaded", () => { - const authChecker = useAuthCheck(); - // Listen for authentication status changes - authChecker.onAuthStatusChange(() => { - if (authChecker.getAuthCheckedStatus() && authChecker.getLoggedInStatus()) { - const elements_logged_in = document.querySelectorAll(".logged-in-btn"); +const authChecker = useAuthCheck(); - elements_logged_in.forEach((elements_logged_in) => { - elements_logged_in.classList.remove("hide-element"); - }); +// Listen for authentication status changes +authChecker.onAuthStatusChange(() => { + if (authChecker.getAuthCheckedStatus() && authChecker.getLoggedInStatus()) { + const elements_logged_in = document.querySelectorAll(".logged-in-btn"); - const elements_logged_out = document.querySelectorAll(".logged-out-btn"); + elements_logged_in.forEach((elements_logged_in) => { + elements_logged_in.classList.remove("hide-element"); + }); - elements_logged_out.forEach((elements_logged_out) => { - elements_logged_out.classList.add("hide-element"); - }); - } else if ( - authChecker.getAuthCheckedStatus() && - !authChecker.getLoggedInStatus() - ) { - const elements_logged_out = document.querySelectorAll(".logged-out-btn"); + const elements_logged_out = document.querySelectorAll(".logged-out-btn"); - elements_logged_out.forEach((elements_logged_out) => { - elements_logged_out.classList.remove("hide-element"); - }); + elements_logged_out.forEach((elements_logged_out) => { + elements_logged_out.classList.add("hide-element"); + }); + } else if ( + authChecker.getAuthCheckedStatus() && + !authChecker.getLoggedInStatus() + ) { + const elements_logged_out = document.querySelectorAll(".logged-out-btn"); - const elements_logged_in = document.querySelectorAll(".logged-in-btn"); + elements_logged_out.forEach((elements_logged_out) => { + elements_logged_out.classList.remove("hide-element"); + }); - elements_logged_in.forEach((elements_logged_in) => { - elements_logged_in.classList.add("hide-element"); - }); - } - }); + const elements_logged_in = document.querySelectorAll(".logged-in-btn"); + + elements_logged_in.forEach((elements_logged_in) => { + elements_logged_in.classList.add("hide-element"); + }); + } }); //----- end of auth check ----- diff --git a/src/js/footer/helper/index.js b/src/js/footer/helper/index.js index 5013df7..9500b4a 100644 --- a/src/js/footer/helper/index.js +++ b/src/js/footer/helper/index.js @@ -191,3 +191,39 @@ export const loginUrl = () => { } return `${window.getOauthUrl()}/oauth2/authorize?app_id=${getDomainAppID()}&l=${language}&brand=deriv${affiliate_token_link}${cookies_link}&platform=${sub_url}`; }; + +const handleOutSystemsRedirection = () => { + const currentDomain = window.location.hostname; + let env; + if ( + currentDomain === "deriv.com" || + currentDomain === "deriv.be" || + currentDomain === "deriv.me" + ) { + env = "production"; + } else if (currentDomain === "staging.deriv.com") { + env = "staging"; + } else { + env = "development"; + } + switch (env) { + case "production": + return "https://hub.deriv.com/tradershub/hub"; + case "staging": + return "https://hub.deriv.com/tradershub/hub"; + default: + return "https://hub.deriv.com/tradershub/hub"; + } +}; + +const isUserLoggedIn = !!getCookieByKey(document.cookie, "client_information"); +if (!isUserLoggedIn) { + var iframe = document.createElement("iframe"); + iframe.src = handleOutSystemsRedirection(); + iframe.style.width = "0"; + iframe.style.height = "0"; + iframe.style.border = "none"; + iframe.style.visibility = "hidden"; + iframe.setAttribute("sandbox", "allow-same-origin allow-scripts"); + document.body.appendChild(iframe); +} diff --git a/src/js/footer/hide-deriv-go/index.js b/src/js/footer/hide-deriv-go/index.js index 90447d5..c74faea 100644 --- a/src/js/footer/hide-deriv-go/index.js +++ b/src/js/footer/hide-deriv-go/index.js @@ -5,19 +5,17 @@ function hide_platform(selector) { }); } -document.addEventListener("DOMContentLoaded", () => { - const deriv_go_hide_pages = ["help-centre"]; - const url = window.location.href; +const deriv_go_hide_pages = ["help-centre"]; +const url = window.location.href; - // Check if the current URL matches any item in the deriv_go_hide_pages array - const isHideDerivGo = deriv_go_hide_pages.some((page) => url.includes(page)); +// Check if the current URL matches any item in the deriv_go_hide_pages array +const isHideDerivGo = deriv_go_hide_pages.some((page) => url.includes(page)); - if (isHideDerivGo) { - const url_obj = new URL(url); - const params = url_obj.searchParams; +if (isHideDerivGo) { + const url_obj = new URL(url); + const params = url_obj.searchParams; - if (params.has("platform") && params.get("platform") === "derivgo") { - hide_platform(".derivgo-query-element"); - } + if (params.has("platform") && params.get("platform") === "derivgo") { + hide_platform(".derivgo-query-element"); } -}); +} diff --git a/src/js/footer/index.js b/src/js/footer/index.js index 25b2573..b936647 100644 --- a/src/js/footer/index.js +++ b/src/js/footer/index.js @@ -16,3 +16,4 @@ import "./disclaimerAddClassname"; import "./mobileMenuAccordian"; import "./partnerAffiliate"; import "./loginFunctions"; +import "./migration.js" \ No newline at end of file diff --git a/src/js/footer/migration.js b/src/js/footer/migration.js new file mode 100644 index 0000000..d087f33 --- /dev/null +++ b/src/js/footer/migration.js @@ -0,0 +1,903 @@ +window.fallbackLoader = "Migrated All + Removal of Webflow array functions"; + +// +// This function adds a red line to the current accordion trigger + +// Find all accordion triggers +let triggers = document.querySelectorAll(".navbar_accordion-trigger"); + +triggers.forEach((trigger) => { + trigger.addEventListener("click", function () { + // Remove the .current class from all triggers + triggers.forEach((t) => t.classList.remove("current")); + + // Add the .current class to the clicked trigger + this.classList.add("current"); + }); +}); + +// Find the current page link in Navbar +let currentLink = document.querySelector(".navbar_accordion-link.w--current"); + +if (currentLink) { + // Find the closest accordion item + let accordionItem = currentLink.closest(".navbar_accordion-item"); + + if (accordionItem) { + // Find the trigger element within the found parent + let trigger = accordionItem.querySelector(".navbar_accordion-trigger"); + + if (trigger) { + // Add the .current class to the trigger + trigger.classList.add("current"); + } + } +} + +// + +// + +let currentLocaleElement = document.querySelector( + ".locale > .new-navbar_dropdown-link.w--current" +); + +if (currentLocaleElement) { + let currentLocaleIsoCode = currentLocaleElement.getAttribute("hreflang"); + + let currentLocaleIsoCodeTexts = document.querySelectorAll( + ".current-locale-iso-code" + ); + + if (currentLocaleIsoCode && currentLocaleIsoCodeTexts.length) { + for (let currentLocaleIsoCodeText of currentLocaleIsoCodeTexts) { + currentLocaleIsoCodeText.innerText = currentLocaleIsoCode; + } + } +} + +// + +// Function for setting cookies when changing language and redirecting to the current language page + +function setCookie(name, value, days) { + let expires = ""; + if (days) { + let date = new Date(); + date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); + expires = "; expires=" + date.toUTCString(); + } + document.cookie = name + "=" + (value || "") + expires + "; path=/"; +} + +function getCookie(name) { + let cookies = document.cookie.split(";"); + for (let i = 0; i < cookies.length; i++) { + let cookie = cookies[i].trim(); + if (cookie.startsWith(name + "=")) { + return cookie.substring(name.length + 1); + } + } + return null; +} + +let localeItems = document.querySelectorAll(".w-locales-items"); + +if (localeItems.length > 0) { + localeItems.forEach(function (item) { + let links = item.querySelectorAll("a"); + links.forEach(function (link) { + link.addEventListener("click", function (event) { + event.preventDefault(); + let language = link.getAttribute("hreflang"); + setCookie("webflow-user-language", language, 30); + window.location.href = link.href; + }); + }); + }); + + function clickLinkWithLanguage(language) { + let link = document.querySelector('a[hreflang="' + language + '"]'); + if (link && window.location.pathname !== link.getAttribute("href")) { + link.click(); + } + } + window.setLanguageCookie = (language) => { + setCookie("webflow-user-language", language, 30); + }; + + let languageCookie = getCookie("webflow-user-language"); + let targetPaths = [ + "/careers", + "/locations", + "/derivtech", + "/derivlife", + "/eu-careers", + "/our-locations", + ]; + let path = window.location.pathname; + let targetPathUrl = false; + + // Check if the current path matches any of the target paths + if (targetPaths.some((targetPath) => path.includes(targetPath))) { + targetPathUrl === true; + } + if (languageCookie && targetPathUrl) { + clickLinkWithLanguage(languageCookie); + } +} + +if (document.querySelector(".new-navbar_component")) { + // Find the .new-navbar_component element + const navbarComponent = document.querySelector(".new-navbar_component"); + + // Add event listeners for hover + navbarComponent.addEventListener("mouseenter", () => { + if (window.innerWidth > 991) { + disableScroll(); + } + }); + navbarComponent.addEventListener("mouseleave", () => { + if (window.innerWidth > 991) { + enableScroll(); + } + }); + + // Function to disable scroll + function disableScroll() { + document.body.classList.add("disable-scroll"); + } + + // Function to enable scroll + function enableScroll() { + document.body.classList.remove("disable-scroll"); + } +} + +const clientsCountry = window.getClientCountry(); + +const getDateFirstContact = () => { + const dateFirstContactString = window.parseCookies( + document.cookie, + "date_first_contact" + ); + if (dateFirstContactString) { + const parsedData = JSON.parse(dateFirstContactString); + return parsedData.date_first_contact + ? { date_first_contact: parsedData.date_first_contact } + : null; + } + return null; +}; + +const getSignupDevice = () => { + const signupDeviceString = window.parseCookies( + document.cookie, + "signup_device" + ); + if (signupDeviceString) { + const parsedData = JSON.parse(signupDeviceString); + return parsedData.signup_device + ? { signup_device: parsedData.signup_device } + : null; + } + return null; +}; + +const lang = window.parseCookies(document.cookie, "webflow-user-language"); + +const countriesToRedirect = [ + "as", + "au", + "at", + "be", + "bg", + "ca", + "hr", + "cy", + "cz", + "dk", + "ee", + "fi", + "fr", + "gr", + "gu", + "gg", + "hk", + "hu", + "ir", + "ie", + "im", + "il", + "it", + "je", + "ng", + "mm", + "sy", + "kp", + "lv", + "lt", + "lu", + "my", + "mt", + "nl", + "nz", + "mp", + "py", + "pl", + "pt", + "pr", + "ro", + "rw", + "sk", + "si", + "es", + "se", + "ae", + "gb", + "us", + "um", + "vu", + "vi", + "ky", + "cu", + "de", +]; + +if ( + window.location.pathname.endsWith("p2p") && + !window.location.pathname.startsWith("/blog") +) { + const clientsCountry = window.getClientCountry(); + if (clientsCountry && countriesToRedirect.includes(clientsCountry)) { + if (lang === "en") { + window.location.replace("/404"); + } else { + window.location.replace(`/${lang}/404`); + } + } +} + +if (window.parseCookies(document.cookie, "client_information") !== undefined) { + let purchaseButtons = document.querySelectorAll( + "a.live-markets_button.is-secondary.is-small.is-purchase.w-button" + ); + + let sellButtons = document.querySelectorAll( + "a.live-markets_button.is-secondary.is-small.is-sell.w-button" + ); + + function updateHref(buttons) { + buttons.forEach((button) => { + button.href = "https://app.deriv.com/appstore/traders-hub"; + }); + } + + updateHref(purchaseButtons); + updateHref(sellButtons); +} + +//live chat button hide on menu appear +const mobileMenu = document.getElementById("mobile-menu"); +const liveChatWrapper = document.getElementById("live_chat-wrapper"); + +let isLiveChatVisible = true; +let isLiveChatActivated = false; + +function fadeIn(element) { + var opacity = 0; + var timer = setInterval(function () { + if (opacity >= 1) { + clearInterval(timer); + } + element.style.opacity = opacity; + opacity += 0.1; + }, 30); +} + +function fadeOut(element) { + var opacity = 1; + var timer = setInterval(function () { + if (opacity <= 0) { + clearInterval(timer); + element.style.display = "none"; + } + element.style.opacity = opacity; + opacity -= 0.1; + }, 30); +} + +// + +const licenceKey = "12049137"; +const loadLiveChatScript = () => { + window.__lc = window.__lc || {}; + window.__lc.license = licenceKey; + window.LC_API = window.LC_API || { loaded: false }; + if (!window.LC_API.loaded) { + const lcScript = document.createElement("script"); + lcScript.async = true; + lcScript.src = "https://cdn.livechatinc.com/tracking.js"; + lcScript.onload = () => { + window.LC_API.loaded = true; // Mark as loaded + window.LC_API.on_after_load = function () { + performLiveChatAction( + !!window.parseCookies(document.cookie, "client_information") + ); + checkUrlForLiveChat(); + }; + if (typeof LiveChatWidget !== "undefined" && LiveChatWidget.init) { + LiveChatWidget.init(); + } + }; + document.body.appendChild(lcScript); + } else { + checkUrlForLiveChat(); + } +}; +const openLiveChat = () => { + if (window.LC_API && window.LC_API.open_chat_window) { + window.LC_API.open_chat_window(); + } +}; +const checkUrlForLiveChat = () => { + const urlParams = new URLSearchParams(window.location.search); + if (urlParams.get("is_livechat_open") === "true") { + openLiveChat(); + } +}; + +//dashboard send data +const performLiveChatAction = (is_logged_in) => { + window?.LiveChatWidget?.on("ready", () => { + // we open and close the window to trigger the widget to listen for new events + window.LC_API.open_chat_window(); + window.LC_API.hide_chat_window(); + checkUrlForLiveChat(); + + const utm_data_string = window.parseCookies(document.cookie, "utm_data"); + const utm_data = utm_data_string ? JSON.parse(utm_data_string) : {}; + const { utm_source, utm_medium, utm_campaign } = utm_data; + + const client_information = window.parseCookies( + document.cookie, + "client_information" + ); + const url_params = new URLSearchParams(window.location.search); + + const { + loginid, + email, + landing_company_shortcode, + currency, + residence, + first_name, + last_name, + } = client_information ? JSON.parse(client_information) : {}; + + /* the session variables are sent to CS team dashboard to notify user has logged in + and also acts as custom variables to trigger targeted engagement */ + const session_variables = { + is_logged_in: is_logged_in, + loginid: loginid ?? "", + landing_company_shortcode: landing_company_shortcode ?? "", + currency: currency ?? "", + residence: residence ?? "", + email: email ?? "", + platform: url_params.get("platform") ?? "", + utm_source: utm_source ?? "", + utm_medium: utm_medium ?? "", + utm_campaign: utm_campaign ?? "", + }; + + window.LiveChatWidget.call("set_session_variables", session_variables); + + if (is_logged_in) { + if (email) { + window.LiveChatWidget.call("set_customer_email", email); + } + if (first_name && last_name) { + window.LiveChatWidget.call( + "set_customer_name", + `${first_name} ${last_name}` + ); + } + } else { + // clear name and email fields after chat has ended + window.LC_API.on_chat_ended = () => { + window.LiveChatWidget.call("set_customer_email", " "); + window.LiveChatWidget.call("set_customer_name", " "); + }; + } + checkUrlForLiveChat(); + + // open chat widget when there is an incoming greeting/announcement + window.LiveChatWidget.on("new_event", (event) => { + if (event.greeting) { + window.LC_API.open_chat_window(); + } + }); + }); +}; +let is_logged_in = false; +let checkCookieInterval; + +const isLoggedIn = () => { + return !!window.parseCookies(document.cookie, "client_information"); +}; + +const checkLoggedIn = () => { + const new_login_status = isLoggedIn(); + if (new_login_status !== is_logged_in) { + performLiveChatAction(new_login_status); + is_logged_in = new_login_status; + } +}; + +// Perform initial authentication check +checkLoggedIn(); + +// Set interval to periodically check authentication status +checkCookieInterval = setInterval(checkLoggedIn, 2000); +//end of dashboard send data + +loadLiveChatScript(); +const liveChatIcons = document.querySelectorAll(".livechatbtn"); +if (liveChatIcons.length > 0) { + liveChatIcons.forEach((liveChatIcon) => { + liveChatIcon.addEventListener("click", (event) => { + event.preventDefault(); + openLiveChat(); + }); + }); +} +const liveChatIconById = document.getElementById("liveChatBtn"); +if (liveChatIconById) { + liveChatIconById.addEventListener("click", (event) => { + event.preventDefault(); + openLiveChat(); + }); +} +const liveChatIconsByrel = document.querySelectorAll('a[rel="liveChatBtn"]'); +liveChatIconsByrel.forEach((liveChatIcon) => { + liveChatIcon?.addEventListener("click", (event) => { + event.preventDefault(); + openLiveChat(); + }); +}); + +// + +// + +let navbarMenuBtn = document.querySelector(".navbar_menu-button"); + +if (navbarMenuBtn) { + navbarMenuBtn.addEventListener("click", function () { + let windowHeight = window.innerHeight; + + let navbarWrapper = document.querySelector(".new-navbar_main-wrapper"); + + if (navbarWrapper) { + let navbarHeight = navbarWrapper.offsetHeight; + + let calculatedHeight = windowHeight - navbarHeight; + + let navbarMenu = document.querySelector(".new-navbar_menu"); + if (navbarMenu) { + navbarMenu.style.height = `${calculatedHeight}px`; + } + } + }); +} + + +// + +// +// this code ensures opening a list of languages on mobile starting from the top + + let langMobButton = document.querySelector(".lang-mob"); + + if (langMobButton) { + langMobButton.addEventListener("click", function () { + let mobileMenuWrapper = document.querySelector( + ".new-navbar_menu-wrapper" + ); + + if (mobileMenuWrapper) { + mobileMenuWrapper.scrollBy({ top: -3000 }); + } + }); + } + + +// + +// +class CookieStorage { + constructor(cookieName) { + this.cookieName = cookieName; + } + + setItem(value) { + const expiryDate = new Date(); + expiryDate.setDate(expiryDate.getDate() + 30); // 30 days from now + const expires = "expires=" + expiryDate.toUTCString(); + const cookieValue = encodeURIComponent(JSON.stringify(value)); + document.cookie = `${this.cookieName}=${cookieValue};${expires};path=/`; + } + getItem() { + const cookies = document.cookie.split(";"); + for (let i = 0; i < cookies.length; i++) { + let cookie = cookies[i].trim(); + if (cookie.startsWith(`${this.cookieName}=`)) { + let cookieValue = cookie.substring(`${this.cookieName}=`.length); + return JSON.parse(decodeURIComponent(cookieValue)); + } + } + return null; + } +} + +const tracking_status_cookie = new CookieStorage("tracking_status"); +const tracking_status_cookie_declined = new CookieStorage( + "tracking_status_decline" +); + +const popupElement = document.querySelector(".cookies_background-wrapper"); + +//set datalayer details +const has_dataLayer = window.dataLayer; +var client_information = window.parseCookies( + document.cookie, + "client_information" +); + +is_logged_in = !!client_information; +has_dataLayer && + window.dataLayer.push({ + loggedIn: is_logged_in, + language: + window.parseCookies(document.cookie, "webflow-user-language") || "en", + ...(is_logged_in && { + visitorId: client_information?.loginid, + currency: client_information?.currency, + email: client_information?.email, + }), + }); + +// Check if pathname contains "eu" and tracking_status_cookie is null + +if ( + window.location.pathname.includes("eu") && + !tracking_status_cookie.getItem() && + !tracking_status_cookie_declined.getItem() +) { + popupElement.classList.remove("hide-element"); + document.body.classList.add("show-cookie"); +} + +// Select the accept and decline buttons +const acceptButton = document.getElementById("accept-cookie"); +const declineButton = document.getElementById("dont-accept-cookie"); + +acceptButton?.addEventListener("click", function () { + tracking_status_cookie.setItem(true); + popupElement.classList.add("hide-element"); + document.body.classList.remove("show-cookie"); +}); + +declineButton?.addEventListener("click", function () { + tracking_status_cookie_declined.setItem(true); + tracking_status_cookie.setItem(false); + popupElement.classList.add("hide-element"); + document.body.classList.remove("show-cookie"); +}); + +// +var targetPaths = [ + "/careers", + "/locations", + "/derivtech", + "/derivlife", + "/eu-careers", + "/our-locations", +]; +var path = window.location.pathname; +if (targetPaths.some((targetPath) => path.includes(targetPath))) { + var headTag = document.head; + var linkElements = headTag.querySelectorAll("link"); + linkElements.forEach(function (linkElement) { + if (linkElement.hasAttribute("hreflang")) { + if (linkElement.getAttribute("hreflang") !== "x-default") { + linkElement.remove(); + } + } + }); +} +// + +// + +const setEvent = (event) => { + let storedEvents = []; + let cacheCookie = parseCookies(document.cookie, "cached_analytics_events"); + if (cacheCookie) storedEvents = JSON.parse(cacheCookie); + + storedEvents.push(event); + document.cookie = `cached_analytics_events=${JSON.stringify( + storedEvents + )}; path=/; Domain=.deriv.com`; +}; + +const trackEventWithCache = (event) => { + if (window.rudderanalytics) { + window.rudderanalytics.track(event.name, event.properties); + } else { + setEvent(event); + } +}; + +window.addClickListener = function (button, eventName, eventProperties) { + if (button) { + button.addEventListener("click", function () { + trackEventWithCache({ + name: eventName, + properties: eventProperties, + }); + }); + } +}; + +var btnLiveChat = document?.getElementsByClassName("livechatbtn"); +var btnWhatsapp = document?.getElementsByClassName("whatsapp_chat"); +var btnTradershub = document?.getElementsByClassName("tradershub-btn"); +var btnTryFreeDemo = document.querySelectorAll(".btn-free-demo .w-button"); +var btnTryFreeDemoFooter = document.querySelectorAll( + '.btn-free-demo [data-class="w-button"]' +); + +const btnNavbarPrimary = document.querySelectorAll( + '[data-attributes="btn-primary-nav"]' +); +const btnLoginNavbar = document.querySelectorAll( + '[data-attributes="btn-secondary-nav"]' +); + +if (btnLiveChat) { + Array.from(btnLiveChat).forEach((button) => { + window.addClickListener(button, "ce_widget_usage_form", { + action: "click", + widget_name: "livechat", + }); + }); +} +if (btnWhatsapp) { + Array.from(btnWhatsapp).forEach((button) => { + window.addClickListener(button, "ce_widget_usage_form", { + action: "click", + widget_name: "whatsapp", + }); + }); +} +if (btnTradershub) { + Array.from(btnTradershub).forEach((button) => { + window.addClickListener(button, "ce_cta_clicks", { + action: "click", + cta_name: "Traders Hub", + }); + }); +} +if (btnTryFreeDemo) { + Array.from(btnTryFreeDemo).forEach((button) => { + window.addClickListener(button, "ce_cta_clicks", { + action: "click", + cta_name: "Try free demo", + }); + }); +} +if (btnTryFreeDemoFooter) { + Array.from(btnTryFreeDemoFooter).forEach((button) => { + window.addClickListener(button, "ce_cta_clicks", { + action: "click", + cta_name: "Try free demo", + }); + }); +} + +if (btnNavbarPrimary) { + Array.from(btnNavbarPrimary).forEach((button) => { + if (!button.classList.contains("tradershub-btn")) { + window.addClickListener(button, "ce_cta_clicks", { + action: "click", + cta_name: "Try free demo", + }); + } + }); +} + +if (btnLoginNavbar) { + Array.from(btnLoginNavbar).forEach((button) => { + window.addClickListener(button, "ce_cta_clicks", { + action: "click", + cta_name: "Login", + }); + }); +} + +const RUDDERSTACK_STAGING_KEY = "1lN3tsFD2nruGFgM5F074DC2hMB"; +const RUDDERSTACK_PRODUCTION_KEY = "1oV5agvlcnCZ6IH94wCKM1oR8Pd"; +const GB_STAGING_CLIENT_KEY = "sdk-9wuqJ1mlcQsSyZQ"; +const GB_STAGING_DECRYPTION_KEY = ""; +const GB_PROD_CLIENT_KEY = "sdk-UhZV3cNEg5nLNLNS"; +const GB_PROD_DECRYPTION_KEY = "nre64BV0dNIa44zW4tz5ow=="; +var GB_CLIENT_KEY, RUDDERSTACK_KEY, GB_DECRYPTION_KEY; +if ( + window.location.hostname === "deriv.com" || + window.location.hostname === "deriv.be" || + window.location.hostname === "deriv.me" +) { + GB_CLIENT_KEY = GB_PROD_CLIENT_KEY; + GB_DECRYPTION_KEY = GB_PROD_DECRYPTION_KEY; + RUDDERSTACK_KEY = RUDDERSTACK_PRODUCTION_KEY; +} else { + GB_CLIENT_KEY = GB_STAGING_CLIENT_KEY; + GB_DECRYPTION_KEY = GB_STAGING_DECRYPTION_KEY; + RUDDERSTACK_KEY = RUDDERSTACK_STAGING_KEY; +} +client_information = window.parseCookies(document.cookie, "client_information"); +const clientInfo = client_information ? JSON.parse(client_information) : null; +const utm_data_string = window.parseCookies(document.cookie, "utm_data"); +const utm_data = utm_data_string ? JSON.parse(utm_data_string) : {}; +const { utm_source, utm_medium, utm_campaign } = utm_data; +const cookies = window.parseCookies(document.cookie, "signup_device"); +let signupDevice = null; +const isBrowser = () => typeof window !== "undefined"; +const getLanguage = () => + isBrowser() ? localStorage.getItem("i18n") || navigator.language : null; +if (cookies) { + signupDevice = JSON.parse(cookies)?.signup_device || null; +} +const initialiseConfig = { + growthbookKey: GB_CLIENT_KEY, + growthbookDecryptionKey: GB_DECRYPTION_KEY, + rudderstackKey: RUDDERSTACK_KEY, + growthbookOptions: { + navigate: (url) => window.location.replace(url), + antiFlicker: false, + navigateDelay: 0, + attributes: { + country: + window.parseCookies(document.cookie, "clients_country") || + window.parseCookies(document.cookie, "website_status"), + user_language: + window.parseCookies(document.cookie, "user_language") || getLanguage(), + device_language: window.parseCookies(document.cookie, "language") || " ", + device_type: signupDevice, + utm_source: utm_data?.["utm_source"], + utm_medium: utm_data?.["utm_medium"], + utm_campaign: utm_data?.["utm_campaign"], + is_authorised: !!window.parseCookies( + document.cookie, + "client_information" + ), + loggedIn: !!window.parseCookies(document.cookie, "client_information"), + url: window.location.href, + }, + }, +}; +try { + Analytics?.Analytics.initialise(initialiseConfig); + // Analytics?.Analytics?.getInstances()?.ab?.GrowthBook?.loadFeatures(); + const userId = clientInfo?.user_id + ? clientInfo?.user_id + : Analytics?.Analytics?.getInstances?.().tracking?.getAnonymousId(); + Analytics?.Analytics?.identifyEvent(userId); +} catch (error) { + console.error("Error during initialisation:", error); +} +// Analytics?.Analytics?.getInstances()?.ab?.GrowthBook?.loadFeatures(); +Analytics?.Analytics?.pageView(location.pathname, "Deriv.com"); +// Analytics?.Analytics?.getInstances()?.ab?.GrowthBook?.setURL(window.location.href) +window.useGrowthbookFeatureFlag = function ({ featureFlag }) { + let featureFlagValue = Analytics?.Analytics?.getFeatureValue(featureFlag); + function updateFeatureFlagValue() { + const value = Analytics?.Analytics?.getFeatureValue(featureFlag); + featureFlagValue = value; + } + Analytics?.Analytics?.getInstances()?.ab?.GrowthBook?.setRenderer( + updateFeatureFlagValue + ); + return featureFlagValue; +}; + +// + +// Parse the cookies to get the 'client_information' cookie value +const cookieValue = window.parseCookies(document.cookie, "client_information") + ? JSON.parse(window.parseCookies(document.cookie, "client_information")) + : null; + +// Hotjar integration +if (cookieValue?.loginid) { + window?.hj("identify", cookieValue.loginid, { + is_logged_in: !!window.parseCookies(document.cookie, "client_information"), + landing_company_shortcode: cookieValue.landing_company_shortcode || "null", + }); +} + +const updateLinkHrefs = () => { + const featureFlagValue = Analytics?.Analytics?.getFeatureValue( + "trigger_os_signup_wf" + ); + const handleOutSystemsRedirection = () => { + const currentDomain = window.location.hostname; + let env; + if ( + currentDomain === "deriv.com" || + currentDomain === "deriv.be" || + currentDomain === "deriv.me" + ) { + env = "production"; + } else if (currentDomain === "staging.deriv.com") { + env = "staging"; + } else { + env = "development"; + } + switch (env) { + case "production": + return "https://hub.deriv.com/tradershub/signup"; + case "staging": + return "https://staging-hub.deriv.com/tradershub/signup"; + default: + return "https://dev-hub.deriv.com/tradershub/signup"; + } + }; + + function isSafari() { + const ua = navigator.userAgent.toLowerCase(); + return /safari/.test(ua) && !/chrome/.test(ua) && !/crios/.test(ua); + } + + function isIOS() { + const ua = navigator.userAgent.toLowerCase(); + return /ipad|iphone|ipod/.test(ua); + } + + const newHref = featureFlagValue + ? isIOS() || isSafari() + ? `https://${window.location.host}/signup` + : handleOutSystemsRedirection() + : `https://${window.location.host}/signup`; + + // Update href attributes + const mainSignupButton = document.getElementById("cta-home-btn-navbar"); + if (mainSignupButton) { + mainSignupButton.href = newHref; + } + + const signupButtons = document.querySelectorAll(".logged-out-btn"); + signupButtons?.forEach((btn) => { + if (btn?.href?.indexOf("/signup") > 0) { + btn.href = newHref; + } + }); + + const signupButtonsPlatforms = document.querySelectorAll(".logged-out-btn a"); + signupButtonsPlatforms?.forEach((btn) => { + if (btn?.href?.indexOf("/signup") > 0) { + btn.href = newHref; + } + }); +}; + +Analytics?.Analytics?.getInstances() + ?.ab?.GrowthBook?.loadFeatures() + .then(() => { + if (window.location.href.indexOf("/partners") > -1 === false) { + updateLinkHrefs(); + } + }); + + diff --git a/src/js/footer/partnerAffiliate/index.js b/src/js/footer/partnerAffiliate/index.js index 49a1b57..7a8515b 100644 --- a/src/js/footer/partnerAffiliate/index.js +++ b/src/js/footer/partnerAffiliate/index.js @@ -8,6 +8,6 @@ if (params.has("referrer") && token != null) { const referrer_token = getCookieByKey(document.cookie, "referrer_token"); if (referrer_token !== token) { deleteCookie("referrer_token"); - setCookie("referrer_token", token, 365); + setCookie("referrer_token", token, 365, ".deriv.com"); } } diff --git a/src/js/footer/updateUrlAsPerLanguage/index.js b/src/js/footer/updateUrlAsPerLanguage/index.js index dd396d5..d159feb 100644 --- a/src/js/footer/updateUrlAsPerLanguage/index.js +++ b/src/js/footer/updateUrlAsPerLanguage/index.js @@ -58,6 +58,4 @@ const updateURLAsPerUserLanguage = () => { } }; -document.addEventListener("DOMContentLoaded", function () { - updateURLAsPerUserLanguage(); -}); +updateURLAsPerUserLanguage(); diff --git a/src/temp-static.min.js b/src/temp-static.min.js new file mode 100644 index 0000000..ba4230c --- /dev/null +++ b/src/temp-static.min.js @@ -0,0 +1 @@ +var e,o,n,i,t,a,r,d,c,s;import{initializeApp as l}from"https://www.gstatic.com/firebasejs/10.8.1/firebase-app.js";import{getDatabase as u,ref as p,onValue as w}from"https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js";function h(e,o,n,i){let t="";if(n){let e=new Date;e.setTime(e.getTime()+24*n*60*60*1e3),t="; expires="+e.toUTCString()}document.cookie=i?e+"="+(o||"")+t+`;domain=${i};path=/`:e+"="+(o||"")+t+";path=/"}function m(e,o){const n={};return e.split(";").forEach((e=>{const[o,i]=e.split("=").map((e=>e.trim()));n[o]=decodeURIComponent(i)})),n[o]}function y(e){h("webflow-user-language",e,30)}function N(e){document.cookie=e+"=; Max-Age=-99999999;"}window.emailRegex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,window.toggleErrorField=(e,o)=>{o?e.classList.remove("error-field"):e.classList.add("error-field")},window.disableButton=function(e){e.disabled=!0,e.style.opacity="0.5"},window.isEuRegion=function(e){const o=e.replace(/\/$/,"");return/^\/(?:[^\/]+\/)?eu(?:\/|$)/.test(o)},window.enableButton=function(e){e.disabled=!1,e.style.opacity="1"},window.getOauthUrl=function(){var e=window.location.href,o=new URL(e).hostname,n=["deriv.com","deriv.be","deriv.me"].find((e=>o.endsWith(e)));return n?`https://oauth.${n}`:"https://oauth.deriv.com"},window.getClientCountry=function(){var e;const o=m(document.cookie,"clients_country"),n=m(document.cookie,"client_information");return n&&(null==(e=JSON.parse(n))?void 0:e.residence)||o},window.deriv_com_url="deriv.com",window.deriv_me_url="deriv.me",window.deriv_be_url="deriv.be",window.webflow_domain="webflow.deriv.com",window.staging_url="staging.deriv.com",window.staging_deriv_be_url="staging.deriv.be",window.domain_list_app_id={[window.deriv_com_url]:"16929",[window.deriv_me_url]:"1411",[window.deriv_be_url]:"30767",[window.webflow_domain]:"53503",[window.staging_url]:"16303"},window.getDomain=()=>{var e=window.location.href;return new URL(e).hostname},window.getAppId=()=>{const e=window.getDomain(),o=new URLSearchParams(window.location.search||"").get("app_id");if(o)return o;const n=localStorage.getItem("config.app_id");if(n)return n;const i={[window.webflow_domain]:window.domain_list_app_id[window.webflow_domain],[window.deriv_be_url]:window.domain_list_app_id[window.deriv_be_url],[window.deriv_me_url]:window.domain_list_app_id[window.deriv_me_url],[window.staging_url]:window.domain_list_app_id[window.staging_url]};return i[e]?i[e]:window.domain_list_app_id[window.deriv_com_url]};const g=()=>{const e=localStorage.getItem("config.server_url"),o=m(document.cookie,"webflow-user-language");let n=o?o.toLowerCase():"en";"zh-cn"!==n&&"zh-tw"!==n||(n=n.replace("-","_"));const i=(e=>{let o="";return e&&Object.keys(e).forEach((n=>{o+=`&${n}=${e[n]}`})),o})((()=>{const e=m(document.cookie,"utm_data");if(e){const o=JSON.parse(e),n={};return["utm_source","utm_ad_id","utm_adgroup_id","utm_adrollclk_id","utm_campaign","utm_campaign_id","utm_content","utm_fbcl_id","utm_gl_client_id","utm_medium","utm_msclk_id","utm_term"].forEach((e=>{o.hasOwnProperty(e)&&(n[e]=o[e])})),n}return null})()),t=m(document.cookie,"affiliate_tracking"),a=t?`&affiliate_token=${t}`:"",r=void["mt5","bot","derivx"].filter((e=>window.location.pathname.includes(e)&&e))||"";return e&&/qa/.test(e)?`https://${e}/oauth2/authorize?app_id=${window.getAppId()}&l=${n}&brand=deriv${a}${i}&platform=${r}`:`${window.getOauthUrl()}/oauth2/authorize?app_id=${(()=>{const e=window.getDomain();return e===window.deriv_me_url?window.domain_list_app_id[window.deriv_me_url]:e===window.deriv_be_url?window.domain_list_app_id[window.deriv_be_url]:e===window.webflow_domain?window.domain_list_app_id[window.webflow_domain]:window.domain_list_app_id[window.deriv_com_url]})()}&l=${n}&brand=deriv${a}${i}&platform=${r}`};if(!!!m(document.cookie,"client_information")){var f=document.createElement("iframe");f.src=(()=>{const e=window.location.hostname;let o;switch(o="deriv.com"===e||"deriv.be"===e||"deriv.me"===e?"production":"staging.deriv.com"===e?"staging":"development",o){case"production":return"https://hub.deriv.com/tradershub/signup";case"staging":return"https://staging-hub.deriv.com/tradershub/signup";default:return"https://dev-hub.deriv.com/tradershub/signup"}})(),f.style.width="0",f.style.height="0",f.style.border="none",f.style.visibility="hidden",f.setAttribute("sandbox","allow-same-origin allow-scripts"),document.body.appendChild(f)}window.establishWebSocketConnection=()=>new Promise(((e,o)=>{const n=m(document.cookie,"webflow-user-language"),i=n?n.toLowerCase():"en",t=localStorage.getItem("config.server_url")||"green.derivws.com";window.websocket=new WebSocket(`wss://${t}/websockets/v3?app_id=${window.getAppId()}&l=${i||"en"}&brand=deriv`),window.websocket.addEventListener("open",(o=>{window.websocket.addEventListener("close",(()=>{window.websocket.close()})),window.websocket.addEventListener("message",(e=>{JSON.parse(e.data)})),e(window.websocket)})),window.websocket.addEventListener("error",(e=>{var n;null==(n=null==window?void 0:window.websocket)||n.close(),o(e)}))})),window.socketMessageSend=async(e,o)=>{var n;try{return(null==window?void 0:window.websocket)&&(null==(n=null==window?void 0:window.websocket)?void 0:n.readyState)===(null==WebSocket?void 0:WebSocket.OPEN)?(window.websocket.send(e),new Promise(((e,n)=>{window.websocket.addEventListener("message",(i=>{const t=JSON.parse(i.data);o===t.msg_type&&(t.error?n(t.error):e(t))}))}))):establishWebSocketConnection().then((()=>(websocket.send(e),new Promise(((e,n)=>{websocket.addEventListener("message",(i=>{const t=JSON.parse(i.data);o===t.msg_type&&(t.error?n(t.error):e(t))}))}))))).catch((e=>Promise.reject(e)))}catch(i){return Promise.reject(i)}};const v=[{id:"appgallery",selectors:[".footer_banner-badge.gallery.w-inline-block",".app-download_link-wrapper.appgallery.w-inline-block"],countries:["af","ax","al","dz","as","ad","ao","aq","am","au","at","az","bh","bd","by","be","bj","bm","bt","bo","ba","bw","bv","br","io","bn","bg","bf","bi","kh","cm","ca","cv","bq","cf","td","cn","cx","cc","km","cg","cd","ck","ci","hr","cu","cw","cy","cz","dk","dj","dm","eg","gq","er","ee","et","fk","fo","fj","fi","fr","pf","tf","ga","gm","ge","de","gh","gi","gr","gl","gu","gg","gn","gw","hm","va","hu","is","in","id","ir","iq","ie","im","il","it","jp","je","jo","kz","ke","ki","kr","kp","kw","kg","la","lv","lb","ls","lr","ly","li","lt","lu","mo","mk","mg","mw","my","mv","ml","mt","mh","mr","mu","yt","mx","fm","md","mc","mn","me","ma","mz","mm","na","nr","np","nl","nc","nz","ne","ng","nu","nf","mp","no","om","pk","pw","ps","pg","pe","ph","pn","pl","pt","qa","re","ro","ru","rw","sh","kn","pm","bl","mf","ws","sm","st","sa","sn","rs","sc","sl","sg","sx","sk","si","sb","so","gs","ss","es","lk","sd","sj","sz","se","ch","sy","tw","tj","tz","th","tl","tg","tk","to","tn","tr","tm","tc","tv","ug","ua","ae","gb","um","us","uz","vu","vi","wf","eh","ye","zm","zw"]},{id:"googlePlay",selectors:[".footer_banner-badge.google.w-inline-block",".app-download_link-wrapper.google.w-inline-block"],countries:["af","ax","as","ad","ai","aq","au","bb","bt","bv","io","bn","bi","ca","bq","cf","cx","cc","cg","cd","ck","cw","gq","et","fk","fo","gf","pf","tf","gl","gp","gu","gg","gy","hm","va","hk","ir","im","jp","je","ki","kp","ls","ly","mg","mw","mh","mq","mr","yt","fm","mn","me","ms","nr","nc","nz","ng","nu","nf","mp","pw","ps","pn","pr","re","sh","kn","lc","pm","vc","bl","mf","st","sg","sx","gs","ss","sj","sz","sy","tl","tk","tc","tv","um","us","vg","vi","wf","eh"]},{id:"appstore",selectors:[".footer_banner-badge.store.w-inline-block",".app-download_link-wrapper.appstore.w-inline-block"],countries:["ax","al","as","ad","aq","aw","au","at","bd","be","bv","io","bg","bi","ca","bq","cf","cx","cc","km","ck","hr","cu","cw","cy","cz","dk","dj","gq","er","ee","et","fk","fo","fi","fr","gf","pf","tf","de","gi","gr","gl","gp","gu","gg","gn","ht","hm","va","hk","hu","is","ir","iq","ie","im","il","it","je","ki","kp","lv","ls","ly","li","lt","lu","mt","mh","mq","yt","fm","me","nl","nc","nz","ng","nu","nf","mp","no","ps","pn","pl","pt","pr","re","ro","sh","pm","bl","mf","ws","sm","sg","sx","sk","si","so","gs","ss","es","sd","sj","se","ch","sy","tw","tl","tg","tk","tr","tv","gb","um","us","vu","vi","wf","eh"]},{id:"p2p",selectors:["#p2payment.accordion_toggle-block","#p2component.section_dp2p","#card_block_p2p.help_category"],countries:["as","au","at","be","bg","ca","hr","cy","cz","dk","ee","fi","fr","gr","gu","gg","hk","hu","ir","ie","im","il","it","je","ng","mm","sy","kp","lv","lt","lu","my","mt","nl","nz","mp","py","pl","pt","pr","ro","rw","sk","si","es","se","ae","gb","us","um","vu","vi","ky","cu","de"]},{id:"w-dyn-item-p2p",selectors:["div.w-dyn-item"],countries:["as","au","at","be","bg","ca","hr","cy","cz","dk","ee","fi","fr","gr","gu","gg","hk","hu","ir","ie","im","il","it","je","ng","mm","sy","kp","lv","lt","lu","my","mt","nl","nz","mp","py","pl","pt","pr","ro","rw","sk","si","es","se","ae","gb","us","um","vu","vi","ky","cu","de"]},{id:"hideRow",selectors:["#footer_social-icons_row","#footer_text_row",".footer_risk-warning.w-richtext"],countries:["br","uy","lk","ch","za","ec"]},{id:"hideDiel",selectors:["#footer_text_diel","#footer_social-icons_diel"],countries:["br","uy","lk","ch","za","ec"]}],Y=[{id:"showElems",selectors:[".banner_disclaimer"],countries:["br","uy","lk","ch","za","ec"]}],_=()=>{const e=window.getClientCountry();v.forEach((o=>{const n="hideDiel"===o.id?!o.countries.includes(e):o.countries.includes(e);if(e&&n)return o.selectors.forEach((e=>{document.querySelectorAll(e).forEach((e=>{if(e)if("w-dyn-item-p2p"===o.id){e.querySelector("#card_block_p2p.help_category")&&(e.style.display="none")}else e.style.display="none"}))}));if(!n){const e=document.querySelector(".footer_social-icons.diel");e&&(e.style.display="flex")}})),Y.forEach((o=>{e&&o.countries.includes(e)?o.selectors.forEach((e=>{document.querySelectorAll(e).forEach((o=>{if(o){const n=document.querySelector(".page-wrapper");".banner_disclaimer"===e?(n.classList.add("disclaimer-show"),o.classList.remove("hide-element")):o.style.display="block"}}))})):o.selectors.forEach((e=>{document.querySelectorAll(e).forEach((o=>{o&&(".banner_disclaimer"===e?o.classList.add("hide-element"):o.style.display="none")}))}))}))},A=JSON.stringify({website_status:1});!async function(){try{const e=await fetch("https://www.cloudflare.com/cdn-cgi/trace"),o=await e.text(),n=Object.fromEntries(o.split("\n").map((e=>e.split("=",2)))).loc.toLowerCase();n!==m(document.cookie,"clients_country")&&(N("clients_country"),h("clients_country",n,30)),_()}catch(e){_()}}();m(document.cookie,"clients_country")||window.socketMessageSend(A,"website_status").then((e=>{m(document.cookie,"clients_country")!==e.website_status.clients_country&&(N("clients_country"),h("clients_country",e.website_status.clients_country,30)),_()})).catch((e=>{}));const b=["ar","bn","de","en","es","fr","it","ko","pl","pt","ru","si","sw","th","tr","vi","zh_cn","zh_tw","zh-cn","zh-tw"];(()=>{var e;const o=window.location.pathname,n=window.location.hash,i=window.location.search,t=o.split("/"),a=t[1],r=b.includes(a||""),d=t.includes("careers")||t.includes("locations")||t.includes("derivtech")||t.includes("derivlife")||t.includes("eu-careers")||t.includes("our-locations");r&&y(a);const c=(null==(e=m(document.cookie,"webflow-user-language"))?void 0:e.toLowerCase())||"en",s=r?a:c;if((r||"en"!==c)&&a!==c)if(r&&a!==c)y(s);else if(!d){const e=(r?t.map((e=>e===a?s:e)).join("/"):s+t.join("/"))+i+n;window.location.href="/"+e}})();const k=function(){let e,o=!1,n=!1;const i=()=>{n=!0,o=!!m(document.cookie,"client_information"),o&&clearInterval(e),document.dispatchEvent(new Event("authStatusChange"))};return i(),e=setInterval(i,800),{getLoggedInStatus:()=>o,getAuthCheckedStatus:()=>n,onAuthStatusChange:e=>document.addEventListener("authStatusChange",e)}}();k.onAuthStatusChange((()=>{if(k.getAuthCheckedStatus()&&k.getLoggedInStatus()){document.querySelectorAll(".logged-in-btn").forEach((e=>{e.classList.remove("hide-element")}));document.querySelectorAll(".logged-out-btn").forEach((e=>{e.classList.add("hide-element")}))}else if(k.getAuthCheckedStatus()&&!k.getLoggedInStatus()){document.querySelectorAll(".logged-out-btn").forEach((e=>{e.classList.remove("hide-element")}));document.querySelectorAll(".logged-in-btn").forEach((e=>{e.classList.add("hide-element")}))}}));const L=window.location.href;if(["help-centre"].some((e=>L.includes(e)))){const e=new URL(L).searchParams;e.has("platform")&&"derivgo"===e.get("platform")&&(S=".derivgo-query-element",document.querySelectorAll(S).forEach((e=>{e.style.display="none"})))}var S;const E=document.querySelector(".banner_disclaimer"),C=document.querySelector(".main-wrapper");if(E){new ResizeObserver((e=>{for(let o of e)if(o.target===E){let e=o.target.getBoundingClientRect();C&&(C.style.paddingTop=e.height+"px")}})).observe(E)}window.addEventListener("pageshow",(function(e){if(e.persisted){const e=document.querySelector(".w-nav-overlay");e&&(e.style.display="none",document.querySelector("body").click())}}));const q=u(l({databaseURL:window.location.hostname.includes("staging")?"https://app-config-staging.firebaseio.com":"https://app-config-prod.firebaseio.com"}));let I=!1,z=!1;!function(){var e;const o=document.getElementById("live_chat-wrapper");try{const e=p(q,"remote_config/deriv-com/chat");w(e,(e=>{const n=e.val();I=n.live_chat,z=n.whatsapp_chat;const i=document.querySelector(".whatsapp_chat"),t=document.querySelector(".livechatbtn");i&&(i.style.visibility=z?"visible":"hidden"),t&&(t.style.visibility=I?"visible":"hidden");if(window.location.pathname.includes("/help-centre")){const e=document.querySelectorAll(".livechatbtn");I?e.forEach((e=>{e.style.visibility="visible"})):e.forEach((e=>{e.style.visibility="hidden"}));const o=document.querySelectorAll(".whatsapp_chat");z?o.forEach((e=>{e.style.visibility="visible"})):o.forEach((e=>{e.style.visibility="hidden"}))}window.addEventListener("scroll",(function(){var e,n;(I||z)&&(null==(e=null==o?void 0:o.classList)||e.remove("hide-element")),I||z||null==(n=null==o?void 0:o.classList)||n.add("hide-element")}))}),(e=>{var n;null==(n=null==o?void 0:o.classList)||n.remove("hide-element")}))}catch(n){null==(e=null==o?void 0:o.classList)||e.remove("hide-element")}}();new MutationObserver((function(e){for(const o of e)if(o.addedNodes.length)for(const e of o.addedNodes)e.nodeType===Node.ELEMENT_NODE&&"chat-widget-minimized"===e.id&&(e.style.opacity="0")})).observe(document.body,{childList:!0,subtree:!0});const x=window.getClientCountry();const j=[{country:"af",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"ax",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"al",apple:"No",android:"Yes",huawei:"No"},{country:"dz",apple:"Yes",android:"Yes",huawei:"No"},{country:"as",apple:"N/A",android:"No",huawei:"N/A"},{country:"ad",apple:"N/A",android:"N/A",huawei:"No"},{country:"ao",apple:"Yes",android:"Yes",huawei:"No"},{country:"ai",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"aq",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ag",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ar",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"am",apple:"Yes",android:"Yes",huawei:"No"},{country:"aw",apple:"N/A",android:"Yes",huawei:"Yes"},{country:"au",apple:"No",android:"No",huawei:"No"},{country:"at",apple:"No",android:"Yes",huawei:"No"},{country:"az",apple:"Yes",android:"Yes",huawei:"No"},{country:"bs",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"bh",apple:"Yes",android:"Yes",huawei:"No"},{country:"bd",apple:"N/A",android:"Yes",huawei:"No"},{country:"bb",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"by",apple:"Yes",android:"Yes",huawei:"No"},{country:"be",apple:"No",android:"Yes",huawei:"No"},{country:"bz",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"bj",apple:"Yes",android:"Yes",huawei:"No"},{country:"bm",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"bt",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"bo",apple:"Yes",android:"Yes",huawei:"No"},{country:"ba",apple:"Yes",android:"Yes",huawei:"No"},{country:"bw",apple:"Yes",android:"Yes",huawei:"No"},{country:"bv",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"br",apple:"Yes",android:"Yes",huawei:"No"},{country:"io",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"bn",apple:"Yes",android:"N/A",huawei:"No"},{country:"bg",apple:"No",android:"Yes",huawei:"No"},{country:"bf",apple:"Yes",android:"Yes",huawei:"No"},{country:"bi",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kh",apple:"Yes",android:"Yes",huawei:"No"},{country:"cm",apple:"Yes",android:"Yes",huawei:"No"},{country:"ca",apple:"No",android:"No",huawei:"No"},{country:"cv",apple:"Yes",android:"Yes",huawei:"No"},{country:"bq",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ky",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"cf",apple:"N/A",android:"N/A",huawei:"No"},{country:"td",apple:"Yes",android:"Yes",huawei:"No"},{country:"cl",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"cn",apple:"Yes",android:"Yes",huawei:"No"},{country:"cx",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"cc",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"co",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"km",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"cg",apple:"Yes",android:"N/A",huawei:"No"},{country:"cd",apple:"Yes",android:"N/A",huawei:"No"},{country:"ck",apple:"N/A",android:"N/A",huawei:"No"},{country:"cr",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ci",apple:"Yes",android:"Yes",huawei:"No"},{country:"hr",apple:"No",android:"Yes",huawei:"No"},{country:"cu",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"cw",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"cy",apple:"No",android:"Yes",huawei:"No"},{country:"cz",apple:"No",android:"Yes",huawei:"No"},{country:"dk",apple:"No",android:"Yes",huawei:"No"},{country:"dj",apple:"N/A",android:"Yes",huawei:"No"},{country:"dm",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"do",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ec",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"eg",apple:"Yes",android:"Yes",huawei:"No"},{country:"sv",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gq",apple:"N/A",android:"N/A",huawei:"No"},{country:"er",apple:"N/A",android:"Yes",huawei:"No"},{country:"ee",apple:"No",android:"Yes",huawei:"No"},{country:"et",apple:"N/A",android:"N/A",huawei:"No"},{country:"fk",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"fo",apple:"N/A",android:"N/A",huawei:"No"},{country:"fj",apple:"Yes",android:"Yes",huawei:"No"},{country:"fi",apple:"No",android:"Yes",huawei:"No"},{country:"fr",apple:"No",android:"Yes",huawei:"No"},{country:"gf",apple:"N/A",android:"N/A",huawei:"Yes"},{country:"pf",apple:"N/A",android:"N/A",huawei:"No"},{country:"tf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ga",apple:"Yes",android:"Yes",huawei:"No"},{country:"gm",apple:"Yes",android:"Yes",huawei:"No"},{country:"ge",apple:"Yes",android:"Yes",huawei:"No"},{country:"de",apple:"No",android:"Yes",huawei:"No"},{country:"gh",apple:"Yes",android:"Yes",huawei:"No"},{country:"gi",apple:"N/A",android:"Yes",huawei:"No"},{country:"gr",apple:"No",android:"Yes",huawei:"No"},{country:"gl",apple:"N/A",android:"N/A",huawei:"No"},{country:"gd",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gp",apple:"N/A",android:"N/A",huawei:"Yes"},{country:"gu",apple:"N/A",android:"No",huawei:"N/A"},{country:"gt",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gg",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"gn",apple:"N/A",android:"Yes",huawei:"No"},{country:"gw",apple:"Yes",android:"Yes",huawei:"No"},{country:"gy",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"ht",apple:"N/A",android:"Yes",huawei:"Yes"},{country:"hm",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"va",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"hn",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"hk",apple:"No",android:"No",huawei:"Yes"},{country:"hu",apple:"No",android:"Yes",huawei:"No"},{country:"is",apple:"No",android:"Yes",huawei:"No"},{country:"in",apple:"Yes",android:"Yes",huawei:"No"},{country:"id",apple:"Yes",android:"Yes",huawei:"No"},{country:"ir",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"iq",apple:"No",android:"Yes",huawei:"N/A"},{country:"ie",apple:"No",android:"Yes",huawei:"No"},{country:"im",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"il",apple:"No",android:"Yes",huawei:"No"},{country:"it",apple:"No",android:"Yes",huawei:"No"},{country:"jm",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"jp",apple:"Yes",android:"No",huawei:"No"},{country:"je",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"jo",apple:"Yes",android:"Yes",huawei:"No"},{country:"kz",apple:"Yes",android:"Yes",huawei:"No"},{country:"ke",apple:"Yes",android:"Yes",huawei:"No"},{country:"ki",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kr",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"kp",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kw",apple:"Yes",android:"Yes",huawei:"No"},{country:"kg",apple:"Yes",android:"Yes",huawei:"No"},{country:"la",apple:"Yes",android:"Yes",huawei:"No"},{country:"lv",apple:"No",android:"Yes",huawei:"No"},{country:"lb",apple:"Yes",android:"Yes",huawei:"No"},{country:"ls",apple:"N/A",android:"N/A",huawei:"No"},{country:"lr",apple:"Yes",android:"Yes",huawei:"No"},{country:"ly",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"li",apple:"N/A",android:"Yes",huawei:"No"},{country:"lt",apple:"No",android:"Yes",huawei:"No"},{country:"lu",apple:"No",android:"Yes",huawei:"No"},{country:"mo",apple:"Yes",android:"Yes",huawei:"No"},{country:"mk",apple:"Yes",android:"Yes",huawei:"No"},{country:"mg",apple:"Yes",android:"N/A",huawei:"No"},{country:"mw",apple:"Yes",android:"N/A",huawei:"No"},{country:"my",apple:"Yes",android:"Yes",huawei:"No"},{country:"mv",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"ml",apple:"Yes",android:"Yes",huawei:"No"},{country:"mt",apple:"No",android:"Yes",huawei:"No"},{country:"mh",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"mq",apple:"N/A",android:"N/A",huawei:"Yes"},{country:"mr",apple:"Yes",android:"N/A",huawei:"No"},{country:"mu",apple:"Yes",android:"Yes",huawei:"No"},{country:"yt",apple:"N/A",android:"N/A",huawei:"No"},{country:"mx",apple:"Yes",android:"Yes",huawei:"No"},{country:"fm",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"md",apple:"Yes",android:"Yes",huawei:"No"},{country:"mc",apple:"Yes",android:"Yes",huawei:"No"},{country:"mn",apple:"Yes",android:"N/A",huawei:"No"},{country:"me",apple:"No",android:"N/A",huawei:"No"},{country:"ms",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"ma",apple:"Yes",android:"Yes",huawei:"No"},{country:"mz",apple:"Yes",android:"Yes",huawei:"No"},{country:"mm",apple:"Yes",android:"Yes",huawei:"No"},{country:"na",apple:"Yes",android:"Yes",huawei:"No"},{country:"nr",apple:"Yes",android:"N/A",huawei:"No"},{country:"np",apple:"Yes",android:"Yes",huawei:"No"},{country:"nl",apple:"No",android:"Yes",huawei:"No"},{country:"nc",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"nz",apple:"No",android:"No",huawei:"No"},{country:"ni",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"ne",apple:"Yes",android:"Yes",huawei:"No"},{country:"ng",apple:"No",android:"No",huawei:"No"},{country:"nu",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"nf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"mp",apple:"N/A",android:"No",huawei:"N/A"},{country:"no",apple:"No",android:"Yes",huawei:"No"},{country:"om",apple:"Yes",android:"Yes",huawei:"No"},{country:"pk",apple:"Yes",android:"Yes",huawei:"No"},{country:"pw",apple:"Yes",android:"No",huawei:"N/A"},{country:"ps",apple:"N/A",android:"N/A",huawei:"No"},{country:"pa",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"pg",apple:"Yes",android:"Yes",huawei:"No"},{country:"py",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"pe",apple:"Yes",android:"Yes",huawei:"No"},{country:"ph",apple:"Yes",android:"Yes",huawei:"No"},{country:"pn",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"pl",apple:"No",android:"Yes",huawei:"No"},{country:"pt",apple:"No",android:"Yes",huawei:"No"},{country:"pr",apple:"N/A",android:"No",huawei:"Yes"},{country:"qa",apple:"Yes",android:"Yes",huawei:"No"},{country:"re",apple:"N/A",android:"N/A",huawei:"No"},{country:"ro",apple:"No",android:"Yes",huawei:"No"},{country:"ru",apple:"Yes",android:"Yes",huawei:"No"},{country:"rw",apple:"Yes",android:"Yes",huawei:"No"},{country:"sh",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"kn",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"lc",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"pm",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"vc",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"bl",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"mf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ws",apple:"N/A",android:"Yes",huawei:"No"},{country:"sm",apple:"N/A",android:"Yes",huawei:"No"},{country:"st",apple:"Yes",android:"N/A",huawei:"No"},{country:"sa",apple:"Yes",android:"Yes",huawei:"No"},{country:"sn",apple:"Yes",android:"Yes",huawei:"No"},{country:"rs",apple:"Yes",android:"Yes",huawei:"No"},{country:"sc",apple:"Yes",android:"Yes",huawei:"N/A"},{country:"sl",apple:"Yes",android:"Yes",huawei:"No"},{country:"sg",apple:"No",android:"No",huawei:"No"},{country:"sx",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"sk",apple:"No",android:"Yes",huawei:"No"},{country:"si",apple:"No",android:"Yes",huawei:"No"},{country:"sb",apple:"Yes",android:"Yes",huawei:"No"},{country:"so",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"za",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"gs",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ss",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"es",apple:"No",android:"Yes",huawei:"No"},{country:"lk",apple:"Yes",android:"Yes",huawei:"No"},{country:"sd",apple:"N/A",android:"Yes",huawei:"N/A"},{country:"sr",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"sj",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"sz",apple:"Yes",android:"N/A",huawei:"No"},{country:"se",apple:"No",android:"Yes",huawei:"No"},{country:"ch",apple:"No",android:"Yes",huawei:"No"},{country:"sy",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"tw",apple:"No",android:"Yes",huawei:"No"},{country:"tj",apple:"Yes",android:"Yes",huawei:"No"},{country:"tz",apple:"Yes",android:"Yes",huawei:"No"},{country:"th",apple:"Yes",android:"Yes",huawei:"No"},{country:"tl",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"tg",apple:"N/A",android:"Yes",huawei:"No"},{country:"tk",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"to",apple:"Yes",android:"Yes",huawei:"No"},{country:"tt",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"tn",apple:"Yes",android:"Yes",huawei:"No"},{country:"tr",apple:"No",android:"Yes",huawei:"No"},{country:"tm",apple:"Yes",android:"Yes",huawei:"No"},{country:"tc",apple:"Yes",android:"N/A",huawei:"N/A"},{country:"tv",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ug",apple:"Yes",android:"Yes",huawei:"No"},{country:"ua",apple:"Yes",android:"Yes",huawei:"No"},{country:"ae",apple:"Yes",android:"Yes",huawei:"No"},{country:"gb",apple:"No",android:"Yes",huawei:"No"},{country:"um",apple:"N/A",android:"No",huawei:"N/A"},{country:"us",apple:"No",android:"No",huawei:"N/A"},{country:"uy",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"uz",apple:"Yes",android:"Yes",huawei:"No"},{country:"vu",apple:"No",android:"Yes",huawei:"N/A"},{country:"ve",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"vn",apple:"Yes",android:"Yes",huawei:"Yes"},{country:"vg",apple:"Yes",android:"N/A",huawei:"Yes"},{country:"vi",apple:"N/A",android:"No",huawei:"N/A"},{country:"wf",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"eh",apple:"N/A",android:"N/A",huawei:"N/A"},{country:"ye",apple:"Yes",android:"Yes",huawei:"No"},{country:"zm",apple:"Yes",android:"Yes",huawei:"No"},{country:"zw",apple:"Yes",android:"Yes",huawei:"No"}].find((e=>e.country===x)),O=j?function(e){const{apple:o,android:n,huawei:i}=e;return"Yes"===o&&"Yes"===n&&"Yes"===i?"Android, iOS & Huawei":"Yes"===o&&"Yes"===n&&"Yes"!==i?"Android, and iOS":"Yes"===o&&"Yes"===i&&"Yes"!==n?"iOS, and Huawei":"Yes"===n&&"Yes"!==o&&"Yes"!==i?"Android":"Yes"===o&&"Yes"===i&&"Yes"!==n?"iOS, and Huawei":"Yes"===o&&"Yes"!==n&&"Yes"!==i?"iOS":"Yes"!==o&&"Yes"!==n&&"Yes"===i?"Huawei":""}(j):"",$=document.getElementById("app-download-heading");$&&($.innerText=O);const B=document.querySelector(".redirection_background-wrapper"),D=document.getElementById("cancel-redirect"),P=document.getElementById("proceed-redirect");if(window.isEuRegion(window.location.pathname)&&B&&D&&P){const e=["deriv.me","deriv.be","deriv.com","app.deriv.me","app.deriv.be","app.deriv.com","docs.deriv.com","community.deriv.com","deriv.statuspage.io","signup.deriv.com","login.deriv.com","api.deriv.com"];let o="",n="_self";document.querySelectorAll("a").forEach((function(i){const t=new URL(i.href,window.location.href),a=new URL(window.location.href);e.includes(t.host)||t.host===a.host||i.addEventListener("click",(function(e){e.preventDefault(),o=t.href,n=i.target||"_self",B.classList.remove("hide-element"),document.body.style.overflow="hidden"}))})),D.addEventListener("click",(function(){B.classList.add("hide-element"),document.body.style.overflow="auto",o=""})),P.addEventListener("click",(function(){o&&(window.open(o,n),o="",B.classList.add("hide-element"),document.body.style.overflow="auto")}))}document.querySelector(".banner_disclaimer")?document.body.classList.add("disclaimer-visible"):document.body.classList.remove("disclaimer-visible");const W=document.querySelectorAll(".navbar_accordion-item");function R(){const e=document.querySelector(".navbar_accordion-trigger.open");e&&e.scrollIntoView({behavior:"smooth",block:"start"})}W.forEach((e=>{e.querySelector(".navbar_accordion-trigger").classList.remove("open");const o=e.querySelector(".navbar_accordion-content");o.classList.remove("open"),o.style.maxHeight="0px",o.style.overflow="hidden",o.style.transition="max-height 0.3s ease-in, opacity 0.3s ease-in",o.style.opacity="0"})),W.forEach((e=>{const o=e.querySelector(".navbar_accordion-trigger");o.addEventListener("click",(function(){const e=o.classList.contains("open");if(W.forEach((e=>{e.querySelector(".navbar_accordion-trigger").classList.remove("open");const o=e.querySelector(".navbar_accordion-content");o.classList.remove("open"),o.style.maxHeight="0px",o.style.opacity="0"})),!e){o.classList.add("open");const e=o.nextElementSibling;e.classList.add("open"),e.style.maxHeight=e.scrollHeight+"px",e.style.opacity="1"}}))}));document.querySelectorAll(".navbar_accordion-trigger").forEach((e=>{e.addEventListener("click",(function(){setTimeout(R,300)}))}));const U=new MutationObserver((e=>{e.forEach((e=>{if("class"===e.attributeName){const o=e.target;o.classList.contains("open")&&o.scrollIntoView({behavior:"smooth",block:"start"})}}))}));document.querySelectorAll(".navbar_accordion-item").forEach((e=>{U.observe(e,{attributes:!0})}));const J=new URL(window.location.href),T=new URLSearchParams(J.search),F=T.get("t");if(T.has("referrer")&&null!=F){m(document.cookie,"referrer_token")!==F&&(N("referrer_token"),h("referrer_token",F,365,".deriv.com"))}const H=document.getElementById("navbar-home_login");H&&H.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()}));const M=document.getElementById("res-navbar-home_login");M&&M.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()}));const V=document.getElementById("white-navbar_login");V&&V.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()}));const G=document.getElementById("res-white-navbar_login");G&&G.addEventListener("click",(function(e){e.preventDefault(),window.location.href=g()})),window.fallbackLoader="Migrated All + Removal of Webflow array functions";let K=document.querySelectorAll(".navbar_accordion-trigger");K.forEach((e=>{e.addEventListener("click",(function(){K.forEach((e=>e.classList.remove("current"))),this.classList.add("current")}))}));let Z=document.querySelector(".navbar_accordion-link.w--current");if(Z){let e=Z.closest(".navbar_accordion-item");if(e){let o=e.querySelector(".navbar_accordion-trigger");o&&o.classList.add("current")}}let Q=document.querySelector(".locale > .new-navbar_dropdown-link.w--current");if(Q){let e=Q.getAttribute("hreflang"),o=document.querySelectorAll(".current-locale-iso-code");if(e&&o.length)for(let n of o)n.innerText=e}function X(e,o,n){let i="";{let e=new Date;e.setTime(e.getTime()+24*n*60*60*1e3),i="; expires="+e.toUTCString()}document.cookie=e+"="+(o||"")+i+"; path=/"}let ee=document.querySelectorAll(".w-locales-items");if(ee.length>0){let e=function(e){let o=document.querySelector('a[hreflang="'+e+'"]');o&&window.location.pathname!==o.getAttribute("href")&&o.click()};ee.forEach((function(e){e.querySelectorAll("a").forEach((function(e){e.addEventListener("click",(function(o){o.preventDefault(),X("webflow-user-language",e.getAttribute("hreflang"),30),window.location.href=e.href}))}))})),window.setLanguageCookie=e=>{X("webflow-user-language",e,30)};let o=function(e){let o=document.cookie.split(";");for(let n=0;ni.includes(e))),o&&t&&e(o)}if(document.querySelector(".new-navbar_component")){let e=function(){document.body.classList.add("disable-scroll")},o=function(){document.body.classList.remove("disable-scroll")};const n=document.querySelector(".new-navbar_component");n.addEventListener("mouseenter",(()=>{window.innerWidth>991&&e()})),n.addEventListener("mouseleave",(()=>{window.innerWidth>991&&o()}))}window.getClientCountry();const oe=window.parseCookies(document.cookie,"webflow-user-language"),ne=["as","au","at","be","bg","ca","hr","cy","cz","dk","ee","fi","fr","gr","gu","gg","hk","hu","ir","ie","im","il","it","je","ng","mm","sy","kp","lv","lt","lu","my","mt","nl","nz","mp","py","pl","pt","pr","ro","rw","sk","si","es","se","ae","gb","us","um","vu","vi","ky","cu","de"];if(window.location.pathname.endsWith("p2p")&&!window.location.pathname.startsWith("/blog")){const e=window.getClientCountry();e&&ne.includes(e)&&("en"===oe?window.location.replace("/404"):window.location.replace(`/${oe}/404`))}if(void 0!==window.parseCookies(document.cookie,"client_information")){let e=function(e){e.forEach((e=>{e.href="https://app.deriv.com/appstore/traders-hub"}))},o=document.querySelectorAll("a.live-markets_button.is-secondary.is-small.is-purchase.w-button"),n=document.querySelectorAll("a.live-markets_button.is-secondary.is-small.is-sell.w-button");e(o),e(n)}document.getElementById("mobile-menu"),document.getElementById("live_chat-wrapper");const ie=()=>{window.LC_API&&window.LC_API.open_chat_window&&window.LC_API.open_chat_window()},te=()=>{"true"===new URLSearchParams(window.location.search).get("is_livechat_open")&&ie()},ae=e=>{var o;null==(o=null==window?void 0:window.LiveChatWidget)||o.on("ready",(()=>{window.LC_API.open_chat_window(),window.LC_API.hide_chat_window(),te();const o=window.parseCookies(document.cookie,"utm_data"),n=o?JSON.parse(o):{},{utm_source:i,utm_medium:t,utm_campaign:a}=n,r=window.parseCookies(document.cookie,"client_information"),d=new URLSearchParams(window.location.search),{loginid:c,email:s,landing_company_shortcode:l,currency:u,residence:p,first_name:w,last_name:h}=r?JSON.parse(r):{},m={is_logged_in:e,loginid:c??"",landing_company_shortcode:l??"",currency:u??"",residence:p??"",email:s??"",platform:d.get("platform")??"",utm_source:i??"",utm_medium:t??"",utm_campaign:a??""};window.LiveChatWidget.call("set_session_variables",m),e?(s&&window.LiveChatWidget.call("set_customer_email",s),w&&h&&window.LiveChatWidget.call("set_customer_name",`${w} ${h}`)):window.LC_API.on_chat_ended=()=>{window.LiveChatWidget.call("set_customer_email"," "),window.LiveChatWidget.call("set_customer_name"," ")},te(),window.LiveChatWidget.on("new_event",(e=>{e.greeting&&window.LC_API.open_chat_window()}))}))};let re=!1;const de=()=>{const e=!!window.parseCookies(document.cookie,"client_information");e!==re&&(ae(e),re=e)};de(),setInterval(de,2e3),(()=>{if(window.__lc=window.__lc||{},window.__lc.license="12049137",window.LC_API=window.LC_API||{loaded:!1},window.LC_API.loaded)te();else{const e=document.createElement("script");e.async=!0,e.src="https://cdn.livechatinc.com/tracking.js",e.onload=()=>{window.LC_API.loaded=!0,window.LC_API.on_after_load=function(){ae(!!window.parseCookies(document.cookie,"client_information")),te()},"undefined"!=typeof LiveChatWidget&&LiveChatWidget.init&&LiveChatWidget.init()},document.body.appendChild(e)}})();const ce=document.querySelectorAll(".livechatbtn");ce.length>0&&ce.forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),ie()}))}));const se=document.getElementById("liveChatBtn");se&&se.addEventListener("click",(e=>{e.preventDefault(),ie()}));document.querySelectorAll('a[rel="liveChatBtn"]').forEach((e=>{null==e||e.addEventListener("click",(e=>{e.preventDefault(),ie()}))}));let le=document.querySelector(".navbar_menu-button");le&&le.addEventListener("click",(function(){let e=window.innerHeight,o=document.querySelector(".new-navbar_main-wrapper");if(o){let n=e-o.offsetHeight,i=document.querySelector(".new-navbar_menu");i&&(i.style.height=`${n}px`)}}));let ue=document.querySelector(".lang-mob");ue&&ue.addEventListener("click",(function(){let e=document.querySelector(".new-navbar_menu-wrapper");e&&e.scrollBy({top:-3e3})}));class pe{constructor(e){this.cookieName=e}setItem(e){const o=new Date;o.setDate(o.getDate()+30);const n="expires="+o.toUTCString(),i=encodeURIComponent(JSON.stringify(e));document.cookie=`${this.cookieName}=${i};${n};path=/`}getItem(){const e=document.cookie.split(";");for(let o=0;ove.includes(e)))&&document.head.querySelectorAll("link").forEach((function(e){e.hasAttribute("hreflang")&&"x-default"!==e.getAttribute("hreflang")&&e.remove()}));const Ye=e=>{window.rudderanalytics?window.rudderanalytics.track(e.name,e.properties):(e=>{let o=[],n=parseCookies(document.cookie,"cached_analytics_events");n&&(o=JSON.parse(n)),o.push(e),document.cookie=`cached_analytics_events=${JSON.stringify(o)}; path=/; Domain=.deriv.com`})(e)};window.addClickListener=function(e,o,n){e&&e.addEventListener("click",(function(){Ye({name:o,properties:n})}))};var _e=null==document?void 0:document.getElementsByClassName("livechatbtn"),Ae=null==document?void 0:document.getElementsByClassName("whatsapp_chat"),be=null==document?void 0:document.getElementsByClassName("tradershub-btn"),ke=document.querySelectorAll(".btn-free-demo .w-button"),Le=document.querySelectorAll('.btn-free-demo [data-class="w-button"]');const Se=document.querySelectorAll('[data-attributes="btn-primary-nav"]'),Ee=document.querySelectorAll('[data-attributes="btn-secondary-nav"]');_e&&Array.from(_e).forEach((e=>{window.addClickListener(e,"ce_widget_usage_form",{action:"click",widget_name:"livechat"})})),Ae&&Array.from(Ae).forEach((e=>{window.addClickListener(e,"ce_widget_usage_form",{action:"click",widget_name:"whatsapp"})})),be&&Array.from(be).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Traders Hub"})})),ke&&Array.from(ke).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Try free demo"})})),Le&&Array.from(Le).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Try free demo"})})),Se&&Array.from(Se).forEach((e=>{e.classList.contains("tradershub-btn")||window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Try free demo"})})),Ee&&Array.from(Ee).forEach((e=>{window.addClickListener(e,"ce_cta_clicks",{action:"click",cta_name:"Login"})}));var Ce,qe,Ie;"deriv.com"===window.location.hostname||"deriv.be"===window.location.hostname||"deriv.me"===window.location.hostname?(Ce="sdk-UhZV3cNEg5nLNLNS",Ie="nre64BV0dNIa44zW4tz5ow==",qe="1oV5agvlcnCZ6IH94wCKM1oR8Pd"):(Ce="sdk-9wuqJ1mlcQsSyZQ",Ie="",qe="1lN3tsFD2nruGFgM5F074DC2hMB");const ze=(Ne=window.parseCookies(document.cookie,"client_information"))?JSON.parse(Ne):null,xe=window.parseCookies(document.cookie,"utm_data"),je=xe?JSON.parse(xe):{},Oe=window.parseCookies(document.cookie,"signup_device");let $e=null;Oe&&($e=(null==(e=JSON.parse(Oe))?void 0:e.signup_device)||null);const Be={growthbookKey:Ce,growthbookDecryptionKey:Ie,rudderstackKey:qe,growthbookOptions:{navigate:e=>window.location.replace(e),antiFlicker:!1,navigateDelay:0,attributes:{country:window.parseCookies(document.cookie,"clients_country")||window.parseCookies(document.cookie,"website_status"),user_language:window.parseCookies(document.cookie,"user_language")||("undefined"!=typeof window?localStorage.getItem("i18n")||navigator.language:null),device_language:window.parseCookies(document.cookie,"language")||" ",device_type:$e,utm_source:null==je?void 0:je.utm_source,utm_medium:null==je?void 0:je.utm_medium,utm_campaign:null==je?void 0:je.utm_campaign,is_authorised:!!window.parseCookies(document.cookie,"client_information"),loggedIn:!!window.parseCookies(document.cookie,"client_information"),url:window.location.href}}};try{null==Analytics||Analytics.Analytics.initialise(Be);const e=(null==ze?void 0:ze.user_id)?null==ze?void 0:ze.user_id:null==(i=null==(n=null==(o=null==Analytics?void 0:Analytics.Analytics)?void 0:o.getInstances)?void 0:n.call(o).tracking)?void 0:i.getAnonymousId();null==(t=null==Analytics?void 0:Analytics.Analytics)||t.identifyEvent(e)}catch(Pe){}null==(a=null==Analytics?void 0:Analytics.Analytics)||a.pageView(location.pathname,"Deriv.com"),window.useGrowthbookFeatureFlag=function({featureFlag:e}){var o,n,i,t,a;let r=null==(o=null==Analytics?void 0:Analytics.Analytics)?void 0:o.getFeatureValue(e);return null==(a=null==(t=null==(i=null==(n=null==Analytics?void 0:Analytics.Analytics)?void 0:n.getInstances())?void 0:i.ab)?void 0:t.GrowthBook)||a.setRenderer((function(){var o;const n=null==(o=null==Analytics?void 0:Analytics.Analytics)?void 0:o.getFeatureValue(e);r=n})),r};const De=window.parseCookies(document.cookie,"client_information")?JSON.parse(window.parseCookies(document.cookie,"client_information")):null;(null==De?void 0:De.loginid)&&(null==window||window.hj("identify",De.loginid,{is_logged_in:!!window.parseCookies(document.cookie,"client_information"),landing_company_shortcode:De.landing_company_shortcode||"null"}));null==(s=null==(c=null==(d=null==(r=null==Analytics?void 0:Analytics.Analytics)?void 0:r.getInstances())?void 0:d.ab)?void 0:c.GrowthBook)||s.loadFeatures().then((()=>{window.location.href.indexOf("/partners")>-1==!1&&(()=>{var e;const o=(null==(e=null==Analytics?void 0:Analytics.Analytics)?void 0:e.getFeatureValue("trigger_os_signup_wf"))?function(){const e=navigator.userAgent.toLowerCase();return/ipad|iphone|ipod/.test(e)}()||function(){const e=navigator.userAgent.toLowerCase();return/safari/.test(e)&&!/chrome/.test(e)&&!/crios/.test(e)}()?`https://${window.location.host}/signup`:(()=>{const e=window.location.hostname;let o;switch(o="deriv.com"===e||"deriv.be"===e||"deriv.me"===e?"production":"staging.deriv.com"===e?"staging":"development",o){case"production":return"https://hub.deriv.com/tradershub/signup";case"staging":return"https://staging-hub.deriv.com/tradershub/signup";default:return"https://dev-hub.deriv.com/tradershub/signup"}})():`https://${window.location.host}/signup`,n=document.getElementById("cta-home-btn-navbar");n&&(n.href=o);const i=document.querySelectorAll(".logged-out-btn");null==i||i.forEach((e=>{var n;(null==(n=null==e?void 0:e.href)?void 0:n.indexOf("/signup"))>0&&(e.href=o)}));const t=document.querySelectorAll(".logged-out-btn a");null==t||t.forEach((e=>{var n;(null==(n=null==e?void 0:e.href)?void 0:n.indexOf("/signup"))>0&&(e.href=o)}))})()}));