From f9e499263fb608f87ac503c96992ca7496ec3575 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 13:37:30 +0200 Subject: [PATCH 01/31] Update dependencies --- .eslintrc | 4 +- .husky/pre-commit | 3 - package-lock.json | 3144 ++++++++++++++++++++++----------------------- package.json | 21 +- 4 files changed, 1538 insertions(+), 1634 deletions(-) diff --git a/.eslintrc b/.eslintrc index 82eddce46..d7e687a00 100644 --- a/.eslintrc +++ b/.eslintrc @@ -18,7 +18,9 @@ "rules": { "max-len": ["error", { "code": 150, "ignoreComments": true, "ignoreStrings": true, "ignoreTemplateLiterals": true }], "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/ban-ts-comment": "off" + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-unused-vars": ["warn"], + "@typescript-eslint/no-explicit-any": ["warn"] }, "settings": { "react": { diff --git a/.husky/pre-commit b/.husky/pre-commit index 20d0d06e5..3867a0feb 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - npm run lint diff --git a/package-lock.json b/package-lock.json index ca4e6ea76..edf1babcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,21 +12,20 @@ "buffer": "^6.0.3" }, "devDependencies": { - "@react-native/eslint-config": "^0.74.83", - "@types/react": "^18.2.24", - "@types/react-native": "^0.73.0", - "eslint": "^8.56.0", - "husky": "^6.0.0", + "@react-native/eslint-config": "^0.74.87", + "@types/react": "^18.3.5", + "eslint": "^8.57.0", + "husky": "^9.1.5", "pod-install": "^0.1.39", - "prettier": "^3.2.5", + "prettier": "^3.3.3", "react": "^18.2.0", - "react-native": "^0.74.1", + "react-native": "^0.74.5", "react-native-builder-bob": "^0.23.2", - "theoplayer": "^7.6.0", - "typedoc": "^0.25.12", + "theoplayer": "^7.11.0", + "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", - "typedoc-plugin-mdn-links": "^3.1.18", - "typescript": "5.0.4" + "typedoc-plugin-mdn-links": "^3.2.11", + "typescript": "5.1.6" }, "engines": { "node": ">=16" @@ -42,15 +41,6 @@ } } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -65,12 +55,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -78,30 +68,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -117,9 +107,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz", - "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz", + "integrity": "sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -131,16 +121,16 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dev": true, "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -150,38 +140,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -190,19 +181,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", - "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -213,12 +202,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -230,9 +219,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -263,74 +252,53 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -340,35 +308,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -378,14 +346,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -395,103 +363,92 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dev": true, "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -501,10 +458,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -513,13 +473,28 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", - "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -529,12 +504,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -544,14 +519,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -561,13 +536,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -613,13 +588,13 @@ } }, "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.6.tgz", - "integrity": "sha512-qPPDbYs9j5IArMFqYi85QxatHURSzRyskKpIbjrVoVglDuGdhu1s7UTCmXvP/qR2aHa3EdJ8X3iZvQAHjmdHUw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz", + "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/plugin-syntax-export-default-from": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -798,12 +773,12 @@ } }, "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.6.tgz", - "integrity": "sha512-Nzl7kZ4tjOM2LJpejBMPwZs7OJfc26++2HsMQuSrw6gxpqXGtZZ3Rj4Zt4Qm7vulMZL2gHIGGc2stnlQnHQCqA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz", + "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -825,12 +800,12 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz", - "integrity": "sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -840,12 +815,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", + "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -855,12 +830,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -894,12 +869,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1011,12 +986,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", - "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1042,12 +1017,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1057,15 +1032,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", - "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" }, "engines": { "node": ">=6.9.0" @@ -1075,14 +1050,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1092,12 +1067,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1107,12 +1082,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", - "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1122,13 +1097,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1138,13 +1113,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", - "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1155,18 +1130,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -1177,13 +1150,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1193,12 +1166,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1208,13 +1181,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1224,12 +1197,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1238,13 +1211,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1255,13 +1244,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1271,12 +1260,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1287,13 +1276,13 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz", - "integrity": "sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-flow": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1303,13 +1292,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1319,14 +1308,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1336,12 +1325,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1352,12 +1341,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1367,12 +1356,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1383,12 +1372,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1398,13 +1387,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1414,14 +1403,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1431,15 +1420,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1449,13 +1438,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1465,13 +1454,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1481,12 +1470,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1496,12 +1485,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1512,12 +1501,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1528,15 +1517,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1546,13 +1535,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1562,12 +1551,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1578,13 +1567,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1595,12 +1584,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1610,13 +1599,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1626,14 +1615,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1644,12 +1633,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1659,12 +1648,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", - "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1674,16 +1663,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -1693,12 +1682,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1708,12 +1697,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz", - "integrity": "sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1723,12 +1712,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.6.tgz", - "integrity": "sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1738,13 +1727,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", - "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1754,12 +1743,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1770,12 +1759,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1785,15 +1774,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.6.tgz", - "integrity": "sha512-W3gQydMb0SY99y/2lV0Okx2xg/8KzmZLQsLaiCmwNRl1kKomz14VurEm+2TossUb+sRvBCnGe+wx8KtIgDtBbQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz", + "integrity": "sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -1805,12 +1794,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1820,13 +1809,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1836,12 +1825,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1851,12 +1840,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1866,12 +1855,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1881,15 +1870,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", - "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-typescript": "^7.24.1" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1899,12 +1889,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1914,13 +1904,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1930,13 +1920,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1946,13 +1936,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1962,27 +1952,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", - "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1994,59 +1985,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.4", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -2057,14 +2049,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz", - "integrity": "sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-transform-flow-strip-types": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2088,17 +2080,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", - "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-transform-react-display-name": "^7.24.1", - "@babel/plugin-transform-react-jsx": "^7.23.4", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2108,16 +2100,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", - "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-syntax-jsx": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-typescript": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2152,9 +2144,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2170,33 +2162,30 @@ "dev": true }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2205,13 +2194,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2246,9 +2235,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2277,6 +2266,16 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -2292,6 +2291,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -2332,6 +2343,7 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -2342,6 +2354,28 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -2359,6 +2393,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@isaacs/ttlcache": { @@ -2556,9 +2591,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { @@ -2616,19 +2651,19 @@ } }, "node_modules/@react-native-community/cli": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.6.tgz", - "integrity": "sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==", - "dev": true, - "dependencies": { - "@react-native-community/cli-clean": "13.6.6", - "@react-native-community/cli-config": "13.6.6", - "@react-native-community/cli-debugger-ui": "13.6.6", - "@react-native-community/cli-doctor": "13.6.6", - "@react-native-community/cli-hermes": "13.6.6", - "@react-native-community/cli-server-api": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "@react-native-community/cli-types": "13.6.6", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.9.tgz", + "integrity": "sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==", + "dev": true, + "dependencies": { + "@react-native-community/cli-clean": "13.6.9", + "@react-native-community/cli-config": "13.6.9", + "@react-native-community/cli-debugger-ui": "13.6.9", + "@react-native-community/cli-doctor": "13.6.9", + "@react-native-community/cli-hermes": "13.6.9", + "@react-native-community/cli-server-api": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "@react-native-community/cli-types": "13.6.9", "chalk": "^4.1.2", "commander": "^9.4.1", "deepmerge": "^4.3.0", @@ -2640,19 +2675,19 @@ "semver": "^7.5.2" }, "bin": { - "react-native": "build/bin.js" + "rnc-cli": "build/bin.js" }, "engines": { "node": ">=18" } }, "node_modules/@react-native-community/cli-clean": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.6.tgz", - "integrity": "sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz", + "integrity": "sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==", "dev": true, "dependencies": { - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-tools": "13.6.9", "chalk": "^4.1.2", "execa": "^5.0.0", "fast-glob": "^3.3.2" @@ -2729,12 +2764,12 @@ } }, "node_modules/@react-native-community/cli-config": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.6.tgz", - "integrity": "sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.9.tgz", + "integrity": "sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==", "dev": true, "dependencies": { - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-tools": "13.6.9", "chalk": "^4.1.2", "cosmiconfig": "^5.1.0", "deepmerge": "^4.3.0", @@ -2813,25 +2848,25 @@ } }, "node_modules/@react-native-community/cli-debugger-ui": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.6.tgz", - "integrity": "sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.9.tgz", + "integrity": "sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==", "dev": true, "dependencies": { "serve-static": "^1.13.1" } }, "node_modules/@react-native-community/cli-doctor": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.6.tgz", - "integrity": "sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.9.tgz", + "integrity": "sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==", "dev": true, "dependencies": { - "@react-native-community/cli-config": "13.6.6", - "@react-native-community/cli-platform-android": "13.6.6", - "@react-native-community/cli-platform-apple": "13.6.6", - "@react-native-community/cli-platform-ios": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-config": "13.6.9", + "@react-native-community/cli-platform-android": "13.6.9", + "@react-native-community/cli-platform-apple": "13.6.9", + "@react-native-community/cli-platform-ios": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", "chalk": "^4.1.2", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", @@ -2914,9 +2949,9 @@ } }, "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -2950,13 +2985,13 @@ } }, "node_modules/@react-native-community/cli-hermes": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.6.tgz", - "integrity": "sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.9.tgz", + "integrity": "sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==", "dev": true, "dependencies": { - "@react-native-community/cli-platform-android": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-platform-android": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", "chalk": "^4.1.2", "hermes-profile-transformer": "^0.0.6" } @@ -3032,12 +3067,12 @@ } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.6.tgz", - "integrity": "sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.9.tgz", + "integrity": "sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==", "dev": true, "dependencies": { - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-tools": "13.6.9", "chalk": "^4.1.2", "execa": "^5.0.0", "fast-glob": "^3.3.2", @@ -3116,12 +3151,12 @@ } }, "node_modules/@react-native-community/cli-platform-apple": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.6.tgz", - "integrity": "sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.9.tgz", + "integrity": "sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==", "dev": true, "dependencies": { - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-tools": "13.6.9", "chalk": "^4.1.2", "execa": "^5.0.0", "fast-glob": "^3.3.2", @@ -3200,22 +3235,22 @@ } }, "node_modules/@react-native-community/cli-platform-ios": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.6.tgz", - "integrity": "sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.9.tgz", + "integrity": "sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==", "dev": true, "dependencies": { - "@react-native-community/cli-platform-apple": "13.6.6" + "@react-native-community/cli-platform-apple": "13.6.9" } }, "node_modules/@react-native-community/cli-server-api": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.6.tgz", - "integrity": "sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.9.tgz", + "integrity": "sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==", "dev": true, "dependencies": { - "@react-native-community/cli-debugger-ui": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", + "@react-native-community/cli-debugger-ui": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.1", @@ -3226,9 +3261,9 @@ } }, "node_modules/@react-native-community/cli-tools": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.6.tgz", - "integrity": "sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.9.tgz", + "integrity": "sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==", "dev": true, "dependencies": { "appdirsjs": "^1.2.4", @@ -3303,9 +3338,9 @@ } }, "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3327,9 +3362,9 @@ } }, "node_modules/@react-native-community/cli-types": { - "version": "13.6.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.6.tgz", - "integrity": "sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.9.tgz", + "integrity": "sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==", "dev": true, "dependencies": { "joi": "^17.2.1" @@ -3446,9 +3481,9 @@ } }, "node_modules/@react-native-community/cli/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3470,30 +3505,30 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.83.tgz", - "integrity": "sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.87.tgz", + "integrity": "sha512-1XmRhqQchN+pXPKEKYdpJlwESxVomJOxtEnIkbo7GAlaN2sym84fHEGDXAjLilih5GVPpcpSmFzTy8jx3LtaFg==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.83.tgz", - "integrity": "sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", "dev": true, "dependencies": { - "@react-native/codegen": "0.74.83" + "@react-native/codegen": "0.74.87" }, "engines": { "node": ">=18" } }, "node_modules/@react-native/babel-preset": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.83.tgz", - "integrity": "sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", "dev": true, "dependencies": { "@babel/core": "^7.20.0", @@ -3536,7 +3571,7 @@ "@babel/plugin-transform-typescript": "^7.5.0", "@babel/plugin-transform-unicode-regex": "^7.0.0", "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.74.83", + "@react-native/babel-plugin-codegen": "0.74.87", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -3548,9 +3583,9 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.83.tgz", - "integrity": "sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", "dev": true, "dependencies": { "@babel/parser": "^7.20.0", @@ -3569,15 +3604,15 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.83.tgz", - "integrity": "sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.87.tgz", + "integrity": "sha512-EgJG9lSr8x3X67dHQKQvU6EkO+3ksVlJHYIVv6U/AmW9dN80BEFxgYbSJ7icXS4wri7m4kHdgeq2PQ7/3vvrTQ==", "dev": true, "dependencies": { - "@react-native-community/cli-server-api": "13.6.6", - "@react-native-community/cli-tools": "13.6.6", - "@react-native/dev-middleware": "0.74.83", - "@react-native/metro-babel-transformer": "0.74.83", + "@react-native-community/cli-server-api": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "@react-native/dev-middleware": "0.74.87", + "@react-native/metro-babel-transformer": "0.74.87", "chalk": "^4.0.0", "execa": "^5.1.1", "metro": "^0.80.3", @@ -3662,22 +3697,22 @@ } }, "node_modules/@react-native/debugger-frontend": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.83.tgz", - "integrity": "sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.87.tgz", + "integrity": "sha512-MN95DJLYTv4EqJc+9JajA3AJZSBYJz2QEJ3uWlHrOky2vKrbbRVaW1ityTmaZa2OXIvNc6CZwSRSE7xCoHbXhQ==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@react-native/dev-middleware": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.83.tgz", - "integrity": "sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.87.tgz", + "integrity": "sha512-7TmZ3hTHwooYgIHqc/z87BMe1ryrIqAUi+AF7vsD+EHCGxHFdMjSpf1BZ2SUPXuLnF2cTiTfV2RwhbPzx0tYIA==", "dev": true, "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.74.83", + "@react-native/debugger-frontend": "0.74.87", "@rnx-kit/chromium-edge-launcher": "^1.0.0", "chrome-launcher": "^0.15.2", "connect": "^3.6.5", @@ -3726,20 +3761,20 @@ } }, "node_modules/@react-native/eslint-config": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.74.83.tgz", - "integrity": "sha512-nStDAlS6aIBxxj+l1pxyPkRDxuoRsBApOdrUP28ISMIQNB6OHIHhHaR0XHiCtK3q+bDOQQQJw0qHHogOoaa/NA==", + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.74.87.tgz", + "integrity": "sha512-5n1KdlUXxFA10VbcWXncRcV6eDO1AwnCAaNed1Yqzy1nbtyXmkMLoYJC/nnWJdMBqpzCU5HrwhWdyuj2K2OAUg==", "dev": true, "dependencies": { "@babel/core": "^7.20.0", "@babel/eslint-parser": "^7.20.0", - "@react-native/eslint-plugin": "0.74.83", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", + "@react-native/eslint-plugin": "0.74.87", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", "eslint-config-prettier": "^8.5.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-ft-flow": "^2.0.1", - "eslint-plugin-jest": "^26.5.3", + "eslint-plugin-jest": "^27.9.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", @@ -3753,368 +3788,136 @@ "prettier": ">=2" } }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "node_modules/@react-native/eslint-plugin": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.74.87.tgz", + "integrity": "sha512-AtUQM3ShGlOAV8Z8p9NmnXfrN762Tb4NnInQQPheP1sjbJsFpxTui+S/uGrL7I2wBrdtADnOKkb6yYhRU0OKOg==", "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "node_modules/@react-native/gradle-plugin": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.87.tgz", + "integrity": "sha512-T+VX0N1qP+U9V4oAtn7FTX7pfsoVkd1ocyw9swYXgJqU2fK7hC9famW7b3s3ZiufPGPr1VPJe2TVGtSopBjL6A==", "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "node_modules/@react-native/js-polyfills": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.87.tgz", + "integrity": "sha512-M5Evdn76CuVEF0GsaXiGi95CBZ4IWubHqwXxV9vG9CC9kq0PSkoM2Pn7Lx7dgyp4vT7ccJ8a3IwHbe+5KJRnpw==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18" } }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.87.tgz", + "integrity": "sha512-UsJCO24sNax2NSPBmV1zLEVVNkS88kcgAiYrZHtYSwSjpl4WZ656tIeedBfiySdJ94Hr3kQmBYLipV5zk0NI1A==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.74.87", + "hermes-parser": "0.19.1", + "nullthrows": "^1.1.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@babel/core": "*" } }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "node_modules/@react-native/normalize-colors": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.87.tgz", + "integrity": "sha512-Xh7Nyk/MPefkb0Itl5Z+3oOobeG9lfLb7ZOY2DKpFnoCE1TzBmib9vMNdFaLdSxLIP+Ec6icgKtdzYg8QUPYzA==", + "dev": true }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "node_modules/@react-native/virtualized-lists": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.87.tgz", + "integrity": "sha512-lsGxoFMb0lyK/MiplNKJpD+A1EoEUumkLrCjH4Ht+ZlG8S0BfCxmskLZ6qXn3BiDSkLjfjI/qyZ3pnxNBvkXpQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true } } }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "node_modules/@rnx-kit/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" + "@types/node": "^18.0.0", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=14.15" } }, - "node_modules/@react-native/eslint-config/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": { + "version": "18.19.49", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.49.tgz", + "integrity": "sha512-ALCeIR6n0nQ7j0FUF1ycOhrp6+XutJWqEu/vtdEqXFUQwkBfgUA5cEg3ZNmjWGF/ZYA/FcF9QMkL55Ar0O6UrA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@react-native/eslint-config/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "undici-types": "~5.26.4" } }, - "node_modules/@react-native/eslint-config/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@react-native/eslint-config/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "bin": { - "semver": "bin/semver.js" + "mkdirp": "bin/cmd.js" }, "engines": { "node": ">=10" } }, - "node_modules/@react-native/eslint-plugin": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.74.83.tgz", - "integrity": "sha512-JvwDKsFPfWdqSM3/6bBJGECCcSSUwpjFCO1r4e5YQ7G1CUV8wKW2MiixCqX209z2e3vDnCTS2Q1QuqP9/iZ3GA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.83.tgz", - "integrity": "sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.83.tgz", - "integrity": "sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/metro-babel-transformer": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.83.tgz", - "integrity": "sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@react-native/babel-preset": "0.74.83", - "hermes-parser": "0.19.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.83.tgz", - "integrity": "sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==", + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.74.83", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.83.tgz", - "integrity": "sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==", - "dev": true, - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/react": "^18.2.6", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", - "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", - "dev": true, - "dependencies": { - "@types/node": "^18.0.0", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=14.15" - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": { - "version": "18.19.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", - "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -4191,12 +3994,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.4.tgz", - "integrity": "sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", + "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { @@ -4221,25 +4024,15 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.74", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz", - "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", + "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", "dev": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, - "node_modules/@types/react-native": { - "version": "0.73.0", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.73.0.tgz", - "integrity": "sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==", - "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "react-native": "*" - } - }, "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", @@ -4253,9 +4046,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -4268,34 +4061,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4303,67 +4093,27 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4372,16 +4122,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4389,27 +4139,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4418,12 +4166,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4431,21 +4179,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4457,26 +4206,11 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4484,82 +4218,39 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -4610,9 +4301,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4850,29 +4541,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { @@ -4955,13 +4637,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -4969,25 +4651,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5063,13 +4745,12 @@ } }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -5085,9 +4766,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -5104,10 +4785,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -5237,9 +4918,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001605", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", - "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==", + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", "dev": true, "funding": [ { @@ -5515,12 +5196,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -5664,15 +5345,15 @@ } }, "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", "dev": true }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -5840,9 +5521,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.726", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.726.tgz", - "integrity": "sha512-xtjfBXn53RORwkbyKvDfTajtnTp0OJoPOIBzXvkNbb7+YYvCHJflba3L7Txyx/6Fov3ov2bGPr/n5MTixmPhdQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", "dev": true }, "node_modules/emoji-regex": { @@ -5994,14 +5675,14 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", - "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", @@ -6071,9 +5752,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -6197,28 +5878,153 @@ "eslint": "^8.1.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "26.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz", - "integrity": "sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==", + "node_modules/eslint-plugin-jest": { + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^5.10.0" - }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "engines": { + "node": ">=10" } }, "node_modules/eslint-plugin-prettier": { @@ -6243,41 +6049,41 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", - "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "version": "7.35.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", + "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "engines": { "node": ">=10" @@ -6304,6 +6110,16 @@ "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", "dev": true }, + "node_modules/eslint-plugin-react/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/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -6316,6 +6132,18 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-react/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/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -6362,6 +6190,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/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/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6460,6 +6298,18 @@ "node": ">=8" } }, + "node_modules/eslint/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/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6527,9 +6377,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -6609,6 +6459,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6662,9 +6518,9 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", "dev": true, "funding": [ { @@ -6815,9 +6671,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.236.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.236.0.tgz", - "integrity": "sha512-0OEk9Gr+Yj7wjDW2KgaNYUypKau71jAfFyeLQF5iVtxqc6uJHag/MT7pmaEApf4qM7u86DkBcd4ualddYMfbLw==", + "version": "0.245.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.245.1.tgz", + "integrity": "sha512-KaVIjRdCY+APtxQijfV1c7GN1bofByIlR7E6omQLW0sghkA8hh8uufQOqTf3oAAVTExsSLafmdL/QwyvE/gdEg==", "dev": true, "engines": { "node": ">=0.4.0" @@ -6981,6 +6837,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -7009,6 +6866,28 @@ "node": ">=10.13.0" } }, + "node_modules/glob/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/glob/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/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -7019,12 +6898,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7220,12 +7100,15 @@ } }, "node_modules/husky": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", - "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", + "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", "dev": true, "bin": { - "husky": "lib/bin.js" + "husky": "bin.js" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -7251,9 +7134,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -7312,6 +7195,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -7438,12 +7322,15 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8126,9 +8013,9 @@ } }, "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-message-util/node_modules/supports-color": { @@ -8403,9 +8290,9 @@ } }, "node_modules/joi": { - "version": "17.13.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz", - "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "dev": true, "dependencies": { "@hapi/hoek": "^9.3.0", @@ -8603,9 +8490,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true }, "node_modules/jsonfile": { @@ -9109,9 +8996,9 @@ } }, "node_modules/metro": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz", - "integrity": "sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.11.tgz", + "integrity": "sha512-LQxygnIEB628EFcqCwQCkMAIQ5zf0aUnCuFzxwv9rNEwaQG6xdxoSHT8xpV625sWpOqNvrOiC0rYeQuo3aOUhQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", @@ -9128,34 +9015,33 @@ "debug": "^2.2.0", "denodeify": "^1.2.1", "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.20.1", + "hermes-parser": "0.23.1", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.6.3", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.80.9", - "metro-cache": "0.80.9", - "metro-cache-key": "0.80.9", - "metro-config": "0.80.9", - "metro-core": "0.80.9", - "metro-file-map": "0.80.9", - "metro-resolver": "0.80.9", - "metro-runtime": "0.80.9", - "metro-source-map": "0.80.9", - "metro-symbolicate": "0.80.9", - "metro-transform-plugins": "0.80.9", - "metro-transform-worker": "0.80.9", + "metro-babel-transformer": "0.80.11", + "metro-cache": "0.80.11", + "metro-cache-key": "0.80.11", + "metro-config": "0.80.11", + "metro-core": "0.80.11", + "metro-file-map": "0.80.11", + "metro-resolver": "0.80.11", + "metro-runtime": "0.80.11", + "metro-source-map": "0.80.11", + "metro-symbolicate": "0.80.11", + "metro-transform-plugins": "0.80.11", + "metro-transform-worker": "0.80.11", "mime-types": "^2.1.27", - "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", - "rimraf": "^3.0.2", "serialize-error": "^2.1.0", "source-map": "^0.5.6", "strip-ansi": "^6.0.0", "throat": "^5.0.0", - "ws": "^7.5.1", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -9166,13 +9052,14 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz", - "integrity": "sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.11.tgz", + "integrity": "sha512-ViWx0rdAIyfX73HiEC1TXW0hs42fKPuPm4VxmbazM8XBIjykGnkk5i2OVm3+uA1YnAC242AzbX6uy7uJh9Pv3w==", "dev": true, "dependencies": { "@babel/core": "^7.20.0", - "hermes-parser": "0.20.1", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.23.1", "nullthrows": "^1.1.1" }, "engines": { @@ -9180,82 +9067,89 @@ } }, "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz", - "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz", + "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==", "dev": true }, "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz", - "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz", + "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==", "dev": true, "dependencies": { - "hermes-estree": "0.20.1" + "hermes-estree": "0.23.1" } }, "node_modules/metro-cache": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz", - "integrity": "sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.11.tgz", + "integrity": "sha512-Zd5M7W8r1mEGYxiK/+sI5VUn3BhugxQ1fVG6kAak1g8WKbGzM81JUbRvj/yHp3IZfvl2nEjIoxOKg3zJaNtZHg==", "dev": true, "dependencies": { - "metro-core": "0.80.9", - "rimraf": "^3.0.2" + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "metro-core": "0.80.11" }, "engines": { "node": ">=18" } }, "node_modules/metro-cache-key": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz", - "integrity": "sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.11.tgz", + "integrity": "sha512-axhhFOUWOvsgEHRAPSWC2gjoDZ8fiTY0ZfPzFHffXWR25arFrcg2Pdr9ONn/dWeg9gw6rCJZLfq0mEQIDU5zQA==", "dev": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { "node": ">=18" } }, "node_modules/metro-config": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz", - "integrity": "sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.11.tgz", + "integrity": "sha512-NnWKDK3ZWyFnxCluTE3L+nbp30CQBjp6QEPmTCx1cFHPLoWqTX6BqHZ82e+xK95VuGjwKhWk4NihuV3WtcADtw==", "dev": true, "dependencies": { "connect": "^3.6.5", "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.6.3", - "metro": "0.80.9", - "metro-cache": "0.80.9", - "metro-core": "0.80.9", - "metro-runtime": "0.80.9" + "metro": "0.80.11", + "metro-cache": "0.80.11", + "metro-core": "0.80.11", + "metro-runtime": "0.80.11" }, "engines": { "node": ">=18" } }, "node_modules/metro-core": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz", - "integrity": "sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.11.tgz", + "integrity": "sha512-N3I1jDAlACLzcwiZ7npPbV1ZSKdtcPDvivUaI10oCa13TJ2BeIXKlKetkB9qHjY7oyFquDRKt/P6wLlO6aliDw==", "dev": true, "dependencies": { + "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.80.9" + "metro-resolver": "0.80.11" }, "engines": { "node": ">=18" } }, "node_modules/metro-file-map": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz", - "integrity": "sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.11.tgz", + "integrity": "sha512-uHpAKGUWcq6F4hmapZzFFvwAVu0zF8mzgycXPwgyjgM0dmKAT3py7JTBFR/d7jrv4g3n52pvC0Ks6YiIHpFR1A==", "dev": true, "dependencies": { "anymatch": "^3.0.3", "debug": "^2.2.0", "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", "invariant": "^2.2.4", "jest-worker": "^29.6.3", @@ -9287,11 +9181,12 @@ "dev": true }, "node_modules/metro-minify-terser": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz", - "integrity": "sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.11.tgz", + "integrity": "sha512-eBLEv394IVYghCtjSEqvRqCBwpJRc4yAMGO035PdF/tO3n0eWHWlNGj896k26KayiZLa8440/iOBorg5/RcFxg==", "dev": true, "dependencies": { + "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" }, "engines": { @@ -9299,38 +9194,43 @@ } }, "node_modules/metro-resolver": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz", - "integrity": "sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.11.tgz", + "integrity": "sha512-g1ntyySE22OCyy7ycdmiexcdfOS/yUrevUFg2+GCGpPWnDC4Lj71/AeKbkPVYjFEHQJhd/EALGo3EzxMhUpR5A==", "dev": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { "node": ">=18" } }, "node_modules/metro-runtime": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz", - "integrity": "sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.11.tgz", + "integrity": "sha512-EI7idlPKPZntUnht2ipFhIVR4+PyjRxCXi4xcDyJfrGhOJH/EfXjb5jp3sYN/np6m9HOtCniBOmL1twlDtmeaA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" }, "engines": { "node": ">=18" } }, "node_modules/metro-source-map": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz", - "integrity": "sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.11.tgz", + "integrity": "sha512-s/lxGxUBVYhufYmJBLpxk1m6m73KbcXBS30T1TGPKJWhrO/hu6T0i9fqS6r/z4LdhB/TGQkHoB1VWiQ/J445iQ==", "dev": true, "dependencies": { "@babel/traverse": "^7.20.0", "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.80.9", + "metro-symbolicate": "0.80.11", "nullthrows": "^1.1.1", - "ob1": "0.80.9", + "ob1": "0.80.11", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -9348,13 +9248,14 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz", - "integrity": "sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.11.tgz", + "integrity": "sha512-xYQYC5dZd9qtK6gxwsnzgw3Byv9juQnJPcnt+fFcNfQBPxiZNuDa8tLq240btVGG3giQfmkNTWe1lHKsFddDBQ==", "dev": true, "dependencies": { + "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.80.9", + "metro-source-map": "0.80.11", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -9377,15 +9278,16 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz", - "integrity": "sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.11.tgz", + "integrity": "sha512-UFs1M8OAE6EVeja4qGo7zjmaXietO8DdcoSma4Oz9oCwXom2hVwCFCuR5QboWMOrHodLOSDNFCt5z4qK8A+FZQ==", "dev": true, "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.0", "@babel/template": "^7.0.0", "@babel/traverse": "^7.20.0", + "flow-enums-runtime": "^0.0.6", "nullthrows": "^1.1.1" }, "engines": { @@ -9393,22 +9295,23 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz", - "integrity": "sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.11.tgz", + "integrity": "sha512-HQHp/Ri0GAf3MELlI3u3QJvlk0YpeDofUmvNpas+xIGEE2mOiR6sbTQYs09IncSlCfM6jtu02HMMHjBq4vxiRA==", "dev": true, "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.0", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", - "metro": "0.80.9", - "metro-babel-transformer": "0.80.9", - "metro-cache": "0.80.9", - "metro-cache-key": "0.80.9", - "metro-minify-terser": "0.80.9", - "metro-source-map": "0.80.9", - "metro-transform-plugins": "0.80.9", + "flow-enums-runtime": "^0.0.6", + "metro": "0.80.11", + "metro-babel-transformer": "0.80.11", + "metro-cache": "0.80.11", + "metro-cache-key": "0.80.11", + "metro-minify-terser": "0.80.11", + "metro-source-map": "0.80.11", + "metro-transform-plugins": "0.80.11", "nullthrows": "^1.1.1" }, "engines": { @@ -9489,18 +9392,18 @@ } }, "node_modules/metro/node_modules/hermes-estree": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz", - "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz", + "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==", "dev": true }, "node_modules/metro/node_modules/hermes-parser": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz", - "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz", + "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==", "dev": true, "dependencies": { - "hermes-estree": "0.20.1" + "hermes-estree": "0.23.1" } }, "node_modules/metro/node_modules/ms": { @@ -9531,9 +9434,9 @@ } }, "node_modules/metro/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -9552,12 +9455,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -9577,9 +9480,9 @@ } }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", "dev": true, "engines": { "node": ">= 0.6" @@ -9597,6 +9500,15 @@ "node": ">= 0.6" } }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -9607,15 +9519,18 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -9651,14 +9566,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -9701,6 +9608,28 @@ "node": ">= 0.10.5" } }, + "node_modules/node-dir/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/node-dir/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/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -9737,9 +9666,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/node-stream-zip": { @@ -9783,10 +9712,13 @@ "dev": true }, "node_modules/ob1": { - "version": "0.80.9", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz", - "integrity": "sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==", + "version": "0.80.11", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.11.tgz", + "integrity": "sha512-1FqQEnd4n3UJ441/eHSKCgiMGf1RbrR/aXN0ybJ27zhbq+cc4mpE4WHLuzgNEnXu/9wf43lnAUL0WN7vcVD8Yg==", "dev": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { "node": ">=18" } @@ -9801,10 +9733,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9868,23 +9803,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "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/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -9969,17 +9887,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -10209,9 +10127,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, "node_modules/picomatch": { @@ -10345,9 +10263,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -10606,9 +10524,9 @@ } }, "node_modules/react-devtools-core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.2.0.tgz", - "integrity": "sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.1.tgz", + "integrity": "sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==", "dev": true, "dependencies": { "shell-quote": "^1.6.1", @@ -10616,9 +10534,9 @@ } }, "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -10643,22 +10561,22 @@ "dev": true }, "node_modules/react-native": { - "version": "0.74.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.74.1.tgz", - "integrity": "sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==", + "version": "0.74.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.74.5.tgz", + "integrity": "sha512-Bgg2WvxaGODukJMTZFTZBNMKVaROHLwSb8VAGEdrlvKwfb1hHg/3aXTUICYk7dwgAnb+INbGMwnF8yeAgIUmqw==", "dev": true, "dependencies": { "@jest/create-cache-key-function": "^29.6.3", - "@react-native-community/cli": "13.6.6", - "@react-native-community/cli-platform-android": "13.6.6", - "@react-native-community/cli-platform-ios": "13.6.6", - "@react-native/assets-registry": "0.74.83", - "@react-native/codegen": "0.74.83", - "@react-native/community-cli-plugin": "0.74.83", - "@react-native/gradle-plugin": "0.74.83", - "@react-native/js-polyfills": "0.74.83", - "@react-native/normalize-colors": "0.74.83", - "@react-native/virtualized-lists": "0.74.83", + "@react-native-community/cli": "13.6.9", + "@react-native-community/cli-platform-android": "13.6.9", + "@react-native-community/cli-platform-ios": "13.6.9", + "@react-native/assets-registry": "0.74.87", + "@react-native/codegen": "0.74.87", + "@react-native/community-cli-plugin": "0.74.87", + "@react-native/gradle-plugin": "0.74.87", + "@react-native/js-polyfills": "0.74.87", + "@react-native/normalize-colors": "0.74.87", + "@react-native/virtualized-lists": "0.74.87", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -10735,15 +10653,6 @@ "node": ">= 18.0.0" } }, - "node_modules/react-native-builder-bob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/react-native-builder-bob/node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -10778,6 +10687,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -11176,6 +11086,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -11701,6 +11612,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -11854,9 +11775,9 @@ } }, "node_modules/terser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", - "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -11884,9 +11805,9 @@ "dev": true }, "node_modules/theoplayer": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-7.6.0.tgz", - "integrity": "sha512-/7MWj1WXnZacZYLIQaCO3BR/FHkxhOyxNdA8KiGOFIgJVefwCNQRK/m0+ugTuLT+mJ2BVyzEij3DxLWPtUGfGw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-7.11.0.tgz", + "integrity": "sha512-H88eezCxWjR0RnkwjvoPz8gUhaK1NApTleNZKMTI4yOMiqLLqBhgfQpWkj9nmoxcvy44cfTQWvn+Cl55TjE60A==", "dev": true }, "node_modules/throat": { @@ -11990,9 +11911,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/tsutils": { @@ -12120,9 +12041,9 @@ } }, "node_modules/typedoc": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.12.tgz", - "integrity": "sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==", + "version": "0.25.13", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", + "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -12151,49 +12072,25 @@ } }, "node_modules/typedoc-plugin-mdn-links": { - "version": "3.1.19", - "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.1.19.tgz", - "integrity": "sha512-v08h/JorBemjl6xQyw+tB1P5BX2OUI9zr9vR5ZTuLsmETUrS3NC2z6ou8Ci0FDjSL0nA1tGsdXhUn42sEgkkUA==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.2.11.tgz", + "integrity": "sha512-0VlF21O3S1L373UTkUFleoQDrgkh5quAqjCVusBaa3czLahK6LsUxQj6PRqbT5xN0emUVYnT7UTwe8haU2MFrw==", "dev": true, "peerDependencies": { - "typedoc": ">= 0.23.14 || 0.24.x || 0.25.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "typedoc": ">= 0.23.14 || 0.24.x || 0.25.x || 0.26.x" } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { @@ -12221,9 +12118,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -12285,9 +12182,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -12304,8 +12201,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -12437,13 +12334,13 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", "dev": true, "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", "is-finalizationregistry": "^1.0.2", @@ -12452,8 +12349,8 @@ "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -12505,6 +12402,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -12573,9 +12479,9 @@ } }, "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", "dev": true, "dependencies": { "async-limiter": "~1.0.0" @@ -12606,9 +12512,9 @@ "dev": true }, "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 1e5823912..948c0d20e 100644 --- a/package.json +++ b/package.json @@ -47,21 +47,20 @@ "registry": "https://registry.npmjs.org/" }, "devDependencies": { - "@react-native/eslint-config": "^0.74.83", - "@types/react": "^18.2.24", - "@types/react-native": "^0.73.0", - "eslint": "^8.56.0", - "husky": "^6.0.0", + "@react-native/eslint-config": "^0.74.87", + "@types/react": "^18.3.5", + "eslint": "^8.57.0", + "husky": "^9.1.5", "pod-install": "^0.1.39", - "prettier": "^3.2.5", + "prettier": "^3.3.3", "react": "^18.2.0", - "react-native": "^0.74.1", + "react-native": "^0.74.5", "react-native-builder-bob": "^0.23.2", - "theoplayer": "^7.6.0", - "typedoc": "^0.25.12", + "theoplayer": "^7.11.0", + "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", - "typedoc-plugin-mdn-links": "^3.1.18", - "typescript": "5.0.4" + "typedoc-plugin-mdn-links": "^3.2.11", + "typescript": "5.1.6" }, "peerDependencies": { "react": "*", From 1d585d5c2b02fc399cff3951f1ea8bbf2b06a8d4 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 14:00:24 +0200 Subject: [PATCH 02/31] Update theoplayer range --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index edf1babcc..25054a08b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^6.0.0 || ^7.0.0" + "theoplayer": "^6 || ^7 || ^8" }, "peerDependenciesMeta": { "theoplayer": { diff --git a/package.json b/package.json index 948c0d20e..c1fb90e0e 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^6.0.0 || ^7.0.0" + "theoplayer": "^6 || ^7 || ^8" }, "peerDependenciesMeta": { "theoplayer": { From cb0b0f3643521a4a4579571c9da49dd7a2eb078f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 14:37:11 +0200 Subject: [PATCH 03/31] Update scripts --- .eslintignore | 2 + .eslintrc | 30 ---- .prettierignore | 7 + .prettierrc.js | 7 - .prettierrc.json | 15 ++ app.plugin.js | 67 ++++---- eslint.config.mjs | 18 +++ example/__tests__/App-test.tsx | 14 -- example/package.json | 1 - package-lock.json | 269 ++++++++++++++++++++++++++++++++- package.json | 8 +- tsconfig.build.json | 1 - 12 files changed, 342 insertions(+), 97 deletions(-) create mode 100644 .eslintignore delete mode 100644 .eslintrc create mode 100644 .prettierignore delete mode 100644 .prettierrc.js create mode 100644 .prettierrc.json create mode 100644 eslint.config.mjs delete mode 100644 example/__tests__/App-test.tsx diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..f8e1a48a3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +*/lib/ +*/test/ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index d7e687a00..000000000 --- a/.eslintrc +++ /dev/null @@ -1,30 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "env": { - "node": true - }, - "plugins": [ - "@typescript-eslint", - "react", - "react-native" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react/recommended" - ], - "rules": { - "max-len": ["error", { "code": 150, "ignoreComments": true, "ignoreStrings": true, "ignoreTemplateLiterals": true }], - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-unused-vars": ["warn"], - "@typescript-eslint/no-explicit-any": ["warn"] - }, - "settings": { - "react": { - "version": "detect" - } - } -} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..492fb90ee --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +*/lib/ + +# TypeDoc +api/ + +tsconfig.json +*.md diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 74e74db88..000000000 --- a/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - bracketSpacing: true, - jsxBracketSameLine: true, - singleQuote: true, - trailingComma: 'all', - printWidth: 150, -}; diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000..198e061d3 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,15 @@ +{ + "bracketSpacing": true, + "jsxBracketSameLine": true, + "singleQuote": true, + "trailingComma": "all", + "printWidth": 150, + "overrides": [ + { + "files": ["**/*.json", "**/*.yml"], + "options": { + "tabWidth": 2 + } + } + ] +} diff --git a/app.plugin.js b/app.plugin.js index 0293ac831..d4cef703c 100644 --- a/app.plugin.js +++ b/app.plugin.js @@ -8,50 +8,47 @@ * }] * ] */ -const {withProjectBuildGradle, withGradleProperties} = require('@expo/config-plugins'); +const { withProjectBuildGradle, withGradleProperties } = require('@expo/config-plugins'); function mapAndroidExtensionKey(ext) { - switch (ext) { - case "ima": - return "THEOplayer_extensionGoogleIMA"; - case "dai": - return "THEOplayer_extensionGoogleDAI"; - case "cast": - return "THEOplayer_extensionCast"; - default: - return undefined; - } + switch (ext) { + case 'ima': + return 'THEOplayer_extensionGoogleIMA'; + case 'dai': + return 'THEOplayer_extensionGoogleDAI'; + case 'cast': + return 'THEOplayer_extensionCast'; + default: + return undefined; + } } const applyAndroidExtensions = (config, extensions) => { - return withGradleProperties(config, (config) => { - extensions?.forEach(ext => { - const key = mapAndroidExtensionKey(ext); - if (key) { - config.modResults.push({type: "property", key, value: true}); - } - }); - return config; + return withGradleProperties(config, (config) => { + extensions?.forEach((ext) => { + const key = mapAndroidExtensionKey(ext); + if (key) { + config.modResults.push({ type: 'property', key, value: true }); + } }); -} + return config; + }); +}; const withAndroidTHEOplayer = (config, props) => { - // Apply Android extensions - const {extensions} = props | {}; - config = applyAndroidExtensions(config, extensions); + // Apply Android extensions + const { extensions } = props | {}; + config = applyAndroidExtensions(config, extensions); - // Add the localMaven repo to the project's repositories - return withProjectBuildGradle(config, (config) => { - const localMaven = 'maven { url("$rootDir/../node_modules/react-native-theoplayer/android/local") }'; - config.modResults.contents = config.modResults.contents.replace( - /allprojects\s*\{\s*repositories\s*\{/, - `$&\n\t\t${localMaven}` - ) - return config; - }); + // Add the localMaven repo to the project's repositories + return withProjectBuildGradle(config, (config) => { + const localMaven = 'maven { url("$rootDir/../node_modules/react-native-theoplayer/android/local") }'; + config.modResults.contents = config.modResults.contents.replace(/allprojects\s*\{\s*repositories\s*\{/, `$&\n\t\t${localMaven}`); + return config; + }); }; module.exports = (config, props) => { - // Apply Android modifications - return withAndroidTHEOplayer(config, props); -} + // Apply Android modifications + return withAndroidTHEOplayer(config, props); +}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..3bcac523f --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,18 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintConfigPrettier from 'eslint-config-prettier'; +import typescriptEslint from 'typescript-eslint'; + +export default typescriptEslint.config(eslint.configs.recommended, ...typescriptEslint.configs.recommended, eslintConfigPrettier, { + rules: { + '@typescript-eslint/no-unused-vars': [ + 'warn', + { + argsIgnorePattern: '^_', + }, + ], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + }, +}); diff --git a/example/__tests__/App-test.tsx b/example/__tests__/App-test.tsx deleted file mode 100644 index 4edaa0a8d..000000000 --- a/example/__tests__/App-test.tsx +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @format - */ - -import 'react-native'; -import React from 'react'; -import App from '../src/App'; - -// Note: test renderer must be required after react-native. -import renderer from 'react-test-renderer'; - -it('renders correctly', () => { - renderer.create(); -}); diff --git a/example/package.json b/example/package.json index 10f1e39e3..0161f4e9b 100644 --- a/example/package.json +++ b/example/package.json @@ -10,7 +10,6 @@ "web": "webpack-dev-server --config ./web/webpack.config.js --mode development", "web-release": "webpack --config ./web/webpack.config.js --mode production", "start": "npx react-native start", - "test": "jest", "lint": "eslint \"**/*.{ts,tsx}\"" }, "dependencies": { diff --git a/package-lock.json b/package-lock.json index 25054a08b..20c6850fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,9 +12,11 @@ "buffer": "^6.0.3" }, "devDependencies": { + "@eslint/js": "^9.9.1", "@react-native/eslint-config": "^0.74.87", "@types/react": "^18.3.5", "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", "husky": "^9.1.5", "pod-install": "^0.1.39", "prettier": "^3.3.3", @@ -25,7 +27,8 @@ "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.2.11", - "typescript": "5.1.6" + "typescript": "5.1.6", + "typescript-eslint": "^8.4.0" }, "engines": { "node": ">=16" @@ -2316,12 +2319,12 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@hapi/hoek": { @@ -3788,6 +3791,18 @@ "prettier": ">=2" } }, + "node_modules/@react-native/eslint-config/node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/@react-native/eslint-plugin": { "version": "0.74.87", "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.74.87.tgz", @@ -5831,9 +5846,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -6175,6 +6190,15 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12093,6 +12117,235 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", + "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.4.0", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", diff --git a/package.json b/package.json index c1fb90e0e..3d94aa830 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,10 @@ ], "scripts": { "typescript": "tsc --noEmit", + "prettier": "prettier --check .", + "prettier:fix": "prettier --write .", "lint": "eslint \"**/*.{ts,tsx}\"", + "lint:fix": "npm run lint -- --fix", "prepare": "bob build && husky install", "pods": "cd example && pod-install --quiet", "docs": "typedoc --treatWarningsAsErrors" @@ -47,9 +50,11 @@ "registry": "https://registry.npmjs.org/" }, "devDependencies": { + "@eslint/js": "^9.9.1", "@react-native/eslint-config": "^0.74.87", "@types/react": "^18.3.5", "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", "husky": "^9.1.5", "pod-install": "^0.1.39", "prettier": "^3.3.3", @@ -60,7 +65,8 @@ "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.2.11", - "typescript": "5.1.6" + "typescript": "5.1.6", + "typescript-eslint": "^8.4.0" }, "peerDependencies": { "react": "*", diff --git a/tsconfig.build.json b/tsconfig.build.json index f929194b7..efb1d7ea1 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,4 +1,3 @@ - { "extends": "./tsconfig", "exclude": ["example", "ios", "android"] From 9780595cb03bf98bdfe2d9a51e04518c97e11798 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 15:20:23 +0200 Subject: [PATCH 04/31] Remove unnecessary assertion operator --- android/src/main/java/com/theoplayer/ads/AdAdapter.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt index 5a8c26c48..27b56665e 100644 --- a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +++ b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt @@ -75,10 +75,7 @@ object AdAdapter { */ private fun fromAd(ad: Ad, includeAdBreak: Boolean): WritableMap { val adPayload = Arguments.createMap() - adPayload.putString( - PROP_AD_INTEGRATION, if (ad.integration != null) ad.integration!! - .type else "" - ) + adPayload.putString(PROP_AD_INTEGRATION, ad.integration.type) adPayload.putString(PROP_AD_TYPE, ad.type) adPayload.putString(PROP_AD_ID, ad.id) val adBreak = ad.adBreak From 36c72da527ca0fe335fdbdbca023be0ced5fced7 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 15:25:38 +0200 Subject: [PATCH 05/31] Remove unused import --- android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt b/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt index deef8242a..f099ae9fe 100644 --- a/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt +++ b/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt @@ -1,7 +1,6 @@ package com.theoplayer import android.annotation.SuppressLint -import android.content.* import android.util.Log import android.view.ViewGroup import android.widget.FrameLayout From dba1ef31cc4b4f2f55cee24e7018dbeeb0952e4c Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 16:05:30 +0200 Subject: [PATCH 06/31] Add SGAI demo --- example/src/custom/sources.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/example/src/custom/sources.json b/example/src/custom/sources.json index 12fa69b3d..8b127135c 100644 --- a/example/src/custom/sources.json +++ b/example/src/custom/sources.json @@ -301,6 +301,28 @@ } } }, + { + "name": "HLS - SGAI (THEOads)", + "os": [ + "web" + ], + "source": { + "sources": { + "src": "https://cluster.dev.theostream.live/nfl-unified-channel/hls/k8s/live/scte35.isml/.m3u8", + "type": "application/x-mpegurl", + "hlsDateRange": true + }, + "ads": [ + { + "integration": "theoads", + "networkCode": "51636543", + "customAssetKey": "nfl-sgai-demo", + "backdropDoubleBox": "https://demo.theoads.live/img/THEOads_double_box.svg", + "backdropLShape": "https://demo.theoads.live/img/THEOads_L_Shape.svg" + } + ] + } + }, { "name": "HLS - CSAI - Google IMA mid-roll VAST", "os": [ From 0c0ae94a4dc4bcb5ac6fc0768edc7e52444f3545 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 15:45:53 +0200 Subject: [PATCH 07/31] Fix trivial warnings --- .../java/com/theoplayer/PlayerEventEmitter.kt | 4 +- .../java/com/theoplayer/ads/AdEventAdapter.kt | 47 +++++++++---------- .../main/java/com/theoplayer/ads/AdsModule.kt | 6 +-- .../broadcast/EventBroadcastModule.kt | 6 +-- .../com/theoplayer/player/PlayerModule.kt | 6 +-- .../theoplayer/track/TextTrackStyleAdapter.kt | 24 +++++----- 6 files changed, 39 insertions(+), 54 deletions(-) diff --git a/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt b/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt index 527587bce..cc662a5c2 100644 --- a/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +++ b/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt @@ -88,7 +88,7 @@ private const val EVENT_PROP_SUITE_VERSION = "playerSuiteVersion" @Suppress("UNCHECKED_CAST") class PlayerEventEmitter internal constructor( private val reactContext: ReactApplicationContext, - playerView: ReactTHEOplayerView + private val playerView: ReactTHEOplayerView ) { @Retention(AnnotationRetention.SOURCE) @StringDef( @@ -163,7 +163,6 @@ class PlayerEventEmitter internal constructor( private val textTrackListeners = HashMap, EventListener<*>>() private val audioTrackListeners = HashMap, EventListener<*>>() private val videoTrackListeners = HashMap, EventListener<*>>() - private val playerView: ReactTHEOplayerView private var adEventAdapter: AdEventAdapter? = null private var castEventAdapter: CastEventAdapter? = null private var lastTimeUpdate: Long = 0 @@ -175,7 +174,6 @@ class PlayerEventEmitter internal constructor( } init { - this.playerView = playerView // Create listeners playerListeners[PlayerEventTypes.SOURCECHANGE] = EventListener> { diff --git a/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt b/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt index 5ce42992f..e1af6ce12 100644 --- a/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt +++ b/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt @@ -21,36 +21,35 @@ private const val EVENT_PROP_TYPE = "type" private const val EVENT_PROP_SUBTYPE = "subType" class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmitter) { - private val eventListener: AdEventListener + private val eventListener: AdEventListener = object : AdEventListener { + override fun ?> onAdEvent(type: EventType?, ad: Ad?, adData: Map?, adError: AdError?) { + val payload = Arguments.createMap() + if (type != null) { + payload.putString(EVENT_PROP_TYPE, mapAdType(type)) + } + if (ad != null) { + payload.putMap(EVENT_PROP_AD, AdAdapter.fromAd(ad)) + } + eventEmitter.emit(payload) + } + + override fun ?> onAdBreakEvent(type: EventType?, adBreak: AdBreak?, adData: Map?, adError: AdError?) { + val payload = Arguments.createMap() + if (type != null) { + payload.putString(EVENT_PROP_TYPE, mapAdType(type)) + } + if (adBreak != null) { + payload.putMap(EVENT_PROP_AD, AdAdapter.fromAdBreak(adBreak)) + } + eventEmitter.emit(payload) + } + } interface AdEventEmitter { fun emit(payload: WritableMap?) } init { - eventListener = object : AdEventListener { - override fun ?> onAdEvent(type: EventType?, ad: Ad?, adData: Map?, adError: AdError?) { - val payload = Arguments.createMap() - if (type != null) { - payload.putString(EVENT_PROP_TYPE, mapAdType(type)) - } - if (ad != null) { - payload.putMap(EVENT_PROP_AD, AdAdapter.fromAd(ad)) - } - eventEmitter.emit(payload) - } - - override fun ?> onAdBreakEvent(type: EventType?, adBreak: AdBreak?, adData: Map?, adError: AdError?) { - val payload = Arguments.createMap() - if (type != null) { - payload.putString(EVENT_PROP_TYPE, mapAdType(type)) - } - if (adBreak != null) { - payload.putMap(EVENT_PROP_AD, AdAdapter.fromAdBreak(adBreak)) - } - eventEmitter.emit(payload) - } - } adsApi.addAllEventsListener(eventListener) } diff --git a/android/src/main/java/com/theoplayer/ads/AdsModule.kt b/android/src/main/java/com/theoplayer/ads/AdsModule.kt index 9e3cb3387..3e1e34ad1 100644 --- a/android/src/main/java/com/theoplayer/ads/AdsModule.kt +++ b/android/src/main/java/com/theoplayer/ads/AdsModule.kt @@ -13,11 +13,7 @@ private const val TAG = "THEORCTAdsModule" class AdsModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) { private val sourceHelper = SourceAdapter() - private val viewResolver: ViewResolver - - init { - viewResolver = ViewResolver(context) - } + private val viewResolver: ViewResolver = ViewResolver(context) override fun getName(): String { return TAG diff --git a/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt b/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt index 5c1cf8c75..26b48dff4 100644 --- a/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +++ b/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt @@ -14,11 +14,7 @@ private const val TAG = "THEORCTEventBroadcastModule" @ReactModule(name = TAG) class EventBroadcastModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) { - private val viewResolver: ViewResolver - - init { - viewResolver = ViewResolver(context) - } + private val viewResolver: ViewResolver = ViewResolver(context) override fun getName(): String { return TAG diff --git a/android/src/main/java/com/theoplayer/player/PlayerModule.kt b/android/src/main/java/com/theoplayer/player/PlayerModule.kt index 72588b32c..e60424d14 100644 --- a/android/src/main/java/com/theoplayer/player/PlayerModule.kt +++ b/android/src/main/java/com/theoplayer/player/PlayerModule.kt @@ -19,11 +19,7 @@ private const val TAG = "THEORCTPlayerModule" @Suppress("unused") class PlayerModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) { - private val viewResolver: ViewResolver - - init { - viewResolver = ViewResolver(context) - } + private val viewResolver: ViewResolver = ViewResolver(context) override fun getName(): String { return TAG diff --git a/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt b/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt index fc8dd6822..4b5238923 100644 --- a/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt +++ b/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt @@ -4,18 +4,18 @@ import android.graphics.Color import com.facebook.react.bridge.ReadableMap import com.theoplayer.android.api.player.track.texttrack.TextTrackStyle -private val PROP_BACKGROUND_COLOR = "backgroundColor" -private val PROP_EDGE_STYLE = "edgeStyle" -private val PROP_FONT_COLOR = "fontColor" -private val PROP_FONT_FAMILY = "fontFamily" -private val PROP_FONT_SIZE = "fontSize" -private val PROP_WINDOW_COLOR = "windowColor" -private val PROP_MARGIN_LEFT = "marginLeft" -private val PROP_MARGIN_TOP = "marginTop" -private val PROP_COLOR_R = "r" -private val PROP_COLOR_G = "g" -private val PROP_COLOR_B = "b" -private val PROP_COLOR_A = "a" +private const val PROP_BACKGROUND_COLOR = "backgroundColor" +private const val PROP_EDGE_STYLE = "edgeStyle" +private const val PROP_FONT_COLOR = "fontColor" +private const val PROP_FONT_FAMILY = "fontFamily" +private const val PROP_FONT_SIZE = "fontSize" +private const val PROP_WINDOW_COLOR = "windowColor" +private const val PROP_MARGIN_LEFT = "marginLeft" +private const val PROP_MARGIN_TOP = "marginTop" +private const val PROP_COLOR_R = "r" +private const val PROP_COLOR_G = "g" +private const val PROP_COLOR_B = "b" +private const val PROP_COLOR_A = "a" object TextTrackStyleAdapter { From e9bd74cb26146bd6e2a0d050cc9da7621240b6e7 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 4 Sep 2024 15:36:39 +0200 Subject: [PATCH 08/31] Implement signature change --- android/src/main/java/com/theoplayer/ads/AdAdapter.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt index 27b56665e..21f65a377 100644 --- a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +++ b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt @@ -210,6 +210,11 @@ object AdAdapter { return ad.getString(PROP_AD_CUSTOM_INTEGRATION) } + override fun getCustomData(): Any? { + // Not supported yet + return null + } + override fun getImaAd(): com.google.ads.interactivemedia.v3.api.Ad { return parseImaAd(ad) } @@ -285,6 +290,11 @@ object AdAdapter { override fun getCustomIntegration(): String? { return adBreak.getString(PROP_AD_CUSTOM_INTEGRATION) } + + override fun getCustomData(): Any? { + // Not supported yet + return null + } } } From c0396cdf98bb6df36c01ef0dcd116a454729d19c Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Wed, 4 Sep 2024 17:09:42 +0200 Subject: [PATCH 09/31] ignore vendor folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9105edd53..9275855db 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,4 @@ ios/custom/Frameworks/tvos/*.xcframework # Jekyll / GitHub Pages _site/ Gemfile.lock +vendor From 034f91583291b3c9f2b7a27f55dd1d4c30ad0c2e Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Wed, 4 Sep 2024 20:56:33 +0200 Subject: [PATCH 10/31] Drop unused properties --- ios/THEOplayerRCTView.swift | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/THEOplayerRCTView.swift b/ios/THEOplayerRCTView.swift index cc4f4b14d..3a20621d8 100644 --- a/ios/THEOplayerRCTView.swift +++ b/ios/THEOplayerRCTView.swift @@ -113,8 +113,6 @@ public class THEOplayerRCTView: UIView { } private func initPlayer() -> THEOplayer? { - let stylePath = Bundle.main.path(forResource:"style", ofType: "css") - let cssPaths = stylePath != nil ? [stylePath!] : [] let config = THEOplayerConfigurationBuilder() config.pip = self.playerPipConfiguration() config.hlsDateRange = self.hlsDateRange From 2066562b1771ed313ef838adf0526697f24d099e Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Thu, 5 Sep 2024 09:31:34 +0200 Subject: [PATCH 11/31] Prevent pod warning on undeterministic uuids --- example/ios/Podfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/example/ios/Podfile b/example/ios/Podfile index 0673d5a6b..06d0c9794 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -10,6 +10,8 @@ if linkage != nil use_frameworks! :linkage => linkage.to_sym end +install! 'cocoapods', :deterministic_uuids => false + target 'ReactNativeTHEOplayer' do platform :ios, '13.4' From 8097a9423fc5b4bd83acf8e0b6697c5e9a52b03c Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Tue, 3 Sep 2024 18:00:41 +0200 Subject: [PATCH 12/31] Fix project name --- example/android/app/build.gradle | 2 +- example/android/settings.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 9405d8e40..0350a7e66 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -109,7 +109,7 @@ def safeExtGet(prop, fallback) { } dependencies { - implementation project(path: ':reactnativetheoplayer') + implementation project(path: ':react-native-theoplayer') implementation "com.google.android.gms:play-services-cast-framework:${safeExtGet('castFrameworkVersion', '+')}" // The version of react-native is set by the React Native Gradle Plugin diff --git a/example/android/settings.gradle b/example/android/settings.gradle index bb622105f..82f5b167d 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -3,5 +3,5 @@ apply from: file("../node_modules/@react-native-community/cli-platform-android/n include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') -include ':reactnativetheoplayer' -project(':reactnativetheoplayer').projectDir = new File(rootProject.projectDir, '../../android') +include ':react-native-theoplayer' +project(':react-native-theoplayer').projectDir = new File(rootProject.projectDir, '../../android') From 1aceae1dcd5f9a966d30e508b09d5aa1ff34721f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Fri, 6 Sep 2024 11:55:18 +0200 Subject: [PATCH 13/31] Remove deprecated UIConfiguration --- .../com/theoplayer/PlayerConfigAdapter.kt | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt b/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt index be42f6f21..4c67a2f0a 100644 --- a/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +++ b/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt @@ -1,6 +1,5 @@ package com.theoplayer -import android.text.TextUtils import com.facebook.react.bridge.ReadableMap import com.google.ads.interactivemedia.v3.api.AdsRenderingSettings import com.google.ads.interactivemedia.v3.api.ImaSdkFactory @@ -11,14 +10,12 @@ import com.theoplayer.android.api.cast.CastStrategy import com.theoplayer.android.api.cast.CastConfiguration import com.theoplayer.android.api.pip.PipConfiguration import com.theoplayer.android.api.player.NetworkConfiguration -import com.theoplayer.android.api.ui.UIConfiguration import com.theoplayer.media.MediaSessionConfig import com.theoplayer.media.MediaSessionConfigAdapter private const val PROP_LICENSE = "license" private const val PROP_LICENSE_URL = "licenseUrl" private const val PROP_PRELOAD = "preload" -private const val PROP_LANGUAGE = "language" private const val PROP_LIVE_OFFSET = "liveOffset" private const val PROP_UI_ENABLED = "uiEnabled" private const val PROP_CAST_STRATEGY = "strategy" @@ -30,7 +27,6 @@ private const val PROP_RETRY_MAX_BACKOFF = "maximumBackoff" private const val PROP_CAST_CONFIGURATION = "cast" private const val PROP_ADS_CONFIGURATION = "ads" private const val PROP_IMA_CONFIGURATION = "ima" -private const val PROP_UI_CONFIGURATION = "ui" private const val PROP_MEDIA_CONTROL = "mediaControl" private const val PROP_PPID = "ppid" private const val PROP_MAX_REDIRECTS = "maxRedirects" @@ -62,9 +58,6 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) { if (hasKey(PROP_LIVE_OFFSET)) { liveOffset(getDouble(PROP_LIVE_OFFSET)) } - if (hasKey(PROP_UI_CONFIGURATION)) { - ui(uiConfig()) - } if (hasKey(PROP_HLS_DATE_RANGE)) { hlsDateRange(getBoolean(PROP_HLS_DATE_RANGE)) } @@ -115,10 +108,6 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) { } featureFlags = convertedMap } - // The current ISO 639-1 language code, get it from the UI config. - uiConfig().language?.let { - language = it - } // The maximum number of VAST redirects. if (hasKey(PROP_MAX_REDIRECTS)) { maxRedirects = getInt(PROP_MAX_REDIRECTS) @@ -164,21 +153,6 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) { } } - /** - * Get UIConfiguration object; these properties apply: - * - language: The language used to localize the ui elements. - */ - private fun uiConfig(): UIConfiguration { - return UIConfiguration.Builder().apply { - configProps?.getMap(PROP_UI_CONFIGURATION)?.run { - val languageString = getString(PROP_LANGUAGE) - if (languageString != null && !TextUtils.isEmpty(languageString)) { - language(languageString) - } - } - }.build() - } - /** * Get CastConfiguration object; these properties apply: * - strategy: The join strategy of the player. From 094e2e33bc07ba53db8c8ad57f2268415058a857 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Fri, 6 Sep 2024 12:08:18 +0200 Subject: [PATCH 14/31] Fix AdIntegrationKind --- android/src/main/java/com/theoplayer/ads/AdAdapter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt index 21f65a377..0b5f353c5 100644 --- a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +++ b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt @@ -203,7 +203,7 @@ object AdAdapter { } override fun getIntegration(): AdIntegrationKind { - return AdIntegrationKind.from(ad.getString(PROP_AD_INTEGRATION)) + return AdIntegrationKind.from(ad.getString(PROP_AD_INTEGRATION)) ?: AdIntegrationKind.CUSTOM } override fun getCustomIntegration(): String? { @@ -284,7 +284,7 @@ object AdAdapter { } override fun getIntegration(): AdIntegrationKind { - return AdIntegrationKind.from(adBreak.getString(PROP_ADBREAK_INTEGRATION)) + return AdIntegrationKind.from(adBreak.getString(PROP_ADBREAK_INTEGRATION)) ?: AdIntegrationKind.CUSTOM } override fun getCustomIntegration(): String? { From b160a6bb5a06827c00e79486973914d6ab084793 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Fri, 6 Sep 2024 12:08:50 +0200 Subject: [PATCH 15/31] Fix trivial warnings --- .../java/com/theoplayer/cache/CacheModule.kt | 16 ++++++------- .../theoplayer/drm/ContentProtectionModule.kt | 3 ++- .../source/GoogleDaiSourceAdapter.kt | 1 + .../theoplayer/source/SSAIAdapterRegistry.kt | 2 +- .../theoplayer/track/QualityListAdapter.kt | 23 +++---------------- .../java/com/theoplayer/util/BridgeUtils.kt | 2 +- 6 files changed, 16 insertions(+), 31 deletions(-) diff --git a/android/src/main/java/com/theoplayer/cache/CacheModule.kt b/android/src/main/java/com/theoplayer/cache/CacheModule.kt index a13527c74..21dd17d10 100644 --- a/android/src/main/java/com/theoplayer/cache/CacheModule.kt +++ b/android/src/main/java/com/theoplayer/cache/CacheModule.kt @@ -46,14 +46,14 @@ class CacheModule(private val context: ReactApplicationContext) : private val onTaskError = mutableMapOf>() private val onTaskStateChange = mutableMapOf>() private val sourceAdapter = SourceAdapter() - private val cache: Cache? + private val cache: Cache get() = THEOplayerGlobal.getSharedInstance(context.applicationContext).cache private val handler = Handler(Looper.getMainLooper()) init { // Add cache event listeners handler.post { - cache?.apply { + cache.apply { // Listen for cache state changes addEventListener(CacheEventTypes.CACHE_STATE_CHANGE) { event -> emit("onCacheStatusChange", Arguments.createMap().apply { @@ -155,7 +155,7 @@ class CacheModule(private val context: ReactApplicationContext) : @ReactMethod fun getInitialState(promise: Promise) { handler.post { - cache?.apply { + cache.apply { // Add listeners to existing tasks tasks.forEach { task -> @@ -175,7 +175,7 @@ class CacheModule(private val context: ReactApplicationContext) : val sourceDescription = sourceAdapter.parseSourceFromJS(source) if (sourceDescription != null) { handler.post { - cache?.createTask( + cache.createTask( sourceDescription, CacheAdapter.parseCachingParameters(parameters) ) @@ -186,21 +186,21 @@ class CacheModule(private val context: ReactApplicationContext) : @ReactMethod fun pauseCachingTask(id: String) { handler.post { - cache?.tasks?.getTaskById(id)?.pause() + cache.tasks.getTaskById(id)?.pause() } } @ReactMethod fun removeCachingTask(id: String) { handler.post { - cache?.tasks?.getTaskById(id)?.remove() + cache.tasks.getTaskById(id)?.remove() } } @ReactMethod fun startCachingTask(id: String) { handler.post { - cache?.tasks?.getTaskById(id)?.start() + cache.tasks.getTaskById(id)?.start() } } @@ -232,7 +232,7 @@ class CacheModule(private val context: ReactApplicationContext) : } private fun taskById(id: String): CachingTask? { - return cache?.tasks?.getTaskById(id) ?: run { + return cache.tasks.getTaskById(id) ?: run { Log.w(TAG, "CachingTask with id $id not found") return null } diff --git a/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt b/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt index a2b842c15..ac46071a4 100644 --- a/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +++ b/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt @@ -19,7 +19,7 @@ data class BridgeRequest( val onTimeout: Runnable ) -private const val TAG = "THEORCTContentProtectionModule" +private const val TAG = "ContentProtectionModule" private const val EVENT_CERTIFICATE_REQUEST = "onCertificateRequest" private const val EVENT_CERTIFICATE_REQUEST_PROCESSED_AS_REQUEST = "onCertificateRequestProcessedAsRequest" @@ -34,6 +34,7 @@ private const val EVENT_LICENSE_REQUEST_PROCESSED_AS_LICENSE = "onLicenseRequest private const val EVENT_LICENSE_RESPONSE = "onLicenseResponse" private const val EVENT_LICENSE_RESPONSE_PROCESSED = "onLicenseResponseProcessed" +@Suppress("unused") class ContentProtectionModule(private val context: ReactApplicationContext) : ReactContextBaseJavaModule(context) { diff --git a/android/src/main/java/com/theoplayer/source/GoogleDaiSourceAdapter.kt b/android/src/main/java/com/theoplayer/source/GoogleDaiSourceAdapter.kt index acdbfbd3b..99d35475c 100644 --- a/android/src/main/java/com/theoplayer/source/GoogleDaiSourceAdapter.kt +++ b/android/src/main/java/com/theoplayer/source/GoogleDaiSourceAdapter.kt @@ -14,6 +14,7 @@ private const val PROP_AVAILABILITY_TYPE = "availabilityType" private const val AVAILABILITY_TYPE_VOD = "vod" private const val ERROR_DAI_NOT_ENABLED = "Google DAI support not enabled." +@Suppress("UNUSED_PARAMETER") @Throws(THEOplayerException::class) fun googleDaiBuilderFromJson(builder: TypedSource.Builder, json: JSONObject): TypedSource.Builder { // Check whether the integration was enabled diff --git a/android/src/main/java/com/theoplayer/source/SSAIAdapterRegistry.kt b/android/src/main/java/com/theoplayer/source/SSAIAdapterRegistry.kt index a498aa88c..0c070e531 100644 --- a/android/src/main/java/com/theoplayer/source/SSAIAdapterRegistry.kt +++ b/android/src/main/java/com/theoplayer/source/SSAIAdapterRegistry.kt @@ -20,7 +20,7 @@ object SSAIAdapterRegistry { _adapters[integration] = adapter } - fun hasIntegration(integration: String): Boolean { + private fun hasIntegration(integration: String): Boolean { return _adapters[integration] != null } diff --git a/android/src/main/java/com/theoplayer/track/QualityListAdapter.kt b/android/src/main/java/com/theoplayer/track/QualityListAdapter.kt index 96d1e58dd..6b43074c8 100644 --- a/android/src/main/java/com/theoplayer/track/QualityListAdapter.kt +++ b/android/src/main/java/com/theoplayer/track/QualityListAdapter.kt @@ -4,26 +4,13 @@ import com.theoplayer.android.api.player.track.mediatrack.quality.Quality import com.theoplayer.android.api.player.track.mediatrack.quality.QualityList import java.util.* -fun emptyQualityList(): QualityList { - return QualityListAdapter() -} - /** * Adapts an Android List to a QualityList. */ -class QualityListAdapter : QualityList { - private var qualities: MutableList - - constructor() { - this.qualities = arrayListOf() - } +class QualityListAdapter(qualities: QualityList) : QualityList { + private var qualities: MutableList = ArrayList() - constructor(qualities: MutableList) { - this.qualities = qualities - } - - constructor(qualities: QualityList) { - this.qualities = ArrayList() + init { for (quality in qualities) { this.qualities.add(quality) } @@ -41,10 +28,6 @@ class QualityListAdapter : QualityList { return qualities.iterator() } - fun asList(): List { - return qualities - } - fun sort(comparator: Comparator) { Collections.sort(qualities, comparator) } diff --git a/android/src/main/java/com/theoplayer/util/BridgeUtils.kt b/android/src/main/java/com/theoplayer/util/BridgeUtils.kt index fab1b5538..4bb0aa2b8 100644 --- a/android/src/main/java/com/theoplayer/util/BridgeUtils.kt +++ b/android/src/main/java/com/theoplayer/util/BridgeUtils.kt @@ -37,7 +37,7 @@ object BridgeUtils { /** * Convert a JSONArray to bridge data. */ - fun fromJSONArrayToBridge(jsonArray: JSONArray): WritableArray { + private fun fromJSONArrayToBridge(jsonArray: JSONArray): WritableArray { return Arguments.createArray().apply { try { for (i in 0 until jsonArray.length()) { From 598e73d90da0e027596c01ffe78fb0ed6df058ee Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Fri, 6 Sep 2024 14:26:18 +0200 Subject: [PATCH 16/31] Update AdIntegrationKind api --- src/api/source/ads/Ads.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/api/source/ads/Ads.ts b/src/api/source/ads/Ads.ts index 8f4c92c64..a68726790 100644 --- a/src/api/source/ads/Ads.ts +++ b/src/api/source/ads/Ads.ts @@ -39,7 +39,7 @@ export interface AdDescription { /** * The integration of the ad break. * - * @defaultValue `'theo'` + * @defaultValue `'csai'` */ integration?: AdIntegrationKind; @@ -88,8 +88,10 @@ export interface AdDescription { /** * The integration of an ad break, represented by a value from the following list: - *
- `'theo'`: Default ad playback. - *
- `'google-ima'`: {@link https://developers.google.com/interactive-media-ads/docs/sdks/html5|Google IMA} pre-integrated ad playback. + *
- `'csai'`: Default CSAI ad playback. + *
- `'theo'`: Old naming for `'csai'` - Default ad playback. (Deprecated) + *
- `'google-ima'`: {@link https://developers.google.com/interactive-media-ads/docs/sdks/html5|Google IMA}. + *
- `'google-dai'`: {@link https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5 | Google DAI}. *
- `'spotx'`: {@link https://developer.spotxchange.com/|SpotX} pre-integrated ad playback. *
- `'freewheel'`: {@link https://vi.freewheel.tv/|FreeWheel} pre-integrated ad playback. *
- `'theoads'`: [Experimental] - API under development, do not use without consulting THEO Technologies. @@ -102,7 +104,9 @@ export interface AdDescription { export enum AdIntegrationKind { freewheel = 'freewheel', google_ima = 'google-ima', + google_dai = 'google-dai', spotx = 'spotx', + csai = 'csai', theo = 'theo', theoads = 'theoads', } From b188b1c16fc79c5b68c9a6da8ed58641676daa77 Mon Sep 17 00:00:00 2001 From: Ceyhun Ozgoc Date: Wed, 21 Aug 2024 15:30:52 +0200 Subject: [PATCH 17/31] Deprecate Jitpack --- android/build.gradle | 2 +- example/android/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index b96749a88..f89f5f80f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -102,7 +102,7 @@ repositories { google() mavenCentral() maven { url("local") } - maven { url 'https://jitpack.io' } + maven { url "https://maven.theoplayer.com/releases" } } dependencies { diff --git a/example/android/build.gradle b/example/android/build.gradle index 7b026d644..f89e8c722 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -30,7 +30,7 @@ allprojects { maven { url("$rootDir/../../android/local") } - maven { url 'https://jitpack.io' } + maven { url "https://maven.theoplayer.com/releases" } google() mavenCentral() } From 96d3b28c87dc0bfaa384b7f350e8e9ca87a54e77 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Mon, 9 Sep 2024 11:06:54 +0200 Subject: [PATCH 18/31] Bump iOS native SDK's to 8.0 --- react-native-theoplayer.podspec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/react-native-theoplayer.podspec b/react-native-theoplayer.podspec index 8c09007fe..53a5b0138 100644 --- a/react-native-theoplayer.podspec +++ b/react-native-theoplayer.podspec @@ -32,23 +32,23 @@ Pod::Spec.new do |s| s.dependency "React-Core" # THEOplayer core Dependency - s.dependency "THEOplayerSDK-core", "~> 7.12" - - if theofeatures.include?("GOOGLE_IMA") + s.dependency "THEOplayerSDK-core", "~> 8.0" + + if theofeatures.include?("GOOGLE_IMA") puts "Adding THEOplayer-Integration-GoogleIMA" - s.dependency "THEOplayer-Integration-GoogleIMA/Base", "~> 7.12" - s.dependency "THEOplayer-Integration-GoogleIMA/Dependencies", "~> 7.12" + s.dependency "THEOplayer-Integration-GoogleIMA/Base", "~> 8.0" + s.dependency "THEOplayer-Integration-GoogleIMA/Dependencies", "~> 8.0" end if theofeatures.include?("CHROMECAST") puts "Adding THEOplayer-Integration-GoogleCast" - s.ios.dependency "THEOplayer-Integration-GoogleCast/Base", "~> 7.12" + s.ios.dependency "THEOplayer-Integration-GoogleCast/Base", "~> 8.0" s.ios.dependency "google-cast-sdk-dynamic-xcframework", "~> 4.8" end if theofeatures.include?("SIDELOADED_TEXTTRACKS") puts "Adding THEOplayer-Connector-SideloadedSubtitle" - s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 7.12" + s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 8.0" end end From 35e6314bc6ab66f29d9ee521be02618657b1c09e Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Mon, 9 Sep 2024 13:19:53 +0200 Subject: [PATCH 19/31] Set duration to NaN in the initial player state --- src/internal/adapter/DefaultNativePlayerState.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/adapter/DefaultNativePlayerState.ts b/src/internal/adapter/DefaultNativePlayerState.ts index 4ff161df1..ea575b99a 100644 --- a/src/internal/adapter/DefaultNativePlayerState.ts +++ b/src/internal/adapter/DefaultNativePlayerState.ts @@ -25,7 +25,7 @@ export class DefaultNativePlayerState extends DefaultTextTrackState implements N seeking = false; volume = 1; currentTime = 0; - duration = 0; + duration = NaN; playbackRate = 1; preload: PreloadType = 'none'; aspectRatio: AspectRatio = AspectRatio.FIT; From dd7ccf344ba495c4000740475cf0eacc0526d49f Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Mon, 9 Sep 2024 13:21:34 +0200 Subject: [PATCH 20/31] Adjust to THEOplayer 8 protocol changes for Ad and AdBreak --- ios/THEOplayerRCTTypeUtils.swift | 10 ++---- ios/ads/THEOplayerRCTAdAdapter.swift | 37 ++++++++++++----------- ios/ads/THEOplayerRCTAdsNative.swift | 22 +++++++------- ios/ads/THEOplayerRCTView+AdsConfig.swift | 30 ------------------ 4 files changed, 32 insertions(+), 67 deletions(-) diff --git a/ios/THEOplayerRCTTypeUtils.swift b/ios/THEOplayerRCTTypeUtils.swift index 56ba974cc..d7ed2d3cc 100644 --- a/ios/THEOplayerRCTTypeUtils.swift +++ b/ios/THEOplayerRCTTypeUtils.swift @@ -101,20 +101,14 @@ class THEOplayerRCTTypeUtils { class func adIntegrationKind(_ integration: String) -> AdIntegrationKind { switch integration { -#if os(iOS) - case "theo": - return AdIntegrationKind.theo - case "freewheel": - return AdIntegrationKind.freewheel -#endif case "google-ima": return AdIntegrationKind.google_ima case "google-dai": return AdIntegrationKind.google_dai case "": - return AdIntegrationKind.defaultKind + return AdIntegrationKind.custom default: - return AdIntegrationKind.defaultKind + return AdIntegrationKind.custom } } diff --git a/ios/ads/THEOplayerRCTAdAdapter.swift b/ios/ads/THEOplayerRCTAdAdapter.swift index 0cbe3ba2d..496127be8 100644 --- a/ios/ads/THEOplayerRCTAdAdapter.swift +++ b/ios/ads/THEOplayerRCTAdAdapter.swift @@ -61,9 +61,8 @@ class THEOplayerRCTAdAdapter { if let skipOffset = ad.skipOffset { adData[PROP_AD_SKIP_OFFSET] = (skipOffset == -1) ? skipOffset : skipOffset } - if processAdBreak, - let adBreak = ad.adBreak { - adData[PROP_AD_BREAK] = THEOplayerRCTAdAdapter.fromAdBreak(adBreak: adBreak) + if processAdBreak { + adData[PROP_AD_BREAK] = THEOplayerRCTAdAdapter.fromAdBreak(adBreak: ad.adBreak) } #if os(iOS) @@ -190,9 +189,9 @@ class THEOplayerRCTAdAdapter { return adBreakData } - class func toAdBreak(adBreakData: [String:Any]?) -> NativeAdBreak? { + class func toAdBreak(adBreakData: [String:Any]?) -> NativeAdBreak { guard let adBreakData = adBreakData else { - return nil + return THEOplayerRCTAdAdapter.defaultAdBreak() } var ads: [NativeAd] = [] @@ -212,24 +211,26 @@ class THEOplayerRCTAdAdapter { customIntegration: adBreakData[PROP_ADBREAK_CUSTOM_INTEGRATION] as? String) } - class private func fromCompanionAds(companionAds: [CompanionAd?]) -> [[String:Any]] { + class func defaultAdBreak() -> NativeAdBreak { + return NativeAdBreak(ads: [], maxDuration: 0, maxRemainingDuration: 0, timeOffset: 0, integration: .custom) + } + + class private func fromCompanionAds(companionAds: [CompanionAd]) -> [[String:Any]] { var companionAdsData: [[String:Any]] = [] - for cAd in companionAds { - if let companionAd = cAd { - var companionAdData: [String:Any] = [:] - companionAdData[PROP_COMPANION_AD_SLOT_ID] = companionAd.adSlotId ?? "" - companionAdData[PROP_COMPANION_ALT_TEXT] = companionAd.altText ?? "" - companionAdData[PROP_COMPANION_CLICK_THROUGH] = companionAd.clickThrough ?? "" - companionAdData[PROP_COMPANION_WIDTH] = companionAd.width ?? 0 - companionAdData[PROP_COMPANION_HEIGHT] = companionAd.height ?? 0 - companionAdData[PROP_COMPANION_RESOURCE_URI] = companionAd.resourceURI ?? "" - companionAdsData.append(companionAdData) - } + for companionAd in companionAds { + var companionAdData: [String:Any] = [:] + companionAdData[PROP_COMPANION_AD_SLOT_ID] = companionAd.adSlotId ?? "" + companionAdData[PROP_COMPANION_ALT_TEXT] = companionAd.altText ?? "" + companionAdData[PROP_COMPANION_CLICK_THROUGH] = companionAd.clickThrough ?? "" + companionAdData[PROP_COMPANION_WIDTH] = companionAd.width + companionAdData[PROP_COMPANION_HEIGHT] = companionAd.height + companionAdData[PROP_COMPANION_RESOURCE_URI] = companionAd.resourceURI ?? "" + companionAdsData.append(companionAdData) } return companionAdsData } - class func toCompanionAds(companiondAdsData: [[String:Any]]?) -> [CompanionAd?] { + class func toCompanionAds(companiondAdsData: [[String:Any]]?) -> [CompanionAd] { return [] } diff --git a/ios/ads/THEOplayerRCTAdsNative.swift b/ios/ads/THEOplayerRCTAdsNative.swift index cb3f29209..13f44f65b 100644 --- a/ios/ads/THEOplayerRCTAdsNative.swift +++ b/ios/ads/THEOplayerRCTAdsNative.swift @@ -5,9 +5,9 @@ import THEOplayerSDK class NativeAd: THEOplayerSDK.Ad { /** A reference to the `AdBreak` of which the ad is a part of.*/ - var adBreak: AdBreak? = nil + var adBreak: AdBreak /** An array of `CompanionAd`s associated to the ad, if available within the same Creatives element.*/ - var companions: [THEOplayerSDK.CompanionAd?] = [] + var companions: [THEOplayerSDK.CompanionAd] = [] /** Either 'linear' or 'nonlinear', depending on the concrete implementer.*/ var type: String = "" /** The identifier of the creative, provided in the VAST-file.*/ @@ -21,7 +21,7 @@ class NativeAd: THEOplayerSDK.Ad { /** The height of the advertisement, in pixels.*/ var height: Int? = nil /** The kind of the ad integration.*/ - var integration: THEOplayerSDK.AdIntegrationKind = THEOplayerSDK.AdIntegrationKind.defaultKind + var integration: THEOplayerSDK.AdIntegrationKind /** The duration of the LinearAd, as provided by the VAST file, in seconds.*/ var duration: Int? = 0 /** The url that redirects to the website of the advertiser.*/ @@ -29,7 +29,7 @@ class NativeAd: THEOplayerSDK.Ad { /**The type of custom ad integration.*/ var customIntegration: String? = nil - init(adBreak: AdBreak? = nil, companions: [THEOplayerSDK.CompanionAd?], type: String, id: String? = nil, skipOffset: Int? = nil, resourceURI: String? = nil, width: Int? = nil, height: Int? = nil, integration: THEOplayerSDK.AdIntegrationKind, duration: Int? = 0, clickThrough: String?, customIntegration: String?) { + init(adBreak: AdBreak, companions: [THEOplayerSDK.CompanionAd], type: String, id: String? = nil, skipOffset: Int? = nil, resourceURI: String? = nil, width: Int? = nil, height: Int? = nil, integration: THEOplayerSDK.AdIntegrationKind, duration: Int? = 0, clickThrough: String?, customIntegration: String?) { self.adBreak = adBreak self.companions = companions self.type = type @@ -49,7 +49,7 @@ class NativeLinearAd: NativeAd, THEOplayerSDK.LinearAd { /** An array of mediafiles, which provides some meta data retrieved from the VAST file.*/ var mediaFiles: [THEOplayerSDK.MediaFile] = [] - init(adBreak: AdBreak? = nil, companions: [THEOplayerSDK.CompanionAd?], type: String, id: String? = nil, skipOffset: Int? = nil, resourceURI: String? = nil, width: Int? = nil, height: Int? = nil, integration: THEOplayerSDK.AdIntegrationKind, duration: Int? = 0, clickThrough: String? = nil, customIntegration: String? = nil, mediaFiles: [THEOplayerSDK.MediaFile] = []) { + init(adBreak: AdBreak, companions: [THEOplayerSDK.CompanionAd], type: String, id: String? = nil, skipOffset: Int? = nil, resourceURI: String? = nil, width: Int? = nil, height: Int? = nil, integration: THEOplayerSDK.AdIntegrationKind, duration: Int? = 0, clickThrough: String? = nil, customIntegration: String? = nil, mediaFiles: [THEOplayerSDK.MediaFile] = []) { self.mediaFiles = mediaFiles @@ -86,7 +86,7 @@ class NativeLinearGoogleImaAd: NativeLinearAd, THEOplayerSDK.GoogleImaAd { /** The String representing custom trafficking parameters from the VAST response.*/ var traffickingParameters: String = "" - init(adBreak: AdBreak? = nil, companions: [THEOplayerSDK.CompanionAd?], type: String, id: String? = nil, skipOffset: Int? = nil, resourceURI: String? = nil, width: Int? = nil, height: Int? = nil, integration: THEOplayerSDK.AdIntegrationKind, duration: Int? = 0, clickThrough: String? = nil, customIntegration: String? = nil, mediaFiles: [THEOplayerSDK.MediaFile] = [], adSystem: String? = nil, creativeId: String? = nil, wrapperAdIds: [String], wrapperAdSystems: [String], wrapperCreativeIds: [String], vastMediaBitrate: Int, universalAdIds: [UniversalAdId], traffickingParameters: String) { + init(adBreak: AdBreak, companions: [THEOplayerSDK.CompanionAd], type: String, id: String? = nil, skipOffset: Int? = nil, resourceURI: String? = nil, width: Int? = nil, height: Int? = nil, integration: THEOplayerSDK.AdIntegrationKind, duration: Int? = 0, clickThrough: String? = nil, customIntegration: String? = nil, mediaFiles: [THEOplayerSDK.MediaFile] = [], adSystem: String? = nil, creativeId: String? = nil, wrapperAdIds: [String], wrapperAdSystems: [String], wrapperCreativeIds: [String], vastMediaBitrate: Int, universalAdIds: [UniversalAdId], traffickingParameters: String) { self.adSystem = adSystem self.creativeId = creativeId self.wrapperAdIds = wrapperAdIds @@ -122,7 +122,7 @@ class NativeAdBreak: THEOplayerSDK.AdBreak { /** The time offset at which point the content will be paused to play the ad break, in seconds.*/ var timeOffset: Int = 0 /** The kind of the ad integration.*/ - var integration: THEOplayerSDK.AdIntegrationKind = THEOplayerSDK.AdIntegrationKind.defaultKind + var integration: THEOplayerSDK.AdIntegrationKind /**The type of custom ad integration.*/ var customIntegration: String? = nil @@ -137,22 +137,22 @@ class NativeAdBreak: THEOplayerSDK.AdBreak { } class NativeCompanionAd: THEOplayerSDK.CompanionAd { -/** An identifier of the element in which the companion ad should be appended, if available.*/ + /** An identifier of the element in which the companion ad should be appended, if available.*/ var adSlotId: String? = nil /** An alternative description for the companion ad.*/ var altText: String? = nil /** The website of the advertisement.*/ var clickThrough: String? = nil /** The height of the companion ad, in pixels.*/ - var height: Int? = nil + var height: Int /** The URI of the ad content.*/ var resourceURI: String? = nil /** The width of the companion ad, in pixels.*/ - var width: Int? = nil + var width: Int /** The type of the companion ad.*/ var type: String = "" - init(adSlotId: String? = nil, altText: String? = nil, clickThrough: String? = nil, height: Int? = nil, resourceURI: String? = nil, width: Int? = nil, type: String) { + init(adSlotId: String? = nil, altText: String? = nil, clickThrough: String? = nil, height: Int, resourceURI: String? = nil, width: Int, type: String) { self.adSlotId = adSlotId self.altText = altText self.clickThrough = clickThrough diff --git a/ios/ads/THEOplayerRCTView+AdsConfig.swift b/ios/ads/THEOplayerRCTView+AdsConfig.swift index b28c0f69b..d74bb3723 100644 --- a/ios/ads/THEOplayerRCTView+AdsConfig.swift +++ b/ios/ads/THEOplayerRCTView+AdsConfig.swift @@ -5,7 +5,6 @@ import THEOplayerSDK struct AdsConfig { var adSUIEnabled: Bool = true - var adPreloadTypeString: String = "none" var adsImaConfig = AdsImaConfig() } @@ -25,9 +24,6 @@ extension THEOplayerRCTView { func parseAdsConfig(configDict: NSDictionary) { if let adsConfig = configDict["ads"] as? NSDictionary { self.adsConfig.adSUIEnabled = adsConfig["uiEnabled"] as? Bool ?? true - if let adPreloadType = adsConfig["preload"] as? String { - self.adsConfig.adPreloadTypeString = adPreloadType - } if let adsImaConfig = adsConfig["ima"] as? NSDictionary { if let ppid = adsImaConfig["ppid"] as? String { self.adsConfig.adsImaConfig.ppid = ppid @@ -50,26 +46,6 @@ extension THEOplayerRCTView { } } } - -#if canImport(THEOplayerGoogleIMAIntegration) - func playerAdsConfiguration() -> AdsConfiguration? { - return AdsConfiguration(showCountdown: self.adsConfig.adSUIEnabled, preload: self.adPreloadType()) - } - - private func adPreloadType() -> THEOplayerSDK.AdPreloadType { - switch self.adsConfig.adPreloadTypeString { - case "midroll-and-postroll": - return THEOplayerSDK.AdPreloadType.MIDROLL_AND_POSTROLL - case "none": - return THEOplayerSDK.AdPreloadType.NONE - default : - return THEOplayerSDK.AdPreloadType.NONE - } - } -#else - func playerAdsConfiguration() -> AdsConfiguration? { return nil } -#endif - } #elseif os(tvOS) @@ -78,12 +54,6 @@ extension THEOplayerRCTView { func parseAdsConfig(configDict: NSDictionary) {} -#if canImport(THEOplayerGoogleIMAIntegration) - func playerAdsConfiguration() -> AdsConfiguration? { return AdsConfiguration() } -#else - func playerAdsConfiguration() -> AdsConfiguration? { return nil } -#endif - } #endif From 7d04fdf4744c0d053d6f9baa7c04a7d6eda5f4d1 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 9 Sep 2024 15:45:55 +0200 Subject: [PATCH 21/31] Update readme --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b886f6af..0c54a6659 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,9 @@ This projects falls under the license as defined in https://github.com/THEOplaye 3. [How to use these guides](#how-to-use-these-guides) 4. [Features](#features) 5. [Available connectors](#available-connectors) -6. [Getting Started](#getting-started) +6. [Creating your first app](#creating-your-first-app) +7. [Knowledge Base](#knowledge-base) +8. [API Reference](#api-reference) ## Overview @@ -89,6 +91,11 @@ please reach out to us for support. Adobe, Agama, Comscore, Conviva, Mux, Nielsen, Youbora +Other Connectors +Yospace SSAI + + + Subtitles & Closed Captions CEA-608/708, SRT, TTML, WebVTT @@ -141,6 +148,7 @@ functionality. Currently, the following connectors are available: | Mux analytics | [![%40theoplayer/react-native-analytics-mux](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-analytics-mux?label=%40theoplayer/react-native-analytics-mux)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-mux) | [`Mux`](https://github.com/THEOplayer/react-native-connectors/tree/main/mux) | | Nielsen analytics | [![%40theoplayer/react-native-analytics-nielsen](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-analytics-nielsen?label=%40theoplayer/react-native-analytics-nielsen)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-nielsen) | [`Nielsen`](https://github.com/THEOplayer/react-native-connectors/tree/main/nielsen) | | Youbora analytics | [![%40theoplayer/react-native-analytics-youbora](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-analytics-youbora?label=%40theoplayer/react-native-analytics-youbora)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-analytics-youbora) | [`Youbora`](https://github.com/THEOplayer/react-native-connectors/tree/main/youbora) | +| Yospace SSAI | [![%40theoplayer/react-native-yospace](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-yospace?label=%40theoplayer/react-native-yospace)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-yospace) | [`Yospace`](https://github.com/THEOplayer/react-native-connectors/tree/main/yospace) | | Content protection (DRM) | [![%40theoplayer/react-native-drm](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-drm?label=%40theoplayer/react-native-drm)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-drm) | [`DRM`](https://github.com/THEOplayer/react-native-theoplayer-drm) | | React Native Open UI | [![%40theoplayer/react-native-ui](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-ui?label=%40theoplayer/react-native-ui)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-ui) | [`Open UI`](https://github.com/THEOplayer/react-native-theoplayer-ui) | | A template for
`react-native-theoplayer` connectors. | [![%40theoplayer/react-native-connector-template](https://img.shields.io/npm/v/%40theoplayer%2Freact-native-connector-template?label=%40theoplayer/react-native-connector-template)](https://www.npmjs.com/package/%40theoplayer%2Freact-native-connector-template) | [`Connector template`](https://github.com/THEOplayer/react-native-theoplayer-connector-template) | From 899a3c8950aa9e784b2775c0aec517b1cbefb021 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 9 Sep 2024 16:33:29 +0200 Subject: [PATCH 22/31] Upgrade ads-wrapper --- android/build.gradle | 2 +- .../ads-wrapper/7.6.1/ads-wrapper-7.6.1.aar | Bin 22192 -> 0 bytes .../ads-wrapper/8.0.0/ads-wrapper-8.0.0.aar | Bin 0 -> 22518 bytes .../ads-wrapper-8.0.0.pom} | 4 ++-- .../ads-wrapper/maven-metadata-local.xml | 8 ++++---- 5 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.aar create mode 100644 android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.aar rename android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{7.6.1/ads-wrapper-7.6.1.pom => 8.0.0/ads-wrapper-8.0.0.pom} (85%) diff --git a/android/build.gradle b/android/build.gradle index f89f5f80f..7f64d5464 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -118,7 +118,7 @@ dependencies { println("Using THEOplayer (${versionString(theoplayer_sdk_version)})") implementation "com.theoplayer.theoplayer-sdk-android:core:${theoplayer_sdk_version}" - implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:7.6.1" + implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:8.0.0" implementation "com.theoplayer.android-connector:mediasession:${theoplayer_mediasession_version}" if (enabledGoogleIMA) { diff --git a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.aar b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.aar deleted file mode 100644 index c6b59d42d023bad946342adeefd5d622e566cca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22192 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 diff --git a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.aar b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.aar new file mode 100644 index 0000000000000000000000000000000000000000..86fdbb162b2ce965d8b33ce2012d2eb8a061e0cc GIT binary patch literal 22518 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 APXGV_ literal 0 HcmV?d00001 diff --git a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.pom b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.pom similarity index 85% rename from android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.pom rename to android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.pom index cb3eb000a..f65168a7c 100644 --- a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.pom +++ b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.pom @@ -1,9 +1,9 @@ - 7.6.1 + 8.0.0 com.theoplayer.theoplayer-sdk-android ads-wrapper - 7.6.1 + 8.0.0 aar diff --git a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml index 32e70c925..15e19717a 100644 --- a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +++ b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml @@ -3,11 +3,11 @@ com.theoplayer.theoplayer-sdk-android ads-wrapper - 7.6.1 - 7.6.1 + 8.0.0 + 8.0.0 - 7.6.1 + 8.0.0 - 20240620111503 + 20240909163212 From d05eae6b6e07ee877ace41b58cdaf867d8e8fbb0 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Tue, 10 Sep 2024 09:59:31 +0200 Subject: [PATCH 23/31] Upgrade iOS example project and simplify package podspec --- example/ios/Podfile.lock | 42 +-- .../project.pbxproj | 304 +++++++++--------- react-native-theoplayer.podspec | 7 +- 3 files changed, 179 insertions(+), 174 deletions(-) diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 58197857b..db4466967 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -954,13 +954,11 @@ PODS: - ReactCommon/turbomodule/core - Yoga - react-native-theoplayer (7.9.0): - - google-cast-sdk-dynamic-xcframework (~> 4.8) - React-Core - - THEOplayer-Connector-SideloadedSubtitle (~> 7.12) - - THEOplayer-Integration-GoogleCast/Base (~> 7.12) - - THEOplayer-Integration-GoogleIMA/Base (~> 7.12) - - THEOplayer-Integration-GoogleIMA/Dependencies (~> 7.12) - - THEOplayerSDK-core (~> 7.12) + - THEOplayer-Connector-SideloadedSubtitle (~> 8.0) + - THEOplayer-Integration-GoogleCast (~> 8.0) + - THEOplayer-Integration-GoogleIMA (~> 8.0) + - THEOplayerSDK-core (~> 8.0) - React-nativeconfig (0.74.1-0) - React-NativeModulesApple (0.74.1-0): - glog @@ -1190,16 +1188,24 @@ PODS: - SwiftSubtitles (0.9.1): - DSFRegex (~> 3.3.1) - TinyCSV (~> 0.6.1) - - THEOplayer-Connector-SideloadedSubtitle (7.12.0): + - THEOplayer-Connector-SideloadedSubtitle (8.0.0): - Swifter (= 1.5.0) - SwiftSubtitles (= 0.9.1) - - THEOplayerSDK-core (~> 7.10) - - THEOplayer-Integration-GoogleCast/Base (7.12.0) - - THEOplayer-Integration-GoogleIMA/Base (7.12.0) - - THEOplayer-Integration-GoogleIMA/Dependencies (7.12.0): + - THEOplayerSDK-core (~> 8) + - THEOplayer-Integration-GoogleCast (8.0.0): + - THEOplayer-Integration-GoogleCast/Base (= 8.0.0) + - THEOplayer-Integration-GoogleCast/Dependencies (= 8.0.0) + - THEOplayer-Integration-GoogleCast/Base (8.0.0) + - THEOplayer-Integration-GoogleCast/Dependencies (8.0.0): + - google-cast-sdk-dynamic-xcframework (~> 4.8) + - THEOplayer-Integration-GoogleIMA (8.0.0): + - THEOplayer-Integration-GoogleIMA/Base (= 8.0.0) + - THEOplayer-Integration-GoogleIMA/Dependencies (= 8.0.0) + - THEOplayer-Integration-GoogleIMA/Base (8.0.0) + - THEOplayer-Integration-GoogleIMA/Dependencies (8.0.0): - GoogleAds-IMA-iOS-SDK (~> 3.18) - GoogleAds-IMA-tvOS-SDK (~> 4.8) - - THEOplayerSDK-core (7.12.0) + - THEOplayerSDK-core (8.0.0) - TinyCSV (0.6.1) - Yoga (0.0.0) @@ -1441,7 +1447,7 @@ SPEC CHECKSUMS: React-Mapbuffer: e1da272870606f17a64520bf78d85e1b73bb0778 react-native-google-cast: d7bdfd1a0eeba84afde03b9722351ec29543e74c react-native-slider: 315e6552460f5d7753c71cf3142b00161cb2d5a5 - react-native-theoplayer: 89adf55885db50bebb334a35ef2ce7b495b0f332 + react-native-theoplayer: e4daf5338a365078a7dc4f3a12b9a973941bbea7 React-nativeconfig: 0e309fafbbfbb8eac2f1999d0756732624ac5b39 React-NativeModulesApple: a53141b07c57c53cdc1f2043e5acf3b9318bc340 React-perflogger: e4f171200bc71bb8cf0686a0ad41a242f53b6b36 @@ -1468,13 +1474,13 @@ SPEC CHECKSUMS: SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Swifter: e71dd674404923d7f03ebb03f3f222d1c570bc8e SwiftSubtitles: c659af19d710a2946779015464c0577d07fe4666 - THEOplayer-Connector-SideloadedSubtitle: d85e580211d4327be7ed8faf0633bcd6401f38dd - THEOplayer-Integration-GoogleCast: c4d49b120b05005a90b03fff6d711ef0300b64a1 - THEOplayer-Integration-GoogleIMA: 64505e6feee971c0ebec3ab4ab14296e009a290c - THEOplayerSDK-core: b162d868db9229c3c9bc6f2e2e2ba0edab47035b + THEOplayer-Connector-SideloadedSubtitle: fa670934a06129946edbb491430ba821fddc01bb + THEOplayer-Integration-GoogleCast: f3ed8efac262a6c1debb7ba86fd60d1026015250 + THEOplayer-Integration-GoogleIMA: 214226b5d17d722091fd924dd8597604bec05345 + THEOplayerSDK-core: bffd1defb5031cc6b257f71f57931a87d4b3877c TinyCSV: fd6228edbcf1c07466ac34b76dac5e052143eaba Yoga: d84d1e521e3f8fa3cdd139d617ddf6514d061c78 -PODFILE CHECKSUM: 22a3708c326424dd82e5daeb33310b76706c03b4 +PODFILE CHECKSUM: cde44975d89d0413eb0e568fb525618efb0ece50 COCOAPODS: 1.15.2 diff --git a/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj b/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj index ccea40742..127cf74cc 100644 --- a/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj +++ b/example/ios/ReactNativeTHEOplayer.xcodeproj/project.pbxproj @@ -11,17 +11,17 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 144AFEB0365614C64FBCAD99 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 17BEB785211211E17565C821 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */; }; + 1D9FB4F5244ADB9A9476E40F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 23E00601FCEB429652C6408F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */; }; 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* ReactNativeTHEOplayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ReactNativeTHEOplayerTests.m */; }; 442BFC3895EC4E39B762450A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = E13BF0204B80026411EC76D2 /* PrivacyInfo.xcprivacy */; }; + 7D9BA408F65A91301883B2AE /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A616D4268BA584D7B7DD45 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - B132A7615192F470DFD25B50 /* libPods-ReactNativeTHEOplayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FB3DD1C39700ED56788880 /* libPods-ReactNativeTHEOplayer.a */; }; - CAB8FDDCDB8A35929E68B6CE /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B084F3EA77EA940F5E5780C5 /* libPods-ReactNativeTHEOplayer-tvOS.a */; }; + D7D6759FBE424E107C798C00 /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1F82D8697B6422C62C08B4 /* libPods-ReactNativeTHEOplayer-tvOS.a */; }; DC6595BC1C39D39B157BFA59 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 7740B1311B6C85C9C1C70CE2 /* PrivacyInfo.xcprivacy */; }; - E84400218C35B7AA0B8005E3 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AA67747D91D0900899ED730 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */; }; + EA3FB8B3CECC8EC0D507A5E6 /* libPods-ReactNativeTHEOplayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E6461124ED8CD324BEC84C8F /* libPods-ReactNativeTHEOplayer.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -46,33 +46,33 @@ 00E356EE1AD99517003FC87E /* ReactNativeTHEOplayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReactNativeTHEOplayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* ReactNativeTHEOplayerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReactNativeTHEOplayerTests.m; sourceTree = ""; }; - 0460E03D342B1D1D12A43958 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* ReactNativeTHEOplayer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactNativeTHEOplayer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ReactNativeTHEOplayer/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = ReactNativeTHEOplayer/AppDelegate.m; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ReactNativeTHEOplayer/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ReactNativeTHEOplayer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ReactNativeTHEOplayer/main.m; sourceTree = ""; }; - 17BEB785211211E17565C821 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 190AEA5559B8C0309FC48742 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; sourceTree = ""; }; + 212158D9C4053BB12B721822 /* Pods-ReactNativeTHEOplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.release.xcconfig"; sourceTree = ""; }; + 23E00601FCEB429652C6408F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 26849ED127A3FF7900FFFB02 /* ReactNativeTHEOplayer-tvOS-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ReactNativeTHEOplayer-tvOS-Bridging-Header.h"; sourceTree = ""; }; 26849ED227A3FF8800FFFB02 /* ReactNativeTHEOplayer-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ReactNativeTHEOplayer-Bridging-Header.h"; sourceTree = ""; }; - 2CEBF59ED7615126693EF430 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.debug.xcconfig"; sourceTree = ""; }; 2D02E47B1E0B4A5D006451C7 /* ReactNativeTHEOplayer-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ReactNativeTHEOplayer-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* ReactNativeTHEOplayer-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ReactNativeTHEOplayer-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 49AD0676F8A722038DC6C90A /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; sourceTree = ""; }; - 5AA67747D91D0900899ED730 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 6251DD110506EAF87723E482 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; sourceTree = ""; }; + 37F2476D4FFC19937969BA39 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig"; sourceTree = ""; }; + 53B450B3183AC1FCE970C242 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.debug.xcconfig"; sourceTree = ""; }; + 586FDDD06EFF4AC6D6026609 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; sourceTree = ""; }; 7740B1311B6C85C9C1C70CE2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ReactNativeTHEOplayer/PrivacyInfo.xcprivacy; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ReactNativeTHEOplayer/LaunchScreen.storyboard; sourceTree = ""; }; - B084F3EA77EA940F5E5780C5 /* libPods-ReactNativeTHEOplayer-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3FB3DD1C39700ED56788880 /* libPods-ReactNativeTHEOplayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - C49C561B8F50F97E78EF6671 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; sourceTree = ""; }; - E09A8219605514B320A08A7E /* Pods-ReactNativeTHEOplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer.release.xcconfig"; sourceTree = ""; }; + 90DCD6370FFDC116ADAF7756 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig"; sourceTree = ""; }; + 9B1F82D8697B6422C62C08B4 /* libPods-ReactNativeTHEOplayer-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A1A616D4268BA584D7B7DD45 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D726618BE2FF02B74D4B3B33 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig"; sourceTree = ""; }; E13BF0204B80026411EC76D2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ReactNativeTHEOplayer/PrivacyInfo.xcprivacy; sourceTree = ""; }; + E6461124ED8CD324BEC84C8F /* libPods-ReactNativeTHEOplayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeTHEOplayer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E94FE6E5DE0E478F2A505A3B /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; - F0B71F66151FBEBD78110A56 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig"; sourceTree = ""; }; + FC92E903EC76001BC932F05F /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E84400218C35B7AA0B8005E3 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */, + 7D9BA408F65A91301883B2AE /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -88,7 +88,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B132A7615192F470DFD25B50 /* libPods-ReactNativeTHEOplayer.a in Frameworks */, + EA3FB8B3CECC8EC0D507A5E6 /* libPods-ReactNativeTHEOplayer.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -96,7 +96,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CAB8FDDCDB8A35929E68B6CE /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */, + D7D6759FBE424E107C798C00 /* libPods-ReactNativeTHEOplayer-tvOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -104,7 +104,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 144AFEB0365614C64FBCAD99 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */, + 1D9FB4F5244ADB9A9476E40F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -150,10 +150,10 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - B3FB3DD1C39700ED56788880 /* libPods-ReactNativeTHEOplayer.a */, - 5AA67747D91D0900899ED730 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */, - B084F3EA77EA940F5E5780C5 /* libPods-ReactNativeTHEOplayer-tvOS.a */, - 17BEB785211211E17565C821 /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */, + E6461124ED8CD324BEC84C8F /* libPods-ReactNativeTHEOplayer.a */, + A1A616D4268BA584D7B7DD45 /* libPods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.a */, + 9B1F82D8697B6422C62C08B4 /* libPods-ReactNativeTHEOplayer-tvOS.a */, + 23E00601FCEB429652C6408F /* libPods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.a */, ); name = Frameworks; sourceTree = ""; @@ -195,14 +195,14 @@ 9B1644CBAE2FABCCC6E29A69 /* Pods */ = { isa = PBXGroup; children = ( - 2CEBF59ED7615126693EF430 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */, - E09A8219605514B320A08A7E /* Pods-ReactNativeTHEOplayer.release.xcconfig */, - 6251DD110506EAF87723E482 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */, - 49AD0676F8A722038DC6C90A /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */, - F0B71F66151FBEBD78110A56 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */, - 190AEA5559B8C0309FC48742 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */, - 0460E03D342B1D1D12A43958 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */, - C49C561B8F50F97E78EF6671 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */, + 53B450B3183AC1FCE970C242 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */, + 212158D9C4053BB12B721822 /* Pods-ReactNativeTHEOplayer.release.xcconfig */, + E94FE6E5DE0E478F2A505A3B /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */, + 37F2476D4FFC19937969BA39 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */, + 586FDDD06EFF4AC6D6026609 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */, + D726618BE2FF02B74D4B3B33 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */, + 90DCD6370FFDC116ADAF7756 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */, + FC92E903EC76001BC932F05F /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -214,12 +214,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayerTests" */; buildPhases = ( - 3A4E0C9A58031A4F75C97D41 /* [CP] Check Pods Manifest.lock */, + BF7D9DA46C8DD41F30E94E14 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - 9C2859372F69FCDD3183024A /* [CP] Embed Pods Frameworks */, - 3629A488E1B40A11671E089B /* [CP] Copy Pods Resources */, + 5BA2B0560E7D7CE9AF0D0818 /* [CP] Embed Pods Frameworks */, + 0B8CC744116E1B5E5B20EA04 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -235,14 +235,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayer" */; buildPhases = ( - A3E4F6FE1013878E8836320F /* [CP] Check Pods Manifest.lock */, + B9E191269F06C2C6DE0B7BEE /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - F64CF9E80C59E3817A458E87 /* [CP] Embed Pods Frameworks */, - F665E76E14390AA61A72BC31 /* [CP] Copy Pods Resources */, + FFBBB750AB49D2A12D4B9411 /* [CP] Embed Pods Frameworks */, + 748F9736B5DB84741462615C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -257,14 +257,14 @@ isa = PBXNativeTarget; buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayer-tvOS" */; buildPhases = ( - 09535EFC21B262A4BF9F57B6 /* [CP] Check Pods Manifest.lock */, + 46AD3B3302DE9D5FAFA699CC /* [CP] Check Pods Manifest.lock */, FD10A7F122414F3F0027D42C /* Start Packager */, 2D02E4771E0B4A5D006451C7 /* Sources */, 2D02E4781E0B4A5D006451C7 /* Frameworks */, 2D02E4791E0B4A5D006451C7 /* Resources */, 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, - 4CBC6D70E2F1D6E42F246A3F /* [CP] Embed Pods Frameworks */, - 9FA4699612AFC7919DA25924 /* [CP] Copy Pods Resources */, + 3EAE09C2B98A8448EAB946E9 /* [CP] Embed Pods Frameworks */, + 19B54E206FAAF7D707797670 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -279,12 +279,12 @@ isa = PBXNativeTarget; buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "ReactNativeTHEOplayer-tvOSTests" */; buildPhases = ( - 747E8A00F0176045C015237F /* [CP] Check Pods Manifest.lock */, + AB3A88D1CB03C39A24F1F209 /* [CP] Check Pods Manifest.lock */, 2D02E48C1E0B4A5D006451C7 /* Sources */, 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 2D02E48E1E0B4A5D006451C7 /* Resources */, - E8316A64C74E17E48E2D68E9 /* [CP] Embed Pods Frameworks */, - 2FA2AC9BD9DCC41B4EE29132 /* [CP] Copy Pods Resources */, + 683118538B5068DC1C841822 /* [CP] Embed Pods Frameworks */, + 28E824AD327E0F20519619D8 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -395,49 +395,35 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 09535EFC21B262A4BF9F57B6 /* [CP] Check Pods Manifest.lock */ = { + 0B8CC744116E1B5E5B20EA04 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/RCTI18nStrings.bundle", + "${PODS_ROOT}/../../../ios/style.css", ); + name = "[CP] Copy Pods Resources"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/style.css", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Bundle React Native Code And Images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; - }; - 2FA2AC9BD9DCC41B4EE29132 /* [CP] Copy Pods Resources */ = { + 19B54E206FAAF7D707797670 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/RCTI18nStrings.bundle", "${PODS_ROOT}/../../../ios/style.css", ); @@ -448,54 +434,44 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 3629A488E1B40A11671E089B /* [CP] Copy Pods Resources */ = { + 28E824AD327E0F20519619D8 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/RCTI18nStrings.bundle", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/RCTI18nStrings.bundle", "${PODS_ROOT}/../../../ios/style.css", ); name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/style.css", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 3A4E0C9A58031A4F75C97D41 /* [CP] Check Pods Manifest.lock */ = { + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Bundle React Native Code And Images"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 4CBC6D70E2F1D6E42F246A3F /* [CP] Embed Pods Frameworks */ = { + 3EAE09C2B98A8448EAB946E9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -519,7 +495,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 747E8A00F0176045C015237F /* [CP] Check Pods Manifest.lock */ = { + 46AD3B3302DE9D5FAFA699CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -534,14 +510,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 9C2859372F69FCDD3183024A /* [CP] Embed Pods Frameworks */ = { + 5BA2B0560E7D7CE9AF0D0818 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -569,27 +545,53 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 9FA4699612AFC7919DA25924 /* [CP] Copy Pods Resources */ = { + 683118538B5068DC1C841822 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/RCTI18nStrings.bundle", + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-tvOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 748F9736B5DB84741462615C /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/RCTI18nStrings.bundle", "${PODS_ROOT}/../../../ios/style.css", ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/style.css", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS/Pods-ReactNativeTHEOplayer-tvOS-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh\"\n"; showEnvVarsInLog = 0; }; - A3E4F6FE1013878E8836320F /* [CP] Check Pods Manifest.lock */ = { + AB3A88D1CB03C39A24F1F209 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -604,88 +606,77 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - E8316A64C74E17E48E2D68E9 /* [CP] Embed Pods Frameworks */ = { + B9E191269F06C2C6DE0B7BEE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-tvOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests/Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - F64CF9E80C59E3817A458E87 /* [CP] Embed Pods Frameworks */ = { + BF7D9DA46C8DD41F30E94E14 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleCast/Base/THEOplayerGoogleCastIntegration.framework/THEOplayerGoogleCastIntegration", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/google-cast-sdk-dynamic-xcframework/GoogleCast.framework/GoogleCast", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleCastIntegration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleCast.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "$(DERIVED_FILE_DIR)/Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - F665E76E14390AA61A72BC31 /* [CP] Copy Pods Resources */ = { + FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/RCTI18nStrings.bundle", - "${PODS_ROOT}/../../../ios/style.css", ); - name = "[CP] Copy Pods Resources"; + name = "Start Packager"; + outputFileListPaths = ( + ); outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/style.css", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-resources.sh\"\n"; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; showEnvVarsInLog = 0; }; - FD10A7F022414F080027D42C /* Start Packager */ = { + FD10A7F122414F3F0027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -704,23 +695,32 @@ shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; showEnvVarsInLog = 0; }; - FD10A7F122414F3F0027D42C /* Start Packager */ = { + FFBBB750AB49D2A12D4B9411 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleCast/Base/THEOplayerGoogleCastIntegration.framework/THEOplayerGoogleCastIntegration", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayer-Integration-GoogleIMA/Base/THEOplayerGoogleIMAIntegration.framework/THEOplayerGoogleIMAIntegration", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/THEOplayerSDK-core/THEOplayerSDK.framework/THEOplayerSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/google-cast-sdk-dynamic-xcframework/GoogleCast.framework/GoogleCast", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); - name = "Start Packager"; - outputFileListPaths = ( - ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleCastIntegration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerGoogleIMAIntegration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/THEOplayerSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleCast.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeTHEOplayer/Pods-ReactNativeTHEOplayer-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -778,7 +778,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6251DD110506EAF87723E482 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */; + baseConfigurationReference = E94FE6E5DE0E478F2A505A3B /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -801,7 +801,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 49AD0676F8A722038DC6C90A /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */; + baseConfigurationReference = 37F2476D4FFC19937969BA39 /* Pods-ReactNativeTHEOplayer-ReactNativeTHEOplayerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -821,7 +821,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2CEBF59ED7615126693EF430 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */; + baseConfigurationReference = 53B450B3183AC1FCE970C242 /* Pods-ReactNativeTHEOplayer.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -853,7 +853,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E09A8219605514B320A08A7E /* Pods-ReactNativeTHEOplayer.release.xcconfig */; + baseConfigurationReference = 212158D9C4053BB12B721822 /* Pods-ReactNativeTHEOplayer.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -877,7 +877,7 @@ }; 2D02E4971E0B4A5E006451C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F0B71F66151FBEBD78110A56 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */; + baseConfigurationReference = 586FDDD06EFF4AC6D6026609 /* Pods-ReactNativeTHEOplayer-tvOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -910,7 +910,7 @@ }; 2D02E4981E0B4A5E006451C7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 190AEA5559B8C0309FC48742 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */; + baseConfigurationReference = D726618BE2FF02B74D4B3B33 /* Pods-ReactNativeTHEOplayer-tvOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -942,7 +942,7 @@ }; 2D02E4991E0B4A5E006451C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0460E03D342B1D1D12A43958 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */; + baseConfigurationReference = 90DCD6370FFDC116ADAF7756 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; @@ -969,7 +969,7 @@ }; 2D02E49A1E0B4A5E006451C7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C49C561B8F50F97E78EF6671 /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */; + baseConfigurationReference = FC92E903EC76001BC932F05F /* Pods-ReactNativeTHEOplayer-tvOS-ReactNativeTHEOplayer-tvOSTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; diff --git a/react-native-theoplayer.podspec b/react-native-theoplayer.podspec index 53a5b0138..cb783e918 100644 --- a/react-native-theoplayer.podspec +++ b/react-native-theoplayer.podspec @@ -32,18 +32,17 @@ Pod::Spec.new do |s| s.dependency "React-Core" # THEOplayer core Dependency + puts "Adding THEOplayerSDK-core" s.dependency "THEOplayerSDK-core", "~> 8.0" if theofeatures.include?("GOOGLE_IMA") puts "Adding THEOplayer-Integration-GoogleIMA" - s.dependency "THEOplayer-Integration-GoogleIMA/Base", "~> 8.0" - s.dependency "THEOplayer-Integration-GoogleIMA/Dependencies", "~> 8.0" + s.dependency "THEOplayer-Integration-GoogleIMA", "~> 8.0" end if theofeatures.include?("CHROMECAST") puts "Adding THEOplayer-Integration-GoogleCast" - s.ios.dependency "THEOplayer-Integration-GoogleCast/Base", "~> 8.0" - s.ios.dependency "google-cast-sdk-dynamic-xcframework", "~> 4.8" + s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 8.0" end if theofeatures.include?("SIDELOADED_TEXTTRACKS") From 9be91b103db80bc69f0497d5644bec707c8858ef Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Tue, 10 Sep 2024 14:34:08 +0200 Subject: [PATCH 24/31] Upgrade THEOplayer dev version --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 20c6850fc..3afc24aac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "react": "^18.2.0", "react-native": "^0.74.5", "react-native-builder-bob": "^0.23.2", - "theoplayer": "^7.11.0", + "theoplayer": "^8.0.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.2.11", @@ -11829,9 +11829,9 @@ "dev": true }, "node_modules/theoplayer": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-7.11.0.tgz", - "integrity": "sha512-H88eezCxWjR0RnkwjvoPz8gUhaK1NApTleNZKMTI4yOMiqLLqBhgfQpWkj9nmoxcvy44cfTQWvn+Cl55TjE60A==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-8.0.0.tgz", + "integrity": "sha512-EM2TkStBHCJzHX56m11lkrAClaAmiX+wKLbkweeHXwfG70Wr7QHWCG0TgAObNq0xKy83dduj5tkx7C6A/V+pXw==", "dev": true }, "node_modules/throat": { diff --git a/package.json b/package.json index 3d94aa830..ead7f0a8b 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "react": "^18.2.0", "react-native": "^0.74.5", "react-native-builder-bob": "^0.23.2", - "theoplayer": "^7.11.0", + "theoplayer": "^8.0.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.2.11", From 4088aa939474a292735e8d590ffab65580146457 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Tue, 10 Sep 2024 16:54:28 +0200 Subject: [PATCH 25/31] Updated DAI HLS test sources --- example/src/custom/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example/src/custom/sources.json b/example/src/custom/sources.json index 8b127135c..ddc3ec4ed 100644 --- a/example/src/custom/sources.json +++ b/example/src/custom/sources.json @@ -415,7 +415,7 @@ "ssai": { "integration": "google-dai", "availabilityType": "vod", - "contentSourceID": "2528370", + "contentSourceID": "2548831", "videoID": "tears-of-steel" } } @@ -432,7 +432,7 @@ "ssai": { "integration": "google-dai", "availabilityType": "live", - "assetKey": "sN_IYUG8STe1ZzhIIE_ksA" + "assetKey": "c-rArva4ShKVIAkNfy6HUQ" } } } From 3f8462037aaaea5567813ea0c3028da08abf53d9 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Sep 2024 10:29:37 +0200 Subject: [PATCH 26/31] Add changelog entry --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26446439c..218201789 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [8.0.0] - 24-09-11 + +### Added + +- Added support for THEOplayer 8.0. + +### Changed + +- Deprecated Jitpack.io in favor of the THEOplayer Maven repository on Android. + +### Fixed + +- Fixed an issue on iOS where the initial `duration` property of the player would be `0` instead of `NaN`. + ## [7.9.0] - 24-09-06 ### Added From 0b4f816987517c0cf8849dd491a82789234d52dc Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Sep 2024 10:36:42 +0200 Subject: [PATCH 27/31] Update THEOads docs --- doc/ads.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/ads.md b/doc/ads.md index e91124fd1..997214bcf 100644 --- a/doc/ads.md +++ b/doc/ads.md @@ -5,12 +5,13 @@ A good starting point to get acquainted with THEOplayer's advertising features is THEOplayer's [Knowledge Base](https://www.theoplayer.com/docs/theoplayer/knowledge-base/advertisement/user-guide/). -While THEOplayer supports a wide range of -different [ad types](https://www.theoplayer.com/docs/theoplayer/knowledge-base/advertisement/user-guide/#an-overview-of-theoplayers-different-ad-types), -`THEOplayerView` currently supports: +While THEOplayer supports a wide range of different +[ad types](https://www.theoplayer.com/docs/theoplayer/knowledge-base/advertisement/user-guide/#an-overview-of-theoplayers-different-ad-types), +`react-native-theoplayer` currently supports: - client-side ad insertion (CSAI) through [Google IMA](#getting-started-with-google-ima) - server-side ad insertion (SSAI) through [Google DAI](#getting-started-with-google-dai). +- server-guided ad insertion (SGAI) through [THEOads](#getting-started-with-theoads). In the next section we discuss how to integrate them on each platform. @@ -151,6 +152,12 @@ const daiSource = { A full description of the available source properties can be found in the [API](../src/api/source/ads/ssai/GoogleDAIConfiguration.ts) definition. +## Getting started with THEOads + +THEOads is an ad-insertion service for both VOD and LIVE content, created by THEO Technologies, +utilizing Server-Guided Ad-Insertion (SGAI). For more information we refer to the +[THEOads](https://www.theoplayer.com/docs/theoads/) documentation. + ## Using the Ads API [THEOplayer](../src/api/player/THEOplayer.ts) provides an [AdsAPI](../src/api/ads/AdsAPI.ts) that enables additional From 8e747e2d9daeeb76b063583036cb2ec72c9be540 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Sep 2024 10:45:13 +0200 Subject: [PATCH 28/31] Prettier fix --- _config.yml | 4 +- example/.watchmanconfig | 2 +- example/app.json | 2 +- .../AppIcon.appiconset/Contents.json | 62 +- .../Images.xcassets/Contents.json | 6 +- example/metro.config.js | 9 +- example/react-native.config.js | 2 +- example/src/custom/CustomSubMenu.tsx | 6 +- .../src/custom/MediaCacheDownloadButton.tsx | 2 +- .../custom/MediaCachingTaskListSubMenu.tsx | 143 +- example/src/custom/PipSubMenu.tsx | 24 +- example/src/custom/RenderingTargetSubMenu.tsx | 30 +- example/src/custom/sources.json | 123 +- example/src/res/DeleteSvg.tsx | 1 - example/web/public/index.html | 5 +- example/web/public/style.css | 6 +- example/web/public/ui.css | 1413 ++++++++++------- ios/style.css | 1 - react-native-theoplayer.json | 12 +- src/internal/THEOplayerView.tsx | 4 +- src/internal/adapter/DefaultTextTrackState.ts | 4 +- src/internal/adapter/NativePlayerState.ts | 3 +- .../broadcast/EventBroadcastAdapter.web.ts | 24 +- .../web/DefaultWebEventDispatcher.ts | 94 +- .../cast/THEOplayerNativeCastAdapter.ts | 5 +- src/internal/adapter/event/BaseEvent.ts | 5 +- src/internal/adapter/event/PlayerEvents.ts | 48 +- src/internal/adapter/web/FullscreenAPI.ts | 8 +- .../cache/NativeCachingTaskAdapter.ts | 2 +- .../NativeCachingTaskParametersAdapter.ts | 16 +- src/internal/utils/Dimensions.ts | 8 +- 31 files changed, 1155 insertions(+), 919 deletions(-) diff --git a/_config.yml b/_config.yml index ebf267430..83bfa31b7 100644 --- a/_config.yml +++ b/_config.yml @@ -7,8 +7,8 @@ plugins: - jekyll-remote-theme github: source: - branch: "develop" - path: "/" + branch: 'develop' + path: '/' include: - api/ exclude: diff --git a/example/.watchmanconfig b/example/.watchmanconfig index 9e26dfeeb..0967ef424 100644 --- a/example/.watchmanconfig +++ b/example/.watchmanconfig @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/example/app.json b/example/app.json index d60961b2d..679021fa0 100644 --- a/example/app.json +++ b/example/app.json @@ -1,4 +1,4 @@ { "name": "ReactNativeTHEOplayer", "displayName": "ReactNativeTHEOplayer" -} \ No newline at end of file +} diff --git a/example/ios/ReactNativeTHEOplayer/Images.xcassets/AppIcon.appiconset/Contents.json b/example/ios/ReactNativeTHEOplayer/Images.xcassets/AppIcon.appiconset/Contents.json index 81213230d..ddd7fca89 100644 --- a/example/ios/ReactNativeTHEOplayer/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/example/ios/ReactNativeTHEOplayer/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,53 +1,53 @@ { - "images" : [ + "images": [ { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" + "idiom": "iphone", + "scale": "2x", + "size": "20x20" }, { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" + "idiom": "iphone", + "scale": "3x", + "size": "20x20" }, { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" + "idiom": "iphone", + "scale": "2x", + "size": "29x29" }, { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" + "idiom": "iphone", + "scale": "3x", + "size": "29x29" }, { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" + "idiom": "iphone", + "scale": "2x", + "size": "40x40" }, { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" + "idiom": "iphone", + "scale": "3x", + "size": "40x40" }, { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" + "idiom": "iphone", + "scale": "2x", + "size": "60x60" }, { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" + "idiom": "iphone", + "scale": "3x", + "size": "60x60" }, { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" } ], - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } } diff --git a/example/ios/ReactNativeTHEOplayer/Images.xcassets/Contents.json b/example/ios/ReactNativeTHEOplayer/Images.xcassets/Contents.json index 2d92bd53f..97a8662eb 100644 --- a/example/ios/ReactNativeTHEOplayer/Images.xcassets/Contents.json +++ b/example/ios/ReactNativeTHEOplayer/Images.xcassets/Contents.json @@ -1,6 +1,6 @@ { - "info" : { - "version" : 1, - "author" : "xcode" + "info": { + "version": 1, + "author": "xcode" } } diff --git a/example/metro.config.js b/example/metro.config.js index 2f784e6aa..218d20c73 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -1,4 +1,4 @@ -const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); +const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const path = require('path'); const blacklist = require('metro-config/src/defaults/exclusionList'); const escape = require('escape-string-regexp'); @@ -22,12 +22,7 @@ const config = { // We need to make sure that only one version is loaded for peerDependencies // So we blacklist them at the root, and alias them to the versions in example's node_modules resolver: { - blacklistRE: blacklist( - modules.map( - (m) => - new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`) - ) - ), + blacklistRE: blacklist(modules.map((m) => new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`))), extraNodeModules: modules.reduce((acc, name) => { acc[name] = path.join(__dirname, 'node_modules', name); diff --git a/example/react-native.config.js b/example/react-native.config.js index 9f5fc793f..ff1f22c9c 100644 --- a/example/react-native.config.js +++ b/example/react-native.config.js @@ -6,4 +6,4 @@ module.exports = { }, }, }, -} +}; diff --git a/example/src/custom/CustomSubMenu.tsx b/example/src/custom/CustomSubMenu.tsx index 3d457a0c2..b61f5374e 100644 --- a/example/src/custom/CustomSubMenu.tsx +++ b/example/src/custom/CustomSubMenu.tsx @@ -44,16 +44,16 @@ export interface CustomSubMenuProps { */ export function CustomSubMenu(props: CustomSubMenuProps) { const { options, label } = props; - const currentLabel = options.find(v => v.value == props.currentOption())?.label ?? ""; + const currentLabel = options.find((v) => v.value == props.currentOption())?.label ?? ''; const createMenu = () => { - return ; + return ; }; return ; } function CustomSelectionView(props: CustomSubMenuProps) { const { menuStyle, options } = props; - const currentOption = options.find(v => v.value == props.currentOption()); + const currentOption = options.find((v) => v.value == props.currentOption()); const [selectedOption, setSelectedOption] = useState | undefined>(currentOption); const onSelectOption = (id: number | undefined): void => { diff --git a/example/src/custom/MediaCacheDownloadButton.tsx b/example/src/custom/MediaCacheDownloadButton.tsx index e2c5db002..771310d61 100644 --- a/example/src/custom/MediaCacheDownloadButton.tsx +++ b/example/src/custom/MediaCacheDownloadButton.tsx @@ -17,7 +17,7 @@ export const MediaCacheDownloadButton = () => { preferredTrackSelection: { audioTrackSelection: ['en-US'], textTrackSelection: ['en-US'], - } + }, }); } }, []); diff --git a/example/src/custom/MediaCachingTaskListSubMenu.tsx b/example/src/custom/MediaCachingTaskListSubMenu.tsx index cd971621c..ba980e667 100644 --- a/example/src/custom/MediaCachingTaskListSubMenu.tsx +++ b/example/src/custom/MediaCachingTaskListSubMenu.tsx @@ -2,101 +2,102 @@ import { CacheTaskStatus, CachingTask, MediaCache, useCachingTaskList, useCachin import React from 'react'; import { StyleProp, View, ViewStyle, Text } from 'react-native'; import { ActionButton, MenuRadioButton, MenuView, ScrollableMenu, SubMenuWithButton } from '@theoplayer/react-native-ui'; -import { DeleteSvg } from "../res/DeleteSvg"; +import { DeleteSvg } from '../res/DeleteSvg'; export interface MediaCachingTaskListSubMenuProps { - /** - * Overrides for the style of the menu. - */ - menuStyle?: StyleProp; + /** + * Overrides for the style of the menu. + */ + menuStyle?: StyleProp; } export const MediaCachingTaskListSubMenu = (props: MediaCachingTaskListSubMenuProps) => { - const {menuStyle} = props; + const { menuStyle } = props; - const tasks = useCachingTaskList(); + const tasks = useCachingTaskList(); - const createMenu = () => { - return ; - }; + const createMenu = () => { + return ; + }; - return ; + return ; }; export interface MediaCachingTaskViewProps { - style?: StyleProp; + style?: StyleProp; } function getCachingTaskLabel(task: CachingTask): string { - return task.source.metadata?.title || task.id.slice(0, 13); + return task.source.metadata?.title || task.id.slice(0, 13); } const EmptyMediaCacheView = () => { - return ( - - { - /**/ - }} - /> - - ); + return ( + + { + /**/ + }} + /> + + ); }; const TaskItemView = (props: { id: number; task: CachingTask }) => { - const {task} = props; + const { task } = props; - const status = useCachingTaskStatus(task); - const progress = useCachingTaskProgress(task); + const status = useCachingTaskStatus(task); + const progress = useCachingTaskProgress(task); - return ( - - - {getCachingTaskLabel(task)} - - - { - switch (task.status) { - case CacheTaskStatus.idle: - task.start(); - break; - case CacheTaskStatus.loading: - task.pause(); - break; - } - }} - /> - - - {`${(100 * (progress || 0)).toFixed(2)}%`} - - } - touchable={true} - style={{width: 32}} - onPress={() => { - task.remove(); - }}/> - - ); + return ( + + + {getCachingTaskLabel(task)} + + + { + switch (task.status) { + case CacheTaskStatus.idle: + task.start(); + break; + case CacheTaskStatus.loading: + task.pause(); + break; + } + }} + /> + + + {`${(100 * (progress || 0)).toFixed(2)}%`} + + } + touchable={true} + style={{ width: 32 }} + onPress={() => { + task.remove(); + }} + /> + + ); }; export const MediaCachingTaskView = (props: MediaCachingTaskViewProps) => { - const tasks = MediaCache.tasks; - return ( - : tasks.map((task, id) => )} - /> - } + const tasks = MediaCache.tasks; + return ( + : tasks.map((task, id) => )} /> - ); + } + /> + ); }; diff --git a/example/src/custom/PipSubMenu.tsx b/example/src/custom/PipSubMenu.tsx index fa570c16d..0bd1081cc 100644 --- a/example/src/custom/PipSubMenu.tsx +++ b/example/src/custom/PipSubMenu.tsx @@ -14,13 +14,19 @@ export interface PipSubMenuProps { export function PiPSubMenu(props?: PipSubMenuProps) { const ctx = useContext(PlayerContext); - return ) => { - ctx.player.pipConfiguration = { startsAutomatically: option.value }; - }} - currentOption={() => ctx.player.pipConfiguration.startsAutomatically ?? false} />; + return ( + ) => { + ctx.player.pipConfiguration = { startsAutomatically: option.value }; + }} + currentOption={() => ctx.player.pipConfiguration.startsAutomatically ?? false} + /> + ); } diff --git a/example/src/custom/RenderingTargetSubMenu.tsx b/example/src/custom/RenderingTargetSubMenu.tsx index ef141dd2e..2b7502d9e 100644 --- a/example/src/custom/RenderingTargetSubMenu.tsx +++ b/example/src/custom/RenderingTargetSubMenu.tsx @@ -15,16 +15,22 @@ export interface RenderingTargetSubMenuProps { export function RenderingTargetSubMenu(props?: RenderingTargetSubMenuProps) { const ctx = useContext(PlayerContext); - return ) => { - ctx.player.renderingTarget = option.value; - }} - currentOption={() => ctx.player.renderingTarget ?? RenderingTarget.SURFACE_VIEW} />; + return ( + ) => { + ctx.player.renderingTarget = option.value; + }} + currentOption={() => ctx.player.renderingTarget ?? RenderingTarget.SURFACE_VIEW} + /> + ); } diff --git a/example/src/custom/sources.json b/example/src/custom/sources.json index ddc3ec4ed..c6ed544f0 100644 --- a/example/src/custom/sources.json +++ b/example/src/custom/sources.json @@ -1,10 +1,7 @@ [ { "name": "DASH - Thumbnails in manifest", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": [ { @@ -25,10 +22,7 @@ }, { "name": "DASH - Thumbnails Side-loaded", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": [ { @@ -48,10 +42,7 @@ }, { "name": "DASH - VOD - Clear", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": [ { @@ -63,10 +54,7 @@ }, { "name": "DASH - VOD - Widevine", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": { "src": "https://cdn.theoplayer.com/video/dash/tos-dash-widevine/tos_h264_main.mpd", @@ -82,10 +70,7 @@ }, { "name": "DASH - Live - Clear", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": { "src": "https://livesim.dashif.org/livesim/chunkdur_1/ato_7/testpic4_8s/Manifest.mpd" @@ -94,10 +79,7 @@ }, { "name": "DASH - CSAI - Google IMA pre-roll", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": [ { @@ -117,10 +99,7 @@ }, { "name": "DASH - CSAI - Google IMA mid-roll VAST", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": [ { @@ -141,10 +120,7 @@ }, { "name": "DASH - CSAI - Google IMA mid-roll VMAP", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": [ { @@ -164,11 +140,7 @@ }, { "name": "HLS - VOD - Clear - The Venture Bros", - "os": [ - "ios", - "android", - "web" - ], + "os": ["ios", "android", "web"], "source": { "sources": { "src": "https://cdn.theoplayer.com/video/adultswim/clip.m3u8", @@ -189,11 +161,7 @@ }, { "name": "HLS - VOD - Clear - DateRange Metadata", - "os": [ - "ios", - "web", - "android" - ], + "os": ["ios", "web", "android"], "source": { "sources": { "src": "https://cdn.theoplayer.com/video/star_wars_episode_vii-the_force_awakens_official_comic-con_2015_reel_(2015)/index-daterange.m3u8", @@ -207,11 +175,7 @@ }, { "name": "HLS - LIVE - Clear - TOS", - "os": [ - "ios", - "android", - "web" - ], + "os": ["ios", "android", "web"], "source": { "sources": { "src": "https://cph-msl.akamaized.net/hls/live/2000341/test/master.m3u8", @@ -232,10 +196,7 @@ }, { "name": "HLS - VOD - Clear - bipbop (id3 meta)", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "src": "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8", @@ -253,10 +214,7 @@ }, { "name": "HLS - VOD - Clear - elephants-dream (id3 meta)", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "src": "https://cdn.theoplayer.com/video/elephants-dream/playlist-single-audio.m3u8", @@ -274,10 +232,7 @@ }, { "name": "HLS - CSAI - Google IMA pre-roll", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": [ { @@ -303,9 +258,7 @@ }, { "name": "HLS - SGAI (THEOads)", - "os": [ - "web" - ], + "os": ["web"], "source": { "sources": { "src": "https://cluster.dev.theostream.live/nfl-unified-channel/hls/k8s/live/scte35.isml/.m3u8", @@ -325,10 +278,7 @@ }, { "name": "HLS - CSAI - Google IMA mid-roll VAST", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": [ { @@ -357,10 +307,7 @@ }, { "name": "HLS - CSAI - Google IMA VMAP", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": [ { @@ -388,10 +335,7 @@ }, { "name": "DASH - SSAI - Google DAI", - "os": [ - "android", - "web" - ], + "os": ["android", "web"], "source": { "sources": { "type": "application/dash+xml", @@ -406,10 +350,7 @@ }, { "name": "HLS - SSAI - Google DAI - VOD", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "ssai": { @@ -423,10 +364,7 @@ }, { "name": "HLS - SSAI - Google DAI - LIVE", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "ssai": { @@ -439,10 +377,7 @@ }, { "name": "HLS - VOD/Thumbnails - Clear - Big Buck Bunny", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "src": "https://cdn.theoplayer.com/video/big_buck_bunny/big_buck_bunny.m3u8", @@ -470,10 +405,7 @@ }, { "name": "HLS - VOD - ezDRM - Drop", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "src": "https://fps.ezdrm.com/demo/video/ezdrm.m3u8", @@ -489,11 +421,7 @@ }, { "name": "MP4 - Elephants Dream", - "os": [ - "ios", - "web", - "android" - ], + "os": ["ios", "web", "android"], "source": { "sources": { "src": "https://cdn.theoplayer.com/video/elephants-dream.mp4" @@ -502,10 +430,7 @@ }, { "name": "MP3 - SoundHelix Song1", - "os": [ - "ios", - "web" - ], + "os": ["ios", "web"], "source": { "sources": { "src": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" diff --git a/example/src/res/DeleteSvg.tsx b/example/src/res/DeleteSvg.tsx index 111ce4987..48735c3f8 100644 --- a/example/src/res/DeleteSvg.tsx +++ b/example/src/res/DeleteSvg.tsx @@ -16,4 +16,3 @@ export const DeleteSvg = (props: SvgProps) => { ); }; - diff --git a/example/web/public/index.html b/example/web/public/index.html index 302bfaf51..4a6d88a29 100644 --- a/example/web/public/index.html +++ b/example/web/public/index.html @@ -1,8 +1,8 @@ - + - + react-native-theoplayer @@ -14,7 +14,6 @@ -
diff --git a/example/web/public/style.css b/example/web/public/style.css index de5abf0ca..73d1768e2 100644 --- a/example/web/public/style.css +++ b/example/web/public/style.css @@ -1,15 +1,15 @@ h1, h5, span { - color: #ffffff; + color: #ffffff; } body { - background-color: #373a3c; + background-color: #373a3c; } .container { - flex: 1 + flex: 1; } .theoplayer-container { diff --git a/example/web/public/ui.css b/example/web/public/ui.css index 1e9521cdb..dbeaaf747 100644 --- a/example/web/public/ui.css +++ b/example/web/public/ui.css @@ -1,17 +1,25 @@ @charset "UTF-8"; @font-face { font-family: THEOplayer; - src: url(data:application/font-woff;charset=utf-8;base64,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) format("woff"), url(data:application/x-font-ttf;charset=utf-8;base64,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AHUAbABhAHIAVABIAEUATwBwAGwAYQB5AGUAcgBUAEgARQBPAHAAbABhAHkAZQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMABUAEgARQBPAHAAbABhAHkAZQByAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAIAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAARwbGF5C3BsYXktY2lyY2xlBXBhdXNlC3ZvbHVtZS1tdXRlCnZvbHVtZS1sb3cKdm9sdW1lLW1pZAt2b2x1bWUtaGlnaBBmdWxsc2NyZWVuLWVudGVyD2Z1bGxzY3JlZW4tZXhpdAZzcXVhcmUHc3Bpbm5lcglzdWJ0aXRsZXMIY2FwdGlvbnMIY2hhcHRlcnMFc2hhcmUDY29nBmNpcmNsZQ5jaXJjbGUtb3V0bGluZRNjaXJjbGUtaW5uZXItY2lyY2xlAmhkBmNhbmNlbAZyZXBsYXkIZmFjZWJvb2sFZ3BsdXMIbGlua2VkaW4HdHdpdHRlcgZ0dW1ibHIJcGludGVyZXN0EWF1ZGlvLWRlc2NyaXB0aW9uBWF1ZGlvCW5leHQtaXRlbQ1wcmV2aW91cy1pdGVtEnBpY3R1cmUtaW4tcGljdHVyZRhwaWN0dXJlLWluLXBpY3R1cmUtZW50ZXIXcGljdHVyZS1pbi1waWN0dXJlLWV4aXQLdmlldy1tb2R1bGUFY2xvc2UJY2FyZGJvYXJkCXZpZXctZ3JpZAptdWx0aS12aWV3C2V4cGFuZC1sZXNzC2V4cGFuZC1tb3JlAAAA) format("truetype"); + src: + url(data:application/font-woff;charset=utf-8;base64,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) + format('woff'), + url(data:application/x-font-ttf;charset=utf-8;base64,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AHUAbABhAHIAVABIAEUATwBwAGwAYQB5AGUAcgBUAEgARQBPAHAAbABhAHkAZQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMABUAEgARQBPAHAAbABhAHkAZQByAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAIAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAARwbGF5C3BsYXktY2lyY2xlBXBhdXNlC3ZvbHVtZS1tdXRlCnZvbHVtZS1sb3cKdm9sdW1lLW1pZAt2b2x1bWUtaGlnaBBmdWxsc2NyZWVuLWVudGVyD2Z1bGxzY3JlZW4tZXhpdAZzcXVhcmUHc3Bpbm5lcglzdWJ0aXRsZXMIY2FwdGlvbnMIY2hhcHRlcnMFc2hhcmUDY29nBmNpcmNsZQ5jaXJjbGUtb3V0bGluZRNjaXJjbGUtaW5uZXItY2lyY2xlAmhkBmNhbmNlbAZyZXBsYXkIZmFjZWJvb2sFZ3BsdXMIbGlua2VkaW4HdHdpdHRlcgZ0dW1ibHIJcGludGVyZXN0EWF1ZGlvLWRlc2NyaXB0aW9uBWF1ZGlvCW5leHQtaXRlbQ1wcmV2aW91cy1pdGVtEnBpY3R1cmUtaW4tcGljdHVyZRhwaWN0dXJlLWluLXBpY3R1cmUtZW50ZXIXcGljdHVyZS1pbi1waWN0dXJlLWV4aXQLdmlldy1tb2R1bGUFY2xvc2UJY2FyZGJvYXJkCXZpZXctZ3JpZAptdWx0aS12aWV3C2V4cGFuZC1sZXNzC2V4cGFuZC1tb3JlAAAA) + format('truetype'); font-weight: normal; font-style: normal; } -.vjs-icon-play, .video-js .vjs-play-control, .video-js .vjs-big-play-button { +.vjs-icon-play, +.video-js .vjs-play-control, +.video-js .vjs-big-play-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-play:before, .video-js .vjs-play-control:before, .video-js .vjs-big-play-button:before { - content: "\f101"; +.vjs-icon-play:before, +.video-js .vjs-play-control:before, +.video-js .vjs-big-play-button:before { + content: '\f101'; } .vjs-icon-play-circle { @@ -20,78 +28,92 @@ font-style: normal; } .vjs-icon-play-circle:before { - content: "\f102"; + content: '\f102'; } -.vjs-icon-pause, .video-js .vjs-play-control.vjs-playing { +.vjs-icon-pause, +.video-js .vjs-play-control.vjs-playing { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-pause:before, .video-js .vjs-play-control.vjs-playing:before { - content: "\f103"; +.vjs-icon-pause:before, +.video-js .vjs-play-control.vjs-playing:before { + content: '\f103'; } -.vjs-icon-volume-mute, .video-js .vjs-mute-control.vjs-vol-0, +.vjs-icon-volume-mute, +.video-js .vjs-mute-control.vjs-vol-0, .video-js .vjs-volume-menu-button.vjs-vol-0 { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-volume-mute:before, .video-js .vjs-mute-control.vjs-vol-0:before, +.vjs-icon-volume-mute:before, +.video-js .vjs-mute-control.vjs-vol-0:before, .video-js .vjs-volume-menu-button.vjs-vol-0:before { - content: "\f104"; + content: '\f104'; } -.vjs-icon-volume-low, .video-js .vjs-mute-control.vjs-vol-1, +.vjs-icon-volume-low, +.video-js .vjs-mute-control.vjs-vol-1, .video-js .vjs-volume-menu-button.vjs-vol-1 { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-volume-low:before, .video-js .vjs-mute-control.vjs-vol-1:before, +.vjs-icon-volume-low:before, +.video-js .vjs-mute-control.vjs-vol-1:before, .video-js .vjs-volume-menu-button.vjs-vol-1:before { - content: "\f105"; + content: '\f105'; } -.vjs-icon-volume-mid, .video-js .vjs-mute-control.vjs-vol-2, +.vjs-icon-volume-mid, +.video-js .vjs-mute-control.vjs-vol-2, .video-js .vjs-volume-menu-button.vjs-vol-2 { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-volume-mid:before, .video-js .vjs-mute-control.vjs-vol-2:before, +.vjs-icon-volume-mid:before, +.video-js .vjs-mute-control.vjs-vol-2:before, .video-js .vjs-volume-menu-button.vjs-vol-2:before { - content: "\f106"; + content: '\f106'; } -.vjs-icon-volume-high, .video-js .vjs-mute-control, +.vjs-icon-volume-high, +.video-js .vjs-mute-control, .video-js .vjs-volume-menu-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-volume-high:before, .video-js .vjs-mute-control:before, +.vjs-icon-volume-high:before, +.video-js .vjs-mute-control:before, .video-js .vjs-volume-menu-button:before { - content: "\f107"; + content: '\f107'; } -.vjs-icon-fullscreen-enter, .video-js .vjs-fullscreen-control { +.vjs-icon-fullscreen-enter, +.video-js .vjs-fullscreen-control { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-fullscreen-enter:before, .video-js .vjs-fullscreen-control:before { - content: "\f108"; +.vjs-icon-fullscreen-enter:before, +.video-js .vjs-fullscreen-control:before { + content: '\f108'; } -.vjs-icon-fullscreen-exit, .video-js.vjs-fullscreen .vjs-fullscreen-control { +.vjs-icon-fullscreen-exit, +.video-js.vjs-fullscreen .vjs-fullscreen-control { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-fullscreen-exit:before, .video-js.vjs-fullscreen .vjs-fullscreen-control:before { - content: "\f109"; +.vjs-icon-fullscreen-exit:before, +.video-js.vjs-fullscreen .vjs-fullscreen-control:before { + content: '\f109'; } .vjs-icon-square { @@ -100,7 +122,7 @@ font-style: normal; } .vjs-icon-square:before { - content: "\f10a"; + content: '\f10a'; } .vjs-icon-spinner { @@ -109,34 +131,40 @@ font-style: normal; } .vjs-icon-spinner:before { - content: "\f10b"; + content: '\f10b'; } -.vjs-icon-subtitles, .video-js .vjs-subtitles-button { +.vjs-icon-subtitles, +.video-js .vjs-subtitles-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-subtitles:before, .video-js .vjs-subtitles-button:before { - content: "\f10c"; +.vjs-icon-subtitles:before, +.video-js .vjs-subtitles-button:before { + content: '\f10c'; } -.vjs-icon-captions, .video-js .vjs-captions-button { +.vjs-icon-captions, +.video-js .vjs-captions-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-captions:before, .video-js .vjs-captions-button:before { - content: "\f10d"; +.vjs-icon-captions:before, +.video-js .vjs-captions-button:before { + content: '\f10d'; } -.vjs-icon-chapters, .video-js .vjs-chapters-button { +.vjs-icon-chapters, +.video-js .vjs-chapters-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-chapters:before, .video-js .vjs-chapters-button:before { - content: "\f10e"; +.vjs-icon-chapters:before, +.video-js .vjs-chapters-button:before { + content: '\f10e'; } .vjs-icon-share { @@ -145,7 +173,7 @@ font-style: normal; } .vjs-icon-share:before { - content: "\f10f"; + content: '\f10f'; } .vjs-icon-cog { @@ -154,16 +182,24 @@ font-style: normal; } .vjs-icon-cog:before { - content: "\f110"; + content: '\f110'; } -.vjs-icon-circle, .theoplayer-skin .theo-live-control-indicator, .video-js .vjs-volume-level, .video-js .vjs-play-progress, .video-js .vjs-mouse-display { +.vjs-icon-circle, +.theoplayer-skin .theo-live-control-indicator, +.video-js .vjs-volume-level, +.video-js .vjs-play-progress, +.video-js .vjs-mouse-display { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-circle:before, .theoplayer-skin .theo-live-control-indicator:before, .video-js .vjs-volume-level:before, .video-js .vjs-play-progress:before, .video-js .vjs-mouse-display:before { - content: "\f111"; +.vjs-icon-circle:before, +.theoplayer-skin .theo-live-control-indicator:before, +.video-js .vjs-volume-level:before, +.video-js .vjs-play-progress:before, +.video-js .vjs-mouse-display:before { + content: '\f111'; } .vjs-icon-circle-outline { @@ -172,7 +208,7 @@ font-style: normal; } .vjs-icon-circle-outline:before { - content: "\f112"; + content: '\f112'; } .vjs-icon-circle-inner-circle { @@ -181,7 +217,7 @@ font-style: normal; } .vjs-icon-circle-inner-circle:before { - content: "\f113"; + content: '\f113'; } .vjs-icon-hd { @@ -190,25 +226,29 @@ font-style: normal; } .vjs-icon-hd:before { - content: "\f114"; + content: '\f114'; } -.vjs-icon-cancel, .video-js .vjs-control.vjs-close-button { +.vjs-icon-cancel, +.video-js .vjs-control.vjs-close-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-cancel:before, .video-js .vjs-control.vjs-close-button:before { - content: "\f115"; +.vjs-icon-cancel:before, +.video-js .vjs-control.vjs-close-button:before { + content: '\f115'; } -.vjs-icon-replay, .theoplayer-skin.vjs-ended .vjs-play-control { +.vjs-icon-replay, +.theoplayer-skin.vjs-ended .vjs-play-control { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-replay:before, .theoplayer-skin.vjs-ended .vjs-play-control:before { - content: "\f116"; +.vjs-icon-replay:before, +.theoplayer-skin.vjs-ended .vjs-play-control:before { + content: '\f116'; } .vjs-icon-facebook { @@ -217,7 +257,7 @@ font-style: normal; } .vjs-icon-facebook:before { - content: "\f117"; + content: '\f117'; } .vjs-icon-gplus { @@ -226,7 +266,7 @@ font-style: normal; } .vjs-icon-gplus:before { - content: "\f118"; + content: '\f118'; } .vjs-icon-linkedin { @@ -235,7 +275,7 @@ font-style: normal; } .vjs-icon-linkedin:before { - content: "\f119"; + content: '\f119'; } .vjs-icon-twitter { @@ -244,7 +284,7 @@ font-style: normal; } .vjs-icon-twitter:before { - content: "\f11a"; + content: '\f11a'; } .vjs-icon-tumblr { @@ -253,7 +293,7 @@ font-style: normal; } .vjs-icon-tumblr:before { - content: "\f11b"; + content: '\f11b'; } .vjs-icon-pinterest { @@ -262,25 +302,29 @@ font-style: normal; } .vjs-icon-pinterest:before { - content: "\f11c"; + content: '\f11c'; } -.vjs-icon-audio-description, .video-js .vjs-descriptions-button { +.vjs-icon-audio-description, +.video-js .vjs-descriptions-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-audio-description:before, .video-js .vjs-descriptions-button:before { - content: "\f11d"; +.vjs-icon-audio-description:before, +.video-js .vjs-descriptions-button:before { + content: '\f11d'; } -.vjs-icon-audio, .video-js .vjs-audio-button { +.vjs-icon-audio, +.video-js .vjs-audio-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-audio:before, .video-js .vjs-audio-button:before { - content: "\f11e"; +.vjs-icon-audio:before, +.video-js .vjs-audio-button:before { + content: '\f11e'; } .vjs-icon-next-item { @@ -289,7 +333,7 @@ font-style: normal; } .vjs-icon-next-item:before { - content: "\f11f"; + content: '\f11f'; } .vjs-icon-previous-item { @@ -298,7 +342,7 @@ font-style: normal; } .vjs-icon-previous-item:before { - content: "\f120"; + content: '\f120'; } .vjs-icon-picture-in-picture { @@ -307,7 +351,7 @@ font-style: normal; } .vjs-icon-picture-in-picture:before { - content: "\f121"; + content: '\f121'; } .vjs-icon-picture-in-picture-enter { @@ -316,7 +360,7 @@ font-style: normal; } .vjs-icon-picture-in-picture-enter:before { - content: "\f122"; + content: '\f122'; } .vjs-icon-picture-in-picture-exit { @@ -325,7 +369,7 @@ font-style: normal; } .vjs-icon-picture-in-picture-exit:before { - content: "\f123"; + content: '\f123'; } .vjs-icon-view-module { @@ -334,25 +378,29 @@ font-style: normal; } .vjs-icon-view-module:before { - content: "\f124"; + content: '\f124'; } -.vjs-icon-close, .theoplayer-skin .theo-close-button { +.vjs-icon-close, +.theoplayer-skin .theo-close-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-close:before, .theoplayer-skin .theo-close-button:before { - content: "\f125"; +.vjs-icon-close:before, +.theoplayer-skin .theo-close-button:before { + content: '\f125'; } -.vjs-icon-cardboard, .theoplayer-skin .theo-vr-button { +.vjs-icon-cardboard, +.theoplayer-skin .theo-vr-button { font-family: THEOplayer; font-weight: normal; font-style: normal; } -.vjs-icon-cardboard:before, .theoplayer-skin .theo-vr-button:before { - content: "\f126"; +.vjs-icon-cardboard:before, +.theoplayer-skin .theo-vr-button:before { + content: '\f126'; } .vjs-icon-view-grid { @@ -361,7 +409,7 @@ font-style: normal; } .vjs-icon-view-grid:before { - content: "\f127"; + content: '\f127'; } .vjs-icon-multi-view { @@ -370,7 +418,7 @@ font-style: normal; } .vjs-icon-multi-view:before { - content: "\f128"; + content: '\f128'; } .vjs-icon-expand-less { @@ -379,7 +427,7 @@ font-style: normal; } .vjs-icon-expand-less:before { - content: "\f129"; + content: '\f129'; } .vjs-icon-expand-more { @@ -388,10 +436,13 @@ font-style: normal; } .vjs-icon-expand-more:before { - content: "\f12a"; + content: '\f12a'; } -.vjs-modal-dialog .vjs-modal-dialog-content, .video-js .vjs-modal-dialog, .video-js .vjs-control:before, .video-js .vjs-big-play-button:before { +.vjs-modal-dialog .vjs-modal-dialog-content, +.video-js .vjs-modal-dialog, +.video-js .vjs-control:before, +.video-js .vjs-big-play-button:before { position: absolute; top: 0; left: 0; @@ -399,7 +450,8 @@ height: 100%; } -.video-js .vjs-control:before, .video-js .vjs-big-play-button:before { +.video-js .vjs-control:before, +.video-js .vjs-big-play-button:before { text-align: center; } @@ -407,8 +459,8 @@ display: block; vertical-align: top; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; color: #fff; background-color: #000; position: relative; @@ -431,8 +483,8 @@ .video-js *:before, .video-js *:after { -webkit-box-sizing: inherit; - -moz-box-sizing: inherit; - box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; } .video-js ul { @@ -539,7 +591,7 @@ body.vjs-full-window { .vjs-no-js a, .vjs-no-js a:visited { - color: #66A8CC; + color: #66a8cc; } .video-js .vjs-big-play-button { @@ -555,7 +607,7 @@ body.vjs-full-window { cursor: pointer; opacity: 1; border: 0.06666em solid #fff; - background-color: #2B333F; + background-color: #2b333f; background-color: rgba(43, 51, 63, 0.7); border-radius: 0.3em; -webkit-transition: all 0.4s; @@ -663,7 +715,7 @@ body.vjs-full-window { .vjs-menu li.vjs-selected:focus, .vjs-menu li.vjs-selected:hover { background-color: #fff; - color: #2B333F; + color: #2b333f; } .vjs-menu li.vjs-menu-title { @@ -689,7 +741,7 @@ body.vjs-full-window { } .vjs-menu-button-popup .vjs-menu .vjs-menu-content { - background-color: #2B333F; + background-color: #2b333f; background-color: rgba(43, 51, 63, 0.7); position: absolute; width: 100%; @@ -775,7 +827,7 @@ body.vjs-full-window { left: 0; right: 0; height: 3em; - background-color: #2B333F; + background-color: #2b333f; background-color: rgba(43, 51, 63, 0.7); } @@ -787,17 +839,29 @@ body.vjs-full-window { display: flex; visibility: visible; opacity: 1; - -webkit-transition: visibility 0.1s, opacity 0.1s; - -moz-transition: visibility 0.1s, opacity 0.1s; - transition: visibility 0.1s, opacity 0.1s; + -webkit-transition: + visibility 0.1s, + opacity 0.1s; + -moz-transition: + visibility 0.1s, + opacity 0.1s; + transition: + visibility 0.1s, + opacity 0.1s; } .vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar { visibility: visible; opacity: 0; - -webkit-transition: visibility 1s, opacity 1s; - -moz-transition: visibility 1s, opacity 1s; - transition: visibility 1s, opacity 1s; + -webkit-transition: + visibility 1s, + opacity 1s; + -moz-transition: + visibility 1s, + opacity 1s; + transition: + visibility 1s, + opacity 1s; } .vjs-controls-disabled .vjs-control-bar, @@ -875,7 +939,7 @@ body.vjs-full-window { -webkit-align-items: center; -ms-flex-align: center; -moz-box-align: center; - align-items: center; + align-items: center; min-width: 4em; } @@ -1012,9 +1076,15 @@ body.vjs-full-window { .video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display:after { visibility: hidden; opacity: 0; - -webkit-transition: visibility 1s, opacity 1s; - -moz-transition: visibility 1s, opacity 1s; - transition: visibility 1s, opacity 1s; + -webkit-transition: + visibility 1s, + opacity 1s; + -moz-transition: + visibility 1s, + opacity 1s; + transition: + visibility 1s, + opacity 1s; } .video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display, @@ -1075,7 +1145,7 @@ body.vjs-full-window { -webkit-align-items: center; -ms-flex-align: center; -moz-box-align: center; - align-items: center; + align-items: center; } .video-js .vjs-volume-bar { @@ -1220,7 +1290,7 @@ body.vjs-full-window { -webkit-align-items: flex-start; -ms-flex-align: flex-start; -moz-box-align: start; - align-items: flex-start; + align-items: flex-start; -webkit-box-flex: auto; -moz-box-flex: auto; -webkit-flex: auto; @@ -1359,7 +1429,7 @@ video::-webkit-media-text-track-display { .vjs-error .vjs-error-display:before { color: #fff; - content: "X"; + content: 'X'; font-family: Arial, Helvetica, sans-serif; font-size: 4em; left: 0; @@ -1383,8 +1453,8 @@ video::-webkit-media-text-track-display { text-align: left; border: 6px solid rgba(43, 51, 63, 0.7); -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; background-clip: padding-box; width: 50px; height: 50px; @@ -1398,12 +1468,12 @@ video::-webkit-media-text-track-display { .vjs-loading-spinner:before, .vjs-loading-spinner:after { - content: ""; + content: ''; position: absolute; margin: -6px; -webkit-box-sizing: inherit; - -moz-box-sizing: inherit; - box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; width: inherit; height: inherit; border-radius: inherit; @@ -1417,9 +1487,15 @@ video::-webkit-media-text-track-display { .vjs-seeking .vjs-loading-spinner:after, .vjs-waiting .vjs-loading-spinner:before, .vjs-waiting .vjs-loading-spinner:after { - -webkit-animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite; - -moz-animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite; - animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite; + -webkit-animation: + vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, + vjs-spinner-fade 1.1s linear infinite; + -moz-animation: + vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, + vjs-spinner-fade 1.1s linear infinite; + animation: + vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, + vjs-spinner-fade 1.1s linear infinite; } .vjs-seeking .vjs-loading-spinner:before, @@ -1432,21 +1508,21 @@ video::-webkit-media-text-track-display { border-top-color: white; -webkit-animation-delay: 0.44s; -moz-animation-delay: 0.44s; - animation-delay: 0.44s; + animation-delay: 0.44s; } @-moz-keyframes vjs-spinner-spin { 100% { -moz-transform: rotate(360deg); - transform: rotate(360deg); + transform: rotate(360deg); } } @keyframes vjs-spinner-spin { 100% { -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - transform: rotate(360deg); + -moz-transform: rotate(360deg); + transform: rotate(360deg); } } @-webkit-keyframes vjs-spinner-spin { @@ -1519,26 +1595,49 @@ video::-webkit-media-text-track-display { .video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer { width: auto; } -.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time, -.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control, -.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button, -.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-descriptions-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button, -.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button, .video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-audio-button { +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-descriptions-button, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button, +.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-audio-button { display: none; } -.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate, -.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-menu-button, -.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-descriptions-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button, -.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button, .video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-audio-button { +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-menu-button, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-descriptions-button, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button, +.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-audio-button { display: none; } -.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate, -.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control, -.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-descriptions-button, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-descriptions-button, +.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button, .video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button .vjs-audio-button { display: none; } @@ -1546,7 +1645,7 @@ video::-webkit-media-text-track-display { .vjs-caption-settings { position: relative; top: 1em; - background-color: #2B333F; + background-color: #2b333f; background-color: rgba(43, 51, 63, 0.75); color: #fff; margin: 0 auto; @@ -1635,7 +1734,7 @@ video::-webkit-media-text-track-display { overflow: hidden; } -.vjs-caption-settings input[type=button] { +.vjs-caption-settings input[type='button'] { width: 40px; height: 40px; } @@ -1700,35 +1799,53 @@ video::-webkit-media-text-track-display { } /* THEOplayer skin */ -.theo-primary-color, .theo-upnext-panel .theo-upnext-panel-content .theo-upnext-panel-autoplay, .theoplayer-skin .theo-settings-control-menu-item-hd-label, .theoplayer-skin .theo-settings-control-menu-item-value, .theoplayer-skin .vjs-volume-level, +.theo-primary-color, +.theo-upnext-panel .theo-upnext-panel-content .theo-upnext-panel-autoplay, +.theoplayer-skin .theo-settings-control-menu-item-hd-label, +.theoplayer-skin .theo-settings-control-menu-item-value, +.theoplayer-skin .vjs-volume-level, .theoplayer-skin .vjs-play-progress, -.theoplayer-skin .vjs-slider-bar, .theoplayer-skin .vjs-big-play-button { +.theoplayer-skin .vjs-slider-bar, +.theoplayer-skin .vjs-big-play-button { color: #ffc50f; } -.theo-primary-background, .theo-social .theo-social-container .theo-social-label, .theoplayer-skin .theo-menu-header, .theoplayer-skin .theo-settings-control-label-hd { +.theo-primary-background, +.theo-social .theo-social-container .theo-social-label, +.theoplayer-skin .theo-menu-header, +.theoplayer-skin .theo-settings-control-label-hd { color: black; background-color: #ffc50f; } -.theo-primary-border, .theo-related-grid .theo-related-grid-tile:hover .theo-related-grid-tile-content .theo-related-grid-tile-title { +.theo-primary-border, +.theo-related-grid .theo-related-grid-tile:hover .theo-related-grid-tile-content .theo-related-grid-tile-title { border-color: #ffc50f; } -.theo-secondary-color, .theoplayer-skin .vjs-loading-spinner, .theoplayer-skin .vjs-time-tooltip, .theoplayer-skin .vjs-control-bar, .theoplayer-skin { +.theo-secondary-color, +.theoplayer-skin .vjs-loading-spinner, +.theoplayer-skin .vjs-time-tooltip, +.theoplayer-skin .vjs-control-bar, +.theoplayer-skin { color: white; } -.theo-secondary-background, .theoplayer-skin .theo-overlay-panel .theo-close-button { +.theo-secondary-background, +.theoplayer-skin .theo-overlay-panel .theo-close-button { color: black; background-color: white; } -.theo-tertiary-color, .theoplayer-skin .theo-control-bar-shadow { +.theo-tertiary-color, +.theoplayer-skin .theo-control-bar-shadow { color: black; } -.theo-tertiary-background, .theo-social .theo-social-container .theo-social-text-container .theo-social-content-container, .theo-related-grid .theo-related-grid-tile:hover .theo-related-grid-tile-content .theo-related-grid-tile-title, .theoplayer-skin .theo-menu.theo-menu-animatable .theo-menu-animation-container { +.theo-tertiary-background, +.theo-social .theo-social-container .theo-social-text-container .theo-social-content-container, +.theo-related-grid .theo-related-grid-tile:hover .theo-related-grid-tile-content .theo-related-grid-tile-title, +.theoplayer-skin .theo-menu.theo-menu-animatable .theo-menu-animation-container { color: white; background-color: rgba(28, 28, 28, 0.9); } @@ -1774,8 +1891,8 @@ video::-webkit-media-text-track-display { left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); - -moz-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } .theoplayer-skin .vjs-big-play-button:before { display: none; @@ -1786,10 +1903,10 @@ video::-webkit-media-text-track-display { top: 0; width: 100%; height: 100%; - content: ""; + content: ''; border-radius: 100%; -webkit-box-shadow: 0 0 2em currentColor; - box-shadow: 0 0 2em currentColor; + box-shadow: 0 0 2em currentColor; opacity: 0; -webkit-transition: all 0.1s ease-in-out; -moz-transition: all 0.1s ease-in-out; @@ -1802,7 +1919,8 @@ video::-webkit-media-text-track-display { height: 100%; width: 100%; } -.theoplayer-skin .vjs-big-play-button, .theoplayer-skin:hover .vjs-big-play-button, +.theoplayer-skin .vjs-big-play-button, +.theoplayer-skin:hover .vjs-big-play-button, .theoplayer-skin .vjs-big-play-button:focus { border: none; } @@ -1810,15 +1928,15 @@ video::-webkit-media-text-track-display { .theoplayer-skin .vjs-big-play-button:focus { background: rgba(0, 0, 0, 0.4); -webkit-transition-duration: 0.2s; - -moz-transition-duration: 0.2s; - transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; } .theoplayer-skin:hover .vjs-big-play-button:after, .theoplayer-skin .vjs-big-play-button:focus:after { opacity: 0.6; -webkit-transition-duration: 0.2s; - -moz-transition-duration: 0.2s; - transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; } .theoplayer-skin .theo-button-tooltip { font-family: Arial, Helvetica, sans-serif; @@ -1894,14 +2012,14 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-align: center; -webkit-align-items: center; - -moz-box-align: center; - -ms-flex-align: center; - align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-flex: 0; -webkit-flex: none; - -moz-box-flex: 0; - -ms-flex: none; - flex: none; + -moz-box-flex: 0; + -ms-flex: none; + flex: none; } .theoplayer-skin .theo-live-control-indicator { color: #888; @@ -1983,14 +2101,14 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-align: center; -webkit-align-items: center; - -moz-box-align: center; - -ms-flex-align: center; - align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-flex: 0; -webkit-flex: none; - -moz-box-flex: 0; - -ms-flex: none; - flex: none; + -moz-box-flex: 0; + -ms-flex: none; + flex: none; } .theoplayer-skin .theo-settings-control-label-hd { display: none; @@ -2002,7 +2120,7 @@ video::-webkit-media-text-track-display { right: 0.3em; top: 0.95em; -webkit-box-shadow: black 0px 0px 1px; - box-shadow: black 0px 0px 1px; + box-shadow: black 0px 0px 1px; border-radius: 0.125em; } .theoplayer-skin.theo-hd .theo-settings-control-label-hd { @@ -2029,26 +2147,31 @@ video::-webkit-media-text-track-display { top: 50%; right: 0; -webkit-transform: translate(50%, -50%) scale(0); - -moz-transform: translate(50%, -50%) scale(0); - transform: translate(50%, -50%) scale(0); + -moz-transform: translate(50%, -50%) scale(0); + transform: translate(50%, -50%) scale(0); -webkit-transition: -webkit-transform 0.2s; transition: -webkit-transform 0.2s; - -moz-transition: transform 0.2s, -moz-transform 0.2s; + -moz-transition: + transform 0.2s, + -moz-transform 0.2s; transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s, -moz-transform 0.2s; + transition: + transform 0.2s, + -webkit-transform 0.2s, + -moz-transform 0.2s; pointer-events: none; } .theoplayer-skin .vjs-progress-control:hover .vjs-play-progress:before { -webkit-transform: translate(50%, -50%) scale(1); - -moz-transform: translate(50%, -50%) scale(1); - transform: translate(50%, -50%) scale(1); + -moz-transform: translate(50%, -50%) scale(1); + transform: translate(50%, -50%) scale(1); } .theoplayer-skin .vjs-time-tooltip { height: auto; top: 100%; -webkit-transform: translateY(-100%) translateY(-1em); - -moz-transform: translateY(-100%) translateY(-1em); - transform: translateY(-100%) translateY(-1em); + -moz-transform: translateY(-100%) translateY(-1em); + transform: translateY(-100%) translateY(-1em); } .theoplayer-skin .vjs-progress-control .vjs-mouse-display { z-index: 2; @@ -2066,7 +2189,7 @@ video::-webkit-media-text-track-display { padding: 0; border-radius: 0; -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.8); - box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.8); + box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.8); } .theoplayer-skin .theo-time-tooltip-has-thumbnail .theo-time-tooltip-thumbnail { display: block; @@ -2077,8 +2200,8 @@ video::-webkit-media-text-track-display { bottom: 0; left: 50%; -webkit-transform: translateX(-50%); - -moz-transform: translateX(-50%); - transform: translateX(-50%); + -moz-transform: translateX(-50%); + transform: translateX(-50%); padding: 3px 4px; border-radius: 0.3em; color: #fff; @@ -2088,38 +2211,38 @@ video::-webkit-media-text-track-display { .theoplayer-skin .vjs-play-control { -webkit-box-ordinal-group: -99; -webkit-order: -100; - -moz-box-ordinal-group: -99; - -ms-flex-order: -100; - order: -100; + -moz-box-ordinal-group: -99; + -ms-flex-order: -100; + order: -100; } .theoplayer-skin .vjs-volume-menu-button { -webkit-box-ordinal-group: -89; -webkit-order: -90; - -moz-box-ordinal-group: -89; - -ms-flex-order: -90; - order: -90; + -moz-box-ordinal-group: -89; + -ms-flex-order: -90; + order: -90; } .theoplayer-skin .theo-live-control { -webkit-box-ordinal-group: -79; -webkit-order: -80; - -moz-box-ordinal-group: -79; - -ms-flex-order: -80; - order: -80; + -moz-box-ordinal-group: -79; + -ms-flex-order: -80; + order: -80; } .theoplayer-skin .vjs-mute-control { -webkit-box-ordinal-group: -98; -webkit-order: -99; - -moz-box-ordinal-group: -98; - -ms-flex-order: -99; - order: -99; + -moz-box-ordinal-group: -98; + -ms-flex-order: -99; + order: -99; width: 3em; } .theoplayer-skin .vjs-volume-control { -webkit-box-ordinal-group: -97; -webkit-order: -98; - -moz-box-ordinal-group: -97; - -ms-flex-order: -98; - order: -98; + -moz-box-ordinal-group: -97; + -ms-flex-order: -98; + order: -98; width: auto; margin: 0; } @@ -2127,14 +2250,32 @@ video::-webkit-media-text-track-display { margin-right: 1em; opacity: 1; width: 5em; - -webkit-transition: margin 0.4s ease-in-out, opacity 0.4s ease-in-out, width 0.4s ease-in-out; - -moz-transition: margin 0.4s ease-in-out, opacity 0.4s ease-in-out, width 0.4s ease-in-out; - transition: margin 0.4s ease-in-out, opacity 0.4s ease-in-out, width 0.4s ease-in-out; + -webkit-transition: + margin 0.4s ease-in-out, + opacity 0.4s ease-in-out, + width 0.4s ease-in-out; + -moz-transition: + margin 0.4s ease-in-out, + opacity 0.4s ease-in-out, + width 0.4s ease-in-out; + transition: + margin 0.4s ease-in-out, + opacity 0.4s ease-in-out, + width 0.4s ease-in-out; } .theoplayer-skin .vjs-volume-control .vjs-volume-bar:focus { - -webkit-transition: margin 0.1s ease-in-out, opacity 0.1s ease-in-out, width 0.1s ease-in-out; - -moz-transition: margin 0.1s ease-in-out, opacity 0.1s ease-in-out, width 0.1s ease-in-out; - transition: margin 0.1s ease-in-out, opacity 0.1s ease-in-out, width 0.1s ease-in-out; + -webkit-transition: + margin 0.1s ease-in-out, + opacity 0.1s ease-in-out, + width 0.1s ease-in-out; + -moz-transition: + margin 0.1s ease-in-out, + opacity 0.1s ease-in-out, + width 0.1s ease-in-out; + transition: + margin 0.1s ease-in-out, + opacity 0.1s ease-in-out, + width 0.1s ease-in-out; } .theoplayer-skin .vjs-mute-control:not(:hover) + .vjs-volume-control:not(:hover) .vjs-volume-bar:not(:hover):not(:focus) { margin-right: 0; @@ -2144,30 +2285,30 @@ video::-webkit-media-text-track-display { .theoplayer-skin .theo-settings-control-button { -webkit-box-ordinal-group: 96; -webkit-order: 95; - -moz-box-ordinal-group: 96; - -ms-flex-order: 95; - order: 95; + -moz-box-ordinal-group: 96; + -ms-flex-order: 95; + order: 95; } .theoplayer-skin .theo-audio-track-control-button { -webkit-box-ordinal-group: 95; -webkit-order: 94; - -moz-box-ordinal-group: 95; - -ms-flex-order: 94; - order: 94; + -moz-box-ordinal-group: 95; + -ms-flex-order: 94; + order: 94; } .theoplayer-skin .theo-text-track-control-button { -webkit-box-ordinal-group: 94; -webkit-order: 93; - -moz-box-ordinal-group: 94; - -ms-flex-order: 93; - order: 93; + -moz-box-ordinal-group: 94; + -ms-flex-order: 93; + order: 93; } .theoplayer-skin .vjs-fullscreen-control { -webkit-box-ordinal-group: 101; -webkit-order: 100; - -moz-box-ordinal-group: 101; - -ms-flex-order: 100; - order: 100; + -moz-box-ordinal-group: 101; + -ms-flex-order: 100; + order: 100; } .theoplayer-skin:not(.theo-seekbar-inside-controls) .theo-control-bar-shadow { height: 150%; @@ -2182,17 +2323,17 @@ video::-webkit-media-text-track-display { height: 0.5em; -webkit-box-align: end; -webkit-align-items: flex-end; - -moz-box-align: end; - -ms-flex-align: end; - align-items: flex-end; + -moz-box-align: end; + -ms-flex-align: end; + align-items: flex-end; } .theoplayer-skin:not(.theo-seekbar-inside-controls) .vjs-custom-control-spacer { display: block; -webkit-box-flex: 1; -webkit-flex: auto; - -moz-box-flex: 1; - -ms-flex: auto; - flex: auto; + -moz-box-flex: 1; + -ms-flex: auto; + flex: auto; } .theoplayer-skin:not(.theo-seekbar-inside-controls) .theo-button-tooltip { margin-bottom: 1em; @@ -2213,28 +2354,29 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-pack: center; -webkit-justify-content: center; - -moz-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -moz-box-pack: center; + -ms-flex-pack: center; + justify-content: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; - -moz-box-orient: vertical; - -moz-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -moz-box-orient: vertical; + -moz-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; font-size: 2em; } .theoplayer-skin.vjs-error .vjs-modal-dialog { - background: #000 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAQAAAC0NkA6AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BUNTVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMWgx9DJcMqhgeM0oxRjPMYnzIZMjUwXWLWYG5kvstiwzKPlZk1m/UqmxPbJnYV9pkcAhydnKyczVzMXG3c3NwTeaR4lvIa8x7iC+Z7xl8tICSwWtBN8JFQo7Ci8GGRdFFe0a1iceKc4lslUiSFJY9KVUjrSj+RmSMbKicod1a+R8FHkVfxgtIU5SgVJZXXqlvVGtX9NGQ13mru05qonapjrSuk+0rviP58gxrDKCNLY0nj3yb3TA+brTDvt6iwTLTysbawUbUVsWOx+2r/3OG24wWnY857Xba6rndb6b7UY5HnQq8F3gt9Fvsu81vlvz5ga+DeoGPB50NuhT4L+xLBFCkYpRRtHOMWGxWXF9+SMDtxc9LZ5OepTGly6TYZUZlVWbOy9+Tcy2PKVy/wKSwuml18uORtmUS5S0Vh5byqs9V/a/Xq4usnNRxr/N1s0JLeOq/teodgp3dXe/fhXoY++/66Cfsm/p/sOKV16onpvDOCZ86a9WiO1tySefsWcC0MW7R48celDssmLH+40nhV6+qba3XXNa2/udFgU8fmB1uttk3d/mGn765Vezj2pu87fkD9YOeh10f8jm4+Ln6i9uST095ntpyTPd9+4dOluMunrlpcW3ZD9Gbrra930u/evO/z4MAj08ernyo+m/lC8GXXa+Y3dW9/vi/98OlTwed3X/O+vfuR//PD7+I/3/5V/f8PAC4MHYugPAkxAAA6L2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwMTQgNzkuMTU2Nzk3LCAyMDE0LzA4LzIwLTA5OjUzOjAyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTYtMDgtMDRUMTY6MTA6MTYrMDI6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTA4LTA0VDE2OjEwOjE2KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wOC0wNFQxNjoxMDoxNiswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6MDQ2NTM1NjctOWJkNy03YTRhLWJiZWYtZWUzNGFkMmExZDRmPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWQ1ZTdlMjQtNWE0ZC0xMWU2LWI1NjItZDZkNTk2NDhiNmUyPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NjkyYjdkODktNDgxNC03MjQ1LTgwZjktNTZlM2YyZWFjYjRiPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5MmI3ZDg5LTQ4MTQtNzI0NS04MGY5LTU2ZTNmMmVhY2I0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0wOC0wNFQxNjoxMDoxNiswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDowNDY1MzU2Ny05YmQ3LTdhNGEtYmJlZi1lZTM0YWQyYTFkNGY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMDgtMDRUMTY6MTA6MTYrMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4xPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+RG90IEdhaW4gMTUlPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz7EkfbeAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAmsSURBVHjahNhLdxtJcobhh5VgFaqIO0BQoEQNpW66Ty99vPSGW/8r/8tZdKvFISXeBBD3AqqAAr1onvaMN97nyROR8cUbX+TRf/13bqVho2Np4M6lqdJCXSp4MfIstvGL36XOfJFa++zeVgsdS8HcUKZQ8yQo0bCR4lSUqCmtnKmwMHSvpePKhcSLGJdKB7dSHYWDps/GhiJB04mpTGXii4l7pQqpSqXmxa1o6tFPzu09yszlgieVsRszQ1uJXNtn52JMnJgJgtxB07PfnVj6xdZIEIx8VEoEwV7budC9Hvomd6xuJ9U3Vlmoa6rj2NpG371jT/bWRg4e1BWGFk40DDBVqTuWyB3ZaZo60bI2Fl2YaAsozVUIRkYyS7HCOxvcK2WunKlLbFyaO7cEsd9UMiNNM4VK7kxNamPhTCx0ri8EHDT1rDX0fZF4EpxY2fjoSFff1JO2XK60k/ruyNrBxJVvWMv1vThW2Zuh7YedSLRx95bFUo6lH04QaZg5N1eA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"); + background: #000 + url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAQAAAC0NkA6AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BUNTVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMWgx9DJcMqhgeM0oxRjPMYnzIZMjUwXWLWYG5kvstiwzKPlZk1m/UqmxPbJnYV9pkcAhydnKyczVzMXG3c3NwTeaR4lvIa8x7iC+Z7xl8tICSwWtBN8JFQo7Ci8GGRdFFe0a1iceKc4lslUiSFJY9KVUjrSj+RmSMbKicod1a+R8FHkVfxgtIU5SgVJZXXqlvVGtX9NGQ13mru05qonapjrSuk+0rviP58gxrDKCNLY0nj3yb3TA+brTDvt6iwTLTysbawUbUVsWOx+2r/3OG24wWnY857Xba6rndb6b7UY5HnQq8F3gt9Fvsu81vlvz5ga+DeoGPB50NuhT4L+xLBFCkYpRRtHOMWGxWXF9+SMDtxc9LZ5OepTGly6TYZUZlVWbOy9+Tcy2PKVy/wKSwuml18uORtmUS5S0Vh5byqs9V/a/Xq4usnNRxr/N1s0JLeOq/teodgp3dXe/fhXoY++/66Cfsm/p/sOKV16onpvDOCZ86a9WiO1tySefsWcC0MW7R48celDssmLH+40nhV6+qba3XXNa2/udFgU8fmB1uttk3d/mGn765Vezj2pu87fkD9YOeh10f8jm4+Ln6i9uST095ntpyTPd9+4dOluMunrlpcW3ZD9Gbrra930u/evO/z4MAj08ernyo+m/lC8GXXa+Y3dW9/vi/98OlTwed3X/O+vfuR//PD7+I/3/5V/f8PAC4MHYugPAkxAAA6L2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwMTQgNzkuMTU2Nzk3LCAyMDE0LzA4LzIwLTA5OjUzOjAyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTYtMDgtMDRUMTY6MTA6MTYrMDI6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTA4LTA0VDE2OjEwOjE2KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wOC0wNFQxNjoxMDoxNiswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6MDQ2NTM1NjctOWJkNy03YTRhLWJiZWYtZWUzNGFkMmExZDRmPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWQ1ZTdlMjQtNWE0ZC0xMWU2LWI1NjItZDZkNTk2NDhiNmUyPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NjkyYjdkODktNDgxNC03MjQ1LTgwZjktNTZlM2YyZWFjYjRiPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5MmI3ZDg5LTQ4MTQtNzI0NS04MGY5LTU2ZTNmMmVhY2I0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0wOC0wNFQxNjoxMDoxNiswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDowNDY1MzU2Ny05YmQ3LTdhNGEtYmJlZi1lZTM0YWQyYTFkNGY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMDgtMDRUMTY6MTA6MTYrMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4xPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+RG90IEdhaW4gMTUlPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz7EkfbeAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAmsSURBVHjahNhLdxtJcobhh5VgFaqIO0BQoEQNpW66Ty99vPSGW/8r/8tZdKvFISXeBBD3AqqAAr1onvaMN97nyROR8cUbX+TRf/13bqVho2Np4M6lqdJCXSp4MfIstvGL36XOfJFa++zeVgsdS8HcUKZQ8yQo0bCR4lSUqCmtnKmwMHSvpePKhcSLGJdKB7dSHYWDps/GhiJB04mpTGXii4l7pQqpSqXmxa1o6tFPzu09yszlgieVsRszQ1uJXNtn52JMnJgJgtxB07PfnVj6xdZIEIx8VEoEwV7budC9Hvomd6xuJ9U3Vlmoa6rj2NpG371jT/bWRg4e1BWGFk40DDBVqTuWyB3ZaZo60bI2Fl2YaAsozVUIRkYyS7HCOxvcK2WunKlLbFyaO7cEsd9UMiNNM4VK7kxNamPhTCx0ri8EHDT1rDX0fZF4EpxY2fjoSFff1JO2XK60k/ruyNrBxJVvWMv1vThW2Zuh7YedSLRx95bFUo6lH04QaZg5N1eA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'); -webkit-animation: theo-noise-animation 0.2s linear infinite; - -moz-animation: theo-noise-animation 0.2s linear infinite; - animation: theo-noise-animation 0.2s linear infinite; + -moz-animation: theo-noise-animation 0.2s linear infinite; + animation: theo-noise-animation 0.2s linear infinite; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; -webkit-box-shadow: inset 0 0 10em rgba(0, 0, 0, 0.3); - box-shadow: inset 0 0 10em rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 10em rgba(0, 0, 0, 0.3); pointer-events: none; top: 0; left: 0; @@ -2369,7 +2511,8 @@ video::-webkit-media-text-track-display { height: 50px; margin: -25px 0 0 -25px; } -.theoplayer-skin .vjs-loading-spinner:before, .theoplayer-skin .vjs-loading-spinner:after { +.theoplayer-skin .vjs-loading-spinner:before, +.theoplayer-skin .vjs-loading-spinner:after { display: none; } .theoplayer-skin .theo-loading-spinner-rotator { @@ -2396,10 +2539,10 @@ video::-webkit-media-text-track-display { } .theoplayer-skin .theo-loading-spinner-circle-left:before, .theoplayer-skin .theo-loading-spinner-circle-right:before { - content: ""; + content: ''; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; position: absolute; width: 200%; height: 100%; @@ -2417,25 +2560,29 @@ video::-webkit-media-text-track-display { right: 0; border-left-color: transparent; } -.theoplayer-skin.vjs-seeking .vjs-loading-spinner, .theoplayer-skin.vjs-waiting .vjs-loading-spinner { +.theoplayer-skin.vjs-seeking .vjs-loading-spinner, +.theoplayer-skin.vjs-waiting .vjs-loading-spinner { -webkit-animation: theo-spinner-linspin 1568.23529647ms linear infinite; - -moz-animation: theo-spinner-linspin 1568.23529647ms linear infinite; - animation: theo-spinner-linspin 1568.23529647ms linear infinite; + -moz-animation: theo-spinner-linspin 1568.23529647ms linear infinite; + animation: theo-spinner-linspin 1568.23529647ms linear infinite; } -.theoplayer-skin.vjs-seeking .theo-loading-spinner-rotator, .theoplayer-skin.vjs-waiting .theo-loading-spinner-rotator { +.theoplayer-skin.vjs-seeking .theo-loading-spinner-rotator, +.theoplayer-skin.vjs-waiting .theo-loading-spinner-rotator { -webkit-animation: theo-spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - -moz-animation: theo-spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: theo-spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -moz-animation: theo-spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: theo-spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } -.theoplayer-skin.vjs-seeking .theo-loading-spinner-circle-left:before, .theoplayer-skin.vjs-waiting .theo-loading-spinner-circle-left:before { +.theoplayer-skin.vjs-seeking .theo-loading-spinner-circle-left:before, +.theoplayer-skin.vjs-waiting .theo-loading-spinner-circle-left:before { -webkit-animation: theo-spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - -moz-animation: theo-spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: theo-spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -moz-animation: theo-spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: theo-spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } -.theoplayer-skin.vjs-seeking .theo-loading-spinner-circle-right:before, .theoplayer-skin.vjs-waiting .theo-loading-spinner-circle-right:before { +.theoplayer-skin.vjs-seeking .theo-loading-spinner-circle-right:before, +.theoplayer-skin.vjs-waiting .theo-loading-spinner-circle-right:before { -webkit-animation: theo-spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - -moz-animation: theo-spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: theo-spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + -moz-animation: theo-spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: theo-spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .theoplayer-skin.vjs-error .vjs-loading-spinner, @@ -2446,196 +2593,202 @@ video::-webkit-media-text-track-display { @-webkit-keyframes theo-spinner-linspin { to { -webkit-transform: rotate(360deg); - transform: rotate(360deg); + transform: rotate(360deg); } } @-moz-keyframes theo-spinner-linspin { to { -moz-transform: rotate(360deg); - transform: rotate(360deg); + transform: rotate(360deg); } } @keyframes theo-spinner-linspin { to { -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - transform: rotate(360deg); + -moz-transform: rotate(360deg); + transform: rotate(360deg); } } @-webkit-keyframes theo-spinner-easespin { 12.5% { -webkit-transform: rotate(135deg); - transform: rotate(135deg); + transform: rotate(135deg); } 25% { -webkit-transform: rotate(270deg); - transform: rotate(270deg); + transform: rotate(270deg); } 37.5% { -webkit-transform: rotate(405deg); - transform: rotate(405deg); + transform: rotate(405deg); } 50% { -webkit-transform: rotate(540deg); - transform: rotate(540deg); + transform: rotate(540deg); } 62.5% { -webkit-transform: rotate(675deg); - transform: rotate(675deg); + transform: rotate(675deg); } 75% { -webkit-transform: rotate(810deg); - transform: rotate(810deg); + transform: rotate(810deg); } 87.5% { -webkit-transform: rotate(945deg); - transform: rotate(945deg); + transform: rotate(945deg); } to { -webkit-transform: rotate(1080deg); - transform: rotate(1080deg); + transform: rotate(1080deg); } } @-moz-keyframes theo-spinner-easespin { 12.5% { -moz-transform: rotate(135deg); - transform: rotate(135deg); + transform: rotate(135deg); } 25% { -moz-transform: rotate(270deg); - transform: rotate(270deg); + transform: rotate(270deg); } 37.5% { -moz-transform: rotate(405deg); - transform: rotate(405deg); + transform: rotate(405deg); } 50% { -moz-transform: rotate(540deg); - transform: rotate(540deg); + transform: rotate(540deg); } 62.5% { -moz-transform: rotate(675deg); - transform: rotate(675deg); + transform: rotate(675deg); } 75% { -moz-transform: rotate(810deg); - transform: rotate(810deg); + transform: rotate(810deg); } 87.5% { -moz-transform: rotate(945deg); - transform: rotate(945deg); + transform: rotate(945deg); } to { -moz-transform: rotate(1080deg); - transform: rotate(1080deg); + transform: rotate(1080deg); } } @keyframes theo-spinner-easespin { 12.5% { -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - transform: rotate(135deg); + -moz-transform: rotate(135deg); + transform: rotate(135deg); } 25% { -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - transform: rotate(270deg); + -moz-transform: rotate(270deg); + transform: rotate(270deg); } 37.5% { -webkit-transform: rotate(405deg); - -moz-transform: rotate(405deg); - transform: rotate(405deg); + -moz-transform: rotate(405deg); + transform: rotate(405deg); } 50% { -webkit-transform: rotate(540deg); - -moz-transform: rotate(540deg); - transform: rotate(540deg); + -moz-transform: rotate(540deg); + transform: rotate(540deg); } 62.5% { -webkit-transform: rotate(675deg); - -moz-transform: rotate(675deg); - transform: rotate(675deg); + -moz-transform: rotate(675deg); + transform: rotate(675deg); } 75% { -webkit-transform: rotate(810deg); - -moz-transform: rotate(810deg); - transform: rotate(810deg); + -moz-transform: rotate(810deg); + transform: rotate(810deg); } 87.5% { -webkit-transform: rotate(945deg); - -moz-transform: rotate(945deg); - transform: rotate(945deg); + -moz-transform: rotate(945deg); + transform: rotate(945deg); } to { -webkit-transform: rotate(1080deg); - -moz-transform: rotate(1080deg); - transform: rotate(1080deg); + -moz-transform: rotate(1080deg); + transform: rotate(1080deg); } } @-webkit-keyframes theo-spinner-left-spin { - 0%, to { + 0%, + to { -webkit-transform: rotate(130deg); - transform: rotate(130deg); + transform: rotate(130deg); } 50% { -webkit-transform: rotate(-5deg); - transform: rotate(-5deg); + transform: rotate(-5deg); } } @-moz-keyframes theo-spinner-left-spin { - 0%, to { + 0%, + to { -moz-transform: rotate(130deg); - transform: rotate(130deg); + transform: rotate(130deg); } 50% { -moz-transform: rotate(-5deg); - transform: rotate(-5deg); + transform: rotate(-5deg); } } @keyframes theo-spinner-left-spin { - 0%, to { + 0%, + to { -webkit-transform: rotate(130deg); - -moz-transform: rotate(130deg); - transform: rotate(130deg); + -moz-transform: rotate(130deg); + transform: rotate(130deg); } 50% { -webkit-transform: rotate(-5deg); - -moz-transform: rotate(-5deg); - transform: rotate(-5deg); + -moz-transform: rotate(-5deg); + transform: rotate(-5deg); } } @-webkit-keyframes theo-spinner-right-spin { - 0%, to { + 0%, + to { -webkit-transform: rotate(-130deg); - transform: rotate(-130deg); + transform: rotate(-130deg); } 50% { -webkit-transform: rotate(5deg); - transform: rotate(5deg); + transform: rotate(5deg); } } @-moz-keyframes theo-spinner-right-spin { - 0%, to { + 0%, + to { -moz-transform: rotate(-130deg); - transform: rotate(-130deg); + transform: rotate(-130deg); } 50% { -moz-transform: rotate(5deg); - transform: rotate(5deg); + transform: rotate(5deg); } } @keyframes theo-spinner-right-spin { - 0%, to { + 0%, + to { -webkit-transform: rotate(-130deg); - -moz-transform: rotate(-130deg); - transform: rotate(-130deg); + -moz-transform: rotate(-130deg); + transform: rotate(-130deg); } 50% { -webkit-transform: rotate(5deg); - -moz-transform: rotate(5deg); - transform: rotate(5deg); + -moz-transform: rotate(5deg); + transform: rotate(5deg); } } .theoplayer-skin.vjs-has-started.vjs-user-inactive.vjs-playing:not(.theo-menu-opened) .vjs-control-bar { @@ -2677,7 +2830,8 @@ video::-webkit-media-text-track-display { font-size: 1.2em; line-height: 1.2em; } -.theoplayer-skin .theo-menu-header:focus, .theoplayer-skin .theo-menu-header:hover, +.theoplayer-skin .theo-menu-header:focus, +.theoplayer-skin .theo-menu-header:hover, .theoplayer-skin .theo-menu-item:focus, .theoplayer-skin .theo-menu-item:hover { outline: 0; @@ -2705,18 +2859,37 @@ video::-webkit-media-text-track-display { right: 0; bottom: 0; overflow: hidden; - -webkit-transition: width 0.2s cubic-bezier(0.4, 0, 1, 1), height 0.2s cubic-bezier(0.4, 0, 1, 1); - -moz-transition: width 0.2s cubic-bezier(0.4, 0, 1, 1), height 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: width 0.2s cubic-bezier(0.4, 0, 1, 1), height 0.2s cubic-bezier(0.4, 0, 1, 1); + -webkit-transition: + width 0.2s cubic-bezier(0.4, 0, 1, 1), + height 0.2s cubic-bezier(0.4, 0, 1, 1); + -moz-transition: + width 0.2s cubic-bezier(0.4, 0, 1, 1), + height 0.2s cubic-bezier(0.4, 0, 1, 1); + transition: + width 0.2s cubic-bezier(0.4, 0, 1, 1), + height 0.2s cubic-bezier(0.4, 0, 1, 1); } .theoplayer-skin .theo-menu.theo-menu-animatable .theo-menu-content-animatable { bottom: 0; right: 0; - -webkit-transition: opacity 0.3s cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: opacity 0.3s cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1); - -moz-transition: opacity 0.3s cubic-bezier(0, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 1, 1), -moz-transform 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: opacity 0.3s cubic-bezier(0, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: opacity 0.3s cubic-bezier(0, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 1, 1), -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1), -moz-transform 0.2s cubic-bezier(0.4, 0, 1, 1); + -webkit-transition: + opacity 0.3s cubic-bezier(0, 0, 0.2, 1), + -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1); + transition: + opacity 0.3s cubic-bezier(0, 0, 0.2, 1), + -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1); + -moz-transition: + opacity 0.3s cubic-bezier(0, 0, 0.2, 1), + transform 0.2s cubic-bezier(0.4, 0, 1, 1), + -moz-transform 0.2s cubic-bezier(0.4, 0, 1, 1); + transition: + opacity 0.3s cubic-bezier(0, 0, 0.2, 1), + transform 0.2s cubic-bezier(0.4, 0, 1, 1); + transition: + opacity 0.3s cubic-bezier(0, 0, 0.2, 1), + transform 0.2s cubic-bezier(0.4, 0, 1, 1), + -webkit-transform 0.2s cubic-bezier(0.4, 0, 1, 1), + -moz-transform 0.2s cubic-bezier(0.4, 0, 1, 1); position: absolute; background: none; } @@ -2748,11 +2921,14 @@ video::-webkit-media-text-track-display { text-align: center; list-style-type: none; } -.theoplayer-skin .theo-menu .theo-menu-item:focus, .theoplayer-skin .theo-menu .theo-menu-item:hover { +.theoplayer-skin .theo-menu .theo-menu-item:focus, +.theoplayer-skin .theo-menu .theo-menu-item:hover { color: inherit; background-color: rgba(255, 255, 255, 0.1); } -.theoplayer-skin .theo-menu .theo-menu-item.vjs-selected, .theoplayer-skin .theo-menu .theo-menu-item.vjs-selected:focus, .theoplayer-skin .theo-menu .theo-menu-item.vjs-selected:hover { +.theoplayer-skin .theo-menu .theo-menu-item.vjs-selected, +.theoplayer-skin .theo-menu .theo-menu-item.vjs-selected:focus, +.theoplayer-skin .theo-menu .theo-menu-item.vjs-selected:hover { color: #ffc50f; background-color: rgba(255, 255, 255, 0.2); } @@ -2764,9 +2940,9 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-pack: justify; -webkit-justify-content: space-between; - -moz-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -moz-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; transition: all 0.2s; @@ -2778,8 +2954,8 @@ video::-webkit-media-text-track-display { width: 2.2em; height: 0.9em; -webkit-align-self: center; - -ms-flex-item-align: center; - align-self: center; + -ms-flex-item-align: center; + align-self: center; margin-left: 1em; display: -webkit-box; display: -webkit-flex; @@ -2788,9 +2964,9 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-pack: start; -webkit-justify-content: flex-start; - -moz-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; + -moz-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; opacity: 0.3; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; @@ -2802,25 +2978,27 @@ video::-webkit-media-text-track-display { height: 1.2em; border-radius: 50%; -webkit-align-self: center; - -ms-flex-item-align: center; - align-self: center; + -ms-flex-item-align: center; + align-self: center; -webkit-transition: all 0.2s; -moz-transition: all 0.2s; transition: all 0.2s; } -.theoplayer-skin .theo-menu-item.theo-text-track-menu-item.vjs-selected .theo-text-track-menu-item-toggle, .theoplayer-skin .theo-menu-item.theo-text-track-menu-item:hover .theo-text-track-menu-item-toggle { +.theoplayer-skin .theo-menu-item.theo-text-track-menu-item.vjs-selected .theo-text-track-menu-item-toggle, +.theoplayer-skin .theo-menu-item.theo-text-track-menu-item:hover .theo-text-track-menu-item-toggle { opacity: 1; background-color: rgba(255, 255, 255, 0.4); } -.theoplayer-skin .theo-menu-item.theo-text-track-menu-item.vjs-selected .theo-text-track-menu-item-toggle .theo-text-track-menu-item-toggle-slider, .theoplayer-skin .theo-menu-item.theo-text-track-menu-item:hover .theo-text-track-menu-item-toggle .theo-text-track-menu-item-toggle-slider { +.theoplayer-skin .theo-menu-item.theo-text-track-menu-item.vjs-selected .theo-text-track-menu-item-toggle .theo-text-track-menu-item-toggle-slider, +.theoplayer-skin .theo-menu-item.theo-text-track-menu-item:hover .theo-text-track-menu-item-toggle .theo-text-track-menu-item-toggle-slider { background-color: #d0d0d0; } .theoplayer-skin .theo-menu-item.theo-text-track-menu-item.vjs-selected .theo-text-track-menu-item-toggle { -webkit-box-pack: end; -webkit-justify-content: flex-end; - -moz-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; + -moz-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; } .theoplayer-skin .theo-menu.theo-settings-control-menu, .theoplayer-skin .theo-menu.theo-settings-control-menu .theo-menu-content-animatable { @@ -2843,14 +3021,14 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-pack: justify; -webkit-justify-content: space-between; - -moz-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + -moz-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; -webkit-box-align: baseline; -webkit-align-items: baseline; - -moz-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; + -moz-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; position: relative; white-space: nowrap; padding-right: 2em; @@ -2874,7 +3052,7 @@ video::-webkit-media-text-track-display { margin: 2px 0 0; list-style: none; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); background-clip: padding-box; text-align: left; overflow: hidden; @@ -2913,7 +3091,7 @@ video::-webkit-media-text-track-display { } .theoplayer-skin .theo-settings-control-menu-item-hd-label { display: inline; - content: "HD"; + content: 'HD'; font-weight: bold; font-size: 0.7em; margin-left: 0.2em; @@ -2944,8 +3122,8 @@ video::-webkit-media-text-track-display { } .theoplayer-skin.theo-mobile .vjs-play-progress:before { -webkit-transform: translate(50%, -50%) scale(1); - -moz-transform: translate(50%, -50%) scale(1); - transform: translate(50%, -50%) scale(1); + -moz-transform: translate(50%, -50%) scale(1); + transform: translate(50%, -50%) scale(1); -webkit-transition: none; -moz-transition: none; transition: none; @@ -2982,7 +3160,8 @@ video::-webkit-media-text-track-display { .theoplayer-skin.theo-mobile:not(.theo-seekbar-inside-controls) .vjs-progress-control .vjs-progress-holder .vjs-play-progress:before { font-size: 0.9em; } -.theoplayer-skin.theo-mobile .vjs-button, .theoplayer-skin.theo-mobile .vjs-button:before { +.theoplayer-skin.theo-mobile .vjs-button, +.theoplayer-skin.theo-mobile .vjs-button:before { -webkit-transition: text-shadow 0.2s ease-in-out; -moz-transition: text-shadow 0.2s ease-in-out; transition: text-shadow 0.2s ease-in-out; @@ -2990,7 +3169,8 @@ video::-webkit-media-text-track-display { .theoplayer-skin.theo-mobile .vjs-button:hover:before { text-shadow: none; } -.theoplayer-skin.theo-mobile .vjs-button.theo-mobile-button-hover, .theoplayer-skin.theo-mobile .vjs-button.theo-mobile-button-hover:before { +.theoplayer-skin.theo-mobile .vjs-button.theo-mobile-button-hover, +.theoplayer-skin.theo-mobile .vjs-button.theo-mobile-button-hover:before { text-shadow: 0 0 1em white; -webkit-transition: none; -moz-transition: none; @@ -3004,8 +3184,8 @@ video::-webkit-media-text-track-display { top: auto; bottom: 50%; -webkit-transform: translateY(50%); - -moz-transform: translateY(50%); - transform: translateY(50%); + -moz-transform: translateY(50%); + transform: translateY(50%); left: 15%; right: 15%; width: 70%; @@ -3037,7 +3217,8 @@ video::-webkit-media-text-track-display { .theoplayer-skin.theo-mobile .theo-menu.theo-menu-animatable .theo-menu-item.theo-mobile-menu-item-hover { background-color: rgba(255, 255, 255, 0.1); } -.theoplayer-skin.theo-mobile .theo-menu.theo-menu-animatable .theo-menu-item:focus, .theoplayer-skin.theo-mobile .theo-menu.theo-menu-animatable .theo-menu-item:hover { +.theoplayer-skin.theo-mobile .theo-menu.theo-menu-animatable .theo-menu-item:focus, +.theoplayer-skin.theo-mobile .theo-menu.theo-menu-animatable .theo-menu-item:hover { background-color: transparent; } .theoplayer-skin.theo-mobile .theo-menu.theo-menu-animatable .theo-menu-animation-container { @@ -3054,8 +3235,8 @@ video::-webkit-media-text-track-display { } .theoplayer-skin.theo-mobile .theo-settings-control-menu-item-title { -webkit-align-self: auto; - -ms-flex-item-align: auto; - align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; } .theoplayer-skin.theo-mobile .theo-settings-control-menu-item-value { font-size: 1em; @@ -3134,14 +3315,14 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-pack: center; -webkit-justify-content: center; - -moz-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -moz-box-pack: center; + -ms-flex-pack: center; + justify-content: center; -webkit-box-align: center; -webkit-align-items: center; - -moz-box-align: center; - -ms-flex-align: center; - align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + align-items: center; width: 100%; height: 100%; position: absolute; @@ -3176,10 +3357,11 @@ video::-webkit-media-text-track-display { left: 0; right: 0; -webkit-filter: blur(4px); - filter: blur(4px); + filter: blur(4px); visibility: hidden; } -.theoplayer-skin.video-js .vjs-button:hover .theo-button-icon-blur, .theoplayer-skin.video-js .vjs-button:focus .theo-button-icon-blur { +.theoplayer-skin.video-js .vjs-button:hover .theo-button-icon-blur, +.theoplayer-skin.video-js .vjs-button:focus .theo-button-icon-blur { visibility: visible; } @@ -3200,7 +3382,8 @@ video::-webkit-media-text-track-display { font-weight: bold; text-align: center; } -.theoplayer-skin .theo-close-button:focus:before, .theoplayer-skin .theo-close-button:hover:before { +.theoplayer-skin .theo-close-button:focus:before, +.theoplayer-skin .theo-close-button:hover:before { text-shadow: 0 0 1em white; } @@ -3210,10 +3393,10 @@ video::-webkit-media-text-track-display { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -webkit-flex-direction: row-reverse; - -moz-box-orient: horizontal; - -moz-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse; + -moz-box-orient: horizontal; + -moz-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; visibility: hidden; margin: 0.75em; padding: 0; @@ -3251,21 +3434,21 @@ video::-webkit-media-text-track-display { right: 0; -webkit-box-pack: end; -webkit-justify-content: flex-end; - -moz-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; + -moz-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; - -moz-box-orient: horizontal; - -moz-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; + -moz-box-orient: horizontal; + -moz-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; -webkit-box-align: right; -webkit-align-items: right; - -moz-box-align: right; - -ms-flex-align: right; - align-items: right; + -moz-box-align: right; + -ms-flex-align: right; + align-items: right; } .theo-quality-label-text { @@ -3297,25 +3480,25 @@ video::-webkit-media-text-track-display { .vjs-descriptions-button { -webkit-box-ordinal-group: 91; -webkit-order: 90; - -moz-box-ordinal-group: 91; - -ms-flex-order: 90; - order: 90; + -moz-box-ordinal-group: 91; + -ms-flex-order: 90; + order: 90; } /* Chromecast button */ .theo-chromecast-button { -webkit-box-ordinal-group: 94; -webkit-order: 93; - -moz-box-ordinal-group: 94; - -ms-flex-order: 93; - order: 93; + -moz-box-ordinal-group: 94; + -ms-flex-order: 93; + order: 93; } .theo-chromecast-unavailable .theo-chromecast-button { display: none; } .theo-chromecast-button .theo-chromecast-rings { -webkit-clip-path: polygon(50% -100%, 50% 50%, 100% 50%, 100% -100%); - clip-path: polygon(50% -100%, 50% 50%, 100% 50%, 100% -100%); + clip-path: polygon(50% -100%, 50% 50%, 100% 50%, 100% -100%); } .theo-chromecast-button .theo-chromecast-inner { @@ -3330,153 +3513,171 @@ video::-webkit-media-text-track-display { .theo-chromecast-connecting .theo-chromecast-button .theo-chromecast-ring { -webkit-animation: 0.9s linear infinite; - -moz-animation: 0.9s linear infinite; - animation: 0.9s linear infinite; + -moz-animation: 0.9s linear infinite; + animation: 0.9s linear infinite; } .theo-chromecast-connecting .theo-chromecast-button .theo-chromecast-ring1 { -webkit-animation-name: theo-chromecast-connecting-ring1; - -moz-animation-name: theo-chromecast-connecting-ring1; - animation-name: theo-chromecast-connecting-ring1; + -moz-animation-name: theo-chromecast-connecting-ring1; + animation-name: theo-chromecast-connecting-ring1; } .theo-chromecast-connecting .theo-chromecast-button .theo-chromecast-ring2 { -webkit-animation-name: theo-chromecast-connecting-ring2; - -moz-animation-name: theo-chromecast-connecting-ring2; - animation-name: theo-chromecast-connecting-ring2; + -moz-animation-name: theo-chromecast-connecting-ring2; + animation-name: theo-chromecast-connecting-ring2; } .theo-chromecast-connecting .theo-chromecast-button .theo-chromecast-ring3 { -webkit-animation-name: theo-chromecast-connecting-ring3; - -moz-animation-name: theo-chromecast-connecting-ring3; - animation-name: theo-chromecast-connecting-ring3; + -moz-animation-name: theo-chromecast-connecting-ring3; + animation-name: theo-chromecast-connecting-ring3; } .theo-chromecast-connecting .theo-chromecast-button .theo-chromecast-ring4 { -webkit-animation-name: theo-chromecast-connecting-ring4; - -moz-animation-name: theo-chromecast-connecting-ring4; - animation-name: theo-chromecast-connecting-ring4; + -moz-animation-name: theo-chromecast-connecting-ring4; + animation-name: theo-chromecast-connecting-ring4; } @-webkit-keyframes theo-chromecast-connecting-ring1 { - 0%, 37.5% { + 0%, + 37.5% { -webkit-transform: scale(0); - transform: scale(0); + transform: scale(0); } - 62.5%, 100% { + 62.5%, + 100% { -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } } @-moz-keyframes theo-chromecast-connecting-ring1 { - 0%, 37.5% { + 0%, + 37.5% { -moz-transform: scale(0); - transform: scale(0); + transform: scale(0); } - 62.5%, 100% { + 62.5%, + 100% { -moz-transform: scale(1); - transform: scale(1); + transform: scale(1); } } @keyframes theo-chromecast-connecting-ring1 { - 0%, 37.5% { + 0%, + 37.5% { -webkit-transform: scale(0); - -moz-transform: scale(0); - transform: scale(0); + -moz-transform: scale(0); + transform: scale(0); } - 62.5%, 100% { + 62.5%, + 100% { -webkit-transform: scale(1); - -moz-transform: scale(1); - transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); } } @-webkit-keyframes theo-chromecast-connecting-ring2 { - 0%, 20% { + 0%, + 20% { -webkit-transform: scale(0.25); - transform: scale(0.25); + transform: scale(0.25); stroke-width: 24; } 35% { -webkit-transform: scale(0.5); - transform: scale(0.5); + transform: scale(0.5); stroke-width: 10; } - 55%, 100% { + 55%, + 100% { -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); stroke-width: 4; } } @-moz-keyframes theo-chromecast-connecting-ring2 { - 0%, 20% { + 0%, + 20% { -moz-transform: scale(0.25); - transform: scale(0.25); + transform: scale(0.25); stroke-width: 24; } 35% { -moz-transform: scale(0.5); - transform: scale(0.5); + transform: scale(0.5); stroke-width: 10; } - 55%, 100% { + 55%, + 100% { -moz-transform: scale(1); - transform: scale(1); + transform: scale(1); stroke-width: 4; } } @keyframes theo-chromecast-connecting-ring2 { - 0%, 20% { + 0%, + 20% { -webkit-transform: scale(0.25); - -moz-transform: scale(0.25); - transform: scale(0.25); + -moz-transform: scale(0.25); + transform: scale(0.25); stroke-width: 24; } 35% { -webkit-transform: scale(0.5); - -moz-transform: scale(0.5); - transform: scale(0.5); + -moz-transform: scale(0.5); + transform: scale(0.5); stroke-width: 10; } - 55%, 100% { + 55%, + 100% { -webkit-transform: scale(1); - -moz-transform: scale(1); - transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); stroke-width: 4; } } @-webkit-keyframes theo-chromecast-connecting-ring3 { - 0%, 15% { + 0%, + 15% { -webkit-transform: scale(0.6); - transform: scale(0.6); + transform: scale(0.6); stroke-width: 6.66667; } - 45%, 100% { + 45%, + 100% { -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); stroke-width: 4; } } @-moz-keyframes theo-chromecast-connecting-ring3 { - 0%, 15% { + 0%, + 15% { -moz-transform: scale(0.6); - transform: scale(0.6); + transform: scale(0.6); stroke-width: 6.66667; } - 45%, 100% { + 45%, + 100% { -moz-transform: scale(1); - transform: scale(1); + transform: scale(1); stroke-width: 4; } } @keyframes theo-chromecast-connecting-ring3 { - 0%, 15% { + 0%, + 15% { -webkit-transform: scale(0.6); - -moz-transform: scale(0.6); - transform: scale(0.6); + -moz-transform: scale(0.6); + transform: scale(0.6); stroke-width: 6.66667; } - 45%, 100% { + 45%, + 100% { -webkit-transform: scale(1); - -moz-transform: scale(1); - transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); stroke-width: 4; } } @@ -3484,7 +3685,7 @@ video::-webkit-media-text-track-display { 0% { opacity: 1; -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); stroke-width: 4; stroke-dashoffset: 0; stroke-dasharray: 32, 99; @@ -3492,7 +3693,7 @@ video::-webkit-media-text-track-display { 35% { opacity: 1; -webkit-transform: scale(1.4); - transform: scale(1.4); + transform: scale(1.4); stroke-width: 2.8571; stroke-dashoffset: -18; stroke-dasharray: 0, 99; @@ -3500,12 +3701,13 @@ video::-webkit-media-text-track-display { 50% { opacity: 1; -webkit-transform: scale(1.5); - transform: scale(1.5); + transform: scale(1.5); stroke-width: 0; stroke-dashoffset: -18; stroke-dasharray: 0, 99; } - 50.001%, 100% { + 50.001%, + 100% { opacity: 0; } } @@ -3513,7 +3715,7 @@ video::-webkit-media-text-track-display { 0% { opacity: 1; -moz-transform: scale(1); - transform: scale(1); + transform: scale(1); stroke-width: 4; stroke-dashoffset: 0; stroke-dasharray: 32, 99; @@ -3521,7 +3723,7 @@ video::-webkit-media-text-track-display { 35% { opacity: 1; -moz-transform: scale(1.4); - transform: scale(1.4); + transform: scale(1.4); stroke-width: 2.8571; stroke-dashoffset: -18; stroke-dasharray: 0, 99; @@ -3529,12 +3731,13 @@ video::-webkit-media-text-track-display { 50% { opacity: 1; -moz-transform: scale(1.5); - transform: scale(1.5); + transform: scale(1.5); stroke-width: 0; stroke-dashoffset: -18; stroke-dasharray: 0, 99; } - 50.001%, 100% { + 50.001%, + 100% { opacity: 0; } } @@ -3542,8 +3745,8 @@ video::-webkit-media-text-track-display { 0% { opacity: 1; -webkit-transform: scale(1); - -moz-transform: scale(1); - transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); stroke-width: 4; stroke-dashoffset: 0; stroke-dasharray: 32, 99; @@ -3551,8 +3754,8 @@ video::-webkit-media-text-track-display { 35% { opacity: 1; -webkit-transform: scale(1.4); - -moz-transform: scale(1.4); - transform: scale(1.4); + -moz-transform: scale(1.4); + transform: scale(1.4); stroke-width: 2.8571; stroke-dashoffset: -18; stroke-dasharray: 0, 99; @@ -3560,13 +3763,14 @@ video::-webkit-media-text-track-display { 50% { opacity: 1; -webkit-transform: scale(1.5); - -moz-transform: scale(1.5); - transform: scale(1.5); + -moz-transform: scale(1.5); + transform: scale(1.5); stroke-width: 0; stroke-dashoffset: -18; stroke-dasharray: 0, 99; } - 50.001%, 100% { + 50.001%, + 100% { opacity: 0; } } @@ -3616,9 +3820,9 @@ video::-webkit-media-text-track-display { .theo-airplay-button { -webkit-box-ordinal-group: 95; -webkit-order: 94; - -moz-box-ordinal-group: 95; - -ms-flex-order: 94; - order: 94; + -moz-box-ordinal-group: 95; + -ms-flex-order: 94; + order: 94; } .theo-airplay-unavailable .theo-airplay-button { display: none; @@ -3650,8 +3854,8 @@ video::-webkit-media-text-track-display { .video-js .vjs-control.theo-cast-button svg { color: inherit; -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - transform-origin: 0 0; + -moz-transform-origin: 0 0; + transform-origin: 0 0; pointer-events: none; margin: 0.5em; } @@ -3678,7 +3882,8 @@ video::-webkit-media-text-track-display { text-align: center; padding: 0.5em; } -.theoplayer-skin .theoplayer-ad-skip.theoplayer-ad-skip-countdown, .theoplayer-skin .theoplayer-ad-skip.theoplayer-ad-skip-button, +.theoplayer-skin .theoplayer-ad-skip.theoplayer-ad-skip-countdown, +.theoplayer-skin .theoplayer-ad-skip.theoplayer-ad-skip-button, .theoplayer-skin .theoplayer-ad-overlay-component.theoplayer-ad-skip-countdown, .theoplayer-skin .theoplayer-ad-overlay-component.theoplayer-ad-skip-button { bottom: 3.2em; @@ -3715,7 +3920,8 @@ video::-webkit-media-text-track-display { background-size: cover; background-position: center; } -.theoplayer-skin .theoplayer-ad-skip.theoplayer-ad-skip-countdown, .theoplayer-skin .theoplayer-ad-skip.theo-ad-remaining-container, +.theoplayer-skin .theoplayer-ad-skip.theoplayer-ad-skip-countdown, +.theoplayer-skin .theoplayer-ad-skip.theo-ad-remaining-container, .theoplayer-skin .theoplayer-ad-overlay-component.theoplayer-ad-skip-countdown, .theoplayer-skin .theoplayer-ad-overlay-component.theo-ad-remaining-container { cursor: default; @@ -3728,13 +3934,21 @@ video::-webkit-media-text-track-display { .theoplayer-ad-nonlinear .theoplayer-ad-nonlinear-content .theoplayer-ad-nonlinear-close:before { display: inline-block; - content: "×"; + content: '×'; padding: 0.1em 0.15em 0.12em 0.2em; color: white; - text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; + text-shadow: + -1px 0 black, + 0 1px black, + 1px 0 black, + 0 -1px black; } .theoplayer-ad-nonlinear .theoplayer-ad-nonlinear-content .theoplayer-ad-nonlinear-close:hover:before { - text-shadow: -1px 0 0.8em black, 0 1px 0.8em black, 1px 0 0.8em black, 0 -1px 0.8em black; + text-shadow: + -1px 0 0.8em black, + 0 1px 0.8em black, + 1px 0 0.8em black, + 0 -1px 0.8em black; } .theo-ad-playing .vjs-progress-control { @@ -3790,7 +4004,7 @@ video::-webkit-media-text-track-display { top: 0; width: 100%; height: 100%; - content: ""; + content: ''; background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.3)), to(transparent)); background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.3), transparent); background: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.3), transparent); @@ -3811,14 +4025,32 @@ video::-webkit-media-text-track-display { left: 0; min-width: 100%; -webkit-transition-duration: 0s; - -moz-transition-duration: 0s; - transition-duration: 0s; + -moz-transition-duration: 0s; + transition-duration: 0s; background-color: transparent; text-shadow: black 1px 1px 2px; padding-top: 1em; - -webkit-transition: left 0s 0.45s, min-width 0s 0.45s, text-shadow 0s 0.45s, bottom 0.15s 0.45s, background-color 0.15s 0.45s, padding-top 0.15s 0.45s; - -moz-transition: left 0s 0.45s, min-width 0s 0.45s, text-shadow 0s 0.45s, bottom 0.15s 0.45s, background-color 0.15s 0.45s, padding-top 0.15s 0.45s; - transition: left 0s 0.45s, min-width 0s 0.45s, text-shadow 0s 0.45s, bottom 0.15s 0.45s, background-color 0.15s 0.45s, padding-top 0.15s 0.45s; + -webkit-transition: + left 0s 0.45s, + min-width 0s 0.45s, + text-shadow 0s 0.45s, + bottom 0.15s 0.45s, + background-color 0.15s 0.45s, + padding-top 0.15s 0.45s; + -moz-transition: + left 0s 0.45s, + min-width 0s 0.45s, + text-shadow 0s 0.45s, + bottom 0.15s 0.45s, + background-color 0.15s 0.45s, + padding-top 0.15s 0.45s; + transition: + left 0s 0.45s, + min-width 0s 0.45s, + text-shadow 0s 0.45s, + bottom 0.15s 0.45s, + background-color 0.15s 0.45s, + padding-top 0.15s 0.45s; } .vjs-has-started.theo-dai-ad-playing.vjs-user-inactive.vjs-playing:not(.theo-menu-opened) .theo-dai-countdown:before { opacity: 1; @@ -3867,7 +4099,12 @@ video::-webkit-media-text-track-display { } .theo-pip:not(.vjs-fullscreen).theoplayer-skin .vjs-control:before, .theo-pip:not(.vjs-fullscreen).theoplayer-skin .theo-close-button:before { - text-shadow: 0 0 1px #000000, 0 0 1px #000000, 0 0 1px #000000, 0 0 1px #000000, 0 0 1px #000000; + text-shadow: + 0 0 1px #000000, + 0 0 1px #000000, + 0 0 1px #000000, + 0 0 1px #000000, + 0 0 1px #000000; } .theo-pip:not(.vjs-fullscreen).theoplayer-skin .vjs-control, .theo-pip:not(.vjs-fullscreen).theoplayer-skin .vjs-time-divider { @@ -3883,9 +4120,9 @@ video::-webkit-media-text-track-display { display: block; -webkit-box-flex: 1; -webkit-flex: auto; - -moz-box-flex: 1; - -ms-flex: auto; - flex: auto; + -moz-box-flex: 1; + -ms-flex: auto; + flex: auto; } .theo-pip:not(.vjs-fullscreen).theoplayer-skin .theo-pip-close { opacity: 1; @@ -3906,29 +4143,30 @@ video::-webkit-media-text-track-display { right: auto !important; bottom: auto !important; -webkit-animation: theo-pip-top-left 0.3s forwards; - -moz-animation: theo-pip-top-left 0.3s forwards; - animation: theo-pip-top-left 0.3s forwards; + -moz-animation: theo-pip-top-left 0.3s forwards; + animation: theo-pip-top-left 0.3s forwards; } .theo-pip:not(.vjs-fullscreen).theo-pip-top-right .theo-player-wrapper { left: auto !important; bottom: auto !important; -webkit-animation: theo-pip-top-right 0.3s forwards; - -moz-animation: theo-pip-top-right 0.3s forwards; - animation: theo-pip-top-right 0.3s forwards; + -moz-animation: theo-pip-top-right 0.3s forwards; + animation: theo-pip-top-right 0.3s forwards; } .theo-pip:not(.vjs-fullscreen).theo-pip-bottom-left .theo-player-wrapper { top: auto !important; right: auto !important; -webkit-animation: theo-pip-bottom-left 0.3s forwards; - -moz-animation: theo-pip-bottom-left 0.3s forwards; - animation: theo-pip-bottom-left 0.3s forwards; + -moz-animation: theo-pip-bottom-left 0.3s forwards; + animation: theo-pip-bottom-left 0.3s forwards; } -.theo-pip:not(.vjs-fullscreen) .theo-player-wrapper, .theo-pip:not(.vjs-fullscreen).theo-pip-bottom-right .theo-player-wrapper { +.theo-pip:not(.vjs-fullscreen) .theo-player-wrapper, +.theo-pip:not(.vjs-fullscreen).theo-pip-bottom-right .theo-player-wrapper { top: auto !important; left: auto !important; -webkit-animation: theo-pip-bottom-right 0.3s forwards; - -moz-animation: theo-pip-bottom-right 0.3s forwards; - animation: theo-pip-bottom-right 0.3s forwards; + -moz-animation: theo-pip-bottom-right 0.3s forwards; + animation: theo-pip-bottom-right 0.3s forwards; } .theo-pip:not(.vjs-fullscreen) .theo-pip-overlay { display: block; @@ -4063,9 +4301,9 @@ video::-webkit-media-text-track-display { cursor: pointer; -webkit-box-ordinal-group: 21; -webkit-order: 20; - -moz-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; + -moz-box-ordinal-group: 21; + -ms-flex-order: 20; + order: 20; /* Hide related button and grid when no content is available */ } .theoplayer-skin:not(.theo-related-available) .vjs-button.theo-related-button { @@ -4096,25 +4334,25 @@ video::-webkit-media-text-track-display { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-flow: row wrap; - -moz-box-orient: horizontal; - -moz-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; + -moz-box-orient: horizontal; + -moz-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -ms-flexbox; display: flex; -webkit-align-content: flex-start; - -ms-flex-line-pack: start; - align-content: flex-start; + -ms-flex-line-pack: start; + align-content: flex-start; } .theo-related-grid .theo-related-grid-tile { -webkit-box-flex: 1; -webkit-flex: auto; - -moz-box-flex: 1; - -ms-flex: auto; - flex: auto; + -moz-box-flex: 1; + -ms-flex: auto; + flex: auto; padding: 0; border: 1px solid black; position: relative; @@ -4149,9 +4387,15 @@ video::-webkit-media-text-track-display { position: absolute; background-color: rgba(0, 0, 0, 0.7); padding: 0.4em 0.6em; - -webkit-transition: background-color 0.3s, color 0.3s; - -moz-transition: background-color 0.3s, color 0.3s; - transition: background-color 0.3s, color 0.3s; + -webkit-transition: + background-color 0.3s, + color 0.3s; + -moz-transition: + background-color 0.3s, + color 0.3s; + transition: + background-color 0.3s, + color 0.3s; } .theo-related-grid .theo-related-grid-tile .theo-related-grid-tile-content .theo-related-grid-tile-title { bottom: 0; @@ -4185,13 +4429,24 @@ video::-webkit-media-text-track-display { /* Hide third item in 3-item-grid */ /* Hide fifth and following items in 6 to 12-item-grid */ } -.theo-size-xs.theo-2-item-grid .theo-related-grid-tile, .theo-size-xs.theo-3-item-grid .theo-related-grid-tile, .theo-size-xs.theo-4-item-grid .theo-related-grid-tile, .theo-size-xs.theo-6-item-grid .theo-related-grid-tile, .theo-size-xs.theo-8-item-grid .theo-related-grid-tile, .theo-size-xs.theo-9-item-grid .theo-related-grid-tile, .theo-size-xs.theo-12-item-grid .theo-related-grid-tile, .theo-size-xs.theo-15-item-grid .theo-related-grid-tile { +.theo-size-xs.theo-2-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-3-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-4-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-6-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-8-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-9-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-12-item-grid .theo-related-grid-tile, +.theo-size-xs.theo-15-item-grid .theo-related-grid-tile { width: 50%; } -.theo-size-xs.theo-3-item-grid .theo-related-grid-tile:nth-child(n+3) { +.theo-size-xs.theo-3-item-grid .theo-related-grid-tile:nth-child(n + 3) { display: none; } -.theo-size-xs.theo-6-item-grid .theo-related-grid-tile:nth-child(n+5), .theo-size-xs.theo-8-item-grid .theo-related-grid-tile:nth-child(n+5), .theo-size-xs.theo-9-item-grid .theo-related-grid-tile:nth-child(n+5), .theo-size-xs.theo-12-item-grid .theo-related-grid-tile:nth-child(n+5), .theo-size-xs.theo-15-item-grid .theo-related-grid-tile:nth-child(n+5) { +.theo-size-xs.theo-6-item-grid .theo-related-grid-tile:nth-child(n + 5), +.theo-size-xs.theo-8-item-grid .theo-related-grid-tile:nth-child(n + 5), +.theo-size-xs.theo-9-item-grid .theo-related-grid-tile:nth-child(n + 5), +.theo-size-xs.theo-12-item-grid .theo-related-grid-tile:nth-child(n + 5), +.theo-size-xs.theo-15-item-grid .theo-related-grid-tile:nth-child(n + 5) { display: none; } @@ -4199,12 +4454,18 @@ video::-webkit-media-text-track-display { .theo-size-m { /* Hide sixth and following items in 8 to 12-item-grid */ } -.theo-size-s.theo-2-item-grid .theo-related-grid-tile, .theo-size-s.theo-4-item-grid .theo-related-grid-tile, +.theo-size-s.theo-2-item-grid .theo-related-grid-tile, +.theo-size-s.theo-4-item-grid .theo-related-grid-tile, .theo-size-m.theo-2-item-grid .theo-related-grid-tile, .theo-size-m.theo-4-item-grid .theo-related-grid-tile { width: 50%; } -.theo-size-s.theo-3-item-grid .theo-related-grid-tile, .theo-size-s.theo-6-item-grid .theo-related-grid-tile, .theo-size-s.theo-8-item-grid .theo-related-grid-tile, .theo-size-s.theo-9-item-grid .theo-related-grid-tile, .theo-size-s.theo-12-item-grid .theo-related-grid-tile, .theo-size-s.theo-15-item-grid .theo-related-grid-tile, +.theo-size-s.theo-3-item-grid .theo-related-grid-tile, +.theo-size-s.theo-6-item-grid .theo-related-grid-tile, +.theo-size-s.theo-8-item-grid .theo-related-grid-tile, +.theo-size-s.theo-9-item-grid .theo-related-grid-tile, +.theo-size-s.theo-12-item-grid .theo-related-grid-tile, +.theo-size-s.theo-15-item-grid .theo-related-grid-tile, .theo-size-m.theo-3-item-grid .theo-related-grid-tile, .theo-size-m.theo-6-item-grid .theo-related-grid-tile, .theo-size-m.theo-8-item-grid .theo-related-grid-tile, @@ -4213,25 +4474,31 @@ video::-webkit-media-text-track-display { .theo-size-m.theo-15-item-grid .theo-related-grid-tile { width: 33.33%; } -.theo-size-s.theo-8-item-grid .theo-related-grid-tile:nth-child(n+7), .theo-size-s.theo-12-item-grid .theo-related-grid-tile:nth-child(n+7), .theo-size-s.theo-15-item-grid .theo-related-grid-tile:nth-child(n+7), -.theo-size-m.theo-8-item-grid .theo-related-grid-tile:nth-child(n+7), -.theo-size-m.theo-12-item-grid .theo-related-grid-tile:nth-child(n+7), -.theo-size-m.theo-15-item-grid .theo-related-grid-tile:nth-child(n+7) { +.theo-size-s.theo-8-item-grid .theo-related-grid-tile:nth-child(n + 7), +.theo-size-s.theo-12-item-grid .theo-related-grid-tile:nth-child(n + 7), +.theo-size-s.theo-15-item-grid .theo-related-grid-tile:nth-child(n + 7), +.theo-size-m.theo-8-item-grid .theo-related-grid-tile:nth-child(n + 7), +.theo-size-m.theo-12-item-grid .theo-related-grid-tile:nth-child(n + 7), +.theo-size-m.theo-15-item-grid .theo-related-grid-tile:nth-child(n + 7) { display: none; } -.theo-size-l.theo-2-item-grid .theo-related-grid-tile, .theo-size-l.theo-4-item-grid .theo-related-grid-tile, +.theo-size-l.theo-2-item-grid .theo-related-grid-tile, +.theo-size-l.theo-4-item-grid .theo-related-grid-tile, .theo-size-xl.theo-2-item-grid .theo-related-grid-tile, .theo-size-xl.theo-4-item-grid .theo-related-grid-tile { width: 50%; } -.theo-size-l.theo-3-item-grid .theo-related-grid-tile, .theo-size-l.theo-6-item-grid .theo-related-grid-tile, .theo-size-l.theo-9-item-grid .theo-related-grid-tile, +.theo-size-l.theo-3-item-grid .theo-related-grid-tile, +.theo-size-l.theo-6-item-grid .theo-related-grid-tile, +.theo-size-l.theo-9-item-grid .theo-related-grid-tile, .theo-size-xl.theo-3-item-grid .theo-related-grid-tile, .theo-size-xl.theo-6-item-grid .theo-related-grid-tile, .theo-size-xl.theo-9-item-grid .theo-related-grid-tile { width: 33.33%; } -.theo-size-l.theo-8-item-grid .theo-related-grid-tile, .theo-size-l.theo-12-item-grid .theo-related-grid-tile, +.theo-size-l.theo-8-item-grid .theo-related-grid-tile, +.theo-size-l.theo-12-item-grid .theo-related-grid-tile, .theo-size-xl.theo-8-item-grid .theo-related-grid-tile, .theo-size-xl.theo-12-item-grid .theo-related-grid-tile { width: 25%; @@ -4243,7 +4510,7 @@ video::-webkit-media-text-track-display { .theo-size-l.theo-15-item-grid .theo-related-grid-tile { width: 25%; } -.theo-size-l.theo-15-item-grid .theo-related-grid-tile:nth-child(n+13) { +.theo-size-l.theo-15-item-grid .theo-related-grid-tile:nth-child(n + 13) { display: none; } @@ -4255,9 +4522,9 @@ video::-webkit-media-text-track-display { cursor: pointer; -webkit-box-ordinal-group: 11; -webkit-order: 10; - -moz-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; + -moz-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; /* Hide related button and grid when no content is available */ } .theoplayer-skin:not(.theo-social-available) .vjs-button.theo-social-button { @@ -4296,8 +4563,8 @@ video::-webkit-media-text-track-display { display: -ms-flexbox; display: flex; -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } .theo-social .theo-social-container .theo-social-icon-container .theo-social-iconurl { margin: 0.5em 0.5em 0.5em 0; @@ -4321,9 +4588,9 @@ video::-webkit-media-text-track-display { word-wrap: break-word; overflow: hidden; -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; cursor: copy; } .theo-social .theo-social-container .theo-social-text-container .theo-social-content-container:hover { @@ -4384,8 +4651,8 @@ video::-webkit-media-text-track-display { left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); - -moz-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } .theo-upnext-panel .theo-upnext-panel-content .theo-upnext-panel-autoplay svg .theo-play-svg-circle { stroke-dasharray: 458.6725274241; @@ -4468,9 +4735,9 @@ video::-webkit-media-text-track-display { height: 100%; -webkit-box-flex: 1; -webkit-flex: 1; - -moz-box-flex: 1; - -ms-flex: 1; - flex: 1; + -moz-box-flex: 1; + -ms-flex: 1; + flex: 1; background-size: cover; position: relative; width: 0; @@ -4490,9 +4757,9 @@ video::-webkit-media-text-track-display { margin: 0.5em 0 0.5em 0.5em; -webkit-box-flex: 1; -webkit-flex: 1; - -moz-box-flex: 1; - -ms-flex: 1; - flex: 1; + -moz-box-flex: 1; + -ms-flex: 1; + flex: 1; font-size: 0.8em; width: 0; } @@ -4550,19 +4817,25 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-pack: center; -webkit-justify-content: center; - -moz-box-pack: center; - -ms-flex-pack: center; - justify-content: center; + -moz-box-pack: center; + -ms-flex-pack: center; + justify-content: center; -webkit-box-align: center; -webkit-align-items: center; - -moz-box-align: center; - -ms-flex-align: center; - align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + align-items: center; top: 0; opacity: 1; - -webkit-transition: opacity 0.2s cubic-bezier(0.4, 0, 1, 1), top 0.2s cubic-bezier(0.4, 0, 1, 1); - -moz-transition: opacity 0.2s cubic-bezier(0.4, 0, 1, 1), top 0.2s cubic-bezier(0.4, 0, 1, 1); - transition: opacity 0.2s cubic-bezier(0.4, 0, 1, 1), top 0.2s cubic-bezier(0.4, 0, 1, 1); + -webkit-transition: + opacity 0.2s cubic-bezier(0.4, 0, 1, 1), + top 0.2s cubic-bezier(0.4, 0, 1, 1); + -moz-transition: + opacity 0.2s cubic-bezier(0.4, 0, 1, 1), + top 0.2s cubic-bezier(0.4, 0, 1, 1); + transition: + opacity 0.2s cubic-bezier(0.4, 0, 1, 1), + top 0.2s cubic-bezier(0.4, 0, 1, 1); position: absolute; width: 100%; height: 100%; @@ -4579,7 +4852,7 @@ video::-webkit-media-text-track-display { cursor: pointer; } .theoplayer-skin .theo-overlay-panel .theo-close-button:after { - content: ""; + content: ''; position: absolute; top: 0; left: 0; @@ -4610,35 +4883,35 @@ video::-webkit-media-text-track-display { display: flex; -webkit-box-align: center; -webkit-align-items: center; - -moz-box-align: center; - -ms-flex-align: center; - align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + align-items: center; } .theo-verizonmedia-content-notification-bar .theo-verizonmedia-content-notification .theo-verizonmedia-content-notification-thumbnail { width: 100%; height: 100%; -o-object-fit: contain; - object-fit: contain; + object-fit: contain; -webkit-box-flex: 1; -webkit-flex: 1; - -moz-box-flex: 1; - -ms-flex: 1; - flex: 1; + -moz-box-flex: 1; + -ms-flex: 1; + flex: 1; } .theo-verizonmedia-content-notification-bar .theo-verizonmedia-content-notification .theo-verizonmedia-content-notification-description { -webkit-box-flex: 2; -webkit-flex: 2; - -moz-box-flex: 2; - -ms-flex: 2; - flex: 2; + -moz-box-flex: 2; + -ms-flex: 2; + flex: 2; margin: 1em; } .theo-verizonmedia-content-notification-bar .theo-verizonmedia-content-notification .theo-verizonmedia-content-notification-countdown { -webkit-box-flex: 1; -webkit-flex: 1; - -moz-box-flex: 1; - -ms-flex: 1; - flex: 1; + -moz-box-flex: 1; + -ms-flex: 1; + flex: 1; margin: 1em 1em 1em 0; } .theo-verizonmedia-content-notification-bar.theo-verizonmedia-content-notification-bar-ios { @@ -4678,11 +4951,13 @@ video::-webkit-media-text-track-display { border-radius: 100%; pointer-events: none; } -.theoplayer-skin.vjs-error .theo-360-compass, .theoplayer-skin:not(.vjs-has-started) .theo-360-compass { +.theoplayer-skin.vjs-error .theo-360-compass, +.theoplayer-skin:not(.vjs-has-started) .theo-360-compass { display: none; } -.theo-360-compass:before, .theo-360-compass:after { - content: ""; +.theo-360-compass:before, +.theo-360-compass:after { + content: ''; position: absolute; width: 0; height: 0; @@ -4693,8 +4968,8 @@ video::-webkit-media-text-track-display { border: 0.075em solid #fff; border-radius: 100%; -webkit-transform: translate(-50%, -50%); - -moz-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } .theo-360-compass:after { top: 0; @@ -4703,11 +4978,11 @@ video::-webkit-media-text-track-display { border-right: 0.1em solid transparent; border-bottom: 0.1em solid #fff; -webkit-transform: translate(-50%, -100%); - -moz-transform: translate(-50%, -100%); - transform: translate(-50%, -100%); + -moz-transform: translate(-50%, -100%); + transform: translate(-50%, -100%); -webkit-transform-origin: 50% 100%; - -moz-transform-origin: 50% 100%; - transform-origin: 50% 100%; + -moz-transform-origin: 50% 100%; + transform-origin: 50% 100%; } .theo-360-fov { @@ -4718,14 +4993,14 @@ video::-webkit-media-text-track-display { width: 50%; height: 50%; -webkit-transform-origin: 100% 100%; - -moz-transform-origin: 100% 100%; - transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + transform-origin: 100% 100%; -webkit-transform: scale(0.875) rotate(40deg) skew(-10deg); - -moz-transform: scale(0.875) rotate(40deg) skew(-10deg); - transform: scale(0.875) rotate(40deg) skew(-10deg); + -moz-transform: scale(0.875) rotate(40deg) skew(-10deg); + transform: scale(0.875) rotate(40deg) skew(-10deg); } .theo-360-fov:before { - content: ""; + content: ''; position: absolute; top: 0; left: 0; @@ -4733,20 +5008,20 @@ video::-webkit-media-text-track-display { height: 200%; border: 0.35em solid rgba(255, 255, 255, 0.75); -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; border-radius: 100%; -webkit-transform: skew(10deg); - -moz-transform: skew(10deg); - transform: skew(10deg); + -moz-transform: skew(10deg); + transform: skew(10deg); } .theoplayer-skin .theo-vr-container { -webkit-box-ordinal-group: 95; -webkit-order: 94; - -moz-box-ordinal-group: 95; - -ms-flex-order: 94; - order: 94; + -moz-box-ordinal-group: 95; + -ms-flex-order: 94; + order: 94; } .theo-upcoming-ad-notification { @@ -4762,14 +5037,14 @@ video::-webkit-media-text-track-display { display: none; -webkit-box-align: center; -webkit-align-items: center; - -moz-box-align: center; - -ms-flex-align: center; - align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: end; -webkit-justify-content: flex-end; - -moz-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; + -moz-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; z-index: 0; } @@ -4817,32 +5092,32 @@ video::-webkit-media-text-track-display { .theo-probably-keyboard-focus :focus, .theo-probably-keyboard-focus .focus-within { -webkit-box-shadow: inset 0 0 0 2px rgba(27, 127, 204, 0.8); - box-shadow: inset 0 0 0 2px rgba(27, 127, 204, 0.8); + box-shadow: inset 0 0 0 2px rgba(27, 127, 204, 0.8); } .theo-probably-keyboard-focus .focus-within :focus { /* handled by .focus-within */ -webkit-box-shadow: none; - box-shadow: none; + box-shadow: none; } .theo-probably-keyboard-focus .vjs-big-play-button:focus { border-radius: 0; } .theo-probably-keyboard-focus .vjs-progress-holder:focus { -webkit-box-shadow: 0 0 0 2px rgba(27, 127, 204, 0.8); - box-shadow: 0 0 0 2px rgba(27, 127, 204, 0.8); + box-shadow: 0 0 0 2px rgba(27, 127, 204, 0.8); } .theo-probably-keyboard-focus .theo-social-container a:focus, .theo-probably-keyboard-focus .theo-related-grid a:focus { outline: none; } .theo-probably-keyboard-focus .theo-related-grid-tile-content:focus:before { - content: ""; + content: ''; -webkit-box-shadow: inset 0 0 0 2px rgba(27, 127, 204, 0.8); - box-shadow: inset 0 0 0 2px rgba(27, 127, 204, 0.8); + box-shadow: inset 0 0 0 2px rgba(27, 127, 204, 0.8); top: 0; right: 0; bottom: 0; left: 0; position: absolute; z-index: 1; -} \ No newline at end of file +} diff --git a/ios/style.css b/ios/style.css index afcd7b416..15d233d7c 100644 --- a/ios/style.css +++ b/ios/style.css @@ -2,4 +2,3 @@ div.theoplayer-webvtt-region-default { margin: 0px !important; bottom: 1em !important; } - diff --git a/react-native-theoplayer.json b/react-native-theoplayer.json index 20e076055..e27f2452a 100644 --- a/react-native-theoplayer.json +++ b/react-native-theoplayer.json @@ -1,9 +1,5 @@ { - "ios": { - "features": [ - "GOOGLE_IMA", - "CHROMECAST", - "SIDELOADED_TEXTTRACKS" - ] - } -} \ No newline at end of file + "ios": { + "features": ["GOOGLE_IMA", "CHROMECAST", "SIDELOADED_TEXTTRACKS"] + } +} diff --git a/src/internal/THEOplayerView.tsx b/src/internal/THEOplayerView.tsx index e9b966215..3c93c8e10 100644 --- a/src/internal/THEOplayerView.tsx +++ b/src/internal/THEOplayerView.tsx @@ -161,9 +161,9 @@ export class THEOplayerView extends PureComponent ({ + this.setState((prevState) => ({ ...prevState, - error: undefined + error: undefined, })); } diff --git a/src/internal/adapter/DefaultTextTrackState.ts b/src/internal/adapter/DefaultTextTrackState.ts index e132f4085..56bc1b43c 100644 --- a/src/internal/adapter/DefaultTextTrackState.ts +++ b/src/internal/adapter/DefaultTextTrackState.ts @@ -1,7 +1,8 @@ import { addTextTrackCue, addTrack, - findTextTrackByUid, type LoadedMetadataEvent, + findTextTrackByUid, + type LoadedMetadataEvent, PlayerEventType, removeTextTrackCue, removeTrack, @@ -16,7 +17,6 @@ import { import { TextTrackState } from './NativePlayerState'; export class DefaultTextTrackState implements TextTrackState { - private _textTracks: TextTrack[] = []; private _selectedTextTrack: number | undefined; diff --git a/src/internal/adapter/NativePlayerState.ts b/src/internal/adapter/NativePlayerState.ts index 1c7cb8f97..4f03ba3a6 100644 --- a/src/internal/adapter/NativePlayerState.ts +++ b/src/internal/adapter/NativePlayerState.ts @@ -40,5 +40,4 @@ export interface TextTrackState { selectedTextTrack: number | undefined; } -export interface NativePlayerState extends PlayerConfigState, PlaybackState, TextTrackState, MediaTrackState { -} +export interface NativePlayerState extends PlayerConfigState, PlaybackState, TextTrackState, MediaTrackState {} diff --git a/src/internal/adapter/broadcast/EventBroadcastAdapter.web.ts b/src/internal/adapter/broadcast/EventBroadcastAdapter.web.ts index 933789983..6bdc2cb04 100644 --- a/src/internal/adapter/broadcast/EventBroadcastAdapter.web.ts +++ b/src/internal/adapter/broadcast/EventBroadcastAdapter.web.ts @@ -1,14 +1,13 @@ -import type { EventBroadcastAPI } from "react-native-theoplayer"; -import type { THEOplayer } from "react-native-theoplayer"; -import type { THEOplayerWebAdapter } from "../THEOplayerWebAdapter"; -import type { StringKeyOf } from "../../../api/event/EventDispatcher"; -import type { PlayerEventMap } from "react-native-theoplayer"; +import type { EventBroadcastAPI } from 'react-native-theoplayer'; +import type { THEOplayer } from 'react-native-theoplayer'; +import type { THEOplayerWebAdapter } from '../THEOplayerWebAdapter'; +import type { StringKeyOf } from '../../../api/event/EventDispatcher'; +import type { PlayerEventMap } from 'react-native-theoplayer'; import type { Event as WebEvent, EventMap } from 'theoplayer'; -import { AdEvent, PlayerEventType } from "react-native-theoplayer"; -import { DefaultWebEventDispatcher } from "./web/DefaultWebEventDispatcher"; +import { AdEvent, PlayerEventType } from 'react-native-theoplayer'; +import { DefaultWebEventDispatcher } from './web/DefaultWebEventDispatcher'; export class EventBroadcastAdapter extends DefaultWebEventDispatcher> implements EventBroadcastAPI { - constructor(private _player: THEOplayer) { super(); } @@ -27,10 +26,11 @@ export class EventBroadcastAdapter extends DefaultWebEventDispatcher>(event: PlayerEventMap[K]): WebEvent | undefined { switch (event.type) { - case PlayerEventType.AD_EVENT: return toNativeAdEvent(event); + case PlayerEventType.AD_EVENT: + return toNativeAdEvent(event); default: { - console.warn(`EventBroadcastAdapter: native event of type ${event?.type}} not supported`) - return undefined + console.warn(`EventBroadcastAdapter: native event of type ${event?.type}} not supported`); + return undefined; } } } @@ -39,6 +39,6 @@ function toNativeAdEvent(event: AdEvent): WebEvent | undefined { return { type: event.subType, ad: event.ad, - date: event.date + date: event.date, } as WebEvent; } diff --git a/src/internal/adapter/broadcast/web/DefaultWebEventDispatcher.ts b/src/internal/adapter/broadcast/web/DefaultWebEventDispatcher.ts index aaccf239c..413449bcf 100644 --- a/src/internal/adapter/broadcast/web/DefaultWebEventDispatcher.ts +++ b/src/internal/adapter/broadcast/web/DefaultWebEventDispatcher.ts @@ -1,66 +1,66 @@ -import type { EventDispatcher, EventMap, StringKeyOf, EventListener } from "theoplayer"; +import type { EventDispatcher, EventMap, StringKeyOf, EventListener } from 'theoplayer'; export function arrayRemoveElement(array: T[], element: T): boolean { - const index = array.indexOf(element); - if (index === -1) { - return false; - } - arrayRemoveAt(array, index); - return true; + const index = array.indexOf(element); + if (index === -1) { + return false; + } + arrayRemoveAt(array, index); + return true; } export function arrayRemoveAt(array: T[], index: number): void { - array.splice(index, 1); + array.splice(index, 1); } export class DefaultWebEventDispatcher>> implements EventDispatcher { - readonly _eventListeners: Map, EventListener]>[]> = new Map(); + readonly _eventListeners: Map, EventListener]>[]> = new Map(); - addEventListener>(types: K | K[], listener: EventListener): void { - if (typeof types === 'string') { - this.addSingleEventListener_(types, listener); - } else { - types.forEach(type => { - this.addSingleEventListener_(type, listener); - }) - } + addEventListener>(types: K | K[], listener: EventListener): void { + if (typeof types === 'string') { + this.addSingleEventListener_(types, listener); + } else { + types.forEach((type) => { + this.addSingleEventListener_(type, listener); + }); } + } - private addSingleEventListener_>(type: K, listener: EventListener): void { - if (!this._eventListeners.has(type)) { - // @ts-ignore - this._eventListeners.set(type, [listener]); - } else { - // @ts-ignore - this._eventListeners.get(type)?.push(listener); - } + private addSingleEventListener_>(type: K, listener: EventListener): void { + if (!this._eventListeners.has(type)) { + // @ts-ignore + this._eventListeners.set(type, [listener]); + } else { + // @ts-ignore + this._eventListeners.get(type)?.push(listener); } + } - clearEventListeners(): void { - this._eventListeners.clear(); - } + clearEventListeners(): void { + this._eventListeners.clear(); + } - dispatchEvent = >(event: TMap[K]): void => { - const listeners = (this._eventListeners.get(event.type as K) ?? []).slice(); - for (const listener of listeners) { - listener.call(this, event); - } - }; + dispatchEvent = >(event: TMap[K]): void => { + const listeners = (this._eventListeners.get(event.type as K) ?? []).slice(); + for (const listener of listeners) { + listener.call(this, event); + } + }; - removeEventListener>(types: K | K[], listener: EventListener): void { - if (typeof types === 'string') { - this.removeSingleEventListener(types, listener); - } else { - types.forEach(type => { - this.removeSingleEventListener(type, listener); - }); - } + removeEventListener>(types: K | K[], listener: EventListener): void { + if (typeof types === 'string') { + this.removeSingleEventListener(types, listener); + } else { + types.forEach((type) => { + this.removeSingleEventListener(type, listener); + }); } + } - removeSingleEventListener>(type: K, listener: EventListener): void { - const listeners = this._eventListeners.get(type); - if (listeners) { - arrayRemoveElement(listeners, listener); - } + removeSingleEventListener>(type: K, listener: EventListener): void { + const listeners = this._eventListeners.get(type); + if (listeners) { + arrayRemoveElement(listeners, listener); } + } } diff --git a/src/internal/adapter/cast/THEOplayerNativeCastAdapter.ts b/src/internal/adapter/cast/THEOplayerNativeCastAdapter.ts index 1d35288a6..2e6a005cb 100644 --- a/src/internal/adapter/cast/THEOplayerNativeCastAdapter.ts +++ b/src/internal/adapter/cast/THEOplayerNativeCastAdapter.ts @@ -8,7 +8,10 @@ export class THEOplayerNativeCastAdapter implements CastAPI { private readonly _chromecast: THEOplayerNativeChromecast; private readonly _airplay: THEOplayerNativeAirplay | undefined; - constructor(private readonly _player: THEOplayer, private readonly _view: THEOplayerView) { + constructor( + private readonly _player: THEOplayer, + private readonly _view: THEOplayerView, + ) { this._chromecast = new THEOplayerNativeChromecast(this._player, this._view); if (Platform.OS !== 'android') { this._airplay = new THEOplayerNativeAirplay(this._player); diff --git a/src/internal/adapter/event/BaseEvent.ts b/src/internal/adapter/event/BaseEvent.ts index 5758abfa5..01c5caf6a 100644 --- a/src/internal/adapter/event/BaseEvent.ts +++ b/src/internal/adapter/event/BaseEvent.ts @@ -1,5 +1,8 @@ import type { Event } from 'react-native-theoplayer'; export class BaseEvent implements Event { - constructor(readonly type: TType, readonly date: Date = new Date()) {} + constructor( + readonly type: TType, + readonly date: Date = new Date(), + ) {} } diff --git a/src/internal/adapter/event/PlayerEvents.ts b/src/internal/adapter/event/PlayerEvents.ts index a499e7646..43a8534bf 100644 --- a/src/internal/adapter/event/PlayerEvents.ts +++ b/src/internal/adapter/event/PlayerEvents.ts @@ -71,13 +71,19 @@ export class DefaultPresentationModeChangeEvent extends BaseEvent implements VolumeChangeEvent { - constructor(public volume: number, public muted: boolean) { + constructor( + public volume: number, + public muted: boolean, + ) { super(PlayerEventType.VOLUME_CHANGE); } } export class DefaultResizeEvent extends BaseEvent implements ResizeEvent { - constructor(public width: number, public height: number) { + constructor( + public width: number, + public height: number, + ) { super(PlayerEventType.RESIZE); } } @@ -89,13 +95,19 @@ export class DefaultErrorEvent extends BaseEvent implemen } export class DefaultProgressEvent extends BaseEvent implements ProgressEvent { - constructor(public seekable: TimeRange[], public buffered: TimeRange[]) { + constructor( + public seekable: TimeRange[], + public buffered: TimeRange[], + ) { super(PlayerEventType.PROGRESS); } } export class DefaultTimeupdateEvent extends BaseEvent implements TimeUpdateEvent { - constructor(public currentTime: number, public currentProgramDateTime?: number) { + constructor( + public currentTime: number, + public currentProgramDateTime?: number, + ) { super(PlayerEventType.TIME_UPDATE); } } @@ -113,25 +125,40 @@ export class DefaultRateChangeEvent extends BaseEvent implements SegmentNotFoundEvent { - constructor(public readonly segmentStartTime: number, public error: string, public retryCount: number) { + constructor( + public readonly segmentStartTime: number, + public error: string, + public retryCount: number, + ) { super(PlayerEventType.SEGMENT_NOT_FOUND); } } export class DefaultTextTrackListEvent extends BaseEvent implements TextTrackListEvent { - constructor(public subType: TrackListEventType, public track: TextTrack) { + constructor( + public subType: TrackListEventType, + public track: TextTrack, + ) { super(PlayerEventType.TEXT_TRACK_LIST); } } export class DefaultTextTrackEvent extends BaseEvent implements TextTrackEvent { - constructor(public subType: TextTrackEventType, public trackUid: number, public cue: TextTrackCue) { + constructor( + public subType: TextTrackEventType, + public trackUid: number, + public cue: TextTrackCue, + ) { super(PlayerEventType.TEXT_TRACK); } } export class DefaultMediaTrackListEvent extends BaseEvent implements MediaTrackListEvent { - constructor(public subType: TrackListEventType, public trackType: MediaTrackType, public track: MediaTrack) { + constructor( + public subType: TrackListEventType, + public trackType: MediaTrackType, + public track: MediaTrack, + ) { super(PlayerEventType.MEDIA_TRACK_LIST); } } @@ -148,7 +175,10 @@ export class DefaultMediaTrackEvent extends BaseEvent implements AdEvent { - constructor(public subType: AdEventType, public ad: Ad | AdBreak) { + constructor( + public subType: AdEventType, + public ad: Ad | AdBreak, + ) { super(PlayerEventType.AD_EVENT); } } diff --git a/src/internal/adapter/web/FullscreenAPI.ts b/src/internal/adapter/web/FullscreenAPI.ts index 1c9c6c9d0..276d70b67 100644 --- a/src/internal/adapter/web/FullscreenAPI.ts +++ b/src/internal/adapter/web/FullscreenAPI.ts @@ -24,7 +24,7 @@ export const fullscreenAPI: FullscreenAPIMap | undefined = (() => { 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', - 'webkitfullscreenerror' + 'webkitfullscreenerror', ], // Old WebKit (Safari 5.1) [ @@ -33,12 +33,12 @@ export const fullscreenAPI: FullscreenAPIMap | undefined = (() => { 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', - 'webkitfullscreenerror' + 'webkitfullscreenerror', ], // Mozilla ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], // Microsoft - ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError'] + ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError'], ]; for (const browserMap of apiMap) { @@ -50,7 +50,7 @@ export const fullscreenAPI: FullscreenAPIMap | undefined = (() => { fullscreenElement_: browserMap[2], fullscreenEnabled_: browserMap[3], fullscreenchange_: browserMap[4], - fullscreenerror_: browserMap[5] + fullscreenerror_: browserMap[5], } as FullscreenAPIMap; } } diff --git a/src/internal/cache/NativeCachingTaskAdapter.ts b/src/internal/cache/NativeCachingTaskAdapter.ts index 4891e7089..fa9377588 100644 --- a/src/internal/cache/NativeCachingTaskAdapter.ts +++ b/src/internal/cache/NativeCachingTaskAdapter.ts @@ -10,7 +10,7 @@ import type { import type { CacheTaskStatus } from 'react-native-theoplayer'; import { NativeModules } from 'react-native'; import type { DRMConfiguration } from 'react-native-theoplayer'; -import { fromNativeCachingTaskParameters, NativeCachingTaskParameters } from "./NativeCachingTaskParametersAdapter"; +import { fromNativeCachingTaskParameters, NativeCachingTaskParameters } from './NativeCachingTaskParametersAdapter'; const NativeCacheModule = NativeModules.THEORCTCacheModule; diff --git a/src/internal/cache/NativeCachingTaskParametersAdapter.ts b/src/internal/cache/NativeCachingTaskParametersAdapter.ts index 8b8a13996..6b89fee9f 100644 --- a/src/internal/cache/NativeCachingTaskParametersAdapter.ts +++ b/src/internal/cache/NativeCachingTaskParametersAdapter.ts @@ -1,7 +1,5 @@ -import type { - CachingTaskParameters, -} from 'react-native-theoplayer'; -import type { CachingPreferredTrackSelection } from "../../api/cache/CachingPreferredTrackSelection"; +import type { CachingTaskParameters } from 'react-native-theoplayer'; +import type { CachingPreferredTrackSelection } from '../../api/cache/CachingPreferredTrackSelection'; export interface NativeCachingTaskParameters { readonly amount: number | string; @@ -14,11 +12,11 @@ export interface NativeCachingTaskParameters { export function fromNativeCachingTaskParameters(parameters: NativeCachingTaskParameters): CachingTaskParameters { return { amount: parameters.amount, - expirationDate: parameters?.expirationDate? new Date(parameters?.expirationDate) : undefined, + expirationDate: parameters?.expirationDate ? new Date(parameters?.expirationDate) : undefined, bandwidth: parameters.bandwidth, preferredTrackSelection: parameters.preferredTrackSelection, - allowsCellularAccess: parameters.allowsCellularAccess - } + allowsCellularAccess: parameters.allowsCellularAccess, + }; } export function toNativeCachingTaskParameters(parameters: CachingTaskParameters): NativeCachingTaskParameters { @@ -27,6 +25,6 @@ export function toNativeCachingTaskParameters(parameters: CachingTaskParameters) expirationDate: parameters?.expirationDate?.getTime(), bandwidth: parameters.bandwidth, preferredTrackSelection: parameters.preferredTrackSelection, - allowsCellularAccess: parameters.allowsCellularAccess - } + allowsCellularAccess: parameters.allowsCellularAccess, + }; } diff --git a/src/internal/utils/Dimensions.ts b/src/internal/utils/Dimensions.ts index d8bbc4f92..0fcb4e0bf 100644 --- a/src/internal/utils/Dimensions.ts +++ b/src/internal/utils/Dimensions.ts @@ -9,12 +9,14 @@ export function getFullscreenSize(): ScaledSize { // Adjust for statusBar height on Android, depending on the device's current orientation. if (Platform.OS === 'android' && Platform.Version >= 29) { - const statusBarHeight = (StatusBar.currentHeight || 0); - if (screenSize.width < screenSize.height) { // portrait + const statusBarHeight = StatusBar.currentHeight || 0; + if (screenSize.width < screenSize.height) { + // portrait if (screenSize.height !== Dimensions.get('window').height + statusBarHeight) { screenSize.height = screenSize.height - statusBarHeight; } - } else { // landscape + } else { + // landscape if (screenSize.width !== Dimensions.get('window').width) { screenSize.width = screenSize.width - statusBarHeight; } From 2a06147f9612d1094ac42f61ae97b2f07cfc81d6 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Sep 2024 10:49:18 +0200 Subject: [PATCH 29/31] Fix deprecated property --- .prettierrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.prettierrc.json b/.prettierrc.json index 198e061d3..7b88b6a20 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,6 +1,6 @@ { "bracketSpacing": true, - "jsxBracketSameLine": true, + "bracketSameLine": true, "singleQuote": true, "trailingComma": "all", "printWidth": 150, From f274ad1c693c396b66ca835196471c45ebbaf00e Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Sep 2024 10:52:36 +0200 Subject: [PATCH 30/31] Add prettier to pre-commit hook --- .husky/pre-commit | 1 + 1 file changed, 1 insertion(+) diff --git a/.husky/pre-commit b/.husky/pre-commit index 3867a0feb..5aa347427 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1,2 @@ npm run lint +npm run prettier From ed5fc8aa6abb9772779a267914d2cb5b4ea9f3ba Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Sep 2024 10:58:03 +0200 Subject: [PATCH 31/31] 8.0.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3afc24aac..144e5dd74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "react-native-theoplayer", - "version": "7.9.0", + "version": "8.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "react-native-theoplayer", - "version": "7.9.0", + "version": "8.0.0", "license": "SEE LICENSE AT https://www.theoplayer.com/terms", "dependencies": { "buffer": "^6.0.3" diff --git a/package.json b/package.json index ead7f0a8b..e2ffcf322 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-theoplayer", - "version": "7.9.0", + "version": "8.0.0", "description": "A THEOplayer video component for react-native.", "main": "lib/commonjs/index", "module": "lib/module/index",