polyfile-weave 0.5.5__py3-none-any.whl

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.

Potentially problematic release.


This version of polyfile-weave might be problematic. Click here for more details.

Files changed (585) hide show
  1. polyfile/__init__.py +15 -0
  2. polyfile/__main__.py +394 -0
  3. polyfile/arithmetic.py +27 -0
  4. polyfile/ast.py +114 -0
  5. polyfile/debugger.py +1039 -0
  6. polyfile/expressions.py +346 -0
  7. polyfile/fileutils.py +343 -0
  8. polyfile/html.py +135 -0
  9. polyfile/http/__init__.py +1 -0
  10. polyfile/http/defacto.py +37 -0
  11. polyfile/http/deprecated.py +51 -0
  12. polyfile/http/experimental.py +67 -0
  13. polyfile/http/http_11.py +548 -0
  14. polyfile/http/matcher.py +37 -0
  15. polyfile/http/structured_headers.py +48 -0
  16. polyfile/iterators.py +72 -0
  17. polyfile/jpeg.py +24 -0
  18. polyfile/kaitai/__init__.py +0 -0
  19. polyfile/kaitai/compiler.py +156 -0
  20. polyfile/kaitai/parser.py +312 -0
  21. polyfile/kaitai/parsers/__init__.py +0 -0
  22. polyfile/kaitai/parsers/aix_utmp.py +116 -0
  23. polyfile/kaitai/parsers/allegro_dat.py +367 -0
  24. polyfile/kaitai/parsers/andes_firmware.py +64 -0
  25. polyfile/kaitai/parsers/android_bootldr_asus.py +105 -0
  26. polyfile/kaitai/parsers/android_bootldr_huawei.py +181 -0
  27. polyfile/kaitai/parsers/android_bootldr_qcom.py +217 -0
  28. polyfile/kaitai/parsers/android_dto.py +138 -0
  29. polyfile/kaitai/parsers/android_img.py +319 -0
  30. polyfile/kaitai/parsers/android_nanoapp_header.py +83 -0
  31. polyfile/kaitai/parsers/android_opengl_shaders_cache.py +151 -0
  32. polyfile/kaitai/parsers/android_sparse.py +237 -0
  33. polyfile/kaitai/parsers/android_super.py +401 -0
  34. polyfile/kaitai/parsers/apm_partition_table.py +196 -0
  35. polyfile/kaitai/parsers/apple_single_double.py +180 -0
  36. polyfile/kaitai/parsers/asn1_der.py +235 -0
  37. polyfile/kaitai/parsers/au.py +138 -0
  38. polyfile/kaitai/parsers/avantes_roh60.py +112 -0
  39. polyfile/kaitai/parsers/avi.py +296 -0
  40. polyfile/kaitai/parsers/bcd.py +111 -0
  41. polyfile/kaitai/parsers/bitcoin_transaction.py +210 -0
  42. polyfile/kaitai/parsers/blender_blend.py +334 -0
  43. polyfile/kaitai/parsers/bmp.py +780 -0
  44. polyfile/kaitai/parsers/bson.py +411 -0
  45. polyfile/kaitai/parsers/btrfs_stream.py +318 -0
  46. polyfile/kaitai/parsers/bytes_with_io.py +27 -0
  47. polyfile/kaitai/parsers/chrome_pak.py +194 -0
  48. polyfile/kaitai/parsers/code_6502.py +456 -0
  49. polyfile/kaitai/parsers/compressed_resource.py +217 -0
  50. polyfile/kaitai/parsers/cpio_old_le.py +154 -0
  51. polyfile/kaitai/parsers/cramfs.py +344 -0
  52. polyfile/kaitai/parsers/creative_voice_file.py +342 -0
  53. polyfile/kaitai/parsers/dbf.py +274 -0
  54. polyfile/kaitai/parsers/dcmp_0.py +664 -0
  55. polyfile/kaitai/parsers/dcmp_1.py +422 -0
  56. polyfile/kaitai/parsers/dcmp_2.py +312 -0
  57. polyfile/kaitai/parsers/dcmp_variable_length_integer.py +66 -0
  58. polyfile/kaitai/parsers/dex.py +1086 -0
  59. polyfile/kaitai/parsers/dicom.py +4370 -0
  60. polyfile/kaitai/parsers/dime_message.py +201 -0
  61. polyfile/kaitai/parsers/dns_packet.py +569 -0
  62. polyfile/kaitai/parsers/doom_wad.py +654 -0
  63. polyfile/kaitai/parsers/dos_datetime.py +191 -0
  64. polyfile/kaitai/parsers/dos_mz.py +172 -0
  65. polyfile/kaitai/parsers/ds_store.py +513 -0
  66. polyfile/kaitai/parsers/dtb.py +310 -0
  67. polyfile/kaitai/parsers/dune_2_pak.py +126 -0
  68. polyfile/kaitai/parsers/edid.py +472 -0
  69. polyfile/kaitai/parsers/efivar_signature_list.py +331 -0
  70. polyfile/kaitai/parsers/elf.py +2482 -0
  71. polyfile/kaitai/parsers/ethernet_frame.py +114 -0
  72. polyfile/kaitai/parsers/exif.py +723 -0
  73. polyfile/kaitai/parsers/ext2.py +537 -0
  74. polyfile/kaitai/parsers/fallout2_dat.py +187 -0
  75. polyfile/kaitai/parsers/fallout_dat.py +156 -0
  76. polyfile/kaitai/parsers/fasttracker_xm_module.py +558 -0
  77. polyfile/kaitai/parsers/ftl_dat.py +90 -0
  78. polyfile/kaitai/parsers/genmidi_op2.py +161 -0
  79. polyfile/kaitai/parsers/gettext_mo.py +541 -0
  80. polyfile/kaitai/parsers/gif.py +492 -0
  81. polyfile/kaitai/parsers/gimp_brush.py +244 -0
  82. polyfile/kaitai/parsers/glibc_utmp.py +114 -0
  83. polyfile/kaitai/parsers/gltf_binary.py +132 -0
  84. polyfile/kaitai/parsers/google_protobuf.py +151 -0
  85. polyfile/kaitai/parsers/gpt_partition_table.py +175 -0
  86. polyfile/kaitai/parsers/gran_turismo_vol.py +140 -0
  87. polyfile/kaitai/parsers/grub2_font.py +337 -0
  88. polyfile/kaitai/parsers/gzip.py +232 -0
  89. polyfile/kaitai/parsers/hashcat_restore.py +60 -0
  90. polyfile/kaitai/parsers/hccap.py +111 -0
  91. polyfile/kaitai/parsers/hccapx.py +103 -0
  92. polyfile/kaitai/parsers/heaps_pak.py +177 -0
  93. polyfile/kaitai/parsers/heroes_of_might_and_magic_agg.py +116 -0
  94. polyfile/kaitai/parsers/heroes_of_might_and_magic_bmp.py +34 -0
  95. polyfile/kaitai/parsers/icmp_packet.py +136 -0
  96. polyfile/kaitai/parsers/ico.py +129 -0
  97. polyfile/kaitai/parsers/id3v1_1.py +220 -0
  98. polyfile/kaitai/parsers/id3v2_3.py +324 -0
  99. polyfile/kaitai/parsers/id3v2_4.py +423 -0
  100. polyfile/kaitai/parsers/ines.py +282 -0
  101. polyfile/kaitai/parsers/ipv4_packet.py +158 -0
  102. polyfile/kaitai/parsers/ipv6_packet.py +55 -0
  103. polyfile/kaitai/parsers/iso9660.py +544 -0
  104. polyfile/kaitai/parsers/java_class.py +1113 -0
  105. polyfile/kaitai/parsers/jpeg.py +361 -0
  106. polyfile/kaitai/parsers/luks.py +149 -0
  107. polyfile/kaitai/parsers/lzh.py +165 -0
  108. polyfile/kaitai/parsers/mac_os_resource_snd.py +493 -0
  109. polyfile/kaitai/parsers/mach_o.py +3033 -0
  110. polyfile/kaitai/parsers/mach_o_fat.py +92 -0
  111. polyfile/kaitai/parsers/magicavoxel_vox.py +391 -0
  112. polyfile/kaitai/parsers/manifest.json +1 -0
  113. polyfile/kaitai/parsers/mbr_partition_table.py +119 -0
  114. polyfile/kaitai/parsers/mcap.py +1015 -0
  115. polyfile/kaitai/parsers/microsoft_cfb.py +293 -0
  116. polyfile/kaitai/parsers/microsoft_network_monitor_v2.py +309 -0
  117. polyfile/kaitai/parsers/microsoft_pe.py +765 -0
  118. polyfile/kaitai/parsers/mifare_classic.py +706 -0
  119. polyfile/kaitai/parsers/minecraft_nbt.py +449 -0
  120. polyfile/kaitai/parsers/monomakh_sapr_chg.py +69 -0
  121. polyfile/kaitai/parsers/mozilla_mar.py +239 -0
  122. polyfile/kaitai/parsers/mp4.py +333 -0
  123. polyfile/kaitai/parsers/msgpack.py +467 -0
  124. polyfile/kaitai/parsers/nitf.py +1189 -0
  125. polyfile/kaitai/parsers/nt_mdt_pal.py +155 -0
  126. polyfile/kaitai/parsers/ogg.py +118 -0
  127. polyfile/kaitai/parsers/openpgp_message.py +993 -0
  128. polyfile/kaitai/parsers/packet_ppi.py +515 -0
  129. polyfile/kaitai/parsers/pcap.py +344 -0
  130. polyfile/kaitai/parsers/pcf_font.py +506 -0
  131. polyfile/kaitai/parsers/pcx.py +195 -0
  132. polyfile/kaitai/parsers/pcx_dcx.py +79 -0
  133. polyfile/kaitai/parsers/phar_without_stub.py +399 -0
  134. polyfile/kaitai/parsers/php_serialized_value.py +505 -0
  135. polyfile/kaitai/parsers/png.py +721 -0
  136. polyfile/kaitai/parsers/protocol_body.py +260 -0
  137. polyfile/kaitai/parsers/psx_tim.py +104 -0
  138. polyfile/kaitai/parsers/python_pickle.py +718 -0
  139. polyfile/kaitai/parsers/python_pyc_27.py +510 -0
  140. polyfile/kaitai/parsers/quake_mdl.py +441 -0
  141. polyfile/kaitai/parsers/quake_pak.py +112 -0
  142. polyfile/kaitai/parsers/quicktime_mov.py +634 -0
  143. polyfile/kaitai/parsers/rar.py +265 -0
  144. polyfile/kaitai/parsers/regf.py +569 -0
  145. polyfile/kaitai/parsers/renderware_binary_stream.py +877 -0
  146. polyfile/kaitai/parsers/resource_fork.py +611 -0
  147. polyfile/kaitai/parsers/respack.py +57 -0
  148. polyfile/kaitai/parsers/riff.py +409 -0
  149. polyfile/kaitai/parsers/rpm.py +964 -0
  150. polyfile/kaitai/parsers/rtcp_payload.py +579 -0
  151. polyfile/kaitai/parsers/rtp_packet.py +150 -0
  152. polyfile/kaitai/parsers/rtpdump.py +115 -0
  153. polyfile/kaitai/parsers/ruby_marshal.py +423 -0
  154. polyfile/kaitai/parsers/s3m.py +493 -0
  155. polyfile/kaitai/parsers/saints_row_2_vpp_pc.py +254 -0
  156. polyfile/kaitai/parsers/shapefile_index.py +174 -0
  157. polyfile/kaitai/parsers/shapefile_main.py +893 -0
  158. polyfile/kaitai/parsers/some_ip.py +209 -0
  159. polyfile/kaitai/parsers/some_ip_container.py +37 -0
  160. polyfile/kaitai/parsers/some_ip_sd.py +86 -0
  161. polyfile/kaitai/parsers/some_ip_sd_entries.py +160 -0
  162. polyfile/kaitai/parsers/some_ip_sd_options.py +374 -0
  163. polyfile/kaitai/parsers/specpr.py +404 -0
  164. polyfile/kaitai/parsers/sqlite3.py +472 -0
  165. polyfile/kaitai/parsers/ssh_public_key.py +252 -0
  166. polyfile/kaitai/parsers/standard_midi_file.py +390 -0
  167. polyfile/kaitai/parsers/stl.py +111 -0
  168. polyfile/kaitai/parsers/sudoers_ts.py +201 -0
  169. polyfile/kaitai/parsers/swf.py +406 -0
  170. polyfile/kaitai/parsers/systemd_journal.py +361 -0
  171. polyfile/kaitai/parsers/tcp_segment.py +57 -0
  172. polyfile/kaitai/parsers/tga.py +213 -0
  173. polyfile/kaitai/parsers/tls_client_hello.py +293 -0
  174. polyfile/kaitai/parsers/tr_dos_image.py +322 -0
  175. polyfile/kaitai/parsers/tsm.py +198 -0
  176. polyfile/kaitai/parsers/ttf.py +1847 -0
  177. polyfile/kaitai/parsers/udp_datagram.py +42 -0
  178. polyfile/kaitai/parsers/uefi_te.py +236 -0
  179. polyfile/kaitai/parsers/uimage.py +198 -0
  180. polyfile/kaitai/parsers/utf8_string.py +137 -0
  181. polyfile/kaitai/parsers/vfat.py +410 -0
  182. polyfile/kaitai/parsers/vlq_base128_be.py +104 -0
  183. polyfile/kaitai/parsers/vlq_base128_le.py +129 -0
  184. polyfile/kaitai/parsers/vmware_vmdk.py +167 -0
  185. polyfile/kaitai/parsers/vp8_ivf.py +112 -0
  186. polyfile/kaitai/parsers/warcraft_2_pud.py +423 -0
  187. polyfile/kaitai/parsers/wav.py +1014 -0
  188. polyfile/kaitai/parsers/websocket.py +167 -0
  189. polyfile/kaitai/parsers/windows_evt_log.py +304 -0
  190. polyfile/kaitai/parsers/windows_lnk_file.py +467 -0
  191. polyfile/kaitai/parsers/windows_minidump.py +575 -0
  192. polyfile/kaitai/parsers/windows_resource_file.py +243 -0
  193. polyfile/kaitai/parsers/windows_shell_items.py +190 -0
  194. polyfile/kaitai/parsers/windows_systemtime.py +52 -0
  195. polyfile/kaitai/parsers/wmf.py +502 -0
  196. polyfile/kaitai/parsers/xar.py +181 -0
  197. polyfile/kaitai/parsers/xwd.py +189 -0
  198. polyfile/kaitai/parsers/zip.py +685 -0
  199. polyfile/kaitai/parsers/zisofs.py +158 -0
  200. polyfile/kaitai/parsers/zx_spectrum_tap.py +184 -0
  201. polyfile/kaitaimatcher.py +113 -0
  202. polyfile/languagematcher.py +217 -0
  203. polyfile/logger.py +135 -0
  204. polyfile/magic.py +2983 -0
  205. polyfile/magic_defs/COPYING +29 -0
  206. polyfile/magic_defs/__init__.py +0 -0
  207. polyfile/magic_defs/acorn +102 -0
  208. polyfile/magic_defs/adi +13 -0
  209. polyfile/magic_defs/adventure +122 -0
  210. polyfile/magic_defs/aes +29 -0
  211. polyfile/magic_defs/algol68 +35 -0
  212. polyfile/magic_defs/allegro +9 -0
  213. polyfile/magic_defs/alliant +18 -0
  214. polyfile/magic_defs/alpha +32 -0
  215. polyfile/magic_defs/amanda +12 -0
  216. polyfile/magic_defs/amigaos +218 -0
  217. polyfile/magic_defs/android +259 -0
  218. polyfile/magic_defs/animation +1197 -0
  219. polyfile/magic_defs/aout +46 -0
  220. polyfile/magic_defs/apache +28 -0
  221. polyfile/magic_defs/apl +7 -0
  222. polyfile/magic_defs/apple +773 -0
  223. polyfile/magic_defs/application +7 -0
  224. polyfile/magic_defs/applix +13 -0
  225. polyfile/magic_defs/apt +52 -0
  226. polyfile/magic_defs/archive +2586 -0
  227. polyfile/magic_defs/aria +38 -0
  228. polyfile/magic_defs/arm +50 -0
  229. polyfile/magic_defs/asf +132 -0
  230. polyfile/magic_defs/assembler +18 -0
  231. polyfile/magic_defs/asterix +18 -0
  232. polyfile/magic_defs/att3b +41 -0
  233. polyfile/magic_defs/audio +1291 -0
  234. polyfile/magic_defs/avm +33 -0
  235. polyfile/magic_defs/basis +18 -0
  236. polyfile/magic_defs/beetle +7 -0
  237. polyfile/magic_defs/ber +65 -0
  238. polyfile/magic_defs/bflt +14 -0
  239. polyfile/magic_defs/bhl +10 -0
  240. polyfile/magic_defs/bioinformatics +178 -0
  241. polyfile/magic_defs/biosig +154 -0
  242. polyfile/magic_defs/blackberry +8 -0
  243. polyfile/magic_defs/blcr +25 -0
  244. polyfile/magic_defs/blender +50 -0
  245. polyfile/magic_defs/blit +24 -0
  246. polyfile/magic_defs/bm +10 -0
  247. polyfile/magic_defs/bout +11 -0
  248. polyfile/magic_defs/bsdi +33 -0
  249. polyfile/magic_defs/bsi +10 -0
  250. polyfile/magic_defs/btsnoop +13 -0
  251. polyfile/magic_defs/burp +7 -0
  252. polyfile/magic_defs/bytecode +41 -0
  253. polyfile/magic_defs/c-lang +110 -0
  254. polyfile/magic_defs/c64 +531 -0
  255. polyfile/magic_defs/cad +437 -0
  256. polyfile/magic_defs/cafebabe +107 -0
  257. polyfile/magic_defs/cbor +21 -0
  258. polyfile/magic_defs/ccf +14 -0
  259. polyfile/magic_defs/cddb +12 -0
  260. polyfile/magic_defs/chord +15 -0
  261. polyfile/magic_defs/cisco +12 -0
  262. polyfile/magic_defs/citrus +12 -0
  263. polyfile/magic_defs/clarion +27 -0
  264. polyfile/magic_defs/claris +48 -0
  265. polyfile/magic_defs/clipper +65 -0
  266. polyfile/magic_defs/clojure +30 -0
  267. polyfile/magic_defs/coff +98 -0
  268. polyfile/magic_defs/commands +201 -0
  269. polyfile/magic_defs/communications +22 -0
  270. polyfile/magic_defs/compress +461 -0
  271. polyfile/magic_defs/console +1213 -0
  272. polyfile/magic_defs/convex +69 -0
  273. polyfile/magic_defs/coverage +91 -0
  274. polyfile/magic_defs/cracklib +14 -0
  275. polyfile/magic_defs/crypto +31 -0
  276. polyfile/magic_defs/csv +8 -0
  277. polyfile/magic_defs/ctags +6 -0
  278. polyfile/magic_defs/ctf +23 -0
  279. polyfile/magic_defs/cubemap +8 -0
  280. polyfile/magic_defs/cups +56 -0
  281. polyfile/magic_defs/dact +11 -0
  282. polyfile/magic_defs/database +886 -0
  283. polyfile/magic_defs/dataone +47 -0
  284. polyfile/magic_defs/dbpf +15 -0
  285. polyfile/magic_defs/der +146 -0
  286. polyfile/magic_defs/diamond +12 -0
  287. polyfile/magic_defs/dif +33 -0
  288. polyfile/magic_defs/diff +41 -0
  289. polyfile/magic_defs/digital +59 -0
  290. polyfile/magic_defs/dolby +69 -0
  291. polyfile/magic_defs/dsf +25 -0
  292. polyfile/magic_defs/dump +96 -0
  293. polyfile/magic_defs/dwarfs +45 -0
  294. polyfile/magic_defs/dyadic +61 -0
  295. polyfile/magic_defs/ebml +8 -0
  296. polyfile/magic_defs/edid +11 -0
  297. polyfile/magic_defs/editors +43 -0
  298. polyfile/magic_defs/efi +15 -0
  299. polyfile/magic_defs/elf +379 -0
  300. polyfile/magic_defs/encore +22 -0
  301. polyfile/magic_defs/epoc +62 -0
  302. polyfile/magic_defs/erlang +21 -0
  303. polyfile/magic_defs/espressif +57 -0
  304. polyfile/magic_defs/esri +28 -0
  305. polyfile/magic_defs/etf +33 -0
  306. polyfile/magic_defs/fcs +9 -0
  307. polyfile/magic_defs/filesystems +2694 -0
  308. polyfile/magic_defs/finger +16 -0
  309. polyfile/magic_defs/firmware +133 -0
  310. polyfile/magic_defs/flash +62 -0
  311. polyfile/magic_defs/flif +36 -0
  312. polyfile/magic_defs/fonts +449 -0
  313. polyfile/magic_defs/forth +82 -0
  314. polyfile/magic_defs/fortran +9 -0
  315. polyfile/magic_defs/frame +62 -0
  316. polyfile/magic_defs/freebsd +164 -0
  317. polyfile/magic_defs/fsav +128 -0
  318. polyfile/magic_defs/fusecompress +12 -0
  319. polyfile/magic_defs/games +696 -0
  320. polyfile/magic_defs/gcc +17 -0
  321. polyfile/magic_defs/gconv +10 -0
  322. polyfile/magic_defs/gentoo +85 -0
  323. polyfile/magic_defs/geo +166 -0
  324. polyfile/magic_defs/geos +20 -0
  325. polyfile/magic_defs/gimp +77 -0
  326. polyfile/magic_defs/git +13 -0
  327. polyfile/magic_defs/glibc +21 -0
  328. polyfile/magic_defs/gnome +59 -0
  329. polyfile/magic_defs/gnu +173 -0
  330. polyfile/magic_defs/gnumeric +8 -0
  331. polyfile/magic_defs/gpt +240 -0
  332. polyfile/magic_defs/gpu +28 -0
  333. polyfile/magic_defs/grace +21 -0
  334. polyfile/magic_defs/graphviz +12 -0
  335. polyfile/magic_defs/gringotts +48 -0
  336. polyfile/magic_defs/guile +13 -0
  337. polyfile/magic_defs/hardware +12 -0
  338. polyfile/magic_defs/hitachi-sh +30 -0
  339. polyfile/magic_defs/hp +433 -0
  340. polyfile/magic_defs/human68k +26 -0
  341. polyfile/magic_defs/ibm370 +52 -0
  342. polyfile/magic_defs/ibm6000 +35 -0
  343. polyfile/magic_defs/icc +214 -0
  344. polyfile/magic_defs/iff +80 -0
  345. polyfile/magic_defs/images +4210 -0
  346. polyfile/magic_defs/inform +9 -0
  347. polyfile/magic_defs/intel +310 -0
  348. polyfile/magic_defs/interleaf +9 -0
  349. polyfile/magic_defs/island +10 -0
  350. polyfile/magic_defs/ispell +63 -0
  351. polyfile/magic_defs/isz +15 -0
  352. polyfile/magic_defs/java +52 -0
  353. polyfile/magic_defs/javascript +171 -0
  354. polyfile/magic_defs/jpeg +252 -0
  355. polyfile/magic_defs/json +8 -0
  356. polyfile/magic_defs/karma +9 -0
  357. polyfile/magic_defs/kde +11 -0
  358. polyfile/magic_defs/keepass +20 -0
  359. polyfile/magic_defs/kerberos +45 -0
  360. polyfile/magic_defs/kicad +85 -0
  361. polyfile/magic_defs/kml +34 -0
  362. polyfile/magic_defs/lammps +64 -0
  363. polyfile/magic_defs/lecter +6 -0
  364. polyfile/magic_defs/lex +12 -0
  365. polyfile/magic_defs/lif +50 -0
  366. polyfile/magic_defs/linux +557 -0
  367. polyfile/magic_defs/lisp +78 -0
  368. polyfile/magic_defs/llvm +22 -0
  369. polyfile/magic_defs/locoscript +12 -0
  370. polyfile/magic_defs/lua +31 -0
  371. polyfile/magic_defs/luks +126 -0
  372. polyfile/magic_defs/m4 +11 -0
  373. polyfile/magic_defs/mach +303 -0
  374. polyfile/magic_defs/macintosh +505 -0
  375. polyfile/magic_defs/macos +7 -0
  376. polyfile/magic_defs/magic +10 -0
  377. polyfile/magic_defs/magic.mgc +0 -0
  378. polyfile/magic_defs/mail.news +132 -0
  379. polyfile/magic_defs/make +21 -0
  380. polyfile/magic_defs/map +413 -0
  381. polyfile/magic_defs/maple +109 -0
  382. polyfile/magic_defs/marc21 +30 -0
  383. polyfile/magic_defs/mathcad +8 -0
  384. polyfile/magic_defs/mathematica +188 -0
  385. polyfile/magic_defs/matroska +17 -0
  386. polyfile/magic_defs/mcrypt +52 -0
  387. polyfile/magic_defs/measure +44 -0
  388. polyfile/magic_defs/mercurial +13 -0
  389. polyfile/magic_defs/metastore +8 -0
  390. polyfile/magic_defs/meteorological +53 -0
  391. polyfile/magic_defs/microfocus +21 -0
  392. polyfile/magic_defs/mime +9 -0
  393. polyfile/magic_defs/mips +120 -0
  394. polyfile/magic_defs/mirage +8 -0
  395. polyfile/magic_defs/misctools +140 -0
  396. polyfile/magic_defs/mkid +11 -0
  397. polyfile/magic_defs/mlssa +8 -0
  398. polyfile/magic_defs/mmdf +6 -0
  399. polyfile/magic_defs/modem +92 -0
  400. polyfile/magic_defs/modulefile +9 -0
  401. polyfile/magic_defs/motorola +71 -0
  402. polyfile/magic_defs/mozilla +37 -0
  403. polyfile/magic_defs/msdos +2304 -0
  404. polyfile/magic_defs/msooxml +68 -0
  405. polyfile/magic_defs/msvc +222 -0
  406. polyfile/magic_defs/msx +309 -0
  407. polyfile/magic_defs/mup +24 -0
  408. polyfile/magic_defs/music +17 -0
  409. polyfile/magic_defs/nasa +7 -0
  410. polyfile/magic_defs/natinst +24 -0
  411. polyfile/magic_defs/ncr +49 -0
  412. polyfile/magic_defs/neko +12 -0
  413. polyfile/magic_defs/netbsd +251 -0
  414. polyfile/magic_defs/netscape +26 -0
  415. polyfile/magic_defs/netware +11 -0
  416. polyfile/magic_defs/news +13 -0
  417. polyfile/magic_defs/nifty +202 -0
  418. polyfile/magic_defs/nim-lang +29 -0
  419. polyfile/magic_defs/nitpicker +14 -0
  420. polyfile/magic_defs/numpy +9 -0
  421. polyfile/magic_defs/oasis +12 -0
  422. polyfile/magic_defs/ocaml +14 -0
  423. polyfile/magic_defs/octave +6 -0
  424. polyfile/magic_defs/ole2compounddocs +760 -0
  425. polyfile/magic_defs/olf +98 -0
  426. polyfile/magic_defs/openfst +17 -0
  427. polyfile/magic_defs/opentimestamps +16 -0
  428. polyfile/magic_defs/oric +16 -0
  429. polyfile/magic_defs/os2 +186 -0
  430. polyfile/magic_defs/os400 +39 -0
  431. polyfile/magic_defs/os9 +80 -0
  432. polyfile/magic_defs/osf1 +10 -0
  433. polyfile/magic_defs/palm +156 -0
  434. polyfile/magic_defs/parix +13 -0
  435. polyfile/magic_defs/parrot +22 -0
  436. polyfile/magic_defs/pascal +39 -0
  437. polyfile/magic_defs/pbf +11 -0
  438. polyfile/magic_defs/pbm +8 -0
  439. polyfile/magic_defs/pc88 +24 -0
  440. polyfile/magic_defs/pc98 +77 -0
  441. polyfile/magic_defs/pci_ids +116 -0
  442. polyfile/magic_defs/pcjr +8 -0
  443. polyfile/magic_defs/pdf +51 -0
  444. polyfile/magic_defs/pdp +42 -0
  445. polyfile/magic_defs/perl +100 -0
  446. polyfile/magic_defs/pgf +52 -0
  447. polyfile/magic_defs/pgp +581 -0
  448. polyfile/magic_defs/pgp-binary-keys +388 -0
  449. polyfile/magic_defs/pkgadd +7 -0
  450. polyfile/magic_defs/plan9 +25 -0
  451. polyfile/magic_defs/playdate +57 -0
  452. polyfile/magic_defs/plus5 +18 -0
  453. polyfile/magic_defs/pmem +46 -0
  454. polyfile/magic_defs/polyfile_zip +5 -0
  455. polyfile/magic_defs/polyml +23 -0
  456. polyfile/magic_defs/printer +269 -0
  457. polyfile/magic_defs/project +10 -0
  458. polyfile/magic_defs/psdbms +14 -0
  459. polyfile/magic_defs/psl +14 -0
  460. polyfile/magic_defs/pulsar +13 -0
  461. polyfile/magic_defs/puzzle +17 -0
  462. polyfile/magic_defs/pwsafe +14 -0
  463. polyfile/magic_defs/pyramid +12 -0
  464. polyfile/magic_defs/python +305 -0
  465. polyfile/magic_defs/qt +30 -0
  466. polyfile/magic_defs/revision +66 -0
  467. polyfile/magic_defs/riff +840 -0
  468. polyfile/magic_defs/rinex +44 -0
  469. polyfile/magic_defs/ringdove +45 -0
  470. polyfile/magic_defs/rpi +52 -0
  471. polyfile/magic_defs/rpm +45 -0
  472. polyfile/magic_defs/rpmsg +7 -0
  473. polyfile/magic_defs/rst +11 -0
  474. polyfile/magic_defs/rtf +94 -0
  475. polyfile/magic_defs/ruby +55 -0
  476. polyfile/magic_defs/rust +21 -0
  477. polyfile/magic_defs/sc +7 -0
  478. polyfile/magic_defs/sccs +24 -0
  479. polyfile/magic_defs/scientific +144 -0
  480. polyfile/magic_defs/securitycerts +6 -0
  481. polyfile/magic_defs/selinux +24 -0
  482. polyfile/magic_defs/sendmail +37 -0
  483. polyfile/magic_defs/sequent +42 -0
  484. polyfile/magic_defs/sereal +35 -0
  485. polyfile/magic_defs/sgi +144 -0
  486. polyfile/magic_defs/sgml +161 -0
  487. polyfile/magic_defs/sharc +23 -0
  488. polyfile/magic_defs/sinclair +40 -0
  489. polyfile/magic_defs/sisu +18 -0
  490. polyfile/magic_defs/sketch +6 -0
  491. polyfile/magic_defs/smalltalk +25 -0
  492. polyfile/magic_defs/smile +34 -0
  493. polyfile/magic_defs/sniffer +482 -0
  494. polyfile/magic_defs/softquad +40 -0
  495. polyfile/magic_defs/sosi +40 -0
  496. polyfile/magic_defs/spec +21 -0
  497. polyfile/magic_defs/spectrum +184 -0
  498. polyfile/magic_defs/sql +288 -0
  499. polyfile/magic_defs/ssh +39 -0
  500. polyfile/magic_defs/ssl +20 -0
  501. polyfile/magic_defs/statistics +45 -0
  502. polyfile/magic_defs/subtitle +38 -0
  503. polyfile/magic_defs/sun +141 -0
  504. polyfile/magic_defs/svf +5 -0
  505. polyfile/magic_defs/sylk +36 -0
  506. polyfile/magic_defs/symbos +42 -0
  507. polyfile/magic_defs/sysex +429 -0
  508. polyfile/magic_defs/tcl +29 -0
  509. polyfile/magic_defs/teapot +6 -0
  510. polyfile/magic_defs/terminfo +63 -0
  511. polyfile/magic_defs/tex +141 -0
  512. polyfile/magic_defs/tgif +7 -0
  513. polyfile/magic_defs/ti-8x +239 -0
  514. polyfile/magic_defs/timezone +42 -0
  515. polyfile/magic_defs/tplink +95 -0
  516. polyfile/magic_defs/troff +38 -0
  517. polyfile/magic_defs/tuxedo +8 -0
  518. polyfile/magic_defs/typeset +8 -0
  519. polyfile/magic_defs/uf2 +72 -0
  520. polyfile/magic_defs/unicode +15 -0
  521. polyfile/magic_defs/unisig +12 -0
  522. polyfile/magic_defs/unknown +34 -0
  523. polyfile/magic_defs/usd +21 -0
  524. polyfile/magic_defs/uterus +16 -0
  525. polyfile/magic_defs/uuencode +28 -0
  526. polyfile/magic_defs/vacuum-cleaner +54 -0
  527. polyfile/magic_defs/varied.out +46 -0
  528. polyfile/magic_defs/varied.script +21 -0
  529. polyfile/magic_defs/vax +32 -0
  530. polyfile/magic_defs/vicar +17 -0
  531. polyfile/magic_defs/virtual +307 -0
  532. polyfile/magic_defs/virtutech +12 -0
  533. polyfile/magic_defs/visx +32 -0
  534. polyfile/magic_defs/vms +30 -0
  535. polyfile/magic_defs/vmware +6 -0
  536. polyfile/magic_defs/vorbis +155 -0
  537. polyfile/magic_defs/vxl +14 -0
  538. polyfile/magic_defs/warc +16 -0
  539. polyfile/magic_defs/weak +16 -0
  540. polyfile/magic_defs/web +18 -0
  541. polyfile/magic_defs/webassembly +17 -0
  542. polyfile/magic_defs/windows +1811 -0
  543. polyfile/magic_defs/wireless +7 -0
  544. polyfile/magic_defs/wordprocessors +630 -0
  545. polyfile/magic_defs/wsdl +23 -0
  546. polyfile/magic_defs/x68000 +25 -0
  547. polyfile/magic_defs/xdelta +13 -0
  548. polyfile/magic_defs/xenix +106 -0
  549. polyfile/magic_defs/xilinx +58 -0
  550. polyfile/magic_defs/xo65 +37 -0
  551. polyfile/magic_defs/xwindows +43 -0
  552. polyfile/magic_defs/yara +17 -0
  553. polyfile/magic_defs/zfs +96 -0
  554. polyfile/magic_defs/zilog +12 -0
  555. polyfile/magic_defs/zip +126 -0
  556. polyfile/magic_defs/zyxel +17 -0
  557. polyfile/nes.py +144 -0
  558. polyfile/nitf.py +15 -0
  559. polyfile/pdf.py +1264 -0
  560. polyfile/pickles.py +45 -0
  561. polyfile/polyfile.py +409 -0
  562. polyfile/profiling.py +115 -0
  563. polyfile/repl.py +624 -0
  564. polyfile/search.py +310 -0
  565. polyfile/serialization.py +323 -0
  566. polyfile/structmatcher.py +46 -0
  567. polyfile/structs.py +281 -0
  568. polyfile/templates/download.js +162 -0
  569. polyfile/templates/hexdump.css +268 -0
  570. polyfile/templates/hexdump.js +756 -0
  571. polyfile/templates/jquery-3.4.1.min.js +2 -0
  572. polyfile/templates/template.html +119 -0
  573. polyfile/wildcards.py +62 -0
  574. polyfile/zipmatcher.py +183 -0
  575. polyfile_weave-0.5.5.dist-info/METADATA +173 -0
  576. polyfile_weave-0.5.5.dist-info/RECORD +585 -0
  577. polyfile_weave-0.5.5.dist-info/WHEEL +5 -0
  578. polyfile_weave-0.5.5.dist-info/entry_points.txt +2 -0
  579. polyfile_weave-0.5.5.dist-info/licenses/LICENSE +202 -0
  580. polyfile_weave-0.5.5.dist-info/top_level.txt +2 -0
  581. polymerge/__init__.py +1 -0
  582. polymerge/__main__.py +296 -0
  583. polymerge/cfg.py +127 -0
  584. polymerge/polymerge.py +227 -0
  585. polymerge/polytracker.py +190 -0
