apple-data 1.0.397 → 1.0.400

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3065d623e9d8a51918459fdd21b1a7738681bc47f1fd3e0c7d9fa26cca252408
4
- data.tar.gz: 4eba55c4aff3dc0d73492939a14754e009fe7e3c936c6eaf44a79e8cc550f4b7
3
+ metadata.gz: b593af7352bcf2238a043f907687787e41526ebc1da3b48f77247ad371ca36a9
4
+ data.tar.gz: 3d85cc0938de874fd890cb8f51c5157655f7f334a7d9c11c09044b218e7cef58
5
5
  SHA512:
6
- metadata.gz: c4d53da2e7e8228b888af80e70c843c84d7226d163582ecf4dae581b5d98f60d3acf95896b12a6f00100e6a0827f113d5e205c0571c1b81930f835b4165228cd
7
- data.tar.gz: c62c311bee4f919230dd38715c0cb9898fecf19bf8200332c684c14ca0e213b3dd7211fa7ac1b42797a885124749187293d423d277ef9acd82c965fdc4e8e21b
6
+ metadata.gz: 198645d06bd7319c753f91fe50199d9cb26d3437ae3f06f073c3e1f3cfe6a0d67a1e93fb3b29cfb4940b29990433c7d9fc81d35fd66397028947c35e81b8267b
7
+ data.tar.gz: effb3965060de187edf1fb71c7a3a3e0c38f290b6de26524cd6433c9242ff7d09b756713559549ac149548d26bbb77174a901e2688e6f9e44008c67ad56a9665
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  class BootArgsData < DataFile
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  # Factory Device Restore
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  # Data file for the IOReg data
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  # Schema file for the `lockdownd.yaml` file
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  class MachoData < DataFile
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppleData
4
- VERSION = '1.0.397'
4
+ VERSION = '1.0.400'
5
5
  end
data/lib/apple_data.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'apple-data/boot_args'
data/share/cores.yaml CHANGED
@@ -1508,20 +1508,20 @@ chip_ids:
1508
1508
  boards:
1509
1509
  0x00:
1510
1510
  product_name: iPhone 4 (GSM)
1511
- product_id: AppleTV2,1
1512
- board_name: k66ap
1511
+ product_id: iPhone3,1
1512
+ board_name: n90ap
1513
1513
  0x02:
1514
1514
  product_name: iPad
1515
1515
  product_id: iPad1,1
1516
1516
  board_name: k48ap
1517
1517
  0x04:
1518
1518
  product_name: iPhone 4 (GSM) R2 2012
1519
- product_id: iPhone3,3
1520
- board_name: n92ap
1519
+ product_id: iPhone3,2
1520
+ board_name: n90bap
1521
1521
  0x06:
1522
1522
  product_name: iPhone 4 (CDMA)
1523
1523
  product_id: iPhone3,3
1524
- board_name: k66ap
1524
+ board_name: n92ap
1525
1525
  0x08:
1526
1526
  product_name: iPod Touch (4th gen)
1527
1527
  product_id: iPod4,1
