Usearch

Latest version: v2.16.9

Safety actively analyzes 723158 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 28

2.9.2

[2.9.2](https://github.com/unum-cloud/usearch/compare/v2.9.1...v2.9.2) (2024-03-05)


Docs

* Comparison tolerance ([01c5c89](https://github.com/unum-cloud/usearch/commit/01c5c89d6d4dc99d0188277cf8b5bbdc974c9baa))
* New shields ([8a964ec](https://github.com/unum-cloud/usearch/commit/8a964ec8ea2688f03853d9723d3990fa43157c21))

Fix

* `index.vectors` computed property ([fe710cc](https://github.com/unum-cloud/usearch/commit/fe710cc8f55409df14f660bc999f26fc5d55fe0c)), closes [#349](https://github.com/unum-cloud/usearch/issues/349)
* `multi` initialization in C tests ([7f4dee4](https://github.com/unum-cloud/usearch/commit/7f4dee4a103e5895937d0625ed3fb0f4505b85ad))
* Add BigInt validation in index creation,Node Support ([5c61c95](https://github.com/unum-cloud/usearch/commit/5c61c95474765dae1cd54eed1f0992809aedbbd8))
* Bugfix for importlib attrib error ([1bc24dd](https://github.com/unum-cloud/usearch/commit/1bc24dd1412b41ad1a1d135351fae6c3dabf61d9))
* No Pearson correlation for 1d data ([3b09259](https://github.com/unum-cloud/usearch/commit/3b092598c751e2835cc1228b24d2ac8eb0e28215))
* ordering keys before comparison ([6bf1df8](https://github.com/unum-cloud/usearch/commit/6bf1df883499085804790c11d5de05a14b6f8661))
* Reordering vectors before comparison ([a4fb305](https://github.com/unum-cloud/usearch/commit/a4fb3054f5af29537feaefd51b4947c7b677fbb8))

Make

* Upgrade SimSIMD & StringZilla ([e7aac02](https://github.com/unum-cloud/usearch/commit/e7aac02b11ca2040bed1994bf6755ac612690ced))




Hashes
* docs.tar.gz : `71c0d872c29a98d2fdbfbd27946682372138f54512e701d3f40810cb8566ab0d`
* usearch-v2.9.2.tar.gz : `16736360f30c9e27d9544ac1fc7662939e02ea223c748e29e8e18ba282a2eadf`
* usearch-v2.9.2.zip : `572988a414ddc8ebe6091648c6fe12edfe3fb01ddb2c4000a3538d56e547aa76`
* usearch_linux_amd_2.9.2.deb : `4025bf124e3ee32029407a85b8eb7011e9a3ce1f19f5057cc674391264947ea2`
* usearch_linux_arm_2.9.2.deb : `a9ad80f35789b5f661ad8fd2d01663661d036c61ff04a9109a6e8ef9d20f3a99`
* usearch_macOS_arm64_2.9.2.zip : `ebfc16c1da6029110260dbb3bd5b3e1c20855cc5ffaa69ee00d30436f2bf377b`
* usearch_macOS_x86_64_2.9.2.zip : `7860f96675d87ff3afc0587e5940a3732e54c933057ad1290802ae8110a945f0`
* usearch_wasm_linux_arm64_2.9.2.tar.gz : `a610edde242ee047156945b82dcf9ad02448fce5c815ae57f87296ffa81ddecd`
* usearch_wasm_linux_x86_64_2.9.2.tar.gz : `4e389a217fad0c7f2802697330c8b19cbbee09201c9e85542404f694d17426e2`
* usearch_wasm_macos_arm64_2.9.2.zip : `d88faf6739742a6c141736a6565eaae1316e327d295023501c97b5d77abac895`
* usearch_wasm_macos_x86_64_2.9.2.zip : `dc9a5df62be5ffad2fa37f312cfce213f4cc669d9bd3b8e117c518e132db3ce7`
* usearch_wasm_windows_x64_2.9.2.tar.gz : `80a8aac793c5bd537eef7b16c22186886ae1f6146a50fb4c06068eb3a8894d10`
* usearch_wasm_windows_x86_2.9.2.tar.gz : `2746e5cc7a172017324f76922bc9803309a5d9b3caf21df14ded9ce29faedb57`
* usearch_windows_x64_2.9.2.tar : `440924a5e7aba5fd95daf673043b7a6fee3447ecefc3c2f380acee8c5626bed6`
* usearch_windows_x86_2.9.2.tar : `bf851998175614f406ba31395c07f4d65a9f98ef1f09003e2fe00cb180c13ad0`

2.9.1

[2.9.1](https://github.com/unum-cloud/usearch/compare/v2.9.0...v2.9.1) (2024-02-27)


Fix

* Explicit narrowing conversions ([25436ae](https://github.com/unum-cloud/usearch/commit/25436ae61d125930530eefffc79e63d294ab256d))
* Match enum values between C and C ([4a69086](https://github.com/unum-cloud/usearch/commit/4a69086a939863638122320ec6dfe2c3de6b78e4))
* Recovering quantization settings in `load` ([fd53619](https://github.com/unum-cloud/usearch/commit/fd536195c59ea32b95b7b5a732d6f5a5fdff589b)), closes [#353](https://github.com/unum-cloud/usearch/issues/353) [#343](https://github.com/unum-cloud/usearch/issues/343)
* wildcard ES module imports (351) ([d5091ac](https://github.com/unum-cloud/usearch/commit/d5091ac4ddc16492b752d99503f45416da05fb86)), closes [#351](https://github.com/unum-cloud/usearch/issues/351)

Improve

* Report missing arguments in debug builds ([ce5bbaf](https://github.com/unum-cloud/usearch/commit/ce5bbaf10b20bde4d98fb47dc1ddb0d5417783fe))
* Test reopening index ([24be07b](https://github.com/unum-cloud/usearch/commit/24be07b9a8ef1a1c2b37d69853ca1a52cf886883))

Make

* Clean-up the C dir ([70d646c](https://github.com/unum-cloud/usearch/commit/70d646c2e4332a90d6fbeea132c618e9dde663e6))
* invalid C++17 Clang arg ([23684aa](https://github.com/unum-cloud/usearch/commit/23684aa48ec34a45e8f8ca7048b38df0661439c5))




Hashes
* docs.tar.gz : `80b75daa7f627b9a96607fff2498d695f71dc4a12f3695bc9a3521ae8fc12f6a`
* usearch-v2.9.1.tar.gz : `69f22afb6da763c11840ca28307523b1cd1154d6925b0f05235af9e49674eba0`
* usearch-v2.9.1.zip : `771f434c5cd818c4e6b395ab5cc7ac755b167417a724a9bb70f95954f21cb603`
* usearch_linux_amd_2.9.1.deb : `e12ba570f5f8eba17221218e1d49f9fae5f5936cb7c21727df1f72f6712d3490`
* usearch_linux_arm_2.9.1.deb : `ce6fb426af55a96324f77d1ada9ab58cf741ea787358e681e17805601f359279`
* usearch_macOS_arm64_2.9.1.zip : `6a1c951c429172867d2b0849ca775b1c87e0f051303337dbf09e1dccbfaa7d79`
* usearch_macOS_x86_64_2.9.1.zip : `8e3a2af95febddde4cf78f6adb187cda7375655308a946f20b59a7fd5381eb88`
* usearch_wasm_linux_arm64_2.9.1.tar.gz : `470440a59551fb9f3a980a5837f5bbe95b37f0527dbaa41cd5d0e662f9e51551`
* usearch_wasm_linux_x86_64_2.9.1.tar.gz : `bb577526cedfbf4ec3310e74a49b158145bb17ded857c0d80718fb1154470348`
* usearch_wasm_macos_arm64_2.9.1.zip : `e4c26aa027cab0f0322ecb8cc6d13ef124acf6191e250fee132b183568b9591e`
* usearch_wasm_macos_x86_64_2.9.1.zip : `717e1a2a7d9b53bab74df2768c86863d597857bd7a2be7edbb4cc201e15a2600`
* usearch_wasm_windows_x64_2.9.1.tar.gz : `34faf4748899305e9b8c688462a183295ed1e39bdf60bfc6da4348dd3de755a1`
* usearch_wasm_windows_x86_2.9.1.tar.gz : `967f2c40e22a2cf51b0e92558c653bd2585440cc0fc827701160a3d8c718dc0e`
* usearch_windows_x64_2.9.1.tar : `f73729ce83e3501d994bc8dc336c188c91b14aad5a473846f1fe74ed53cccd9a`
* usearch_windows_x86_2.9.1.tar : `0d68b669a7ae3607b74a7a27005653aaa7607be74e4dfa57ffcd6fb0148d2ba6`

2.9.0

[2.9.0](https://github.com/unum-cloud/usearch/compare/v2.8.16...v2.9.0) (2024-02-22)


Add

* SQLite binding ([222de55](https://github.com/unum-cloud/usearch/commit/222de550e878326cca9dbc9852bd0560a1a55744))
* String distances to SQLite ([ae4d0f0](https://github.com/unum-cloud/usearch/commit/ae4d0f07ac5df38aedb0aea727f98acd78482b9d))

Docs

* Header refreshed ([7465c29](https://github.com/unum-cloud/usearch/commit/7465c2918bb560b9425786d2940471c9537cb32d))
* Py and SQLite extensions ([550624b](https://github.com/unum-cloud/usearch/commit/550624baabcda2736a374afd5033d4060653b53a))
* README.md link to Joins (327) ([1279c54](https://github.com/unum-cloud/usearch/commit/1279c54f926355ffc6effd14e4c6854ba0501aa7)), closes [#327](https://github.com/unum-cloud/usearch/issues/327)

Fix

* bug reports were immediately marked invalid ([c5fc825](https://github.com/unum-cloud/usearch/commit/c5fc8257898ac3c174014b017386132cd4c837c3))
* Error handling, mem safety bugs 335 (339) ([4747ef4](https://github.com/unum-cloud/usearch/commit/4747ef42f4140a1fde16118f25f079f9af79649e)), closes [#335](https://github.com/unum-cloud/usearch/issues/335) [#339](https://github.com/unum-cloud/usearch/issues/339)
* Passing SQLite tests ([6334983](https://github.com/unum-cloud/usearch/commit/6334983bee452bd7afc608be00085e0b098bce6c))
* Reported number of levels ([9b1a06a](https://github.com/unum-cloud/usearch/commit/9b1a06a8a500931bb48eb8c4516e5bdbf132ecb0))
* Skip non-Linux SQLite tests ([b02d262](https://github.com/unum-cloud/usearch/commit/b02d2621c8c6a7675d4d259750c92ba89c5a8d0d))
* SQLite cosine function + tests ([55464fb](https://github.com/unum-cloud/usearch/commit/55464fb9ed4c9888c073970a02a3bfe4ad314185))
* undefined var error in `remove` api ([8d86a9e](https://github.com/unum-cloud/usearch/commit/8d86a9ea06326e985610f2a9019fe21d31e22efe))

Improve

* Multi property lookup ([e8bf02c](https://github.com/unum-cloud/usearch/commit/e8bf02cbcdd7c76517d1407cfaf8c234701219af))
* Support multi-column vectors ([66f1716](https://github.com/unum-cloud/usearch/commit/66f17163600a420d89290808f1bea797692b7441))

Make

* `npi ci` (330) ([5680920](https://github.com/unum-cloud/usearch/commit/568092020bb05d98b2c2626a7d7590905b657a95)), closes [#330](https://github.com/unum-cloud/usearch/issues/330)
* Add 3.12 wheels ([d66f697](https://github.com/unum-cloud/usearch/commit/d66f6974dfa44158970e88de6a2fa3ceed80aa07))
* Change include paths ([21db294](https://github.com/unum-cloud/usearch/commit/21db294b03fa12f3a068c1554f4e2b96cfbff3ef))
* invalid C++17 Clang arg ([2a6d779](https://github.com/unum-cloud/usearch/commit/2a6d77902c73dc21210b36d9a6680c4e813ccc75))
* Link libpthread for older Linux GCC builds (324) ([6f1e5dd](https://github.com/unum-cloud/usearch/commit/6f1e5dd25011f13492c04d6a02d167ee27cf0811)), closes [#324](https://github.com/unum-cloud/usearch/issues/324)
* Parallel CI for Python wheels ([a9ad89e](https://github.com/unum-cloud/usearch/commit/a9ad89e251a6a0a18fccfa2db5ec62f83a8069f6))
* Upgrade SimSIMD & StringZilla ([5481bdf](https://github.com/unum-cloud/usearch/commit/5481bdfd65a0df3d49ff2280a8bbce67326833d5))

Revert

* Postpone Apache Arrow integration ([5d040ca](https://github.com/unum-cloud/usearch/commit/5d040cac2af36197b4bf97c6041c11063eb4edf1))




Hashes
* docs.tar.gz : `068f9712d50aa9734dd636ffce9a58453544754bc476f7df2aa07b3634816d46`
* usearch-v2.9.0.tar.gz : `f2ceef55ba874b1ab14b115f8a8487848ebdd1384425497b1a76a6e4c1ab6718`
* usearch-v2.9.0.zip : `51ec2db7403bf31459f0a63f90fe0437031f9353134a51837a68afbc59605fba`
* usearch_linux_amd_2.9.0.deb : `723cfa1d56dd909b3d6da2bf1c1d2d55625239574ccbad7d69ed4efb93c64e33`
* usearch_linux_arm_2.9.0.deb : `4b277ccdfd93cfdddd983a215d3d588f4cb6cffda3dfe07cc4f9675aa47fd373`
* usearch_macOS_arm64_2.9.0.zip : `0c3f9df3b62292ad8adabe03f36336ab08bc556e4a7dd082b39347fd95e9d062`
* usearch_macOS_x86_64_2.9.0.zip : `5baa0a303b9d0cad829c995f6cfeb0eccc968cb01ef45313c3907ba1da2e0c8c`
* usearch_wasm_linux_arm64_2.9.0.tar.gz : `2726dec40ad971f0140e444d2ed0857829be197b5fd42483f0d77c22f8c4b062`
* usearch_wasm_linux_x86_64_2.9.0.tar.gz : `241fe2473a9baac74ef782432465176e77261c5c6bbb2de6cccdbb37ecae4d78`
* usearch_wasm_macos_arm64_2.9.0.zip : `573bea5c54503b4ccb573169a367a9018b552d9c8de627443462da409c751376`
* usearch_wasm_macos_x86_64_2.9.0.zip : `feeb8f5a8e0a58d337f44fb59d86caf595bbd88ce1f8f99465f0de2535efc7a5`
* usearch_wasm_windows_x64_2.9.0.tar.gz : `b5551b5364c1f8cf72ff27f9930a7cacbbf68f3e643181cffb29e6389d02d191`
* usearch_wasm_windows_x86_2.9.0.tar.gz : `1e232da2280c9bd10f39e06801c32859b72b2b22aff5d482f71aa04ec001cae6`
* usearch_windows_x64_2.9.0.tar : `22dadba584463f93b22bc97c816b7d5451459211ed9b21bdc995bab53358fde5`
* usearch_windows_x86_2.9.0.tar : `5421825873e60d6cc7083d95a02a4928f6187e3f4d4fe2f92a6706f30713db46`

2.8.16

[2.8.16](https://github.com/unum-cloud/usearch/compare/v2.8.15...v2.8.16) (2024-01-24)


Docs

* Downloads numbers ([13cc624](https://github.com/unum-cloud/usearch/commit/13cc624a59627da424f79120da4582b22a2c450d))

Fix

* SimSIMD dispatch ([c8dc3b7](https://github.com/unum-cloud/usearch/commit/c8dc3b79945a3b5c282cb6384bd9d52b7052c1b5)), closes [#320](https://github.com/unum-cloud/usearch/issues/320)

Make

* Fix Node version for SemVer ([a68fca6](https://github.com/unum-cloud/usearch/commit/a68fca6d51b3ce157d9959e3b7f9aefae25bb506))
* Upgrade dependencies ([6ab2150](https://github.com/unum-cloud/usearch/commit/6ab2150d55c676f6cd836851dbf353725c2ca8b9))
* Upgrade Node environment ([f5b6750](https://github.com/unum-cloud/usearch/commit/f5b67501210736fc80dbc4752e600df7153a9e08))

2.8.15

[2.8.15](https://github.com/unum-cloud/usearch/compare/v2.8.14...v2.8.15) (2024-01-09)


Fix

* exporting quantization enums in Go (336) ([93c74c3](https://github.com/unum-cloud/usearch/commit/93c74c338ea31e6a2181f030c7389f5e2ef0da85)), closes [#336](https://github.com/unum-cloud/usearch/issues/336)




Hashes
* docs.tar.gz : `1083f4feafdcb4e2f58df423302cf0bf66cf55e3d03b14d902e462760a055a9f`
* usearch-v2.8.15.tar.gz : `551909e77acb8a83dff948ba7ae2689a8c87f11cb99c190b69b24d613e42ff1d`
* usearch-v2.8.15.zip : `1e4ed46061cf2b9bf426ed0b230cffd91ec8115a8744682d47350695100b2384`
* usearch_linux_amd_2.8.15.deb : `cdf91489cd1d74eaa8cdb4e599f2f10e93b7fa2ad9f06f31353d350ee573d43e`
* usearch_linux_arm_2.8.15.deb : `09090bfbf4d164995279022e4f0f47ac78cb1a20f4b07bbccdb8a078f5e6cb6b`
* usearch_macOS_arm64_2.8.15.zip : `8eb411e10183273ca5dfea133c4406f24d537b9e593293100786616da9085940`
* usearch_macOS_x86_64_2.8.15.zip : `08075a3bbd6ff327a92cfc8729d16f50113689fd689452ef7059fb87d16850c9`
* usearch_wasm_linux_arm64_2.8.15.tar.gz : `fdd51bc4ee2e8e9409dd1dce050d0c29938d05e10f9d353e55d0aa288a133ca8`
* usearch_wasm_linux_x86_64_2.8.15.tar.gz : `77624e1a46b2e34cdd10a0eb772fe3754b35867025543760812cb4c553542b60`
* usearch_wasm_macos_arm64_2.8.15.zip : `466700de9092d412651f526a93d597756387e9a5cc6f92ba72f057c2af903e68`
* usearch_wasm_macos_x86_64_2.8.15.zip : `44f60623ca6a48f0d63030a72f4a876c65fc43c2887ca8b9a7a6c7c94f035903`
* usearch_wasm_windows_x64_2.8.15.tar.gz : `834bb4f96bf557e8d167dc8c0cffe39348a2dc71e914c62b7a2c8acda9f54fd7`
* usearch_wasm_windows_x86_2.8.15.tar.gz : `b1eea6d42c47f49a0cc305e7e7bb31339360a6f4ed30f6b39924cf39704327b2`
* usearch_windows_x64_2.8.15.tar : `91ddee43f7aca3c8c2305bfc18a141d5581a7589b6262b2de99dc05f046dc53f`
* usearch_windows_x86_2.8.15.tar : `75895cc4cfe9a999fd3d448726a5f9b24c29c240dc4a6d8b29d51b70cc65f3a7`

2.8.14

As was discussed in the [SciPy integration thread](https://github.com/scipy/scipy/issues/19454), Python libraries use double-precision floating-point numbers by default.
So, in this release, I've extended the spatial distance functions in the underlying [SimSIMD](https://github.com/ashvardanian/simsimd) - `Cos`, `L2sq`, `IP` with support for `double` arguments with specialized implementations on AVX-512-capable x86 CPUs and SVE-capable Arm CPUs.

Benchmarking SimSIMD vs. SciPy on Intel Sapphire Rapids CPU

- Vector dimensions: 1536
- Vectors count: 1000
- Hardware capabilities: serial, x86_avx2, x86_avx512, x86_avx2fp16, x86_avx512fp16, x86_avx512vpopcntdq, x86_avx512vnni
- NumPy BLAS dependency: openblas64
- NumPy LAPACK dependency: dep140640983012528

Between 2 Vectors, Batch Size: 1

| Datatype | Method | Ops/s | SimSIMD Ops/s | SimSIMD Improvement |
| :------- | :-------------------- | -------------------: | -------------------: | ------------------: |
| `f64` | `scipy.cosine` | 63,612 | 572,605 | 9.00 x |
| `f64` | `scipy.sqeuclidean` | 238,547 | 915,596 | 3.84 x |
| `f64` | `numpy.inner` | 449,499 | 986,522 | 2.19 x |

Between 2 Vectors, Batch Size: 1,000

| Datatype | Method | Ops/s | SimSIMD Ops/s | SimSIMD Improvement |
| :------- | :-------------------- | -------------------: | -------------------: | ------------------: |
| `f64` | `scipy.cosine` | 68,962 | 1,457,172 | 21.13 x |
| `f64` | `scipy.sqeuclidean` | 247,727 | 1,535,547 | 6.20 x |
| `f64` | `numpy.inner` | 463,509 | 1,512,004 | 3.26 x |


Benchmarking SimSIMD vs. SciPy on AWS Graviton 3

- Vector dimensions: 1536
- Vectors count: 1000
- Hardware capabilities: serial, arm_neon, arm_sve
- NumPy BLAS dependency: openblas64
- NumPy LAPACK dependency: openblas64

Between 2 Vectors, Batch Size: 1

| Datatype | Method | Ops/s | SimSIMD Ops/s | SimSIMD Improvement |
| :------- | :-------------------- | -------------------: | -------------------: | ------------------: |
| `f64` | `scipy.cosine` | 40,729 | 725,382 | 17.81 x |
| `f64` | `scipy.sqeuclidean` | 160,812 | 728,114 | 4.53 x |
| `f64` | `numpy.inner` | 473,443 | 767,374 | 1.62 x |
| `f64` | `scipy.jensenshannon` | 15,684 | 38,528 | 2.46 x |
| `f64` | `scipy.kl_div` | 49,983 | 61,811 | 1.24 x |

Between 2 Vectors, Batch Size: 1,000

| Datatype | Method | Ops/s | SimSIMD Ops/s | SimSIMD Improvement |
| :------- | :-------------------- | -------------------: | -------------------: | ------------------: |
| `f64` | `scipy.cosine` | 41,130 | 1,460,850 | 35.52 x |
| `f64` | `scipy.sqeuclidean` | 162,147 | 1,486,255 | 9.17 x |
| `f64` | `numpy.inner` | 473,856 | 1,580,136 | 3.33 x |

Hashes
* docs.tar.gz : `def474428a4d67076e68dfd16b660a53bf51fad12af7e4c6ee77e1555b220b8f`
* usearch-v2.8.14.tar.gz : `6ae186618120b6c710ff3ed1bf31e9a58610e7b837bccdeae79000247c2b24a3`
* usearch-v2.8.14.zip : `a1da6b34bc23111926b16be9d36a7403988405a00c833417b27b8ccd9c70227f`
* usearch_linux_amd_2.8.14.deb : `ae4995f9504a9ab90921e3091a5aa6af432de647f1a6c835ee5cb2622dd2f8a3`
* usearch_linux_arm_2.8.14.deb : `dafcee294630b7c17adaed9aebb668d4cbfc5fe269f35f66b10bf458d66d899d`
* usearch_macOS_arm64_2.8.14.zip : `65e0a8d0259400e35de692c9afb3406d6bd4db5dd2f46632676890c41ba1537c`
* usearch_macOS_x86_64_2.8.14.zip : `1fa9a6e6983f5b6fe5dd2b82ce566262dcbd1d1e8671ec39b9d01ceddc3b80dd`
* usearch_wasm_linux_arm64_2.8.14.tar.gz : `edb5846ab0b38b1095b12f2b8ca771748394911bf6efd74df6d5ba66f36328d9`
* usearch_wasm_linux_x86_64_2.8.14.tar.gz : `84e4162db1dc83157f7a4032278c9cfc01a68ac59c4b1af1b5fc35e43905c515`
* usearch_wasm_macos_arm64_2.8.14.zip : `8c966ef2f5e425cf82f472bd4b74f0e7cd7fa39b860dd9f25f488370afc035fe`
* usearch_wasm_macos_x86_64_2.8.14.zip : `7e48cc5d0e34b586f36b86671c8410b2b2deca31962beb0ccf6230546ac42621`
* usearch_wasm_windows_x64_2.8.14.tar.gz : `02b1382c68fe8ef52d55da639a38ad15c7449d579230ef5ae78465776fd689fa`
* usearch_wasm_windows_x86_2.8.14.tar.gz : `cf922953ca61c8f9101fac33a2aa06d70fd09ef8b8c73d64a6623f73dcfe09cc`
* usearch_windows_x64_2.8.14.tar : `8a74a122fafae229f65df8de5a6e264eb16a7e5eba691629d6439b0b54ea8b74`
* usearch_windows_x86_2.8.14.tar : `96c6625fc2ca723cc44e864a75f5c72dc3ab9aeb5fe5f0f80ba32783121f6766`

Page 7 of 28

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.