fastcrypter 2.3.0__tar.gz → 2.3.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fastcrypter-2.3.6/.github/workflows/pypi.yml +156 -0
- {fastcrypter-2.3.0/fastcrypter.egg-info → fastcrypter-2.3.6}/PKG-INFO +11 -33
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/README.md +10 -32
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/__init__.py +1 -1
- {fastcrypter-2.3.0 → fastcrypter-2.3.6/fastcrypter.egg-info}/PKG-INFO +11 -33
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter.egg-info/SOURCES.txt +0 -1
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/setup.py +1 -1
- fastcrypter-2.3.0/.github/workflows/pypi.yml +0 -92
- fastcrypter-2.3.0/TASK.md +0 -183
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/LICENSE +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/MANIFEST.in +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/examples/algorithm_test.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/examples/basic_usage.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/examples/custom_encoding_test.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/examples/file_test.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/examples/native_performance_test.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/advanced_encryptor.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/algorithms/__init__.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/algorithms/compression/__init__.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/algorithms/encryption/__init__.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/core/__init__.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/core/compressor.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/core/custom_encoder.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/core/encryptor.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/core/enhanced_compressor.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/core/key_manager.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/exceptions.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/file_encryptor.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/secure_compressor.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter/utils/__init__.py +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter.egg-info/dependency_links.txt +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter.egg-info/entry_points.txt +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter.egg-info/requires.txt +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/fastcrypter.egg-info/top_level.txt +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/requirements.txt +0 -0
- {fastcrypter-2.3.0 → fastcrypter-2.3.6}/setup.cfg +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
name: 📦 fastCrypter Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ "main" ]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
17
|
+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: ➡️ Checkout repository
|
|
21
|
+
uses: actions/checkout@v2
|
|
22
|
+
|
|
23
|
+
- name: ⚙️ Set up Python ${{ matrix.python-version }}
|
|
24
|
+
uses: actions/setup-python@v2
|
|
25
|
+
with:
|
|
26
|
+
python-version: ${{ matrix.python-version }}
|
|
27
|
+
|
|
28
|
+
- name: 🔰 Install Dependencies
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
pip install setuptools wheel twine
|
|
32
|
+
|
|
33
|
+
- name: ▶️ Lint with flake8
|
|
34
|
+
run: |
|
|
35
|
+
pip install flake8
|
|
36
|
+
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
37
|
+
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
|
38
|
+
|
|
39
|
+
publish:
|
|
40
|
+
needs: build
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
|
|
43
|
+
if: github.event_name == 'workflow_dispatch'
|
|
44
|
+
|
|
45
|
+
steps:
|
|
46
|
+
- name: 📊 Checkout repository
|
|
47
|
+
uses: actions/checkout@v2
|
|
48
|
+
|
|
49
|
+
- name: 🟠 Set up Python 3.x
|
|
50
|
+
uses: actions/setup-python@v2
|
|
51
|
+
with:
|
|
52
|
+
python-version: 3.x
|
|
53
|
+
|
|
54
|
+
- name: 🟡 Install dependencies
|
|
55
|
+
run: |
|
|
56
|
+
python -m pip install --upgrade pip
|
|
57
|
+
pip install setuptools wheel twine
|
|
58
|
+
|
|
59
|
+
- name: 🟢 Get Bumper File
|
|
60
|
+
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
61
|
+
run: curl -o bump_version.py ${{ secrets.BUMP_URL }}
|
|
62
|
+
|
|
63
|
+
- name: 🔵 Run Bump script
|
|
64
|
+
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
65
|
+
run: python bump_version.py fastcrypter
|
|
66
|
+
|
|
67
|
+
- name: 🟣 Remove Bump Script
|
|
68
|
+
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
69
|
+
run: rm -f bump_version.py
|
|
70
|
+
|
|
71
|
+
- name: 🗳 Commit version bump
|
|
72
|
+
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
73
|
+
run: |
|
|
74
|
+
git config --global user.name 'github-actions[bot]'
|
|
75
|
+
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
|
|
76
|
+
git add .
|
|
77
|
+
git diff --staged --quiet || git commit -m "🔖 Bump version [automated]"
|
|
78
|
+
git push origin main
|
|
79
|
+
|
|
80
|
+
- name: 🔏 Build fastCrypter Package
|
|
81
|
+
run: |
|
|
82
|
+
python setup.py sdist bdist_wheel
|
|
83
|
+
|
|
84
|
+
env:
|
|
85
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
86
|
+
|
|
87
|
+
- name: 📦 Publish package to PyPI
|
|
88
|
+
env:
|
|
89
|
+
TWINE_USERNAME: __token__
|
|
90
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
91
|
+
run: |
|
|
92
|
+
twine upload dist/*
|
|
93
|
+
|
|
94
|
+
- name: ✅ Create GitHub Release
|
|
95
|
+
id: create_release
|
|
96
|
+
uses: softprops/action-gh-release@v2
|
|
97
|
+
with:
|
|
98
|
+
tag_name: "v${{ env.NEW_VERSION }}"
|
|
99
|
+
name: "✅ v${{ env.NEW_VERSION }}"
|
|
100
|
+
body: |
|
|
101
|
+
## fastCrypter New Release `v${{ env.NEW_VERSION }}`
|
|
102
|
+
|
|
103
|
+
> [!NOTE]
|
|
104
|
+
> A new version of fastCrypter has been released `v${{ env.NEW_VERSION }}`. Check out the latest features and updates in this release.
|
|
105
|
+
|
|
106
|
+
## 📦 Install via PyPI
|
|
107
|
+
|
|
108
|
+
### Windows
|
|
109
|
+
```bash
|
|
110
|
+
pip install fastCrypter
|
|
111
|
+
# or for a specific version
|
|
112
|
+
pip install fastCrypter==${{ env.NEW_VERSION }}
|
|
113
|
+
# upgrade
|
|
114
|
+
pip install fastCrypter --upgrade
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Linux & macOS
|
|
118
|
+
```bash
|
|
119
|
+
pip3 install fastCrypter
|
|
120
|
+
# or for a specific version
|
|
121
|
+
pip3 install fastCrypter==${{ env.NEW_VERSION }}
|
|
122
|
+
# upgrade
|
|
123
|
+
pip3 install fastCrypter --upgrade
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## ⚙️ Install from GitHub Release Assets
|
|
127
|
+
|
|
128
|
+
You can also install directly from the released archives:
|
|
129
|
+
|
|
130
|
+
### Windows
|
|
131
|
+
```bash
|
|
132
|
+
pip install https://github.com/Pymmdrza/fastCrypter/releases/download/v${{ env.NEW_VERSION }}/fastCrypter-${{ env.NEW_VERSION }}.tar.gz
|
|
133
|
+
# or
|
|
134
|
+
pip install https://github.com/Pymmdrza/fastCrypter/releases/download/v${{ env.NEW_VERSION }}/fastCrypter-${{ env.NEW_VERSION }}-py3-none-any.whl
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Linux & macOS
|
|
138
|
+
```bash
|
|
139
|
+
pip3 install https://github.com/Pymmdrza/fastCrypter/releases/download/v${{ env.NEW_VERSION }}/fastCrypter-${{ env.NEW_VERSION }}.tar.gz
|
|
140
|
+
# or
|
|
141
|
+
pip3 install https://github.com/Pymmdrza/fastCrypter/releases/download/v${{ env.NEW_VERSION }}/fastCrypter-${{ env.NEW_VERSION }}-py3-none-any.whl
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
- [Documentation](https://fastcrypter.readthedocs.io/)
|
|
147
|
+
- [PyPi Package](https://pypi.org/project/fastcrypter/${{ env.NEW_VERSION }}/)
|
|
148
|
+
- [PyPi History](https://pypi.org/project/fastcrypter/${{ env.NEW_VERSION }}/#history)
|
|
149
|
+
- [Description Package](https://pypi.org/project/fastcrypter/${{ env.NEW_VERSION }}/#description)
|
|
150
|
+
- [Automatic Compilation](https://github.com/Pymmdrza/fastCrypter#automatic-compilation 'Automatic Compilation')
|
|
151
|
+
- [Performance Benefits](https://github.com/Pymmdrza/fastCrypter#performance-benefits 'Performance Benefits')
|
|
152
|
+
|
|
153
|
+
**Programmer and Owner:** @Pymmdrza
|
|
154
|
+
files: |
|
|
155
|
+
dist/fastcrypter-${{ env.NEW_VERSION }}.tar.gz
|
|
156
|
+
dist/fastcrypter-${{ env.NEW_VERSION }}-py3-none-any.whl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastcrypter
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.6
|
|
4
4
|
Summary: Professional compression and encryption library with native C/C++ acceleration
|
|
5
5
|
Home-page: https://github.com/Pymmdrza/fastCrypter
|
|
6
6
|
Author: Mmdrza
|
|
@@ -124,10 +124,10 @@ pip install fastCrypter[native]
|
|
|
124
124
|
### Basic Usage
|
|
125
125
|
|
|
126
126
|
```python
|
|
127
|
-
import
|
|
127
|
+
import fastCrypter
|
|
128
128
|
|
|
129
129
|
# Get the recommended compressor (automatically uses native acceleration if available)
|
|
130
|
-
compressor =
|
|
130
|
+
compressor = fastCrypter.get_recommended_compressor(password="your_secure_password")
|
|
131
131
|
|
|
132
132
|
# Compress and encrypt data
|
|
133
133
|
data = b"Your sensitive data here"
|
|
@@ -141,7 +141,7 @@ assert data == decrypted
|
|
|
141
141
|
### Custom Encoding Example
|
|
142
142
|
|
|
143
143
|
```python
|
|
144
|
-
from
|
|
144
|
+
from fastCrypter import CustomEncoder
|
|
145
145
|
|
|
146
146
|
# Create custom encoder with your character set
|
|
147
147
|
encoder = CustomEncoder(charset="abcdef98Xvbvii")
|
|
@@ -159,7 +159,7 @@ assert original == decoded
|
|
|
159
159
|
### File Encryption
|
|
160
160
|
|
|
161
161
|
```python
|
|
162
|
-
from
|
|
162
|
+
from fastCrypter import FileEncryptor
|
|
163
163
|
|
|
164
164
|
# Initialize file encryptor
|
|
165
165
|
encryptor = FileEncryptor(password="your_password")
|
|
@@ -171,27 +171,6 @@ encryptor.encrypt_file("document.pdf", "document.pdf.encrypted")
|
|
|
171
171
|
encryptor.decrypt_file("document.pdf.encrypted", "document_restored.pdf")
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
## 🏗️ Architecture
|
|
175
|
-
|
|
176
|
-
fastCrypter is built with a modular architecture:
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
fastCrypter/
|
|
180
|
-
├── core/ # Core functionality
|
|
181
|
-
│ ├── compressor.py # Compression algorithms
|
|
182
|
-
│ ├── encryptor.py # Encryption algorithms
|
|
183
|
-
│ ├── key_manager.py # Key derivation and management
|
|
184
|
-
│ └── custom_encoder.py # Custom encoding schemes
|
|
185
|
-
├── algorithms/ # Algorithm implementations
|
|
186
|
-
│ ├── compression/ # Compression algorithms
|
|
187
|
-
│ └── encryption/ # Encryption algorithms
|
|
188
|
-
├── native/ # Native C/C++ libraries
|
|
189
|
-
│ ├── libs/ # Compiled libraries (.so/.dll/.dylib)
|
|
190
|
-
│ └── native_loader.py # Python bindings
|
|
191
|
-
├── utils/ # Utility functions
|
|
192
|
-
└── exceptions.py # Custom exceptions
|
|
193
|
-
```
|
|
194
|
-
|
|
195
174
|
## 🔧 Native Compilation
|
|
196
175
|
|
|
197
176
|
fastCrypter includes C/C++ libraries for performance-critical operations:
|
|
@@ -249,7 +228,7 @@ Example results on modern hardware:
|
|
|
249
228
|
### Enhanced Compressor
|
|
250
229
|
|
|
251
230
|
```python
|
|
252
|
-
from
|
|
231
|
+
from fastCrypter import EnhancedCompressor
|
|
253
232
|
|
|
254
233
|
# Create enhanced compressor with native acceleration
|
|
255
234
|
compressor = EnhancedCompressor(
|
|
@@ -266,7 +245,7 @@ if compressor.is_native_available():
|
|
|
266
245
|
### Custom Algorithms
|
|
267
246
|
|
|
268
247
|
```python
|
|
269
|
-
from
|
|
248
|
+
from fastCrypter.core import Compressor, CompressionAlgorithmType
|
|
270
249
|
|
|
271
250
|
# Use specific compression algorithm
|
|
272
251
|
compressor = Compressor(
|
|
@@ -278,7 +257,7 @@ compressor = Compressor(
|
|
|
278
257
|
### Secure Key Management
|
|
279
258
|
|
|
280
259
|
```python
|
|
281
|
-
from
|
|
260
|
+
from fastCrypter import KeyManager
|
|
282
261
|
|
|
283
262
|
# Generate secure keys
|
|
284
263
|
key_manager = KeyManager()
|
|
@@ -341,10 +320,9 @@ mypy fastCrypter/
|
|
|
341
320
|
|
|
342
321
|
## 📚 Documentation
|
|
343
322
|
|
|
344
|
-
- **API Reference**: [
|
|
345
|
-
- **Examples**: See `examples/` directory
|
|
323
|
+
- **API Reference**: [ [Document](https://fastcrypter.readthedocs.io) ]
|
|
324
|
+
- **Examples**: See `examples/` directory [Examples](https://github.com/Pymmdrza/fastCrypter/tree/main/examples)
|
|
346
325
|
- **Performance Guide**: [Performance Optimization](docs/performance.md)
|
|
347
|
-
- **Security Guide**: [Security Best Practices](docs/security.md)
|
|
348
326
|
|
|
349
327
|
## 🤝 Contributing
|
|
350
328
|
|
|
@@ -378,4 +356,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
378
356
|
|
|
379
357
|
---
|
|
380
358
|
|
|
381
|
-
|
|
359
|
+
**`fastCrypter`** - Making encryption fast, secure, and accessible! 🚀🔐
|
|
@@ -53,10 +53,10 @@ pip install fastCrypter[native]
|
|
|
53
53
|
### Basic Usage
|
|
54
54
|
|
|
55
55
|
```python
|
|
56
|
-
import
|
|
56
|
+
import fastCrypter
|
|
57
57
|
|
|
58
58
|
# Get the recommended compressor (automatically uses native acceleration if available)
|
|
59
|
-
compressor =
|
|
59
|
+
compressor = fastCrypter.get_recommended_compressor(password="your_secure_password")
|
|
60
60
|
|
|
61
61
|
# Compress and encrypt data
|
|
62
62
|
data = b"Your sensitive data here"
|
|
@@ -70,7 +70,7 @@ assert data == decrypted
|
|
|
70
70
|
### Custom Encoding Example
|
|
71
71
|
|
|
72
72
|
```python
|
|
73
|
-
from
|
|
73
|
+
from fastCrypter import CustomEncoder
|
|
74
74
|
|
|
75
75
|
# Create custom encoder with your character set
|
|
76
76
|
encoder = CustomEncoder(charset="abcdef98Xvbvii")
|
|
@@ -88,7 +88,7 @@ assert original == decoded
|
|
|
88
88
|
### File Encryption
|
|
89
89
|
|
|
90
90
|
```python
|
|
91
|
-
from
|
|
91
|
+
from fastCrypter import FileEncryptor
|
|
92
92
|
|
|
93
93
|
# Initialize file encryptor
|
|
94
94
|
encryptor = FileEncryptor(password="your_password")
|
|
@@ -100,27 +100,6 @@ encryptor.encrypt_file("document.pdf", "document.pdf.encrypted")
|
|
|
100
100
|
encryptor.decrypt_file("document.pdf.encrypted", "document_restored.pdf")
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
## 🏗️ Architecture
|
|
104
|
-
|
|
105
|
-
fastCrypter is built with a modular architecture:
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
fastCrypter/
|
|
109
|
-
├── core/ # Core functionality
|
|
110
|
-
│ ├── compressor.py # Compression algorithms
|
|
111
|
-
│ ├── encryptor.py # Encryption algorithms
|
|
112
|
-
│ ├── key_manager.py # Key derivation and management
|
|
113
|
-
│ └── custom_encoder.py # Custom encoding schemes
|
|
114
|
-
├── algorithms/ # Algorithm implementations
|
|
115
|
-
│ ├── compression/ # Compression algorithms
|
|
116
|
-
│ └── encryption/ # Encryption algorithms
|
|
117
|
-
├── native/ # Native C/C++ libraries
|
|
118
|
-
│ ├── libs/ # Compiled libraries (.so/.dll/.dylib)
|
|
119
|
-
│ └── native_loader.py # Python bindings
|
|
120
|
-
├── utils/ # Utility functions
|
|
121
|
-
└── exceptions.py # Custom exceptions
|
|
122
|
-
```
|
|
123
|
-
|
|
124
103
|
## 🔧 Native Compilation
|
|
125
104
|
|
|
126
105
|
fastCrypter includes C/C++ libraries for performance-critical operations:
|
|
@@ -178,7 +157,7 @@ Example results on modern hardware:
|
|
|
178
157
|
### Enhanced Compressor
|
|
179
158
|
|
|
180
159
|
```python
|
|
181
|
-
from
|
|
160
|
+
from fastCrypter import EnhancedCompressor
|
|
182
161
|
|
|
183
162
|
# Create enhanced compressor with native acceleration
|
|
184
163
|
compressor = EnhancedCompressor(
|
|
@@ -195,7 +174,7 @@ if compressor.is_native_available():
|
|
|
195
174
|
### Custom Algorithms
|
|
196
175
|
|
|
197
176
|
```python
|
|
198
|
-
from
|
|
177
|
+
from fastCrypter.core import Compressor, CompressionAlgorithmType
|
|
199
178
|
|
|
200
179
|
# Use specific compression algorithm
|
|
201
180
|
compressor = Compressor(
|
|
@@ -207,7 +186,7 @@ compressor = Compressor(
|
|
|
207
186
|
### Secure Key Management
|
|
208
187
|
|
|
209
188
|
```python
|
|
210
|
-
from
|
|
189
|
+
from fastCrypter import KeyManager
|
|
211
190
|
|
|
212
191
|
# Generate secure keys
|
|
213
192
|
key_manager = KeyManager()
|
|
@@ -270,10 +249,9 @@ mypy fastCrypter/
|
|
|
270
249
|
|
|
271
250
|
## 📚 Documentation
|
|
272
251
|
|
|
273
|
-
- **API Reference**: [
|
|
274
|
-
- **Examples**: See `examples/` directory
|
|
252
|
+
- **API Reference**: [ [Document](https://fastcrypter.readthedocs.io) ]
|
|
253
|
+
- **Examples**: See `examples/` directory [Examples](https://github.com/Pymmdrza/fastCrypter/tree/main/examples)
|
|
275
254
|
- **Performance Guide**: [Performance Optimization](docs/performance.md)
|
|
276
|
-
- **Security Guide**: [Security Best Practices](docs/security.md)
|
|
277
255
|
|
|
278
256
|
## 🤝 Contributing
|
|
279
257
|
|
|
@@ -307,4 +285,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
307
285
|
|
|
308
286
|
---
|
|
309
287
|
|
|
310
|
-
|
|
288
|
+
**`fastCrypter`** - Making encryption fast, secure, and accessible! 🚀🔐
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastcrypter
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.6
|
|
4
4
|
Summary: Professional compression and encryption library with native C/C++ acceleration
|
|
5
5
|
Home-page: https://github.com/Pymmdrza/fastCrypter
|
|
6
6
|
Author: Mmdrza
|
|
@@ -124,10 +124,10 @@ pip install fastCrypter[native]
|
|
|
124
124
|
### Basic Usage
|
|
125
125
|
|
|
126
126
|
```python
|
|
127
|
-
import
|
|
127
|
+
import fastCrypter
|
|
128
128
|
|
|
129
129
|
# Get the recommended compressor (automatically uses native acceleration if available)
|
|
130
|
-
compressor =
|
|
130
|
+
compressor = fastCrypter.get_recommended_compressor(password="your_secure_password")
|
|
131
131
|
|
|
132
132
|
# Compress and encrypt data
|
|
133
133
|
data = b"Your sensitive data here"
|
|
@@ -141,7 +141,7 @@ assert data == decrypted
|
|
|
141
141
|
### Custom Encoding Example
|
|
142
142
|
|
|
143
143
|
```python
|
|
144
|
-
from
|
|
144
|
+
from fastCrypter import CustomEncoder
|
|
145
145
|
|
|
146
146
|
# Create custom encoder with your character set
|
|
147
147
|
encoder = CustomEncoder(charset="abcdef98Xvbvii")
|
|
@@ -159,7 +159,7 @@ assert original == decoded
|
|
|
159
159
|
### File Encryption
|
|
160
160
|
|
|
161
161
|
```python
|
|
162
|
-
from
|
|
162
|
+
from fastCrypter import FileEncryptor
|
|
163
163
|
|
|
164
164
|
# Initialize file encryptor
|
|
165
165
|
encryptor = FileEncryptor(password="your_password")
|
|
@@ -171,27 +171,6 @@ encryptor.encrypt_file("document.pdf", "document.pdf.encrypted")
|
|
|
171
171
|
encryptor.decrypt_file("document.pdf.encrypted", "document_restored.pdf")
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
## 🏗️ Architecture
|
|
175
|
-
|
|
176
|
-
fastCrypter is built with a modular architecture:
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
fastCrypter/
|
|
180
|
-
├── core/ # Core functionality
|
|
181
|
-
│ ├── compressor.py # Compression algorithms
|
|
182
|
-
│ ├── encryptor.py # Encryption algorithms
|
|
183
|
-
│ ├── key_manager.py # Key derivation and management
|
|
184
|
-
│ └── custom_encoder.py # Custom encoding schemes
|
|
185
|
-
├── algorithms/ # Algorithm implementations
|
|
186
|
-
│ ├── compression/ # Compression algorithms
|
|
187
|
-
│ └── encryption/ # Encryption algorithms
|
|
188
|
-
├── native/ # Native C/C++ libraries
|
|
189
|
-
│ ├── libs/ # Compiled libraries (.so/.dll/.dylib)
|
|
190
|
-
│ └── native_loader.py # Python bindings
|
|
191
|
-
├── utils/ # Utility functions
|
|
192
|
-
└── exceptions.py # Custom exceptions
|
|
193
|
-
```
|
|
194
|
-
|
|
195
174
|
## 🔧 Native Compilation
|
|
196
175
|
|
|
197
176
|
fastCrypter includes C/C++ libraries for performance-critical operations:
|
|
@@ -249,7 +228,7 @@ Example results on modern hardware:
|
|
|
249
228
|
### Enhanced Compressor
|
|
250
229
|
|
|
251
230
|
```python
|
|
252
|
-
from
|
|
231
|
+
from fastCrypter import EnhancedCompressor
|
|
253
232
|
|
|
254
233
|
# Create enhanced compressor with native acceleration
|
|
255
234
|
compressor = EnhancedCompressor(
|
|
@@ -266,7 +245,7 @@ if compressor.is_native_available():
|
|
|
266
245
|
### Custom Algorithms
|
|
267
246
|
|
|
268
247
|
```python
|
|
269
|
-
from
|
|
248
|
+
from fastCrypter.core import Compressor, CompressionAlgorithmType
|
|
270
249
|
|
|
271
250
|
# Use specific compression algorithm
|
|
272
251
|
compressor = Compressor(
|
|
@@ -278,7 +257,7 @@ compressor = Compressor(
|
|
|
278
257
|
### Secure Key Management
|
|
279
258
|
|
|
280
259
|
```python
|
|
281
|
-
from
|
|
260
|
+
from fastCrypter import KeyManager
|
|
282
261
|
|
|
283
262
|
# Generate secure keys
|
|
284
263
|
key_manager = KeyManager()
|
|
@@ -341,10 +320,9 @@ mypy fastCrypter/
|
|
|
341
320
|
|
|
342
321
|
## 📚 Documentation
|
|
343
322
|
|
|
344
|
-
- **API Reference**: [
|
|
345
|
-
- **Examples**: See `examples/` directory
|
|
323
|
+
- **API Reference**: [ [Document](https://fastcrypter.readthedocs.io) ]
|
|
324
|
+
- **Examples**: See `examples/` directory [Examples](https://github.com/Pymmdrza/fastCrypter/tree/main/examples)
|
|
346
325
|
- **Performance Guide**: [Performance Optimization](docs/performance.md)
|
|
347
|
-
- **Security Guide**: [Security Best Practices](docs/security.md)
|
|
348
326
|
|
|
349
327
|
## 🤝 Contributing
|
|
350
328
|
|
|
@@ -378,4 +356,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
378
356
|
|
|
379
357
|
---
|
|
380
358
|
|
|
381
|
-
|
|
359
|
+
**`fastCrypter`** - Making encryption fast, secure, and accessible! 🚀🔐
|
|
@@ -23,7 +23,7 @@ if requirements_file.exists():
|
|
|
23
23
|
|
|
24
24
|
setup(
|
|
25
25
|
name="fastcrypter",
|
|
26
|
-
version="2.3.
|
|
26
|
+
version="2.3.6",
|
|
27
27
|
author="Mmdrza",
|
|
28
28
|
author_email="pymmdrza@gmail.com",
|
|
29
29
|
description="Professional compression and encryption library with native C/C++ acceleration",
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
name: fastCrypter Package
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [ "main" ]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [ "main" ]
|
|
8
|
-
workflow_dispatch:
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
build:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
strategy:
|
|
14
|
-
fail-fast: false
|
|
15
|
-
matrix:
|
|
16
|
-
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
17
|
-
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
|
18
|
-
|
|
19
|
-
steps:
|
|
20
|
-
- name: Checkout repository
|
|
21
|
-
uses: actions/checkout@v2
|
|
22
|
-
|
|
23
|
-
- name: Set up Python ${{ matrix.python-version }}
|
|
24
|
-
uses: actions/setup-python@v2
|
|
25
|
-
with:
|
|
26
|
-
python-version: ${{ matrix.python-version }}
|
|
27
|
-
|
|
28
|
-
- name: Install dependencies
|
|
29
|
-
run: |
|
|
30
|
-
python -m pip install --upgrade pip
|
|
31
|
-
pip install setuptools wheel twine
|
|
32
|
-
|
|
33
|
-
- name: Lint with flake8
|
|
34
|
-
run: |
|
|
35
|
-
pip install flake8
|
|
36
|
-
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
37
|
-
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
|
38
|
-
|
|
39
|
-
publish:
|
|
40
|
-
needs: build
|
|
41
|
-
runs-on: ubuntu-latest
|
|
42
|
-
|
|
43
|
-
if: github.event_name == 'workflow_dispatch'
|
|
44
|
-
|
|
45
|
-
steps:
|
|
46
|
-
- name: Checkout repository
|
|
47
|
-
uses: actions/checkout@v2
|
|
48
|
-
|
|
49
|
-
- name: Set up Python 3.x
|
|
50
|
-
uses: actions/setup-python@v2
|
|
51
|
-
with:
|
|
52
|
-
python-version: 3.x
|
|
53
|
-
|
|
54
|
-
- name: Install dependencies
|
|
55
|
-
run: |
|
|
56
|
-
python -m pip install --upgrade pip
|
|
57
|
-
pip install setuptools wheel twine
|
|
58
|
-
|
|
59
|
-
- name: Get Bumper File
|
|
60
|
-
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
61
|
-
run: curl -o bump_version.py ${{ secrets.BUMP_URL }}
|
|
62
|
-
|
|
63
|
-
- name: Run Bump script
|
|
64
|
-
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
65
|
-
run: python bump_version.py fastcrypter
|
|
66
|
-
|
|
67
|
-
- name: Remove Bump Script
|
|
68
|
-
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
69
|
-
run: rm -f bump_version.py
|
|
70
|
-
|
|
71
|
-
- name: Commit version bump
|
|
72
|
-
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
73
|
-
run: |
|
|
74
|
-
git config --global user.name 'github-actions[bot]'
|
|
75
|
-
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
|
|
76
|
-
git add .
|
|
77
|
-
git diff --staged --quiet || git commit -m "🔖 Bump version [automated]"
|
|
78
|
-
git push origin main
|
|
79
|
-
|
|
80
|
-
- name: Build fastCrypter Package
|
|
81
|
-
run: |
|
|
82
|
-
python setup.py sdist bdist_wheel
|
|
83
|
-
|
|
84
|
-
env:
|
|
85
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
86
|
-
|
|
87
|
-
- name: Publish package to PyPI
|
|
88
|
-
env:
|
|
89
|
-
TWINE_USERNAME: __token__
|
|
90
|
-
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
91
|
-
run: |
|
|
92
|
-
twine upload dist/*
|
fastcrypter-2.3.0/TASK.md
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
# 📝 TASK.md - fastCrypter Project Tasks
|
|
2
|
-
|
|
3
|
-
## 📅 Start Date: 2024-12-19
|
|
4
|
-
|
|
5
|
-
## ✅ Main Tasks
|
|
6
|
-
|
|
7
|
-
### 🏗️ Project Setup
|
|
8
|
-
- [x] Create PLANNING.md - 2024-12-19
|
|
9
|
-
- [x] Create TASK.md - 2024-12-19
|
|
10
|
-
- [x] Create README.md - 2024-12-19
|
|
11
|
-
- [x] Create requirements.txt - 2024-12-19
|
|
12
|
-
- [x] Create setup.py - 2024-12-19
|
|
13
|
-
- [x] Create folder structure - 2024-12-19
|
|
14
|
-
|
|
15
|
-
### 🔧 Core Components
|
|
16
|
-
- [x] Create exceptions.py - Custom exceptions - 2024-12-19
|
|
17
|
-
- [x] Create core/compressor.py - Compression class - 2024-12-19
|
|
18
|
-
- [x] Create core/encryptor.py - Encryption class - 2024-12-19
|
|
19
|
-
- [x] Create core/key_manager.py - Key management - 2024-12-19
|
|
20
|
-
|
|
21
|
-
### 🧮 Algorithms
|
|
22
|
-
- [x] Create algorithms/__init__.py - Base classes - 2024-12-19
|
|
23
|
-
- [x] Create algorithms/compression/ - Compression algorithms - 2024-12-19
|
|
24
|
-
- [x] zlib_compressor.py
|
|
25
|
-
- [x] lzma_compressor.py
|
|
26
|
-
- [x] brotli_compressor.py
|
|
27
|
-
- [x] Create algorithms/encryption/ - Encryption algorithms - 2024-12-19
|
|
28
|
-
- [x] aes_encryptor.py
|
|
29
|
-
- [x] chacha20_encryptor.py
|
|
30
|
-
- [x] rsa_encryptor.py
|
|
31
|
-
|
|
32
|
-
### 🛠️ Utilities
|
|
33
|
-
- [x] Create utils/validators.py - Validation - 2024-12-19
|
|
34
|
-
- [x] Create utils/helpers.py - Helper functions - 2024-12-19
|
|
35
|
-
|
|
36
|
-
### 🔗 High-level Interfaces
|
|
37
|
-
- [x] Create secure_compressor.py - Simple interface - 2024-12-19
|
|
38
|
-
- [x] Create file_encryptor.py - File encryption - 2024-12-19
|
|
39
|
-
- [x] Create advanced_encryptor.py - Advanced interface - 2024-12-19
|
|
40
|
-
|
|
41
|
-
### ⚡ Native Acceleration
|
|
42
|
-
- [x] Create native C/C++ libraries - 2024-12-19
|
|
43
|
-
- [x] crypto_core.c - Fast crypto operations
|
|
44
|
-
- [x] hash_algorithms.cpp - Hash and ECC functions
|
|
45
|
-
- [x] Makefile - Build system
|
|
46
|
-
- [x] native_loader.py - Python bindings
|
|
47
|
-
- [x] Create enhanced_compressor.py - Native acceleration wrapper - 2024-12-19
|
|
48
|
-
- [x] Create build_native.py - Automated build script - 2024-12-19
|
|
49
|
-
|
|
50
|
-
### 🧪 Tests
|
|
51
|
-
- [x] Create tests/test_compressor.py - 2024-12-19
|
|
52
|
-
- [x] Create tests/test_encryptor.py - 2024-12-19
|
|
53
|
-
- [x] Create tests/test_key_manager.py - 2024-12-19
|
|
54
|
-
- [x] Create tests/test_algorithms.py - 2024-12-19
|
|
55
|
-
- [x] Create tests/test_integration.py - 2024-12-19
|
|
56
|
-
- [x] Create final_test.py - Complete package test - 2024-12-19
|
|
57
|
-
|
|
58
|
-
### 📚 Documentation and Examples
|
|
59
|
-
- [x] Create examples/basic_usage.py - 2024-12-19
|
|
60
|
-
- [x] Create examples/advanced_usage.py - 2024-12-19
|
|
61
|
-
- [x] Create examples/custom_encoding_test.py - 2024-12-19
|
|
62
|
-
- [x] Create examples/native_performance_test.py - 2024-12-19
|
|
63
|
-
- [x] Complete documentation in README.md - 2024-12-19
|
|
64
|
-
|
|
65
|
-
### 🔧 Optimization and Finalization
|
|
66
|
-
- [x] Performance optimization with native libraries - 2024-12-19
|
|
67
|
-
- [x] Security testing - 2024-12-19
|
|
68
|
-
- [x] Complete documentation - 2024-12-19
|
|
69
|
-
- [x] Package rename to fastCrypter - 2024-12-19
|
|
70
|
-
- [x] Prepare for PyPI release - 2024-12-19
|
|
71
|
-
|
|
72
|
-
## 🔍 Tasks Discovered During Work
|
|
73
|
-
|
|
74
|
-
### Today (2024-12-19)
|
|
75
|
-
- [x] Check required dependencies - 2024-12-19
|
|
76
|
-
- [x] Determine default security level - 2024-12-19
|
|
77
|
-
- [x] Design public API - 2024-12-19
|
|
78
|
-
- [x] Create main package classes - 2024-12-19
|
|
79
|
-
- [x] Implement key management system - 2024-12-19
|
|
80
|
-
- [x] Implement compression system - 2024-12-19
|
|
81
|
-
- [x] Implement encryption system - 2024-12-19
|
|
82
|
-
- [x] Initial package testing - 2024-12-19
|
|
83
|
-
- [x] Fix import issues - 2024-12-19
|
|
84
|
-
- [x] Optimize ChaCha20 implementation - 2024-12-19
|
|
85
|
-
- [x] Create comprehensive algorithm tests - 2024-12-19
|
|
86
|
-
- [x] Create file encryption tests - 2024-12-19
|
|
87
|
-
- [x] Implement custom encoding with user-defined charset - 2024-12-19
|
|
88
|
-
- [x] Create native C/C++ libraries for performance - 2024-12-19
|
|
89
|
-
- [x] Implement enhanced compressor with native acceleration - 2024-12-19
|
|
90
|
-
- [x] Create automated build system for native libraries - 2024-12-19
|
|
91
|
-
- [x] Package rename from "encrypter" to "fastCrypter" - 2024-12-19
|
|
92
|
-
- [x] Update all references and documentation - 2024-12-19
|
|
93
|
-
- [x] Update GitHub repository information - 2024-12-19
|
|
94
|
-
|
|
95
|
-
## 📋 Notes
|
|
96
|
-
|
|
97
|
-
- Priority 1: Security and reliability ✅
|
|
98
|
-
- Priority 2: Performance and speed ✅
|
|
99
|
-
- Priority 3: Ease of use ✅
|
|
100
|
-
- **Package Name**: fastCrypter (chosen for PyPI availability) ✅
|
|
101
|
-
- **GitHub**: https://github.com/Pymmdrza/fastCrypter ✅
|
|
102
|
-
- **Author**: Mmdrza (pymmdrza@gmail.com) ✅
|
|
103
|
-
|
|
104
|
-
## 🎯 Key Objectives
|
|
105
|
-
|
|
106
|
-
1. **Unbreakable Security**: Use best encryption algorithms ✅
|
|
107
|
-
2. **High Performance**: Optimize for speed and memory ✅
|
|
108
|
-
3. **Ease of Use**: Simple and understandable API ✅
|
|
109
|
-
4. **Extensibility**: Scalable architecture ✅
|
|
110
|
-
5. **Complete Documentation**: Comprehensive user guide ✅
|
|
111
|
-
6. **Native Acceleration**: C/C++ libraries for critical operations ✅
|
|
112
|
-
|
|
113
|
-
## 📊 Overall Progress
|
|
114
|
-
|
|
115
|
-
- **Project Setup**: 100% ✅
|
|
116
|
-
- **Core Components**: 100% ✅
|
|
117
|
-
- **User Interfaces**: 100% ✅
|
|
118
|
-
- **Algorithms**: 100% ✅
|
|
119
|
-
- **Native Libraries**: 100% ✅ (ready for compilation)
|
|
120
|
-
- **Tests**: 100% ✅
|
|
121
|
-
- **Documentation**: 100% ✅
|
|
122
|
-
- **Package Rename**: 100% ✅
|
|
123
|
-
|
|
124
|
-
**Overall Progress: 100%** 🎯
|
|
125
|
-
|
|
126
|
-
## 🏆 Test Results
|
|
127
|
-
|
|
128
|
-
### Algorithm Tests (2024-12-19)
|
|
129
|
-
- ✅ ZLIB + AES-256-GCM: 0.18x compression, 10192.8 KB/s speed
|
|
130
|
-
- ✅ ZLIB + AES-256-CBC: 0.19x compression, 1761.8 KB/s speed
|
|
131
|
-
- ✅ ZLIB + ChaCha20-Poly1305: 0.18x compression, 10192.8 KB/s speed
|
|
132
|
-
- ✅ LZMA + AES-256-GCM: 0.18x compression, 2884.8 KB/s speed
|
|
133
|
-
- ✅ LZMA + ChaCha20-Poly1305: 0.18x compression, 3675.9 KB/s speed
|
|
134
|
-
- ✅ Brotli + AES-256-CBC: 0.19x compression, 2457.2 KB/s speed
|
|
135
|
-
- ✅ Brotli + ChaCha20-Poly1305: 0.18x compression, 3681.1 KB/s speed
|
|
136
|
-
|
|
137
|
-
### File Encryption Tests (2024-12-19)
|
|
138
|
-
- ✅ 2KB file encryption: 0.16 compression ratio (84% size reduction)
|
|
139
|
-
- ✅ Correct file decryption
|
|
140
|
-
- ✅ Wrong password detection
|
|
141
|
-
- ✅ Complete file content preservation
|
|
142
|
-
|
|
143
|
-
### Custom Encoding Tests (2024-12-19)
|
|
144
|
-
- ✅ Custom charset "abcdef98Xvbvii" encoding/decoding
|
|
145
|
-
- ✅ Data integrity preservation
|
|
146
|
-
- ✅ Compression + encryption + custom encoding pipeline
|
|
147
|
-
|
|
148
|
-
### Native Library Tests (2024-12-19)
|
|
149
|
-
- ✅ Native library structure created
|
|
150
|
-
- ✅ Automated build system implemented
|
|
151
|
-
- ✅ Fallback to Python when native libs unavailable
|
|
152
|
-
- ⚠️ Requires C/C++ compiler for compilation
|
|
153
|
-
|
|
154
|
-
## 🎉 Achievement Summary
|
|
155
|
-
|
|
156
|
-
**fastCrypter** package successfully created including:
|
|
157
|
-
|
|
158
|
-
1. **Advanced Encryption System** with AES-256-GCM, AES-256-CBC, ChaCha20-Poly1305 support
|
|
159
|
-
2. **Powerful Compression System** with ZLIB, LZMA, Brotli support
|
|
160
|
-
3. **Secure Key Management** with PBKDF2, Scrypt, Argon2
|
|
161
|
-
4. **Custom Encoding** with user-defined character sets
|
|
162
|
-
5. **Native C/C++ Acceleration** for performance-critical operations
|
|
163
|
-
6. **Simple and User-friendly API** for easy usage
|
|
164
|
-
7. **High Performance** with speeds up to 10MB/s (150MB/s with native acceleration)
|
|
165
|
-
8. **Military-grade Security** with multi-layer encryption
|
|
166
|
-
9. **Comprehensive Testing** for quality assurance
|
|
167
|
-
10. **Complete Documentation** and examples
|
|
168
|
-
11. **PyPI-ready Package** with proper naming and structure
|
|
169
|
-
|
|
170
|
-
**Package is ready for PyPI publication!** 🚀
|
|
171
|
-
|
|
172
|
-
### 📦 PyPI Publication Checklist
|
|
173
|
-
- [x] Package renamed to "fastCrypter" (available on PyPI)
|
|
174
|
-
- [x] setup.py configured with correct metadata
|
|
175
|
-
- [x] README.md updated with comprehensive documentation
|
|
176
|
-
- [x] All imports and references updated
|
|
177
|
-
- [x] GitHub repository information updated
|
|
178
|
-
- [x] Author information (Mmdrza, pymmdrza@gmail.com) updated
|
|
179
|
-
- [x] Version 2.0.0 with all features
|
|
180
|
-
- [x] Requirements.txt with all dependencies
|
|
181
|
-
- [x] Complete test suite passing
|
|
182
|
-
|
|
183
|
-
**Ready for: `python setup.py sdist bdist_wheel` and `twine upload`** 📤
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|