python wrapper for etcpak
Project description
etcpak
A python wrapper for wolfpld/etcpak
Some changes were made to the original code to make it cross-platform compatible.
Installation
pip install etcpak
or download/clone the git and use
python setup.py install
Example
from PIL import Image
import etcpak
# load image
img = Image.open(file_path)
# get image data
img_data = img.convert("RGBA").tobytes()
# compress data
compressed = etcpak.compress_to_dxt5(img_data, img.width, img.height)
composite image for format comparission
import os
import etcpak
import texture2ddecoder
from PIL import Image
FORMATS = [
("DXT1", etcpak.compress_to_dxt1, texture2ddecoder.decode_bc1),
("DXT1 Dither", etcpak.compress_to_dxt1_dither, texture2ddecoder.decode_bc1),
("DXT5", etcpak.compress_to_dxt5, texture2ddecoder.decode_bc3),
("ETC1", etcpak.compress_to_etc1, texture2ddecoder.decode_etc1),
("ETC1 Dither", etcpak.compress_to_etc1_dither, texture2ddecoder.decode_etc1),
("ETC2 RGB", etcpak.compress_to_etc2_rgb, texture2ddecoder.decode_etc2),
("ETC2 RGBA", etcpak.compress_to_etc2_rgba, texture2ddecoder.decode_etc2a8)
]
p = "S:\\Pictures"
for fp in os.listdir(p):
if not fp[-4:] in [".png", ".jpg", ".bmp", "jpeg"]:
continue
# load image and adjust format and size
print(fp)
img = Image.open(os.path.join(p, fp)).convert("RGBA")
img = img.crop((0,0,img.width-img.width%4, img.height-img.height%4))
# create composite image
comp = Image.new("RGBA", (img.width*8, img.height))
comp.paste(img, (0, 0))
print(img.width * img.height * 4)
# iterate over all formats
for i, (name, enc, dec) in enumerate(FORMATS):
print(name)
# make sure that the channel order is correct for the compression
if name[:3] == "DXT":
raw = img.tobytes()
elif name[:3] == "ETC":
r,g,b,a = img.split()
raw = Image.merge('RGBA', (b,g,r,a)).tobytes()
# compress
data = enc(raw, img.width, img.height)
# decompress
dimg = Image.frombytes("RGBA", img.size, dec(data, img.width, img.height), "raw", "BGRA")
# add to composite image
comp.paste(dimg, (img.width*(i+1), 0))
# save composite image
comp.save(os.path.splitext(fp)[0]+".png")
Functions
- all functions accept only arguments, no keywords
- the data has to be RGBA/BGRA for the RGB functions as well
- all DXT compressions require data in the RGBA format
- all ETC compressions require data in the BGRA format
compress_to_dxt1
Compresses RGBA to DXT1
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_dxt1_dither
Compresses RGBA to DXT1 Dither
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_dxt5
Compresses RGBA to DXT5
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_etc1
Compresses RGBA to ETC1 RGB
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_etc1_dither
Compresses RGBA to ETC1 Dither
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_etc1_alpha
Compresses A to ETC1 Alpha
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_etc2_rgb
Compresses RGBA to ETC2 RGB
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_etc2_rgba
Compresses RGBA to ETC2 RGBA
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
compress_to_etc2_alpha
Compresses RGBA to ETC2 Alpha
:param data: RGBA data of the image
:type data: bytes
:param width: width of the image
:type width: int
:param height: height of the image
:type height: int
:returns: compressed data
:rtype: bytes"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
etcpak-0.9.7.tar.gz
(47.6 kB
view hashes)
Built Distributions
etcpak-0.9.7-cp39-cp39-win32.whl
(28.2 kB
view hashes)
etcpak-0.9.7-cp38-cp38-win32.whl
(28.2 kB
view hashes)
etcpak-0.9.7-cp37-cp37m-win32.whl
(28.2 kB
view hashes)
Close
Hashes for etcpak-0.9.7-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3de3b4e0ea3408ce49cb4abb9d813fa89420c17bd0801f91b8c5252d0f9f915b |
|
MD5 | c4b87169fbd7ad10bbb73830c7352c68 |
|
BLAKE2b-256 | 7ce467d7c159d9689a50abf987147997f792c91d6a6bc8bcff71bdf754b704b4 |
Close
Hashes for etcpak-0.9.7-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 014f0fdbf606369d7083131b4ff6f161c041a60f4b28d38306bb6b2544701a3f |
|
MD5 | 75e16fd8e9860de0bb94a3f0545ae22c |
|
BLAKE2b-256 | 60e62267191f8001e7687c117bae64e1496b9888d274568605897b58e1103f7b |
Close
Hashes for etcpak-0.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00555343f0a15b1cf6e505a332bcda2f4a472d9b5736909da3ba1fc917b72584 |
|
MD5 | a3076eeab0e31bba6a629387ee62c952 |
|
BLAKE2b-256 | 7547da272fa070ad48cf4c5c99abc47051eac022cd5644ee77c65360ddb967f6 |
Close
Hashes for etcpak-0.9.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ae4fc3b9fa21a37a24f960bbde48c90b8f18d58dfe612945c134107f09639f6 |
|
MD5 | 9bdd1974f458dfd56cc5cd532978d853 |
|
BLAKE2b-256 | cf7c59822801f330b6a4a960b0d73f626df9c9cd934538da14ca0ebe61bd6dc0 |
Close
Hashes for etcpak-0.9.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0e49379026acf1af121303d5ace9b0bb43a901b25db735ce29bb4ab1e2b3a2d |
|
MD5 | 123efb66874c3e12732e390e239eb5cd |
|
BLAKE2b-256 | ec87f39ad0252d5feec56a4808be73a6093fa2f3e9843605c80f11afd1fb7660 |
Close
Hashes for etcpak-0.9.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d9448ee8c1510fc48e40456e8d93478ccddfc1829c7eb0d2a62f384a15d854a |
|
MD5 | ab50344028c3b5b051987e9d4aeb4985 |
|
BLAKE2b-256 | 85d254e8d6a3cd476924ecb67d452320ce46275cda768143a95a3e10456dfc44 |
Close
Hashes for etcpak-0.9.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22681b7bdd7f7a5f8a4ba52683c928c647c4e858d942e7d763eeb5d8020ff692 |
|
MD5 | 17d1371bd7ecfbec71aa7497645aceb3 |
|
BLAKE2b-256 | 582c67b29a6d5491f05ee2d05f65ef786defca25a6666af4a11c53ab501d8fa7 |
Close
Hashes for etcpak-0.9.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 981471642bf7bb2a92de09697a6fbdba34d6dc9617e378aaa9d0938336424b41 |
|
MD5 | a6e642c0559abee7d7c4da6c98672554 |
|
BLAKE2b-256 | 3c1d8e6f06235834850ee67647960914d8e3cf573eea95de1022a1b7e986d090 |
Close
Hashes for etcpak-0.9.7-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51d61eab414b7e8b67715b2b600353a0e7158253e550982bfb470cbf9fa86414 |
|
MD5 | 7260d8f5c261d0672bedacc9edfc9ed5 |
|
BLAKE2b-256 | e4e04ef4f76da2cd2d3588cacda5cc341690d42e74f329f5c737e352bf96d3f1 |
Close
Hashes for etcpak-0.9.7-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28dcc57a128f615581d37fe778f6b1f95b6a959714a23f1449326e10b7ea7e7b |
|
MD5 | 7c00314a5df9b2f3897d7b75e454cc5c |
|
BLAKE2b-256 | 1c24c8261898ba696eed86b88265ef334816684901822e79eb10c4cb40e3cc18 |
Close
Hashes for etcpak-0.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a625f598979146db14523e686f4d940b6b6cfb889cfe49216a1d4ce1a9dff5a3 |
|
MD5 | ebbb1cd702ee78409c1a39f9cd1414b9 |
|
BLAKE2b-256 | 79af9e4f6c7698e386aee066a8adbff0cba66321e473c0a27a97309f70a693cd |
Close
Hashes for etcpak-0.9.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c5e0d4c4725d8beeb1b02e6d5a5de59655696229badedb7528265f4cdaa00d1 |
|
MD5 | 65e49885a76a9d5ea51ad909eb06d03a |
|
BLAKE2b-256 | a944be54dc4dae07ef9bd65b42b3d41e6958c12f04352a3e251d384432a8666f |
Close
Hashes for etcpak-0.9.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fac5f5a3d7d8d2f55bad8d35f503ce070e250dfe647b50f7edbd7ab8c26be824 |
|
MD5 | 9e9edfdbe9bf6e75d47610fa3d1c6f0c |
|
BLAKE2b-256 | 3089e251b080f364930bacf4f3dcd9c6d256978a62ceff86daf5c0bd511ce948 |
Close
Hashes for etcpak-0.9.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03eeaff1f59b28813f6082520ac53a513c90967b954356e4a16e342aea0fc3a0 |
|
MD5 | 0b3e6dd7266eb64f8c46c8500a4ea24a |
|
BLAKE2b-256 | d13d8951998e512e53b794d2ee86c229b99c660beb81d4e4d47e09262a8ab41a |
Close
Hashes for etcpak-0.9.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bde985f330aa0c9074974b91f95d6eba0164481209b41fd9bdc3fa4b4f5259b8 |
|
MD5 | 84486ea53ffe01a64b5eaf8bace3ade5 |
|
BLAKE2b-256 | a8130177bf184facd00d49c12779a8916d3f3778dd264f60324cdbe6eeb115a0 |
Close
Hashes for etcpak-0.9.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d2d7e35fa66b703baa82c458338110f54af9371052bd1cd834b23db073647fb |
|
MD5 | 383e500fc2da1026b120505de4b12b0e |
|
BLAKE2b-256 | 421ec11435531c3411b87c6045a9fd22d9335bb40f705c6b1bd9c76a1722d62a |
Close
Hashes for etcpak-0.9.7-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90a75df7c2b5450a2e3f51efa1ed580f70d96259b53715de062bbd3ac874f139 |
|
MD5 | f843efa5b2655defa91272ab3e783b55 |
|
BLAKE2b-256 | fc50eee70ef404be61a0dcb728e6951751816e04f158cf9d40e9f52f75b34b5a |
Close
Hashes for etcpak-0.9.7-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bebd1f7f05f07598dc5e0684a698d9fe80fd186f0cab4f811105772a20e4afbe |
|
MD5 | c49c68d13c3d0f1696a681bb436c3066 |
|
BLAKE2b-256 | 6ce9e522a61a0194b28254bd2a044035d403dcfd4ce581f1ad0359fa529069e5 |
Close
Hashes for etcpak-0.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c72616289c8183b145f1c03ab9fa0f8819ef9bee4c28677c3183aa49f38ab82c |
|
MD5 | 04dc5d90174a1c6f24399c781fab26ee |
|
BLAKE2b-256 | be6761da30aa1f4cc9da441c5dc0c0996f638b3ef7422388830c1cb5f812cf2e |
Close
Hashes for etcpak-0.9.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b487cad57d7be81f98ad632ead2424847ee4165dae913d621229c449d1cc657 |
|
MD5 | 5f5ca52c48fc48a01ffbd50624f078f5 |
|
BLAKE2b-256 | 2dd3c1d487b81ad0bcb7403c7c9bfb7e84238c92f618586e08e16ce16ed5b349 |
Close
Hashes for etcpak-0.9.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f19700f2856ac29ef0e43568947f14b908cc4984f96a8f6ffaf8b555c1b90d2 |
|
MD5 | 241f773a6dac081aa92255d75288cde7 |
|
BLAKE2b-256 | e0640c79c2c6920b53b059e4ef5472f935d080bbfcc42d184cfd7375256f3210 |
Close
Hashes for etcpak-0.9.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 032fefda5a6cd8ead8ded0ccf6dd465990e8455955a1b2ca0a2c13655bc43dba |
|
MD5 | 468511d355517c7be7f349463fa7c26a |
|
BLAKE2b-256 | 0633ec4229fda9596785a06279f2b754768b0c9702bfdff9773f81b9e30c79f3 |
Close
Hashes for etcpak-0.9.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e972a82db99220bda9ae232446715ec3fc4296ea34ea47e830941f6377120812 |
|
MD5 | c2edc73a8bea9186f89775469027ff63 |
|
BLAKE2b-256 | 6d237234dba5179884bdbd1731d1c6f9d88de7c8690f4ea278f1c3fe1a2fbfee |
Close
Hashes for etcpak-0.9.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab78eab77c6afd627e98c691b733084d60a3fbb2ab66682b0059fc4e4cf85ad6 |
|
MD5 | 8a546f633fb3d06ad934e18765a696b1 |
|
BLAKE2b-256 | 11814f3c92673c353ada5d1f941f9fefae674c04660704f9326a2e4925069eee |
Close
Hashes for etcpak-0.9.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e802b6ecbe2a62d45534cbdfe245b9bb3d9a26e2c8c7d23041d723c5311d4c4 |
|
MD5 | 7f9031d6caf86624918c07665e6e1228 |
|
BLAKE2b-256 | 76bce5e0ec0ee484df59c7d077c06c62b07c9f95257144eb0e8b8c5133459c09 |
Close
Hashes for etcpak-0.9.7-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 106fcd43417331b742387b7343b9211e9c64daf44f6a13133c6c0e36df4dbf96 |
|
MD5 | 13e0c31df17b1a7fd70b52426cc890c0 |
|
BLAKE2b-256 | 038f6eb762a724ad444eeb0dd7b9d091b7db55e53d512bcb22a4fe1c0f4ef9dd |
Close
Hashes for etcpak-0.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 699d0db11eb115d00f42a59e08aedb0e649bde92f49f38ec1b289bb1e9a5cee3 |
|
MD5 | bd891f7f26ae58fe2b59dfc7de9acfec |
|
BLAKE2b-256 | 43247439d121390988983286f4a438dbfffe3626caccf294ae9bc2dd42110f65 |
Close
Hashes for etcpak-0.9.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3e4d5640ba3cbb6c4de59c2e353bde196a4fc22c81096719ca23f010294dbe8 |
|
MD5 | 374ea01135a7eacd5d2a3fd19f5230b3 |
|
BLAKE2b-256 | 8157cf28179f9dde97265f2120810f7955c68a459a55fa72f3c6d1624369532e |
Close
Hashes for etcpak-0.9.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2cb437c0c4ecfda8fb9dfc7e66ef010bd51aa8909fa4924a3c036b94c94be37 |
|
MD5 | c22cea4733444db7b5ef7009dd8d4e08 |
|
BLAKE2b-256 | 54ad91caefbc3db58f789b1ba0cc8728adb478c748001b116b8b878d1691e6f1 |
Close
Hashes for etcpak-0.9.7-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e8bc51ae58a7f220d34296666c47e1fdaaac55df972619daa6583e4e296eab7 |
|
MD5 | 0023657be23355ee5677eca0bf932e99 |
|
BLAKE2b-256 | 55a574fe123b9ba213cde709de3f14952bc821bc85ddd7a7e1933e34ca76eae1 |
Close
Hashes for etcpak-0.9.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a9442df420d109d1f39b8758b9827e459dd96fa6fb4d2a491e0409aafae2d42 |
|
MD5 | b34c0deb77fb5243fce5260335d6bde4 |
|
BLAKE2b-256 | ca9a78f18f8d45dcfa4df456b129616edd58b74a85f72738a6428eac74d3e05f |
Close
Hashes for etcpak-0.9.7-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e1594d523d0395415d13a4fed1914d49bfc4f78b010129b2fc0778bb8a5d46e |
|
MD5 | 638b04fbf7fb65592192cf7354b37200 |
|
BLAKE2b-256 | 3e011537461d4a3484bd4b6db636a73126ab5854d064525dedb8a5a3079d3cf8 |
Close
Hashes for etcpak-0.9.7-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3075755448be5c51cacbac8a8d82725d79ee65a8d95b8d235ff5d8b10d2c215c |
|
MD5 | 58c3bc52f32cdab07207aa015375357e |
|
BLAKE2b-256 | 1ae12c578026cbc829cf68eb522d73ffb4c208465f89c6879341618ea2a93554 |
Close
Hashes for etcpak-0.9.7-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21b825bc6cedb31095d8a1e9203b545930d9e97c1ef9452d4793108fd8a43b1d |
|
MD5 | 9486616a005aa588290e3d08789259b8 |
|
BLAKE2b-256 | 9ee12ffbb09da33f133d27e36f89e98c3f49d80da245de215ba165d1f5628b37 |
Close
Hashes for etcpak-0.9.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae8c01ae106cb9545f083ecf2e70ccc36fc6eb92255350ec7ea6f2283e77f824 |
|
MD5 | 37d056e7e4e08ee334fd087f17fb1206 |
|
BLAKE2b-256 | 37a2cd0ef4789799ce48b3a07e6a132fe5c4bb294fadf70aa0193614af8073bd |
Close
Hashes for etcpak-0.9.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb842bd981bbb2f91948cdf0770588f211ee645b8505dc7abeb9aef12539bcea |
|
MD5 | 9f4cc00d8f51f21e49d6f011eab43a8a |
|
BLAKE2b-256 | 107ebc29d658c58c980e7ad7b2442c201c88daa9188c72c0cf59ec6050171315 |
Close
Hashes for etcpak-0.9.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6484e6c54f9326cbb145291b6b16141c9f71e529e162e68f516d01dd8c34daa |
|
MD5 | 6d14475854a8ed17b1cb1c3fba41874b |
|
BLAKE2b-256 | 34be3177f90178f0feabb247bdd452fb5d6e5e0ee2cbc2addf5612b93d24f576 |
Close
Hashes for etcpak-0.9.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cace12e61b587c90ecb025c676f8ae1ef0ef44bb51d8c6e19e317a87018bf581 |
|
MD5 | 9cf08b20215e9b8f2e1965dbbb144a03 |
|
BLAKE2b-256 | 5bf7ff84196f25af1e998da0db20fef2cef3b712cf36586caf4165d85b3dd985 |