Both raw binary data and base-64 encoded are supported.
We previously only supported reading a single "block" of compressed data. VTK
format supports multiple blocks for semi-random access. Each block is
compressed separately, and the blocks are concatenated.
The header format is as follows (where header_t is either uint32_t or uint64_t
according to the VTK file metadata):
header_t number_of blocks;
header_t uncompressed_block_size;
header_t uncompressed_last_block_size;
header_t[] compressed_size;
The total uncompressed_block_size is bounded by (number_of_blocks -
1)*uncompressed_block_size + uncompressed_last_block_size.
The main complication is that the header contains a variable number of integers
(depending on the number of blocks), rather than a fixed number of 4 integers
as is the case when we are restricted to one block only.