@@ -0,0 +1,4 @@
1
+ ---
2
+
3
+
4
+ domains:
@@ -0,0 +1,301 @@
1
+ ---
2
+ variables:
3
+ __CFBundleIdentifier:
4
+ type: string
5
+ __CFPREFERENCES_AVOID_DAEMON:
6
+ type: boolean
7
+ values: [ 0, 1 ]
8
+ __CF_USER_TEXT_ENCODING:
9
+ examples:
10
+ - 0x0:0:0
11
+ - 0x1F5:0x0:0x0
12
+ ASL_DISABLE:
13
+ type: boolean
14
+ values: [ 0, 1 ]
15
+ CA_ASSERT_MAIN_THREAD_TRANSACTIONS:
16
+ type: boolean
17
+ values: [ 0, 1 ]
18
+ CA_DEBUG_TRANSACTIONS:
19
+ description: debug core animation transactions
20
+ type: boolean
21
+ CFFIXED_USER_HOME:
22
+ type: string
23
+ format: path
24
+ examples:
25
+ - /tmp
26
+ CFNETWORK_STORAGED_TIMERELOFF:
27
+ type: boolean
28
+ values: [ NO, YES ]
29
+ CHECK_IN:
30
+ type: boolean
31
+ values: [ 0, 1 ]
32
+ CLEAN_FILES_OLDER_THAN_DAYS:
33
+ type: integer
34
+ "com.apple.CoreData.CloudKitDebug":
35
+ type: boolean
36
+ values: [ 0, 1 ]
37
+ "com.apple.CoreData.XPCDebug":
38
+ type: boolean
39
+ values: [ 0, 1 ]
40
+ COMMAND_MODE:
41
+ type: string
42
+ examples:
43
+ - unix2003
44
+ CUPS_DEBUG_FILTER:
45
+ type: string
46
+ format: regex
47
+ examples:
48
+ - ^(cupsDo|cupsGet|cupsMake|cupsSet|http|_http|ipp|_ipp|mime).*
49
+ CUPS_DEBUG_LEVEL:
50
+ type: integer
51
+ CUPS_DEBUG_LOG:
52
+ type: string
53
+ format: path
54
+ DEBUGSCOPE:
55
+ type: array
56
+ seperator: ","
57
+ values:
58
+ - all
59
+ - -policy-node
60
+ - policy-set
61
+ - policy
62
+ - alloc
63
+ - trust
64
+ - bind
65
+ - profile
66
+ - trace
67
+ - dbconn
68
+ - OTR
69
+ - serverxpc
70
+ - sqlite3
71
+ - error_thee_well
72
+ - ringSigning
73
+ DEFAULT_NETWORK_PRIVACY_LEVEL:
74
+ type: string
75
+ values:
76
+ - public
77
+ DYLD_BIND_AT_LAUNCH:
78
+ DYLD_DISABLE_DOFS:
79
+ DYLD_FALLBACK_FRAMEWORK_PATH:
80
+ description:
81
+ This is a colon separated list of directories that contain frameworks. If a framework is not found at its
82
+ install path, dyld uses this as a list of directories to search for the framework.
83
+ type: array
84
+ seperator: ":"
85
+ default: /Library/Frameworks:/System/Library/Frameworks
86
+ DYLD_FALLBACK_LIBRARY_PATH:
87
+ description: |
88
+ This is a colon separated list of directories that contain libraries. If a dylib is not found at its install
89
+ path, dyld uses this as a list of directories to search for the dylib. By default, it is set
90
+ to /usr/local/lib:/usr/lib.
91
+ type: array
92
+ seperator: ":"
93
+ default: /usr/local/lib:/usr/lib
94
+ DYLD_FORCE_FLAT_NAMESPACE:
95
+ description: |
96
+ Disable two level namespaces
97
+ DYLD_FRAMEWORK_PATH:
98
+ description: |
99
+ This is a colon separated list of directories that contain frameworks. The dynamic linker searches these
100
+ directories before it searches for the framework by its install name. It allows you to test new versions of
101
+ existing frameworks. (A framework is a library install name that ends in the form `XXX.framework/Versions/A/XXX`
102
+ or `XXX.framework/XXX`, where `XXX` and `A` are any name.)
103
+
104
+ For each framework that a program uses, the dynamic linker looks for the framework in each directory in
105
+ `DYLD_FRAMEWORK_PATH` in turn. If it looks in all those directories and can't find the framework, it uses
106
+ whatever it would have loaded if `DYLD_FRAMEWORK_PATH` had not been set.
107
+
108
+ Use the -L option to otool(1) to discover the frameworks and shared libraries that the executable is linked
109
+ against.
110
+ type: array
111
+ seperator: ":"
112
+ DYLD_IMAGE_SUFFIX:
113
+ description: |
114
+ This is set to a string of a suffix to try to be used for all shared libraries used by the program. For
115
+ libraries ending in ".dylib" the suffix is applied just before the ".dylib".
116
+
117
+ For all other libraries the suffix is appended to the library name. This is useful for using conventional
118
+ "_profile" and "_debug" libraries and frameworks.
119
+ type: string
120
+ DYLD_INSERT_LIBRARIES:
121
+ description: |
122
+ This is a colon separated list of additional dynamic libraries to load before the ones specified in the program.
123
+ If instead, your goal is to substitute a library that would normally be loaded, use `DYLD_LIBRARY_PATH`
124
+ or `DYLD_FRAMEWORK_PATH` instead.
125
+ type: array
126
+ seperator: ":"
127
+ DYLD_LIBRARY_PATH:
128
+ description: |
129
+ This is a colon separated list of directories that contain libraries. The dynamic linker searches these
130
+ directories before it searches the default locations for libraries. It allows you to test new versions of
131
+ existing libraries.
132
+
133
+ For each dylib that a program uses, the dynamic linker looks for its leaf name in each directory in
134
+ `DYLD_LIBRARY_PATH`.
135
+
136
+ Use the `-L` option to `otool(1)` to discover the frameworks and shared libraries that the executable is linked
137
+ against.
138
+ type: array
139
+ seperator: ":"
140
+ DYLD_NO_FIX_PREBINDING:
141
+ DYLD_PRINT_APIS:
142
+ description: |
143
+ If set, causes dyld to print a line whenever a dyld API is called (e.g. `dlopen()`).
144
+ DYLD_PRINT_BINDINGS:
145
+ description: |
146
+ If set, causes dyld to print a line each time a symbolic name is bound.
147
+ DYLD_PRINT_DOFS:
148
+ DYLD_PRINT_ENV:
149
+ description: |
150
+ If set, causes dyld to print a line of key=valule for each enviroment variable in the process.
151
+ type: presence
152
+ DYLD_PRINT_INITIALIZERS:
153
+ description: |
154
+ If set, causes dyld to print out a line when running each initializer in every image. Initializers run by dyld
155
+ include constructors for C++ statically allocated objects, functions marked with
156
+ `__attribute__((constructor))`, and `-init` functions.
157
+ DYLD_PRINT_LIBRARIES:
158
+ description: |
159
+ If set, causes dyld to print a line for each mach-o image loaded into a process. This is useful to make sure
160
+ that the use of DYLD_LIBRARY_PATH is getting what you want.
161
+ type: presence
162
+ DYLD_PRINT_LIBRARIES_POST_LAUNCH:
163
+ DYLD_PRINT_LOADERS:
164
+ description: |
165
+ If set, causes dyld to print a line whether each image is tracked by a JustInTimeLoader or a PrebuiltLoader.
166
+ Additionally, it prints if a PrebuiltLoaderSet was used to launch the process or if a PrebuiltLoader was
167
+ written to make the next launch faster.
168
+ type: presence
169
+ DYLD_PRINT_OPTS:
170
+ DYLD_PRINT_REBASINGS:
171
+ DYLD_PRINT_RPATHS:
172
+ DYLD_PRINT_SEARCHING:
173
+ description: |
174
+ If set, causes dyld to print a line about each file system path checked when searching for an image to load.
175
+ type: presence
176
+ DYLD_PRINT_SEGMENTS:
177
+ description: |
178
+ If set, causes dyld to print out a line containing the name and address range of each mach-o segment that
179
+ dyld maps. In addition it prints information about if the image was from the dyld shared cache.
180
+ DYLD_PRINT_STATISTICS:
181
+ DYLD_PRINT_TO_FILE:
182
+ description: |
183
+ This is a path to a (writable) file. Normally, the dynamic linker writes all logging output
184
+ (triggered by `DYLD_PRINT_*` settings) to file descriptor 2 (which is usually stderr). But
185
+ this setting causes the dynamic linker to write logging output to the specified file.
186
+ type: string
187
+ format: path
188
+ DYLD_ROOT_PATH:
189
+ DYLD_SHARED_CACHE_DIR:
190
+ description: |
191
+ This is a directory containing dyld shared cache files. This variable can be used in conjunction with
192
+ `DYLD_SHARED_REGION=private` to run a process with an alternate shared cache.
193
+ DYLD_SHARED_CACHE_DONT_VALIDATE:
194
+ DYLD_SHARED_REGION:
195
+ description: |
196
+ This can be "use" (the default) or "private". Setting it to "private" tells dyld to remove the shared region
197
+ from the process address space and `mmap()` back in a private copy of the dyld shared cache in the shared region
198
+ address range. This is only useful if the shared cache on disk has been updated and is different than the shared
199
+ cache in use.
200
+ DYLD_VERSIONED_FRAMEWORK_PATH:
201
+ description: |
202
+ This is a colon separated list of directories that contain potential override frameworks. The dynamic linker
203
+ searches these directories for frameworks. For each framework found dyld looks at its `LC_ID_DYLIB` and gets
204
+ the current_version and install name. Dyld then looks for the framework at the install name path.
205
+ Whichever has the larger current_version value will be used in the process whenever a framework with that
206
+ install name is required. This is similar to `DYLD_FRAMEWORK_PATH` except instead of always overriding,
207
+ it only overrides if the supplied framework is newer.
208
+
209
+ Note: dyld does not check the framework's Info.plist to find its version. Dyld only checks the `-current_version`
210
+ number supplied when the framework was created.
211
+ type: array
212
+ seperator: ":"
213
+ default: /Library/Frameworks:/System/Library/Frameworks
214
+ DYLD_VERSIONED_LIBRARY_PATH:
215
+ description: |
216
+ This is a colon separated list of directories that contain potential override libraries. The dynamic linker
217
+ searches these directories for dynamic libraries. For each library found dyld looks at its `LC_ID_DYLIB` and
218
+ gets the current_version and install name. Dyld then looks for the library at the install name path.
219
+ Whichever has the larger current_version value will be used in the process whenever a dylib with that install
220
+ name is required. This is similar to DYLD_LIBRARY_PATH except instead of always overriding, it only
221
+ overrides is the supplied library is newer.
222
+ HOME:
223
+ type: string
224
+ format: path
225
+ LAUNCHD_SOCKET:
226
+ LIBDISPATCH_STRICT:
227
+ type: boolean
228
+ values: [ NO, YES ]
229
+ LOGNAME:
230
+ type: string
231
+ format: username
232
+ LaunchInstanceID:
233
+ type: string
234
+ format: UUID
235
+ MallocCorruptionAbort:
236
+ type: boolean
237
+ values: [ 0, 1 ]
238
+ MallocMaxMagazines:
239
+ type: integer
240
+ MallocNanoZone:
241
+ type: boolean
242
+ values: [ 0, 1 ]
243
+ MallocSpaceEfficient:
244
+ type: boolean
245
+ values: [ 0, 1 ]
246
+ MallocStackLoggingDirectory:
247
+ type: string
248
+ format: path
249
+ NSRunningFromLaunchd:
250
+ type: boolean
251
+ values: [ 0, 1 ]
252
+ NSZombieEnabled:
253
+ type: boolean
254
+ values: [ NO, YES ]
255
+ PATH:
256
+ type: array
257
+ seperator: ":"
258
+ default:
259
+ - /usr/bin
260
+ - /bin
261
+ - /usr/sbin
262
+ - /sbin
263
+ PRINTTOOL_MODE:
264
+ type: string
265
+ examples:
266
+ - agent
267
+ - daemon
268
+ PRODUCT_INFO_FILTER_DISABLE:
269
+ OS_ACTIVITY_MODE:
270
+ type: boolean
271
+ values: [ disable, enable ]
272
+ PWD:
273
+ type: string
274
+ format: path
275
+ REACH_DARK_WAKE_CONTROL:
276
+ type: boolean
277
+ values: [ TRUE, FALSE ]
278
+ REACH_DARK_WAKE_NOTIFY:
279
+ type: boolean
280
+ values: [ TRUE, FALSE ]
281
+ RPC_DEBUG:
282
+ type: boolean
283
+ values: [ 0, 1 ]
284
+ RUN_WITH_LAUNCHD:
285
+ type: boolean
286
+ values: [ 0, 1 ]
287
+ SSH_AUTH_SOCK:
288
+ type: string
289
+ format: path
290
+ TMPDIR:
291
+ type: string
292
+ format: path
293
+ WAIT4DEBUGGER:
294
+ type: boolean
295
+ values: [ NO, YES ]
296
+ XPC_FLAGS:
297
+ XPC_NULL_BOOTSTRAP:
298
+ type: boolean
299
+ values: [ 0, 1 ]
300
+ XPC_SERVICE_NAME:
301
+ type: string
data/share/sip.yaml ADDED
@@ -0,0 +1,58 @@
1
+ ---
2
+ process_capabilities:
3
+ CSR_CAPABILITY_UNLIMITED:
4
+ value: 1
5
+ description: process is not restricted by SIP and may bypass
6
+ CSR_CAPABILITY_CONFIG:
7
+ value: 2
8
+ descrption:
9
+ CSR_CAPABILITY_APPLE_INTERNAL:
10
+ value: 4
11
+ description:
12
+ flags:
13
+ CSR_ALLOW_UNTRUSTED_KEXTS:
14
+ value: 1
15
+ description: allow loading kernel extensions that are not signed
16
+ disable_default: true
17
+ CSR_ALLOW_UNRESTRICTED_FS:
18
+ value: 2
19
+ description: disable SIP protections of various paths (such as write protection of /System)
20
+ disable_default: true
21
+ CSR_ALLOW_TASK_FOR_PID:
22
+ value: 4
23
+ description: allow getting the pid task, required for debugging
24
+ disable_default: true
25
+ CSR_ALLOW_KERNEL_DEBUGGER:
26
+ value: 8
27
+ description: allow using the kernel debugger (KDP) - requires configuring the kernel debugger via boot-args
28
+ disable_default: true
29
+ CSR_ALLOW_APPLE_INTERNAL:
30
+ value: 16
31
+ description:
32
+ disable_default: true
33
+ CSR_ALLOW_UNRESTRICTED_DTRACE:
34
+ aliases: [ CSR_ALLOW_DESTRUCTIVE_DTRACE ]
35
+ value: 32
36
+ description:
37
+ disable_default: true
38
+ CSR_ALLOW_UNRESTRICTED_NVRAM:
39
+ value: 64
40
+ description: disable restrictions to writing to restricted NVRAM variables
41
+ disable_default: true
42
+ CSR_ALLOW_DEVICE_CONFIGURATION:
43
+ value: 128
44
+ description:
45
+ always_enforced: true
46
+ CSR_ALLOW_ANY_RECOVERY_OS:
47
+ value: 256
48
+ description: disable validation of BaseSystem.dmg by ignoring BaseSystem.chunklist
49
+ always_enforced: true
50
+ CSR_ALLOW_UNAPPROVED_KEXTS:
51
+ value: 512
52
+ description: do not require kext approval (managed in the T2 when it exists)
53
+ CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE:
54
+ value: 1024
55
+ description: override spctl or executable policy
56
+ CSR_ALLOW_UNAUTHENTICATED_ROOT:
57
+ value: 2048
58
+ description:
data/share/vmapple.yaml CHANGED
@@ -0,0 +1,32 @@
1
+ ---
2
+ runtimes:
3
+ vmapple:
4
+ vmapple2:
5
+ booter:
6
+ name: AVPBooter
7
+ versions:
8
+ "7429.0.72.0.3": 9c65135c2277ec92d7c0322bd6e6c3dd4f97815cf9d4e51a9c48f3cf2dc02168
9
+ "7429.0.133.121.1": 561ea2464a17f4db5c05fa6257c274ac65dbaa3db043a49ef7102f63a641f7b1
10
+ "7429.0.181.131.1": 4c4285713983c6b5addffbeac1f363c42eb02c615aa6af7b168f526590ea2044
11
+ "7429.0.207.141.1": 3b8f9a7d5c702738a6ef9bf77fb3306e1c0a0d38763e5c6edfda404672a23145
12
+ "7429.30.8.0.4": 9488cfca1d3da034a31d5da2eddd5e91609405c1f19e16e0f0e6d5e0a6a59cc0
13
+ "7429.40.38": e6733652c6fff40fdecde962066b19af12bea5446b217f0f8a3e0e5eaf2c9f30
14
+ "7429.40.68": 5c1436e6fab42b312f9d9a5935fbd7ed8e9bca749e48c1161d9d00eb21e047a5
15
+ "7429.40.84.181.1": 5724b5ff824a15040e8aeaa438635b51514e1641fdd97a035522c6a0afa71bf2
16
+ "7429.40.92.0.5": 321d0a642e6094d477e76585e527ec97caca10f15698f8c92fb882106a4f3188
17
+ "7429.41.4~21": 36bf0ee22ace6a628b2f8dd5dde42c1216bb775746588d8706f1f7ef6ce90497
18
+ "7429.41.4~25": 7ddc3378ffcf2ed450c7d60951e22bf1b1b0be7c6354525663bcad4325646b70
19
+ "7429.41.5": d6419f127fd9c42287804d1cf999f2fc806481224a7b2e5a15d17ce0eb66169c
20
+ "7429.60.27.0.1": b050add187faa061e5677e08eae3d91ac3627ebc7164bb4f1b28f49b014442f3
21
+ "7429.60.41": 5f1170ddaedd54475153789f439c0e1232f24a7b552a12f52a09522a7734396f
22
+ "7429.60.47": 1c25d83cefd25f7a208c4faff06e76873fa8cdec593b101111158a674f4b3b14
23
+ "7429.61.2~16": 4cdb7f18a0649cf50ffed07400cc551e5a269dea362bd03145ddeb207a1fc614
24
+ "7429.61.2~18": 9ee86f6b56a42025f6b01af26b5aef6667bff0ee53861ec788e446d663c8113f
25
+ "7429.80.17": 7b62815a32b35e7aaef4b314876d8112a1993e398e5690ce9a56ca1990ee1872
26
+ "7429.80.33": 22ce3525d489a368fad9b4f2c1b5d14a84a1e4425c4559c23e48c8337ff0c1d0
27
+ "7429.81.3": 9add48ca6e4016b1bab12da4f621060d6993e0c72455950707f6ad75d109652a
28
+ "7459.100.487.115.1": 02ba6e506d6590a9bb114dde6575c067102d185cc5850c18130a39a852627de5
29
+ "7459.100.494.121.1": bd08cfe3a8105dedfbbbaea8ad13fd4f7705e36db58e60784114b4d29bbda52e
30
+ "7459.100.504.0.1": 20cf41968e30d7166fb9c70fd1f6cddd232c83c98260aa511b46f33bca058a0d
31
+ "7459.101.2~33": ae20f8752222e608e0adc0ace38d994b65b5896ba8defbbba10817d0dc9f8f18
32
+ "7459.101.2~38": de03cbc37b9251892b704e8cd8cc59bbd6abfe10000ee61d0358d6a529142e0d
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.397
4
+ version: 1.0.400
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Mark
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-17 00:00:00.000000000 Z
11
+ date: 2022-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pathutil
@@ -48,7 +48,9 @@ files:
48
48
  - share/bundles.yaml
49
49
  - share/cores.yaml
50
50
  - share/credits.yaml
51
+ - share/defaults.yaml
51
52
  - share/dnssd.yaml
53
+ - share/environment_variables.yaml
52
54
  - share/fdr.yaml
53
55
  - share/homekit.yaml
54
56
  - share/iboot.yaml
@@ -72,6 +74,7 @@ files:
72
74
  - share/resources.yaml
73
75
  - share/sep.yaml
74
76
  - share/services.yaml
77
+ - share/sip.yaml
75
78
  - share/syscfg.yaml
76
79
  - share/vmapple.yaml
77
80
  homepage: https://docs.hackdiffe.rent