@@ -0,0 +1,449 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ from enum import Enum
7
+ import collections
8
+
9
+
10
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
11
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
12
+
13
+ class MinecraftNbt(KaitaiStruct):
14
+ """A structured binary format native to Minecraft for saving game data and transferring
15
+ it over the network (in multiplayer), such as player data
16
+ ([`<player>.dat`](https://minecraft.fandom.com/wiki/Player.dat_format); contains
17
+ e.g. player's inventory and location), saved worlds
18
+ ([`level.dat`](
19
+ https://minecraft.fandom.com/wiki/Java_Edition_level_format#level.dat_format
20
+ ) and [Chunk format](https://minecraft.fandom.com/wiki/Chunk_format#NBT_structure)),
21
+ list of saved multiplayer servers
22
+ ([`servers.dat`](https://minecraft.fandom.com/wiki/Servers.dat_format)) and so on -
23
+ see <https://minecraft.fandom.com/wiki/NBT_format#Uses>.
24
+
25
+ The entire file should be _gzip_-compressed (in accordance with the original
26
+ specification [NBT.txt](
27
+ https://web.archive.org/web/20110723210920/https://www.minecraft.net/docs/NBT.txt
28
+ ) by Notch), but can also be compressed with _zlib_ or uncompressed.
29
+
30
+ This spec can only handle uncompressed NBT data, so be sure to first detect
31
+ what type of data you are dealing with. You can use the Unix `file` command
32
+ to do this (`file-5.20` or later is required; older versions do not recognize
33
+ _zlib_-compressed data and return `application/octet-stream` instead):
34
+
35
+ ```shell
36
+ file --brief --mime-type input-unknown.nbt
37
+ ```
38
+
39
+ If it says:
40
+
41
+ * `application/x-gzip` or `application/gzip` (since `file-5.37`), you can decompress it by
42
+ * `gunzip -c input-gzip.nbt > output.nbt` or
43
+ * `python3 -c "import sys, gzip; sys.stdout.buffer.write(
44
+ gzip.decompress(sys.stdin.buffer.read()) )" < input-gzip.nbt > output.nbt`
45
+ * `application/zlib`, you can use
46
+ * `openssl zlib -d -in input-zlib.nbt -out output.nbt` (does not work on most systems)
47
+ * `python3 -c "import sys, zlib; sys.stdout.buffer.write(
48
+ zlib.decompress(sys.stdin.buffer.read()) )" < input-zlib.nbt > output.nbt`
49
+ * something else (especially `image/x-pcx` and `application/octet-stream`),
50
+ it is most likely already uncompressed.
51
+
52
+ The file `output.nbt` generated by one of the above commands can already be
53
+ processed with this Kaitai Struct specification.
54
+
55
+ This spec **only** implements the Java edition format. There is also
56
+ a [Bedrock edition](https://wiki.vg/NBT#Bedrock_edition) NBT format,
57
+ which uses little-endian encoding and has a few other differences, but it isn't
58
+ as popular as the Java edition format.
59
+
60
+ **Implementation note:** strings in `TAG_String` are incorrectly decoded with
61
+ standard UTF-8, while they are encoded in [**Modified UTF-8**](
62
+ https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html#modified-utf-8
63
+ ) (MUTF-8). That's because MUTF-8 is not supported natively by most target
64
+ languages, and thus one must use external libraries to achieve a fully-compliant
65
+ decoder. But decoding in standard UTF-8 is still better than nothing, and
66
+ it usually works fine.
67
+
68
+ All Unicode code points with incompatible representations in MUTF-8 and UTF-8 are
69
+ U+0000 (_NUL_), U+D800-U+DFFF (_High_ and _Low Surrogates_) and U+10000-U+10FFFF
70
+ (all _Supplementary_ Planes; includes e.g. emoticons, pictograms).
71
+ A _MUTF-8_-encoded string containing these code points cannot be successfully
72
+ decoded as UTF-8. The behavior in this case depends on the target language -
73
+ usually an exception is thrown, or the bytes that are not valid UTF-8
74
+ are replaced or ignored.
75
+
76
+ **Sample files:**
77
+
78
+ * <https://wiki.vg/NBT#Download>
79
+ * <https://github.com/twoolie/NBT/blob/f9e892e/tests/world_test/data/scoreboard.dat>
80
+ * <https://github.com/chmod222/cNBT/tree/3f74b69/testdata>
81
+ * <https://github.com/PistonDevelopers/hematite_nbt/tree/0b85f89/tests>
82
+
83
+ .. seealso::
84
+ Source - https://wiki.vg/NBT
85
+
86
+
87
+ .. seealso::
88
+ Source - https://web.archive.org/web/20110723210920/https://www.minecraft.net/docs/NBT.txt
89
+
90
+
91
+ .. seealso::
92
+ Source - https://minecraft.fandom.com/wiki/NBT_format
93
+ """
94
+
95
+ class Tag(Enum):
96
+ end = 0
97
+ byte = 1
98
+ short = 2
99
+ int = 3
100
+ long = 4
101
+ float = 5
102
+ double = 6
103
+ byte_array = 7
104
+ string = 8
105
+ list = 9
106
+ compound = 10
107
+ int_array = 11
108
+ long_array = 12
109
+ SEQ_FIELDS = ["root_check", "root"]
110
+ def __init__(self, _io, _parent=None, _root=None):
111
+ self._io = _io
112
+ self._parent = _parent
113
+ self._root = _root if _root else self
114
+ self._debug = collections.defaultdict(dict)
115
+
116
+ def _read(self):
117
+ if ((self.root_type == MinecraftNbt.Tag.end) and (False)) :
118
+ self._debug['root_check']['start'] = self._io.pos()
119
+ self.root_check = self._io.read_bytes(0)
120
+ self._debug['root_check']['end'] = self._io.pos()
121
+
122
+ self._debug['root']['start'] = self._io.pos()
123
+ self.root = MinecraftNbt.NamedTag(self._io, self, self._root)
124
+ self.root._read()
125
+ self._debug['root']['end'] = self._io.pos()
126
+
127
+ class TagLongArray(KaitaiStruct):
128
+ SEQ_FIELDS = ["num_tags", "tags"]
129
+ def __init__(self, _io, _parent=None, _root=None):
130
+ self._io = _io
131
+ self._parent = _parent
132
+ self._root = _root if _root else self
133
+ self._debug = collections.defaultdict(dict)
134
+
135
+ def _read(self):
136
+ self._debug['num_tags']['start'] = self._io.pos()
137
+ self.num_tags = self._io.read_s4be()
138
+ self._debug['num_tags']['end'] = self._io.pos()
139
+ self._debug['tags']['start'] = self._io.pos()
140
+ self.tags = [None] * (self.num_tags)
141
+ for i in range(self.num_tags):
142
+ if not 'arr' in self._debug['tags']:
143
+ self._debug['tags']['arr'] = []
144
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
145
+ self.tags[i] = self._io.read_s8be()
146
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
147
+
148
+ self._debug['tags']['end'] = self._io.pos()
149
+
150
+ @property
151
+ def tags_type(self):
152
+ if hasattr(self, '_m_tags_type'):
153
+ return self._m_tags_type if hasattr(self, '_m_tags_type') else None
154
+
155
+ self._m_tags_type = MinecraftNbt.Tag.long
156
+ return self._m_tags_type if hasattr(self, '_m_tags_type') else None
157
+
158
+
159
+ class TagByteArray(KaitaiStruct):
160
+ SEQ_FIELDS = ["len_data", "data"]
161
+ def __init__(self, _io, _parent=None, _root=None):
162
+ self._io = _io
163
+ self._parent = _parent
164
+ self._root = _root if _root else self
165
+ self._debug = collections.defaultdict(dict)
166
+
167
+ def _read(self):
168
+ self._debug['len_data']['start'] = self._io.pos()
169
+ self.len_data = self._io.read_s4be()
170
+ self._debug['len_data']['end'] = self._io.pos()
171
+ self._debug['data']['start'] = self._io.pos()
172
+ self.data = self._io.read_bytes(self.len_data)
173
+ self._debug['data']['end'] = self._io.pos()
174
+
175
+
176
+ class TagIntArray(KaitaiStruct):
177
+ SEQ_FIELDS = ["num_tags", "tags"]
178
+ def __init__(self, _io, _parent=None, _root=None):
179
+ self._io = _io
180
+ self._parent = _parent
181
+ self._root = _root if _root else self
182
+ self._debug = collections.defaultdict(dict)
183
+
184
+ def _read(self):
185
+ self._debug['num_tags']['start'] = self._io.pos()
186
+ self.num_tags = self._io.read_s4be()
187
+ self._debug['num_tags']['end'] = self._io.pos()
188
+ self._debug['tags']['start'] = self._io.pos()
189
+ self.tags = [None] * (self.num_tags)
190
+ for i in range(self.num_tags):
191
+ if not 'arr' in self._debug['tags']:
192
+ self._debug['tags']['arr'] = []
193
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
194
+ self.tags[i] = self._io.read_s4be()
195
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
196
+
197
+ self._debug['tags']['end'] = self._io.pos()
198
+
199
+ @property
200
+ def tags_type(self):
201
+ if hasattr(self, '_m_tags_type'):
202
+ return self._m_tags_type if hasattr(self, '_m_tags_type') else None
203
+
204
+ self._m_tags_type = MinecraftNbt.Tag.int
205
+ return self._m_tags_type if hasattr(self, '_m_tags_type') else None
206
+
207
+
208
+ class TagList(KaitaiStruct):
209
+ SEQ_FIELDS = ["tags_type", "num_tags", "tags"]
210
+ def __init__(self, _io, _parent=None, _root=None):
211
+ self._io = _io
212
+ self._parent = _parent
213
+ self._root = _root if _root else self
214
+ self._debug = collections.defaultdict(dict)
215
+
216
+ def _read(self):
217
+ self._debug['tags_type']['start'] = self._io.pos()
218
+ self.tags_type = KaitaiStream.resolve_enum(MinecraftNbt.Tag, self._io.read_u1())
219
+ self._debug['tags_type']['end'] = self._io.pos()
220
+ self._debug['num_tags']['start'] = self._io.pos()
221
+ self.num_tags = self._io.read_s4be()
222
+ self._debug['num_tags']['end'] = self._io.pos()
223
+ self._debug['tags']['start'] = self._io.pos()
224
+ self.tags = [None] * (self.num_tags)
225
+ for i in range(self.num_tags):
226
+ if not 'arr' in self._debug['tags']:
227
+ self._debug['tags']['arr'] = []
228
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
229
+ _on = self.tags_type
230
+ if _on == MinecraftNbt.Tag.long_array:
231
+ if not 'arr' in self._debug['tags']:
232
+ self._debug['tags']['arr'] = []
233
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
234
+ _t_tags = MinecraftNbt.TagLongArray(self._io, self, self._root)
235
+ _t_tags._read()
236
+ self.tags[i] = _t_tags
237
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
238
+ elif _on == MinecraftNbt.Tag.compound:
239
+ if not 'arr' in self._debug['tags']:
240
+ self._debug['tags']['arr'] = []
241
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
242
+ _t_tags = MinecraftNbt.TagCompound(self._io, self, self._root)
243
+ _t_tags._read()
244
+ self.tags[i] = _t_tags
245
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
246
+ elif _on == MinecraftNbt.Tag.double:
247
+ if not 'arr' in self._debug['tags']:
248
+ self._debug['tags']['arr'] = []
249
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
250
+ self.tags[i] = self._io.read_f8be()
251
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
252
+ elif _on == MinecraftNbt.Tag.list:
253
+ if not 'arr' in self._debug['tags']:
254
+ self._debug['tags']['arr'] = []
255
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
256
+ _t_tags = MinecraftNbt.TagList(self._io, self, self._root)
257
+ _t_tags._read()
258
+ self.tags[i] = _t_tags
259
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
260
+ elif _on == MinecraftNbt.Tag.float:
261
+ if not 'arr' in self._debug['tags']:
262
+ self._debug['tags']['arr'] = []
263
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
264
+ self.tags[i] = self._io.read_f4be()
265
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
266
+ elif _on == MinecraftNbt.Tag.short:
267
+ if not 'arr' in self._debug['tags']:
268
+ self._debug['tags']['arr'] = []
269
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
270
+ self.tags[i] = self._io.read_s2be()
271
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
272
+ elif _on == MinecraftNbt.Tag.int:
273
+ if not 'arr' in self._debug['tags']:
274
+ self._debug['tags']['arr'] = []
275
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
276
+ self.tags[i] = self._io.read_s4be()
277
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
278
+ elif _on == MinecraftNbt.Tag.byte_array:
279
+ if not 'arr' in self._debug['tags']:
280
+ self._debug['tags']['arr'] = []
281
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
282
+ _t_tags = MinecraftNbt.TagByteArray(self._io, self, self._root)
283
+ _t_tags._read()
284
+ self.tags[i] = _t_tags
285
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
286
+ elif _on == MinecraftNbt.Tag.byte:
287
+ if not 'arr' in self._debug['tags']:
288
+ self._debug['tags']['arr'] = []
289
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
290
+ self.tags[i] = self._io.read_s1()
291
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
292
+ elif _on == MinecraftNbt.Tag.int_array:
293
+ if not 'arr' in self._debug['tags']:
294
+ self._debug['tags']['arr'] = []
295
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
296
+ _t_tags = MinecraftNbt.TagIntArray(self._io, self, self._root)
297
+ _t_tags._read()
298
+ self.tags[i] = _t_tags
299
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
300
+ elif _on == MinecraftNbt.Tag.string:
301
+ if not 'arr' in self._debug['tags']:
302
+ self._debug['tags']['arr'] = []
303
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
304
+ _t_tags = MinecraftNbt.TagString(self._io, self, self._root)
305
+ _t_tags._read()
306
+ self.tags[i] = _t_tags
307
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
308
+ elif _on == MinecraftNbt.Tag.long:
309
+ if not 'arr' in self._debug['tags']:
310
+ self._debug['tags']['arr'] = []
311
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
312
+ self.tags[i] = self._io.read_s8be()
313
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
314
+ self._debug['tags']['arr'][i]['end'] = self._io.pos()
315
+
316
+ self._debug['tags']['end'] = self._io.pos()
317
+
318
+
319
+ class TagString(KaitaiStruct):
320
+ SEQ_FIELDS = ["len_data", "data"]
321
+ def __init__(self, _io, _parent=None, _root=None):
322
+ self._io = _io
323
+ self._parent = _parent
324
+ self._root = _root if _root else self
325
+ self._debug = collections.defaultdict(dict)
326
+
327
+ def _read(self):
328
+ self._debug['len_data']['start'] = self._io.pos()
329
+ self.len_data = self._io.read_u2be()
330
+ self._debug['len_data']['end'] = self._io.pos()
331
+ self._debug['data']['start'] = self._io.pos()
332
+ self.data = (self._io.read_bytes(self.len_data)).decode(u"utf-8")
333
+ self._debug['data']['end'] = self._io.pos()
334
+
335
+
336
+ class TagCompound(KaitaiStruct):
337
+ SEQ_FIELDS = ["tags"]
338
+ def __init__(self, _io, _parent=None, _root=None):
339
+ self._io = _io
340
+ self._parent = _parent
341
+ self._root = _root if _root else self
342
+ self._debug = collections.defaultdict(dict)
343
+
344
+ def _read(self):
345
+ self._debug['tags']['start'] = self._io.pos()
346
+ self.tags = []
347
+ i = 0
348
+ while True:
349
+ if not 'arr' in self._debug['tags']:
350
+ self._debug['tags']['arr'] = []
351
+ self._debug['tags']['arr'].append({'start': self._io.pos()})
352
+ _t_tags = MinecraftNbt.NamedTag(self._io, self, self._root)
353
+ _t_tags._read()
354
+ _ = _t_tags
355
+ self.tags.append(_)
356
+ self._debug['tags']['arr'][len(self.tags) - 1]['end'] = self._io.pos()
357
+ if _.is_tag_end:
358
+ break
359
+ i += 1
360
+ self._debug['tags']['end'] = self._io.pos()
361
+
362
+ @property
363
+ def dump_num_tags(self):
364
+ if hasattr(self, '_m_dump_num_tags'):
365
+ return self._m_dump_num_tags if hasattr(self, '_m_dump_num_tags') else None
366
+
367
+ self._m_dump_num_tags = (len(self.tags) - (1 if ((len(self.tags) >= 1) and (self.tags[-1].is_tag_end)) else 0))
368
+ return self._m_dump_num_tags if hasattr(self, '_m_dump_num_tags') else None
369
+
370
+
371
+ class NamedTag(KaitaiStruct):
372
+ SEQ_FIELDS = ["type", "name", "payload"]
373
+ def __init__(self, _io, _parent=None, _root=None):
374
+ self._io = _io
375
+ self._parent = _parent
376
+ self._root = _root if _root else self
377
+ self._debug = collections.defaultdict(dict)
378
+
379
+ def _read(self):
380
+ self._debug['type']['start'] = self._io.pos()
381
+ self.type = KaitaiStream.resolve_enum(MinecraftNbt.Tag, self._io.read_u1())
382
+ self._debug['type']['end'] = self._io.pos()
383
+ if not (self.is_tag_end):
384
+ self._debug['name']['start'] = self._io.pos()
385
+ self.name = MinecraftNbt.TagString(self._io, self, self._root)
386
+ self.name._read()
387
+ self._debug['name']['end'] = self._io.pos()
388
+
389
+ if not (self.is_tag_end):
390
+ self._debug['payload']['start'] = self._io.pos()
391
+ _on = self.type
392
+ if _on == MinecraftNbt.Tag.long_array:
393
+ self.payload = MinecraftNbt.TagLongArray(self._io, self, self._root)
394
+ self.payload._read()
395
+ elif _on == MinecraftNbt.Tag.compound:
396
+ self.payload = MinecraftNbt.TagCompound(self._io, self, self._root)
397
+ self.payload._read()
398
+ elif _on == MinecraftNbt.Tag.double:
399
+ self.payload = self._io.read_f8be()
400
+ elif _on == MinecraftNbt.Tag.list:
401
+ self.payload = MinecraftNbt.TagList(self._io, self, self._root)
402
+ self.payload._read()
403
+ elif _on == MinecraftNbt.Tag.float:
404
+ self.payload = self._io.read_f4be()
405
+ elif _on == MinecraftNbt.Tag.short:
406
+ self.payload = self._io.read_s2be()
407
+ elif _on == MinecraftNbt.Tag.int:
408
+ self.payload = self._io.read_s4be()
409
+ elif _on == MinecraftNbt.Tag.byte_array:
410
+ self.payload = MinecraftNbt.TagByteArray(self._io, self, self._root)
411
+ self.payload._read()
412
+ elif _on == MinecraftNbt.Tag.byte:
413
+ self.payload = self._io.read_s1()
414
+ elif _on == MinecraftNbt.Tag.int_array:
415
+ self.payload = MinecraftNbt.TagIntArray(self._io, self, self._root)
416
+ self.payload._read()
417
+ elif _on == MinecraftNbt.Tag.string:
418
+ self.payload = MinecraftNbt.TagString(self._io, self, self._root)
419
+ self.payload._read()
420
+ elif _on == MinecraftNbt.Tag.long:
421
+ self.payload = self._io.read_s8be()
422
+ self._debug['payload']['end'] = self._io.pos()
423
+
424
+
425
+ @property
426
+ def is_tag_end(self):
427
+ if hasattr(self, '_m_is_tag_end'):
428
+ return self._m_is_tag_end if hasattr(self, '_m_is_tag_end') else None
429
+
430
+ self._m_is_tag_end = self.type == MinecraftNbt.Tag.end
431
+ return self._m_is_tag_end if hasattr(self, '_m_is_tag_end') else None
432
+
433
+
434
+ @property
435
+ def root_type(self):
436
+ if hasattr(self, '_m_root_type'):
437
+ return self._m_root_type if hasattr(self, '_m_root_type') else None
438
+
439
+ _pos = self._io.pos()
440
+ self._io.seek(0)
441
+ self._debug['_m_root_type']['start'] = self._io.pos()
442
+ self._m_root_type = KaitaiStream.resolve_enum(MinecraftNbt.Tag, self._io.read_u1())
443
+ self._debug['_m_root_type']['end'] = self._io.pos()
444
+ self._io.seek(_pos)
445
+ if not self.root_type == MinecraftNbt.Tag.compound:
446
+ raise kaitaistruct.ValidationNotEqualError(MinecraftNbt.Tag.compound, self.root_type, self._io, u"/instances/root_type")
447
+ return self._m_root_type if hasattr(self, '_m_root_type') else None
448
+
449
+
@@ -0,0 +1,69 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+
8
+
9
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
10
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
11
+
12
+ class MonomakhSaprChg(KaitaiStruct):
13
+ """CHG is a container format file used by
14
+ [MONOMAKH-SAPR](https://www.liraland.com/mono/), a software
15
+ package for analysis & design of reinforced concrete multi-storey
16
+ buildings with arbitrary configuration in plan.
17
+
18
+ CHG is a simple container, which bundles several project files
19
+ together.
20
+
21
+ Written and tested by Vladimir Shulzhitskiy, 2017
22
+ """
23
+ SEQ_FIELDS = ["title", "ent"]
24
+ def __init__(self, _io, _parent=None, _root=None):
25
+ self._io = _io
26
+ self._parent = _parent
27
+ self._root = _root if _root else self
28
+ self._debug = collections.defaultdict(dict)
29
+
30
+ def _read(self):
31
+ self._debug['title']['start'] = self._io.pos()
32
+ self.title = (self._io.read_bytes(10)).decode(u"ascii")
33
+ self._debug['title']['end'] = self._io.pos()
34
+ self._debug['ent']['start'] = self._io.pos()
35
+ self.ent = []
36
+ i = 0
37
+ while not self._io.is_eof():
38
+ if not 'arr' in self._debug['ent']:
39
+ self._debug['ent']['arr'] = []
40
+ self._debug['ent']['arr'].append({'start': self._io.pos()})
41
+ _t_ent = MonomakhSaprChg.Block(self._io, self, self._root)
42
+ _t_ent._read()
43
+ self.ent.append(_t_ent)
44
+ self._debug['ent']['arr'][len(self.ent) - 1]['end'] = self._io.pos()
45
+ i += 1
46
+
47
+ self._debug['ent']['end'] = self._io.pos()
48
+
49
+ class Block(KaitaiStruct):
50
+ SEQ_FIELDS = ["header", "file_size", "file"]
51
+ def __init__(self, _io, _parent=None, _root=None):
52
+ self._io = _io
53
+ self._parent = _parent
54
+ self._root = _root if _root else self
55
+ self._debug = collections.defaultdict(dict)
56
+
57
+ def _read(self):
58
+ self._debug['header']['start'] = self._io.pos()
59
+ self.header = (self._io.read_bytes(13)).decode(u"ascii")
60
+ self._debug['header']['end'] = self._io.pos()
61
+ self._debug['file_size']['start'] = self._io.pos()
62
+ self.file_size = self._io.read_u8le()
63
+ self._debug['file_size']['end'] = self._io.pos()
64
+ self._debug['file']['start'] = self._io.pos()
65
+ self.file = self._io.read_bytes(self.file_size)
66
+ self._debug['file']['end'] = self._io.pos()
67
+
68
+
69
+