diff --git a/Frameworks/vgmstream/libvgmstream.xcodeproj/project.pbxproj b/Frameworks/vgmstream/libvgmstream.xcodeproj/project.pbxproj index 576c3e2d9..1bc899c9a 100644 --- a/Frameworks/vgmstream/libvgmstream.xcodeproj/project.pbxproj +++ b/Frameworks/vgmstream/libvgmstream.xcodeproj/project.pbxproj @@ -139,7 +139,7 @@ 832BF81C21E0514B006F50F1 /* xpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF80A21E05148006F50F1 /* xpcm.c */; }; 832BF81D21E0514B006F50F1 /* msf_tamasoft.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF80B21E05148006F50F1 /* msf_tamasoft.c */; }; 832BF81E21E0514B006F50F1 /* xps.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF80C21E05148006F50F1 /* xps.c */; }; - 832BF81F21E0514B006F50F1 /* ps2_va3.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF80D21E05148006F50F1 /* ps2_va3.c */; }; + 832BF81F21E0514B006F50F1 /* va3.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF80D21E05148006F50F1 /* va3.c */; }; 832BF82021E0514B006F50F1 /* zsnd_streamfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 832BF80E21E05149006F50F1 /* zsnd_streamfile.h */; }; 832BF82121E0514B006F50F1 /* zsnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF80F21E05149006F50F1 /* zsnd.c */; }; 832BF82221E0514B006F50F1 /* vs_str.c in Sources */ = {isa = PBXBuildFile; fileRef = 832BF81021E05149006F50F1 /* vs_str.c */; }; @@ -251,7 +251,6 @@ 834F7DB02C7093EA003AC386 /* circus_vq_lib.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D422C7093EA003AC386 /* circus_vq_lib.h */; }; 834F7DB12C7093EA003AC386 /* circus_vq_lzxpcm.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D432C7093EA003AC386 /* circus_vq_lzxpcm.h */; }; 834F7DB22C7093EA003AC386 /* circus_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D442C7093EA003AC386 /* circus_decoder.c */; }; - 834F7DB32C7093EA003AC386 /* coding_utils_samples.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D452C7093EA003AC386 /* coding_utils_samples.h */; }; 834F7DB42C7093EA003AC386 /* coding_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D462C7093EA003AC386 /* coding_utils.c */; }; 834F7DB52C7093EA003AC386 /* coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D472C7093EA003AC386 /* coding.h */; }; 834F7DB62C7093EA003AC386 /* compresswave_lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D482C7093EA003AC386 /* compresswave_lib.c */; }; @@ -326,8 +325,6 @@ 834F7DFD2C7093EA003AC386 /* tgcadpcm_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D8F2C7093EA003AC386 /* tgcadpcm_decoder.c */; }; 834F7DFE2C7093EA003AC386 /* ubi_adpcm_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D902C7093EA003AC386 /* ubi_adpcm_decoder.c */; }; 834F7DFF2C7093EA003AC386 /* vadpcm_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D912C7093EA003AC386 /* vadpcm_decoder.c */; }; - 834F7E002C7093EA003AC386 /* vorbis_custom_data_fsb.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D922C7093EA003AC386 /* vorbis_custom_data_fsb.h */; }; - 834F7E012C7093EA003AC386 /* vorbis_custom_data_wwise.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D932C7093EA003AC386 /* vorbis_custom_data_wwise.h */; }; 834F7E022C7093EA003AC386 /* vorbis_custom_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D942C7093EA003AC386 /* vorbis_custom_decoder.c */; }; 834F7E032C7093EA003AC386 /* vorbis_custom_decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 834F7D952C7093EA003AC386 /* vorbis_custom_decoder.h */; }; 834F7E042C7093EA003AC386 /* vorbis_custom_utils_awc.c in Sources */ = {isa = PBXBuildFile; fileRef = 834F7D962C7093EA003AC386 /* vorbis_custom_utils_awc.c */; }; @@ -443,8 +440,8 @@ 834FE10F215C79ED000A5D3D /* sdf.c in Sources */ = {isa = PBXBuildFile; fileRef = 834FE0E6215C79EC000A5D3D /* sdf.c */; }; 834FE110215C79ED000A5D3D /* msv.c in Sources */ = {isa = PBXBuildFile; fileRef = 834FE0E7215C79EC000A5D3D /* msv.c */; }; 834FE111215C79ED000A5D3D /* ck.c in Sources */ = {isa = PBXBuildFile; fileRef = 834FE0E8215C79EC000A5D3D /* ck.c */; }; - 835096F22C9979DD00163D93 /* libvgmstream.h in Headers */ = {isa = PBXBuildFile; fileRef = 835096F02C9979DD00163D93 /* libvgmstream.h */; }; - 835096F32C9979DD00163D93 /* libvgmstream_streamfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 835096F12C9979DD00163D93 /* libvgmstream_streamfile.h */; }; + 835096F22C9979DD00163D93 /* libvgmstream.h in Headers */ = {isa = PBXBuildFile; fileRef = 835096F02C9979DD00163D93 /* libvgmstream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 835096F32C9979DD00163D93 /* libvgmstream_streamfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 835096F12C9979DD00163D93 /* libvgmstream_streamfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8350C0551E071881009E0A93 /* xma.c in Sources */ = {isa = PBXBuildFile; fileRef = 8350C0541E071881009E0A93 /* xma.c */; }; 8351F32D2212B57000A606E4 /* 208.c in Sources */ = {isa = PBXBuildFile; fileRef = 8351F32A2212B57000A606E4 /* 208.c */; }; 8351F32E2212B57000A606E4 /* ubi_bao_streamfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8351F32B2212B57000A606E4 /* ubi_bao_streamfile.h */; }; @@ -557,14 +554,13 @@ 836F6FD518BDC2190095E648 /* lp_ap_lep.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9918BDC2180095E648 /* lp_ap_lep.c */; }; 836F6FD718BDC2190095E648 /* filp.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9B18BDC2180095E648 /* filp.c */; }; 836F6FD818BDC2190095E648 /* gbts.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9C18BDC2180095E648 /* gbts.c */; }; - 836F6FD918BDC2190095E648 /* ps2_gcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9D18BDC2180095E648 /* ps2_gcm.c */; }; + 836F6FD918BDC2190095E648 /* mcg.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9D18BDC2180095E648 /* mcg.c */; }; 836F6FDA18BDC2190095E648 /* hgc1.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9E18BDC2180095E648 /* hgc1.c */; }; 836F6FDB18BDC2190095E648 /* ps2_hsf.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6E9F18BDC2180095E648 /* ps2_hsf.c */; }; 836F6FDC18BDC2190095E648 /* ps2_iab.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EA018BDC2180095E648 /* ps2_iab.c */; }; 836F6FDE18BDC2190095E648 /* ild.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EA218BDC2180095E648 /* ild.c */; }; 836F6FE018BDC2190095E648 /* ps2_joe.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EA418BDC2180095E648 /* ps2_joe.c */; }; 836F6FE218BDC2190095E648 /* vig_kces.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EA618BDC2180095E648 /* vig_kces.c */; }; - 836F6FE618BDC2190095E648 /* ps2_mcg.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EAA18BDC2180095E648 /* ps2_mcg.c */; }; 836F6FE818BDC2190095E648 /* mic_koei.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EAC18BDC2180095E648 /* mic_koei.c */; }; 836F6FEE18BDC2190095E648 /* p2bt_move_visa.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EB218BDC2180095E648 /* p2bt_move_visa.c */; }; 836F6FF218BDC2190095E648 /* ps2_rnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EB618BDC2180095E648 /* ps2_rnd.c */; }; @@ -584,7 +580,6 @@ 836F700918BDC2190095E648 /* voi.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6ECD18BDC2190095E648 /* voi.c */; }; 836F700B18BDC2190095E648 /* ps2_wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6ECF18BDC2190095E648 /* ps2_wad.c */; }; 836F700C18BDC2190095E648 /* wb.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6ED018BDC2190095E648 /* wb.c */; }; - 836F700D18BDC2190095E648 /* ps2_wmus.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6ED118BDC2190095E648 /* ps2_wmus.c */; }; 836F701518BDC2190095E648 /* sndp.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6ED918BDC2190095E648 /* sndp.c */; }; 836F701E18BDC2190095E648 /* redspark.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EE218BDC2190095E648 /* redspark.c */; }; 836F701F18BDC2190095E648 /* riff.c in Sources */ = {isa = PBXBuildFile; fileRef = 836F6EE318BDC2190095E648 /* riff.c */; }; @@ -744,6 +739,37 @@ 83B46FD52707FB9A00847FC9 /* endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B46FD42707FB9A00847FC9 /* endianness.h */; }; 83B69B222845A26600D2435A /* bw_mp3_riff.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B69B212845A26600D2435A /* bw_mp3_riff.c */; }; 83B72E3A27904589006007A3 /* libfdk-aac.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B72E342790452C006007A3 /* libfdk-aac.2.dylib */; }; + 83B73C232D8FEC3A00A57F08 /* vorbis_codebooks_oor.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C222D8FEC3A00A57F08 /* vorbis_codebooks_oor.h */; }; + 83B73C242D8FEC3A00A57F08 /* oor_helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C202D8FEC3A00A57F08 /* oor_helpers.h */; }; + 83B73C252D8FEC3A00A57F08 /* oor_helpers.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C212D8FEC3A00A57F08 /* oor_helpers.c */; }; + 83B73C272D8FEC5500A57F08 /* vorbis_custom_utils_oor.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C262D8FEC5500A57F08 /* vorbis_custom_utils_oor.c */; }; + 83B73C292D8FEC7B00A57F08 /* oor.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C282D8FEC7B00A57F08 /* oor.c */; }; + 83B73C2C2D8FED0500A57F08 /* vorbis_codebooks_wwise.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C2B2D8FED0500A57F08 /* vorbis_codebooks_wwise.h */; }; + 83B73C2D2D8FED0500A57F08 /* vorbis_codebooks_fsb.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C2A2D8FED0500A57F08 /* vorbis_codebooks_fsb.h */; }; + 83B73C312D8FEF7A00A57F08 /* ubi_mpeg_helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C2F2D8FEF7A00A57F08 /* ubi_mpeg_helpers.h */; }; + 83B73C322D8FEF7A00A57F08 /* minimp3.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C2E2D8FEF7A00A57F08 /* minimp3.h */; }; + 83B73C332D8FEF7A00A57F08 /* ubi_mpeg_helpers.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C302D8FEF7A00A57F08 /* ubi_mpeg_helpers.c */; }; + 83B73C352D8FEFFD00A57F08 /* ubi_mpeg_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C342D8FEFFD00A57F08 /* ubi_mpeg_decoder.c */; }; + 83B73C3F2D8FF15700A57F08 /* mio_xerisa.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C3E2D8FF15700A57F08 /* mio_xerisa.h */; }; + 83B73C402D8FF15700A57F08 /* mio_erisasound.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C3C2D8FF15700A57F08 /* mio_erisasound.h */; }; + 83B73C412D8FF15700A57F08 /* mio_erisacontext.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C362D8FF15700A57F08 /* mio_erisacontext.h */; }; + 83B73C422D8FF15700A57F08 /* mio_erisafile.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C382D8FF15700A57F08 /* mio_erisafile.h */; }; + 83B73C432D8FF15700A57F08 /* mio_erisamatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C3A2D8FF15700A57F08 /* mio_erisamatrix.h */; }; + 83B73C442D8FF15700A57F08 /* mio_erisacontext.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C372D8FF15700A57F08 /* mio_erisacontext.c */; }; + 83B73C452D8FF15700A57F08 /* mio_erisafile.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C392D8FF15700A57F08 /* mio_erisafile.c */; }; + 83B73C462D8FF15700A57F08 /* mio_erisamatrix.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C3B2D8FF15700A57F08 /* mio_erisamatrix.c */; }; + 83B73C472D8FF15700A57F08 /* mio_erisasound.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C3D2D8FF15700A57F08 /* mio_erisasound.c */; }; + 83B73C492D8FF17900A57F08 /* mio_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C482D8FF17900A57F08 /* mio_decoder.c */; }; + 83B73C4B2D8FF19800A57F08 /* mio.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C4A2D8FF19800A57F08 /* mio.c */; }; + 83B73C4F2D8FF1CB00A57F08 /* io_callback_sf.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C4D2D8FF1CB00A57F08 /* io_callback_sf.h */; }; + 83B73C502D8FF1CB00A57F08 /* io_callback.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C4C2D8FF1CB00A57F08 /* io_callback.h */; }; + 83B73C512D8FF1CB00A57F08 /* io_callback_sf.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C4E2D8FF1CB00A57F08 /* io_callback_sf.c */; }; + 83B73C542D8FF1E300A57F08 /* vorbis_codebooks.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C522D8FF1E300A57F08 /* vorbis_codebooks.h */; }; + 83B73C552D8FF1E300A57F08 /* vorbis_codebooks.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C532D8FF1E300A57F08 /* vorbis_codebooks.c */; }; + 83B73C572D8FF27000A57F08 /* 2dx.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C562D8FF27000A57F08 /* 2dx.c */; }; + 83B73C5B2D8FF37700A57F08 /* codec_info.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B73C592D8FF37700A57F08 /* codec_info.h */; }; + 83B73C5C2D8FF37700A57F08 /* codec_info.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C5A2D8FF37700A57F08 /* codec_info.c */; }; + 83B73C5D2D8FF37700A57F08 /* api_libsf_cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B73C582D8FF37700A57F08 /* api_libsf_cache.c */; }; 83B8FE2B2D5AB1F5005854C1 /* axhd.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B8FE2A2D5AB1F5005854C1 /* axhd.c */; }; 83B8FE2D2D5AB2A5005854C1 /* shaa.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B8FE2C2D5AB2A5005854C1 /* shaa.c */; }; 83B8FE2F2D5AB2F4005854C1 /* xwb_konami.c in Sources */ = {isa = PBXBuildFile; fileRef = 83B8FE2E2D5AB2F4005854C1 /* xwb_konami.c */; }; @@ -1066,7 +1092,7 @@ 832BF80A21E05148006F50F1 /* xpcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpcm.c; sourceTree = ""; }; 832BF80B21E05148006F50F1 /* msf_tamasoft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msf_tamasoft.c; sourceTree = ""; }; 832BF80C21E05148006F50F1 /* xps.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xps.c; sourceTree = ""; }; - 832BF80D21E05148006F50F1 /* ps2_va3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_va3.c; sourceTree = ""; }; + 832BF80D21E05148006F50F1 /* va3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = va3.c; sourceTree = ""; }; 832BF80E21E05149006F50F1 /* zsnd_streamfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zsnd_streamfile.h; sourceTree = ""; }; 832BF80F21E05149006F50F1 /* zsnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zsnd.c; sourceTree = ""; }; 832BF81021E05149006F50F1 /* vs_str.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vs_str.c; sourceTree = ""; }; @@ -1178,7 +1204,6 @@ 834F7D422C7093EA003AC386 /* circus_vq_lib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = circus_vq_lib.h; sourceTree = ""; }; 834F7D432C7093EA003AC386 /* circus_vq_lzxpcm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = circus_vq_lzxpcm.h; sourceTree = ""; }; 834F7D442C7093EA003AC386 /* circus_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = circus_decoder.c; sourceTree = ""; }; - 834F7D452C7093EA003AC386 /* coding_utils_samples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coding_utils_samples.h; sourceTree = ""; }; 834F7D462C7093EA003AC386 /* coding_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = coding_utils.c; sourceTree = ""; }; 834F7D472C7093EA003AC386 /* coding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coding.h; sourceTree = ""; }; 834F7D482C7093EA003AC386 /* compresswave_lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = compresswave_lib.c; sourceTree = ""; }; @@ -1253,8 +1278,6 @@ 834F7D8F2C7093EA003AC386 /* tgcadpcm_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tgcadpcm_decoder.c; sourceTree = ""; }; 834F7D902C7093EA003AC386 /* ubi_adpcm_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ubi_adpcm_decoder.c; sourceTree = ""; }; 834F7D912C7093EA003AC386 /* vadpcm_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vadpcm_decoder.c; sourceTree = ""; }; - 834F7D922C7093EA003AC386 /* vorbis_custom_data_fsb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbis_custom_data_fsb.h; sourceTree = ""; }; - 834F7D932C7093EA003AC386 /* vorbis_custom_data_wwise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbis_custom_data_wwise.h; sourceTree = ""; }; 834F7D942C7093EA003AC386 /* vorbis_custom_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vorbis_custom_decoder.c; sourceTree = ""; }; 834F7D952C7093EA003AC386 /* vorbis_custom_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbis_custom_decoder.h; sourceTree = ""; }; 834F7D962C7093EA003AC386 /* vorbis_custom_utils_awc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vorbis_custom_utils_awc.c; sourceTree = ""; }; @@ -1484,14 +1507,13 @@ 836F6E9918BDC2180095E648 /* lp_ap_lep.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lp_ap_lep.c; sourceTree = ""; }; 836F6E9B18BDC2180095E648 /* filp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filp.c; sourceTree = ""; }; 836F6E9C18BDC2180095E648 /* gbts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gbts.c; sourceTree = ""; }; - 836F6E9D18BDC2180095E648 /* ps2_gcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_gcm.c; sourceTree = ""; }; + 836F6E9D18BDC2180095E648 /* mcg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mcg.c; sourceTree = ""; }; 836F6E9E18BDC2180095E648 /* hgc1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hgc1.c; sourceTree = ""; }; 836F6E9F18BDC2180095E648 /* ps2_hsf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_hsf.c; sourceTree = ""; }; 836F6EA018BDC2180095E648 /* ps2_iab.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_iab.c; sourceTree = ""; }; 836F6EA218BDC2180095E648 /* ild.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ild.c; sourceTree = ""; }; 836F6EA418BDC2180095E648 /* ps2_joe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_joe.c; sourceTree = ""; }; 836F6EA618BDC2180095E648 /* vig_kces.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vig_kces.c; sourceTree = ""; }; - 836F6EAA18BDC2180095E648 /* ps2_mcg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_mcg.c; sourceTree = ""; }; 836F6EAC18BDC2180095E648 /* mic_koei.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mic_koei.c; sourceTree = ""; }; 836F6EB218BDC2180095E648 /* p2bt_move_visa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p2bt_move_visa.c; sourceTree = ""; }; 836F6EB618BDC2180095E648 /* ps2_rnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_rnd.c; sourceTree = ""; }; @@ -1511,7 +1533,6 @@ 836F6ECD18BDC2190095E648 /* voi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = voi.c; sourceTree = ""; }; 836F6ECF18BDC2190095E648 /* ps2_wad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_wad.c; sourceTree = ""; }; 836F6ED018BDC2190095E648 /* wb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wb.c; sourceTree = ""; }; - 836F6ED118BDC2190095E648 /* ps2_wmus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ps2_wmus.c; sourceTree = ""; }; 836F6ED918BDC2190095E648 /* sndp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sndp.c; sourceTree = ""; }; 836F6EE218BDC2190095E648 /* redspark.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = redspark.c; sourceTree = ""; }; 836F6EE318BDC2190095E648 /* riff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = riff.c; sourceTree = ""; }; @@ -1673,6 +1694,37 @@ 83B46FD42707FB9A00847FC9 /* endianness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endianness.h; sourceTree = ""; }; 83B69B212845A26600D2435A /* bw_mp3_riff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bw_mp3_riff.c; sourceTree = ""; }; 83B72E342790452C006007A3 /* libfdk-aac.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libfdk-aac.2.dylib"; path = "../../ThirdParty/fdk-aac/lib/libfdk-aac.2.dylib"; sourceTree = ""; }; + 83B73C202D8FEC3A00A57F08 /* oor_helpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oor_helpers.h; sourceTree = ""; }; + 83B73C212D8FEC3A00A57F08 /* oor_helpers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = oor_helpers.c; sourceTree = ""; }; + 83B73C222D8FEC3A00A57F08 /* vorbis_codebooks_oor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vorbis_codebooks_oor.h; sourceTree = ""; }; + 83B73C262D8FEC5500A57F08 /* vorbis_custom_utils_oor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vorbis_custom_utils_oor.c; sourceTree = ""; }; + 83B73C282D8FEC7B00A57F08 /* oor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = oor.c; sourceTree = ""; }; + 83B73C2A2D8FED0500A57F08 /* vorbis_codebooks_fsb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vorbis_codebooks_fsb.h; sourceTree = ""; }; + 83B73C2B2D8FED0500A57F08 /* vorbis_codebooks_wwise.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vorbis_codebooks_wwise.h; sourceTree = ""; }; + 83B73C2E2D8FEF7A00A57F08 /* minimp3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minimp3.h; sourceTree = ""; }; + 83B73C2F2D8FEF7A00A57F08 /* ubi_mpeg_helpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ubi_mpeg_helpers.h; sourceTree = ""; }; + 83B73C302D8FEF7A00A57F08 /* ubi_mpeg_helpers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ubi_mpeg_helpers.c; sourceTree = ""; }; + 83B73C342D8FEFFD00A57F08 /* ubi_mpeg_decoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ubi_mpeg_decoder.c; sourceTree = ""; }; + 83B73C362D8FF15700A57F08 /* mio_erisacontext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mio_erisacontext.h; sourceTree = ""; }; + 83B73C372D8FF15700A57F08 /* mio_erisacontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mio_erisacontext.c; sourceTree = ""; }; + 83B73C382D8FF15700A57F08 /* mio_erisafile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mio_erisafile.h; sourceTree = ""; }; + 83B73C392D8FF15700A57F08 /* mio_erisafile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mio_erisafile.c; sourceTree = ""; }; + 83B73C3A2D8FF15700A57F08 /* mio_erisamatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mio_erisamatrix.h; sourceTree = ""; }; + 83B73C3B2D8FF15700A57F08 /* mio_erisamatrix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mio_erisamatrix.c; sourceTree = ""; }; + 83B73C3C2D8FF15700A57F08 /* mio_erisasound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mio_erisasound.h; sourceTree = ""; }; + 83B73C3D2D8FF15700A57F08 /* mio_erisasound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mio_erisasound.c; sourceTree = ""; }; + 83B73C3E2D8FF15700A57F08 /* mio_xerisa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mio_xerisa.h; sourceTree = ""; }; + 83B73C482D8FF17900A57F08 /* mio_decoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mio_decoder.c; sourceTree = ""; }; + 83B73C4A2D8FF19800A57F08 /* mio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mio.c; sourceTree = ""; }; + 83B73C4C2D8FF1CB00A57F08 /* io_callback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = io_callback.h; sourceTree = ""; }; + 83B73C4D2D8FF1CB00A57F08 /* io_callback_sf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = io_callback_sf.h; sourceTree = ""; }; + 83B73C4E2D8FF1CB00A57F08 /* io_callback_sf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = io_callback_sf.c; sourceTree = ""; }; + 83B73C522D8FF1E300A57F08 /* vorbis_codebooks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vorbis_codebooks.h; sourceTree = ""; }; + 83B73C532D8FF1E300A57F08 /* vorbis_codebooks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vorbis_codebooks.c; sourceTree = ""; }; + 83B73C562D8FF27000A57F08 /* 2dx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 2dx.c; sourceTree = ""; }; + 83B73C582D8FF37700A57F08 /* api_libsf_cache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = api_libsf_cache.c; sourceTree = ""; }; + 83B73C592D8FF37700A57F08 /* codec_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codec_info.h; sourceTree = ""; }; + 83B73C5A2D8FF37700A57F08 /* codec_info.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = codec_info.c; sourceTree = ""; }; 83B8FE2A2D5AB1F5005854C1 /* axhd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = axhd.c; sourceTree = ""; }; 83B8FE2C2D5AB2A5005854C1 /* shaa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shaa.c; sourceTree = ""; }; 83B8FE2E2D5AB2F4005854C1 /* xwb_konami.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xwb_konami.c; sourceTree = ""; }; @@ -1896,10 +1948,22 @@ 834F7D392C7093EA003AC386 /* libacm.h */, 834F7D382C7093EA003AC386 /* libacm_decode.c */, 834F7D3A2C7093EA003AC386 /* libacm_util.c */, + 83B73C2E2D8FEF7A00A57F08 /* minimp3.h */, + 83B73C362D8FF15700A57F08 /* mio_erisacontext.h */, + 83B73C372D8FF15700A57F08 /* mio_erisacontext.c */, + 83B73C382D8FF15700A57F08 /* mio_erisafile.h */, + 83B73C392D8FF15700A57F08 /* mio_erisafile.c */, + 83B73C3A2D8FF15700A57F08 /* mio_erisamatrix.h */, + 83B73C3B2D8FF15700A57F08 /* mio_erisamatrix.c */, + 83B73C3C2D8FF15700A57F08 /* mio_erisasound.h */, + 83B73C3D2D8FF15700A57F08 /* mio_erisasound.c */, + 83B73C3E2D8FF15700A57F08 /* mio_xerisa.h */, 834F7D792C7093EA003AC386 /* nwa_lib.h */, 834F7D342C7093EA003AC386 /* nwa_lib.c */, 834F7E7A2C709E66003AC386 /* ongakukan_adp_lib.h */, 834F7E792C709E66003AC386 /* ongakukan_adp_lib.c */, + 83B73C202D8FEC3A00A57F08 /* oor_helpers.h */, + 83B73C212D8FEC3A00A57F08 /* oor_helpers.c */, 834F7D832C7093EA003AC386 /* relic_lib.h */, 834F7D822C7093EA003AC386 /* relic_lib.c */, 834F7D842C7093EA003AC386 /* relic_mixfft.c */, @@ -1907,8 +1971,13 @@ 834F7D8C2C7093EA003AC386 /* tac_lib.h */, 834F7D8B2C7093EA003AC386 /* tac_lib.c */, 834F7D8A2C7093EA003AC386 /* tac_ops.h */, + 83B73C2F2D8FEF7A00A57F08 /* ubi_mpeg_helpers.h */, + 83B73C302D8FEF7A00A57F08 /* ubi_mpeg_helpers.c */, 834F7D362C7093EA003AC386 /* utkdec.h */, 834F7D352C7093EA003AC386 /* utkdec.c */, + 83B73C2A2D8FED0500A57F08 /* vorbis_codebooks_fsb.h */, + 83B73C222D8FEC3A00A57F08 /* vorbis_codebooks_oor.h */, + 83B73C2B2D8FED0500A57F08 /* vorbis_codebooks_wwise.h */, ); path = libs; sourceTree = ""; @@ -1924,7 +1993,6 @@ 834F7D442C7093EA003AC386 /* circus_decoder.c */, 834F7D472C7093EA003AC386 /* coding.h */, 834F7D462C7093EA003AC386 /* coding_utils.c */, - 834F7D452C7093EA003AC386 /* coding_utils_samples.h */, 834F7D4A2C7093EA003AC386 /* compresswave_decoder.c */, 834F7D4B2C7093EA003AC386 /* derf_decoder.c */, 834F7D4C2C7093EA003AC386 /* dpcm_kcej_decoder.c */, @@ -1949,6 +2017,7 @@ 834F7D672C7093EA003AC386 /* l5_555_decoder.c */, 834F7D372C7093EA003AC386 /* libs */, 834F7D682C7093EA003AC386 /* lsf_decoder.c */, + 83B73C482D8FF17900A57F08 /* mio_decoder.c */, 834F7D6A2C7093EA003AC386 /* mp4_aac_decoder.c */, 834F7D692C7093EA003AC386 /* mpc3_decoder.c */, 834F7D6E2C7093EA003AC386 /* mpeg_custom_utils.c */, @@ -1980,15 +2049,15 @@ 834F7D8E2C7093EA003AC386 /* tantalus_decoder.c */, 834F7D8F2C7093EA003AC386 /* tgcadpcm_decoder.c */, 834F7D902C7093EA003AC386 /* ubi_adpcm_decoder.c */, + 83B73C342D8FEFFD00A57F08 /* ubi_mpeg_decoder.c */, 834F7D912C7093EA003AC386 /* vadpcm_decoder.c */, - 834F7D922C7093EA003AC386 /* vorbis_custom_data_fsb.h */, - 834F7D932C7093EA003AC386 /* vorbis_custom_data_wwise.h */, 834F7D952C7093EA003AC386 /* vorbis_custom_decoder.h */, 834F7D942C7093EA003AC386 /* vorbis_custom_decoder.c */, 834F7D9C2C7093EA003AC386 /* vorbis_custom_utils.c */, 834F7D962C7093EA003AC386 /* vorbis_custom_utils_awc.c */, 834F7D972C7093EA003AC386 /* vorbis_custom_utils_fsb.c */, 834F7D982C7093EA003AC386 /* vorbis_custom_utils_ogl.c */, + 83B73C262D8FEC5500A57F08 /* vorbis_custom_utils_oor.c */, 834F7D992C7093EA003AC386 /* vorbis_custom_utils_sk.c */, 834F7D9A2C7093EA003AC386 /* vorbis_custom_utils_vid1.c */, 834F7D9B2C7093EA003AC386 /* vorbis_custom_utils_wwise.c */, @@ -2010,7 +2079,10 @@ 834F7EA02C70A786003AC386 /* api_helpers.c */, 834F7EA12C70A786003AC386 /* api_internal.h */, 834F7EA22C70A786003AC386 /* api_libsf.c */, + 83B73C582D8FF37700A57F08 /* api_libsf_cache.c */, 834F7EA32C70A786003AC386 /* api_tags.c */, + 83B73C592D8FF37700A57F08 /* codec_info.h */, + 83B73C5A2D8FF37700A57F08 /* codec_info.c */, 834F7EA62C70A786003AC386 /* decode.h */, 834F7EA52C70A786003AC386 /* decode.c */, 834845772D27F2E9000E4928 /* decode_state.h */, @@ -2217,6 +2289,7 @@ 836F6E2718BDC2180095E648 /* meta */ = { isa = PBXGroup; children = ( + 83B73C562D8FF27000A57F08 /* 2dx.c */, 836F6E2918BDC2180095E648 /* 2dx9.c */, 836F6E8D18BDC2180095E648 /* 2pfs.c */, 83C727FE22BC893900678B4A /* 9tav.c */, @@ -2420,9 +2493,11 @@ 836F6E5C18BDC2180095E648 /* mattel_hyperscan.c */, 836F6E5D18BDC2180095E648 /* maxis_xa.c */, 83EDE5D61A70951A005F5D84 /* mca.c */, + 836F6E9D18BDC2180095E648 /* mcg.c */, 836F6E5E18BDC2180095E648 /* meta.h */, 834FE0DE215C79EB000A5D3D /* mib_mih.c */, 836F6EAC18BDC2180095E648 /* mic_koei.c */, + 83B73C4A2D8FF19800A57F08 /* mio.c */, 8346D97725BF838C00D1A8B0 /* mjb_mjh.c */, 836F6E5F18BDC2180095E648 /* mn_str.c */, 8349A9031FE6258100E26435 /* mogg.c */, @@ -2483,6 +2558,7 @@ 831BA60F1EAC61A500CF89B0 /* ogl.c */, 83AF2CC726226BA400538240 /* ogv_3rdeye.c */, 8349A8FB1FE6257F00E26435 /* omu.c */, + 83B73C282D8FEC7B00A57F08 /* oor.c */, 8306B0CE2098458E000302D4 /* opus.c */, 8306B0CD2098458E000302D4 /* opus_interleave_streamfile.h */, 836F6EB218BDC2180095E648 /* p2bt_move_visa.c */, @@ -2505,21 +2581,17 @@ 836F6E9118BDC2180095E648 /* ps2_ass.c */, 836F6E9418BDC2180095E648 /* ps2_b1s.c */, 836F6E9618BDC2180095E648 /* ps2_bmdx.c */, - 836F6E9D18BDC2180095E648 /* ps2_gcm.c */, 836F6E9F18BDC2180095E648 /* ps2_hsf.c */, 836F6EA018BDC2180095E648 /* ps2_iab.c */, 836F6EA418BDC2180095E648 /* ps2_joe.c */, - 836F6EAA18BDC2180095E648 /* ps2_mcg.c */, 836F6EB618BDC2180095E648 /* ps2_rnd.c */, 836F6EBD18BDC2180095E648 /* ps2_snd.c */, 836F6EBF18BDC2190095E648 /* ps2_sps.c */, 836F6EC518BDC2190095E648 /* ps2_tec.c */, - 832BF80D21E05148006F50F1 /* ps2_va3.c */, 836F6EC918BDC2190095E648 /* ps2_vbk.c */, 836F6ECB18BDC2190095E648 /* ps2_vgv.c */, 836F6ECC18BDC2190095E648 /* ps2_vms.c */, 836F6ECF18BDC2190095E648 /* ps2_wad.c */, - 836F6ED118BDC2190095E648 /* ps2_wmus.c */, 8315868326F586E200803A3A /* psb.c */, 837CEAE823487F2B00E62A4A /* psf.c */, 836F6E5518BDC2180095E648 /* psnd.c */, @@ -2639,6 +2711,7 @@ 834FE0C5215C79E6000A5D3D /* ue4opus.c */, 83B8FE302D5AB421005854C1 /* undefind.c */, 834FE0DD215C79EB000A5D3D /* utk.c */, + 832BF80D21E05148006F50F1 /* va3.c */, 83D1189228B2F33400AF3370 /* vab.c */, 834FE0E4215C79EC000A5D3D /* vag.c */, 834FE0D3215C79E9000A5D3D /* vai.c */, @@ -2735,42 +2808,47 @@ 833E82F92A28595A00CD0580 /* bitstream_lsb.h */, 836DF620298F83F400CD0580 /* bitstream_msb.h */, 833E82C72A28566700CD0580 /* channel_mappings.h */, - 83D26A8026E66DC2001A9475 /* chunks.c */, 83D26A7E26E66DC2001A9475 /* chunks.h */, - 834F7D132C70861D003AC386 /* cipher_blowfish.c */, + 83D26A8026E66DC2001A9475 /* chunks.c */, 834F7D122C70861D003AC386 /* cipher_blowfish.h */, - 834F7D1A2C708719003AC386 /* cipher_xxtea.c */, + 834F7D132C70861D003AC386 /* cipher_blowfish.c */, 834F7D1B2C708719003AC386 /* cipher_xxtea.h */, - 833E82EB2A28587D00CD0580 /* companion_files.c */, + 834F7D1A2C708719003AC386 /* cipher_xxtea.c */, 833E82EF2A28587D00CD0580 /* companion_files.h */, - 836DF621298F83F400CD0580 /* cri_keys.c */, + 833E82EB2A28587D00CD0580 /* companion_files.c */, 836DF61F298F83F400CD0580 /* cri_keys.h */, - 836F46B5282087A6005B9B87 /* cri_utf.c */, + 836DF621298F83F400CD0580 /* cri_keys.c */, 836F46B6282087A6005B9B87 /* cri_utf.h */, + 836F46B5282087A6005B9B87 /* cri_utf.c */, 83B46FD42707FB9A00847FC9 /* endianness.h */, - 83C0C75E2AA436370056AFD8 /* layout_utils.c */, + 83B73C4C2D8FF1CB00A57F08 /* io_callback.h */, + 83B73C4D2D8FF1CB00A57F08 /* io_callback_sf.h */, + 83B73C4E2D8FF1CB00A57F08 /* io_callback_sf.c */, 83C0C75F2AA436370056AFD8 /* layout_utils.h */, - 83D26A7D26E66DC2001A9475 /* log.c */, + 83C0C75E2AA436370056AFD8 /* layout_utils.c */, 83D26A7F26E66DC2001A9475 /* log.h */, - 8315868826F586F900803A3A /* m2_psb.c */, + 83D26A7D26E66DC2001A9475 /* log.c */, 8315868926F586F900803A3A /* m2_psb.h */, - 834F7E9A2C70A6E1003AC386 /* meta_utils.c */, + 8315868826F586F900803A3A /* m2_psb.c */, 834F7E992C70A6E1003AC386 /* meta_utils.h */, - 8319017A28F67EE100B70711 /* miniz.c */, + 834F7E9A2C70A6E1003AC386 /* meta_utils.c */, 8319017928F67EE000B70711 /* miniz.h */, - 833E82EC2A28587D00CD0580 /* paths.c */, + 8319017A28F67EE100B70711 /* miniz.c */, 833E82ED2A28587D00CD0580 /* paths.h */, - 833E82C92A2856B200CD0580 /* reader_get_nibbles.h */, + 833E82EC2A28587D00CD0580 /* paths.c */, + 833E82F52A2858EF00CD0580 /* reader.c */, 833E82CA2A2856B200CD0580 /* reader_get.h */, + 833E82C92A2856B200CD0580 /* reader_get_nibbles.h */, 833E82CB2A2856B200CD0580 /* reader_put.h */, 833E82EE2A28587D00CD0580 /* reader_sf.h */, 833E82F62A2858EF00CD0580 /* reader_text.h */, - 833E82F52A2858EF00CD0580 /* reader.c */, - 83FBB17B2A4FF87200CD0580 /* sf_utils.c */, 83FBB17A2A4FF87200CD0580 /* sf_utils.h */, - 8339B324280FDF4B0076F74B /* text_reader.c */, + 83FBB17B2A4FF87200CD0580 /* sf_utils.c */, 8339B325280FDF4B0076F74B /* text_reader.h */, + 8339B324280FDF4B0076F74B /* text_reader.c */, 834F7E772C709D0E003AC386 /* vgmstream_limits.h */, + 83B73C522D8FF1E300A57F08 /* vorbis_codebooks.h */, + 83B73C532D8FF1E300A57F08 /* vorbis_codebooks.c */, 834F7E102C709933003AC386 /* zlib_vgmstream.h */, ); path = util; @@ -2811,9 +2889,12 @@ 834F7DC42C7093EA003AC386 /* g72x_state.h in Headers */, 834F7ED62C70A786003AC386 /* plugins.h in Headers */, 834F7E782C709D0E003AC386 /* vgmstream_limits.h in Headers */, + 83B73C5B2D8FF37700A57F08 /* codec_info.h in Headers */, 83D26A8226E66DC2001A9475 /* chunks.h in Headers */, + 835096F32C9979DD00163D93 /* libvgmstream_streamfile.h in Headers */, 836F705518BDC2190095E648 /* streamtypes.h in Headers */, 83CBF5362D46309100AA2D75 /* ka1a_dec.h in Headers */, + 835096F22C9979DD00163D93 /* libvgmstream.h in Headers */, 83CBF5372D46309100AA2D75 /* ka1a_dec_data.h in Headers */, 833E82CF2A2856B200CD0580 /* reader_get_nibbles.h in Headers */, 833E82D12A2856B200CD0580 /* reader_put.h in Headers */, @@ -2848,6 +2929,8 @@ 83B46FD52707FB9A00847FC9 /* endianness.h in Headers */, 834F7D092C7085EB003AC386 /* str_wav_streamfile.h in Headers */, 836F705718BDC2190095E648 /* util.h in Headers */, + 83B73C4F2D8FF1CB00A57F08 /* io_callback_sf.h in Headers */, + 83B73C502D8FF1CB00A57F08 /* io_callback.h in Headers */, 834F7DF82C7093EA003AC386 /* tac_ops.h in Headers */, 83256CC128666C620036D9C0 /* index.h in Headers */, 834FE0ED215C79ED000A5D3D /* fsb_interleave_streamfile.h in Headers */, @@ -2871,8 +2954,6 @@ 83256CD628666C620036D9C0 /* newhuffman.h in Headers */, 835C883722CC17BE001B4B3F /* ogg_vorbis_streamfile.h in Headers */, 837CEAFE23487F2C00E62A4A /* jstm_streamfile.h in Headers */, - 835096F22C9979DD00163D93 /* libvgmstream.h in Headers */, - 835096F32C9979DD00163D93 /* libvgmstream_streamfile.h in Headers */, 834F7DB02C7093EA003AC386 /* circus_vq_lib.h in Headers */, 832BF82021E0514B006F50F1 /* zsnd_streamfile.h in Headers */, 834F7E862C709FED003AC386 /* api_version.h in Headers */, @@ -2901,6 +2982,8 @@ 83256CD128666C620036D9C0 /* mpg123lib_intern.h in Headers */, 83C7281622BC893D00678B4A /* xwma_konami_streamfile.h in Headers */, 834F7D1D2C708719003AC386 /* cipher_xxtea.h in Headers */, + 83B73C312D8FEF7A00A57F08 /* ubi_mpeg_helpers.h in Headers */, + 83B73C322D8FEF7A00A57F08 /* minimp3.h in Headers */, 833E82C82A28566700CD0580 /* channel_mappings.h in Headers */, 83256CC028666C620036D9C0 /* synth_8bit.h in Headers */, 834F7DCB2C7093EA003AC386 /* g7221_lib.h in Headers */, @@ -2925,15 +3008,20 @@ 834F7E202C709AE0003AC386 /* api_tags.h in Headers */, 8396BE7B2935FC2F00CD0580 /* sscf_encrypted.h in Headers */, 83FBD506235D31F800D35BCD /* riff_ogg_streamfile.h in Headers */, + 83B73C3F2D8FF15700A57F08 /* mio_xerisa.h in Headers */, + 83B73C402D8FF15700A57F08 /* mio_erisasound.h in Headers */, + 83B73C412D8FF15700A57F08 /* mio_erisacontext.h in Headers */, + 83B73C422D8FF15700A57F08 /* mio_erisafile.h in Headers */, + 83B73C432D8FF15700A57F08 /* mio_erisamatrix.h in Headers */, 8339B327280FDF4B0076F74B /* text_reader.h in Headers */, - 834F7E002C7093EA003AC386 /* vorbis_custom_data_fsb.h in Headers */, 834F7DD12C7093EA003AC386 /* icelib.h in Headers */, 836F6F9A18BDC2190095E648 /* meta.h in Headers */, 8319017B28F67EE100B70711 /* miniz.h in Headers */, 834F7DA52C7093EA003AC386 /* utkdec.h in Headers */, 834F7ECE2C70A786003AC386 /* mixer_priv.h in Headers */, + 83B73C232D8FEC3A00A57F08 /* vorbis_codebooks_oor.h in Headers */, + 83B73C242D8FEC3A00A57F08 /* oor_helpers.h in Headers */, 833E82FA2A28595A00CD0580 /* bitstream_lsb.h in Headers */, - 834F7DB32C7093EA003AC386 /* coding_utils_samples.h in Headers */, 834F7DF72C7093EA003AC386 /* tac_data.h in Headers */, 834F7DFA2C7093EA003AC386 /* tac_lib.h in Headers */, 83A8BAE625667AA8000F5F3F /* lp_ap_lep_streamfile.h in Headers */, @@ -2972,16 +3060,18 @@ 83256CD728666C620036D9C0 /* synth_mono.h in Headers */, 834F7DCE2C7093EA003AC386 /* clhca.h in Headers */, 8349A91B1FE6258200E26435 /* adx_keys.h in Headers */, - 834F7E012C7093EA003AC386 /* vorbis_custom_data_wwise.h in Headers */, 836F6F4D18BDC2190095E648 /* layout.h in Headers */, 83269DD22399F5DE00F49FE3 /* nus3bank_streamfile.h in Headers */, 83AA5D251F6E2F9C0020821C /* hca_keys.h in Headers */, 834F7E832C709F5B003AC386 /* apa3_streamfile.h in Headers */, 83256CDA28666C620036D9C0 /* l2tables.h in Headers */, 83256CC828666C620036D9C0 /* getbits.h in Headers */, + 83B73C2C2D8FED0500A57F08 /* vorbis_codebooks_wwise.h in Headers */, + 83B73C2D2D8FED0500A57F08 /* vorbis_codebooks_fsb.h in Headers */, 83256CC728666C620036D9C0 /* optimize.h in Headers */, 83031ED3243C50DF00C3F3E0 /* fsb5_streamfile.h in Headers */, 83256CE328666C620036D9C0 /* decode.h in Headers */, + 83B73C542D8FF1E300A57F08 /* vorbis_codebooks.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3179,6 +3269,8 @@ 832BF82821E0514B006F50F1 /* xwma.c in Sources */, 83FC176E23AC58D100E1025F /* csb.c in Sources */, 836F46B32820874D005B9B87 /* esf.c in Sources */, + 83B73C512D8FF1CB00A57F08 /* io_callback_sf.c in Sources */, + 83B73C352D8FEFFD00A57F08 /* ubi_mpeg_decoder.c in Sources */, 8306B0EB20984590000302D4 /* wave_segmented.c in Sources */, 836F6F9F18BDC2190095E648 /* musc.c in Sources */, 8349A9121FE6258200E26435 /* smss.c in Sources */, @@ -3229,6 +3321,7 @@ 836F6F9418BDC2190095E648 /* iivb.c in Sources */, 836F6F8D18BDC2190095E648 /* gsnd.c in Sources */, 836F704518BDC2190095E648 /* wvs.c in Sources */, + 83B73C292D8FEC7B00A57F08 /* oor.c in Sources */, 839FBFFB26C354E70016A78A /* wxd_wxh.c in Sources */, 83EDE5D91A70951A005F5D84 /* btsnd.c in Sources */, 834F7DD72C7093EA003AC386 /* mpc3_decoder.c in Sources */, @@ -3336,6 +3429,7 @@ 835DF7032C79ABB50008814A /* sbuf.c in Sources */, 830EBE142004656E0023AA10 /* ktss.c in Sources */, 836F6F6618BDC2190095E648 /* aax.c in Sources */, + 83B73C272D8FEC5500A57F08 /* vorbis_custom_utils_oor.c in Sources */, 8306B0BC20984552000302D4 /* blocked_vs.c in Sources */, 83AA7F812519C042004C5298 /* silence.c in Sources */, 837CEAF823487F2C00E62A4A /* xwv_valve.c in Sources */, @@ -3430,6 +3524,7 @@ 837CEAD823487E8300E62A4A /* bmp_konami.c in Sources */, 834F7DDC2C7093EA003AC386 /* mpeg_custom_utils.c in Sources */, 834F7E922C70A1AB003AC386 /* vgmstream_init.c in Sources */, + 83B73C332D8FEF7A00A57F08 /* ubi_mpeg_helpers.c in Sources */, 836F700118BDC2190095E648 /* ps2_tec.c in Sources */, 832BF82121E0514B006F50F1 /* zsnd.c in Sources */, 836F703018BDC2190095E648 /* sqex_scd.c in Sources */, @@ -3486,8 +3581,9 @@ 834F7CFD2C70834D003AC386 /* nxof.c in Sources */, 836F6FC718BDC2190095E648 /* pona.c in Sources */, 8306B0B820984552000302D4 /* blocked_ws_aud.c in Sources */, + 83B73C5C2D8FF37700A57F08 /* codec_info.c in Sources */, + 83B73C5D2D8FF37700A57F08 /* api_libsf_cache.c in Sources */, 834F7D252C7088B9003AC386 /* cbx.c in Sources */, - 836F6FE618BDC2190095E648 /* ps2_mcg.c in Sources */, 83AA5D241F6E2F9C0020821C /* awc.c in Sources */, 8349A8E91FE6253900E26435 /* blocked_ea_1snh.c in Sources */, 8306B0E620984590000302D4 /* msb_msh.c in Sources */, @@ -3520,6 +3616,7 @@ 83CBF5432D46339200AA2D75 /* skex.c in Sources */, 834F7E182C709A1D003AC386 /* ea_schl_standard.c in Sources */, 836F6FCD18BDC2190095E648 /* ps2_ass.c in Sources */, + 83B73C252D8FEC3A00A57F08 /* oor_helpers.c in Sources */, 83CBF5412D4631F300AA2D75 /* i3ds.c in Sources */, 8349A90B1FE6258200E26435 /* pcm_kceje.c in Sources */, 836F6F4A18BDC2190095E648 /* interleave.c in Sources */, @@ -3541,12 +3638,15 @@ 834D3A6E19F47C98001C54F6 /* g1l.c in Sources */, 832BF82A21E0514B006F50F1 /* vs_square.c in Sources */, 8349A9091FE6258200E26435 /* pc_ast.c in Sources */, + 83B73C442D8FF15700A57F08 /* mio_erisacontext.c in Sources */, + 83B73C452D8FF15700A57F08 /* mio_erisafile.c in Sources */, + 83B73C462D8FF15700A57F08 /* mio_erisamatrix.c in Sources */, + 83B73C472D8FF15700A57F08 /* mio_erisasound.c in Sources */, 834F7DEF2C7093EA003AC386 /* ptadpcm_decoder.c in Sources */, - 832BF81F21E0514B006F50F1 /* ps2_va3.c in Sources */, + 832BF81F21E0514B006F50F1 /* va3.c in Sources */, 8349A91C1FE6258200E26435 /* mogg.c in Sources */, 834FE0F5215C79ED000A5D3D /* wav2.c in Sources */, 836F703D18BDC2190095E648 /* mus_krome.c in Sources */, - 836F700D18BDC2190095E648 /* ps2_wmus.c in Sources */, 831BA61C1EAC61A500CF89B0 /* sndx.c in Sources */, 836F6F9618BDC2190095E648 /* lsf.c in Sources */, 834F7E7E2C709E76003AC386 /* ongakukan_adp_decoder.c in Sources */, @@ -3585,6 +3685,7 @@ 836F702A18BDC2190095E648 /* sd9.c in Sources */, 836F6FB418BDC2190095E648 /* ngc_nst_dsp.c in Sources */, 834F7DB92C7093EA003AC386 /* derf_decoder.c in Sources */, + 83B73C4B2D8FF19800A57F08 /* mio.c in Sources */, 836F6FDB18BDC2190095E648 /* ps2_hsf.c in Sources */, 836F6FF618BDC2190095E648 /* ster.c in Sources */, 834F7E0D2C7093EA003AC386 /* xa_decoder.c in Sources */, @@ -3610,6 +3711,7 @@ 834F7D0B2C7085EB003AC386 /* ea_eaac_standard.c in Sources */, 834FE0FA215C79ED000A5D3D /* nus3bank.c in Sources */, 8306B0B220984552000302D4 /* blocked_mxch.c in Sources */, + 83B73C492D8FF17900A57F08 /* mio_decoder.c in Sources */, 834F7DBC2C7093EA003AC386 /* ea_mt_decoder.c in Sources */, 837CEAFA23487F2C00E62A4A /* xa_04sw.c in Sources */, 836F6F8618BDC2190095E648 /* excitebots.c in Sources */, @@ -3633,6 +3735,7 @@ 831BA6211EAC61A500CF89B0 /* pasx.c in Sources */, 832BF82621E0514B006F50F1 /* nwav.c in Sources */, 8349A8E81FE6253900E26435 /* blocked_dec.c in Sources */, + 83B73C552D8FF1E300A57F08 /* vorbis_codebooks.c in Sources */, 834F7EDA2C70A786003AC386 /* seek.c in Sources */, 834F7DBF2C7093EA003AC386 /* fadpcm_decoder.c in Sources */, 834F7DCC2C7093EA003AC386 /* g7221_decoder.c in Sources */, @@ -3644,6 +3747,7 @@ 8306B0B620984552000302D4 /* blocked_hwas.c in Sources */, 836F6FC218BDC2190095E648 /* pc_mxst.c in Sources */, 8375737621F950ED00F01AF5 /* gin.c in Sources */, + 83B73C572D8FF27000A57F08 /* 2dx.c in Sources */, 836F6FC918BDC2190095E648 /* 2pfs.c in Sources */, 83AFABBC23795202002F3947 /* xssb.c in Sources */, 836F704818BDC2190095E648 /* xbox_ims.c in Sources */, @@ -3651,7 +3755,7 @@ 836F6F7518BDC2190095E648 /* bnsf.c in Sources */, 836F704318BDC2190095E648 /* wpd.c in Sources */, 8349A9081FE6258200E26435 /* ezw.c in Sources */, - 836F6FD918BDC2190095E648 /* ps2_gcm.c in Sources */, + 836F6FD918BDC2190095E648 /* mcg.c in Sources */, 83A21F88201D8981000F04B9 /* ogg_vorbis.c in Sources */, 837CEAF923487F2C00E62A4A /* xavs.c in Sources */, 836F6F8E18BDC2190095E648 /* halpst.c in Sources */, diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_decode_base.c b/Frameworks/vgmstream/vgmstream/src/base/api_decode_base.c index 09ce3d4e9..6a8c4d074 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_decode_base.c +++ b/Frameworks/vgmstream/vgmstream/src/base/api_decode_base.c @@ -1,13 +1,23 @@ #include "api_internal.h" #include "mixing.h" -#define INTERNAL_BUF_SAMPLES 1024 LIBVGMSTREAM_API uint32_t libvgmstream_get_version(void) { return (LIBVGMSTREAM_API_VERSION_MAJOR << 24) | (LIBVGMSTREAM_API_VERSION_MINOR << 16) | (LIBVGMSTREAM_API_VERSION_PATCH << 0); } +LIBVGMSTREAM_API libvgmstream_t* libvgmstream_create(libstreamfile_t* libsf, int subsong, libvgmstream_config_t* vcfg) { + libvgmstream_t* vgmstream = libvgmstream_init(); + libvgmstream_setup(vgmstream, vcfg); + int err = libvgmstream_open_stream(vgmstream, libsf, subsong); + if (err < 0) { + libvgmstream_free(vgmstream); + return NULL; + } + + return vgmstream; +} LIBVGMSTREAM_API libvgmstream_t* libvgmstream_init(void) { libvgmstream_t* lib = NULL; @@ -48,57 +58,79 @@ LIBVGMSTREAM_API void libvgmstream_free(libvgmstream_t* lib) { free(lib); } +// TODO: allow calling after load LIBVGMSTREAM_API void libvgmstream_setup(libvgmstream_t* lib, libvgmstream_config_t* cfg) { if (!lib || !lib->priv) return; libvgmstream_priv_t* priv = lib->priv; + + // Can only apply once b/c some options modify the internal mixing chain and there is no clean way to + // reset the stream when txtp also manipulates it (maybe could add some flag per mixing item) + if (priv->setup_done) + return; + + // allow overwritting current config, though will only apply to next load + //if (priv->config_loaded) + // return; + if (!cfg) { memset(&priv->cfg , 0, sizeof(libvgmstream_config_t)); - priv->cfg.loop_count = 1; //TODO: loop 0 means no loop (improve detection) + priv->config_loaded = false; } else { + priv->cfg = *cfg; + priv->config_loaded = true; } - //TODO validate, etc + //TODO validate, etc (for now most incorrect values are ignored) + + // apply now if possible to update format info + if (priv->vgmstream) { + api_apply_config(priv); + } } -void libvgmstream_priv_reset(libvgmstream_priv_t* priv, bool reset_buf) { +void libvgmstream_priv_reset(libvgmstream_priv_t* priv, bool full) { //memset(&priv->cfg, 0, sizeof(libvgmstream_config_t)); //config is always valid - memset(&priv->fmt, 0, sizeof(libvgmstream_format_t)); - memset(&priv->dec, 0, sizeof(libvgmstream_decoder_t)); //memset(&priv->pos, 0, sizeof(libvgmstream_priv_position_t)); //position info is updated on open - - if (reset_buf) { - free(priv->buf.data); + memset(&priv->dec, 0, sizeof(libvgmstream_decoder_t)); + + if (full) { + free(priv->buf.data); //TODO memset(&priv->buf, 0, sizeof(libvgmstream_priv_buf_t)); + memset(&priv->fmt, 0, sizeof(libvgmstream_format_t)); + } + else { + priv->buf.consumed = priv->buf.samples; } priv->pos.current = 0; priv->decode_done = false; } -libvgmstream_sample_t api_get_output_sample_type(libvgmstream_priv_t* priv) { +libvgmstream_sfmt_t api_get_output_sample_type(libvgmstream_priv_t* priv) { VGMSTREAM* v = priv->vgmstream; sfmt_t format = mixing_get_output_sample_type(v); switch(format) { - case SFMT_S16: return LIBVGMSTREAM_SAMPLE_PCM16; - case SFMT_FLT: return LIBVGMSTREAM_SAMPLE_FLOAT; + case SFMT_S16: return LIBVGMSTREAM_SFMT_PCM16; + case SFMT_FLT: return LIBVGMSTREAM_SFMT_FLOAT; + case SFMT_F32: return LIBVGMSTREAM_SFMT_FLOAT; //shouldn't happen? default: return 0x00; //??? } } -int api_get_sample_size(libvgmstream_sample_t sample_type) { - switch(sample_type) { - case LIBVGMSTREAM_SAMPLE_PCM24: - case LIBVGMSTREAM_SAMPLE_PCM32: - case LIBVGMSTREAM_SAMPLE_FLOAT: +int api_get_sample_size(libvgmstream_sfmt_t sample_format) { + switch(sample_format) { + //case LIBVGMSTREAM_SFMT_PCM24: + //case LIBVGMSTREAM_SFMT_PCM32: + case LIBVGMSTREAM_SFMT_FLOAT: return 0x04; - case LIBVGMSTREAM_SAMPLE_PCM16: + case LIBVGMSTREAM_SFMT_PCM16: default: return 0x02; } diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_decode_open.c b/Frameworks/vgmstream/vgmstream/src/base/api_decode_open.c index 5c6e2a7e7..0e249675d 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_decode_open.c +++ b/Frameworks/vgmstream/vgmstream/src/base/api_decode_open.c @@ -3,18 +3,6 @@ #include "mixing.h" -static void load_vgmstream(libvgmstream_priv_t* priv, libvgmstream_options_t* opt) { - STREAMFILE* sf_api = open_api_streamfile(opt->libsf); - if (!sf_api) - return; - - //TODO: handle internal format_id - - sf_api->stream_index = opt->subsong_index; - priv->vgmstream = init_vgmstream_from_STREAMFILE(sf_api); - close_streamfile(sf_api); -} - static void apply_config(libvgmstream_priv_t* priv) { libvgmstream_config_t* cfg = &priv->cfg; @@ -36,23 +24,50 @@ static void apply_config(libvgmstream_priv_t* priv) { if (!vcfg.allow_play_forever) vcfg.play_forever = 0; + // Traditionally in CLI loop_count = 0 removes loops but this is pretty odd for a lib + // (calling _setup with nothing set would remove most audio). + // For now loop_count 0 is set to 1, and loop_count <0 is assumed to be same 0 + if (vcfg.loop_count == 0) { + vcfg.loop_count = 1; + } else if (vcfg.loop_count < 0) + vcfg.loop_count = 0; + vgmstream_apply_config(priv->vgmstream, &vcfg); } -static void prepare_mixing(libvgmstream_priv_t* priv, libvgmstream_options_t* opt) { +static void prepare_mixing(libvgmstream_priv_t* priv) { + libvgmstream_config_t* cfg = &priv->cfg; + /* enable after config but before outbuf */ - if (priv->cfg.auto_downmix_channels) { - vgmstream_mixing_autodownmix(priv->vgmstream, priv->cfg.auto_downmix_channels); + if (cfg->auto_downmix_channels) { + vgmstream_mixing_autodownmix(priv->vgmstream, cfg->auto_downmix_channels); } - else if (opt && opt->stereo_track >= 1) { - vgmstream_mixing_stereo_only(priv->vgmstream, opt->stereo_track - 1); + else if (cfg->stereo_track >= 1) { + vgmstream_mixing_stereo_only(priv->vgmstream, cfg->stereo_track - 1); } - if (priv->cfg.force_pcm16) { - mixing_macro_output_sample_format(priv->vgmstream, SFMT_S16); + if (cfg->force_sfmt) { + // external force + sfmt_t force_sfmt = SFMT_NONE; + switch(cfg->force_sfmt) { + case LIBVGMSTREAM_SFMT_PCM16: force_sfmt = SFMT_S16; break; + case LIBVGMSTREAM_SFMT_FLOAT: force_sfmt = SFMT_FLT; break; + default: break; + } + + mixing_macro_output_sample_format(priv->vgmstream, force_sfmt); } - else if (priv->cfg.force_float) { - mixing_macro_output_sample_format(priv->vgmstream, SFMT_FLT); + else { + // internal force, swap certain internal bufs into standard output + sfmt_t force_sfmt = SFMT_NONE; + + sfmt_t input_sfmt = mixing_get_input_sample_type(priv->vgmstream); + switch(input_sfmt) { + case SFMT_F32: force_sfmt = SFMT_FLT; break; + default: break; + } + + mixing_macro_output_sample_format(priv->vgmstream, force_sfmt); } vgmstream_mixing_enable(priv->vgmstream, INTERNAL_BUF_SAMPLES, NULL /*&input_channels*/, NULL /*&output_channels*/); @@ -76,11 +91,11 @@ static void update_format_info(libvgmstream_priv_t* priv) { fmt->channels = v->channels; fmt->input_channels = 0; - vgmstream_mixing_enable(v, 0, &fmt->input_channels, &fmt->channels); + vgmstream_mixing_enable(v, 0, &fmt->input_channels, &fmt->channels); //query fmt->channel_layout = v->channel_layout; - fmt->sample_type = api_get_output_sample_type(priv); - fmt->sample_size = api_get_sample_size(fmt->sample_type); + fmt->sample_format = api_get_output_sample_type(priv); + fmt->sample_size = api_get_sample_size(fmt->sample_format); fmt->sample_rate = v->sample_rate; @@ -105,26 +120,58 @@ static void update_format_info(libvgmstream_priv_t* priv) { } } -LIBVGMSTREAM_API int libvgmstream_open_stream(libvgmstream_t* lib, libvgmstream_options_t* opt) { - if (!lib ||!lib->priv) - return LIBVGMSTREAM_ERROR_GENERIC; - if (!opt || !opt->libsf || opt->subsong_index < 0) +// apply config if data + config is loaded and not already loaded +void api_apply_config(libvgmstream_priv_t* priv) { + if (priv->setup_done) + return; + if (!priv->vgmstream) + return; + + apply_config(priv); + prepare_mixing(priv); + + update_position(priv); + update_format_info(priv); + + priv->setup_done = true; +} + +static void load_vgmstream(libvgmstream_priv_t* priv, libstreamfile_t* libsf, int subsong_index) { + STREAMFILE* sf_api = open_api_streamfile(libsf); + if (!sf_api) + return; + + //TODO: handle format_id + + sf_api->stream_index = subsong_index; + priv->vgmstream = init_vgmstream_from_STREAMFILE(sf_api); + close_streamfile(sf_api); +} + +LIBVGMSTREAM_API int libvgmstream_open_stream(libvgmstream_t* lib, libstreamfile_t* libsf, int subsong_index) { + if (!lib ||!lib->priv || !libsf) return LIBVGMSTREAM_ERROR_GENERIC; // close loaded song if any + reset libvgmstream_close_stream(lib); libvgmstream_priv_t* priv = lib->priv; + if (subsong_index < 0) + return LIBVGMSTREAM_ERROR_GENERIC; - load_vgmstream(priv, opt); + load_vgmstream(priv, libsf, subsong_index); if (!priv->vgmstream) return LIBVGMSTREAM_ERROR_GENERIC; - apply_config(priv); - prepare_mixing(priv, opt); - update_position(priv); - - update_format_info(priv); + // apply now if possible to update format info + if (priv->config_loaded) { + api_apply_config(priv); + } + else { + // no config: just update info (apply_config will be called later) + update_position(priv); + update_format_info(priv); + } return LIBVGMSTREAM_OK; } @@ -138,6 +185,8 @@ LIBVGMSTREAM_API void libvgmstream_close_stream(libvgmstream_t* lib) { close_vgmstream(priv->vgmstream); priv->vgmstream = NULL; + priv->setup_done = false; + //priv->config_loaded = false; // loaded config still applies (_close is also called on _open) libvgmstream_priv_reset(priv, true); } diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_decode_play.c b/Frameworks/vgmstream/vgmstream/src/base/api_decode_play.c index 9441e98ef..b4504c9f4 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_decode_play.c +++ b/Frameworks/vgmstream/vgmstream/src/base/api_decode_play.c @@ -1,6 +1,7 @@ #include "api_internal.h" #include "mixing.h" #include "render.h" +#include "../util/log.h" static bool reset_buf(libvgmstream_priv_t* priv) { @@ -46,15 +47,16 @@ static void update_buf(libvgmstream_priv_t* priv, int samples_done) { priv->buf.bytes = samples_done * priv->buf.sample_size * priv->buf.channels; //priv->buf.consumed = 0; //external + // mark done if this buf reached EOF if (!priv->pos.play_forever) { - priv->decode_done = (priv->pos.current >= priv->pos.play_samples); priv->pos.current += samples_done; + priv->decode_done = (priv->pos.current >= priv->pos.play_samples); } } // update decoder info based on last render, though at the moment it's all fixed -static void update_decoder_info(libvgmstream_priv_t* priv, int samples_done) { +static void update_decoder_info(libvgmstream_priv_t* priv) { // output copy priv->dec.buf = priv->buf.data; @@ -68,6 +70,13 @@ LIBVGMSTREAM_API int libvgmstream_render(libvgmstream_t* lib) { return LIBVGMSTREAM_ERROR_GENERIC; libvgmstream_priv_t* priv = lib->priv; + + // setup if not called (mainly to make sure mixing is enabled) //TODO: handle internally + // (for cases where _open_stream is called but not _setup) + if (!priv->setup_done) { + api_apply_config(priv); + } + if (priv->decode_done) return LIBVGMSTREAM_ERROR_GENERIC; @@ -84,7 +93,7 @@ LIBVGMSTREAM_API int libvgmstream_render(libvgmstream_t* lib) { int decoded = render_main(&ssrc, priv->vgmstream); update_buf(priv, decoded); - update_decoder_info(priv, decoded); + update_decoder_info(priv); return LIBVGMSTREAM_OK; } @@ -161,6 +170,10 @@ LIBVGMSTREAM_API void libvgmstream_seek(libvgmstream_t* lib, int64_t sample) { seek_vgmstream(priv->vgmstream, sample); priv->pos.current = priv->vgmstream->pstate.play_position; + + // update flags just in case + update_buf(priv, 0); + update_decoder_info(priv); } diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_helpers.c b/Frameworks/vgmstream/vgmstream/src/base/api_helpers.c index e8155de48..e669df4ad 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_helpers.c +++ b/Frameworks/vgmstream/vgmstream/src/base/api_helpers.c @@ -12,28 +12,33 @@ static int get_internal_log_level(libvgmstream_loglevel_t level) { } } -LIBVGMSTREAM_API void libvgmstream_set_log(libvgmstream_log_t* cfg) { - if (!cfg) - return; - - int ilevel = get_internal_log_level(cfg->level); - if (cfg->stdout_callback) { - //vgmstream_set_log_stdout(ilevel); - vgm_log_set_callback(NULL, ilevel, 1, NULL); +LIBVGMSTREAM_API void libvgmstream_set_log(libvgmstream_loglevel_t level, void (*callback)(int level, const char* str)) { + int ilevel = get_internal_log_level(level); + if (callback) { + vgm_log_set_callback(NULL, ilevel, 0, callback); } else { - //vgmstream_set_log_callback(ilevel, cfg->callback); - vgm_log_set_callback(NULL, ilevel, 0, cfg->callback); + vgm_log_set_callback(NULL, ilevel, 1, NULL); } } -LIBVGMSTREAM_API const char** libvgmstream_get_extensions(size_t* size) { - return vgmstream_get_formats(size); +LIBVGMSTREAM_API const char** libvgmstream_get_extensions(int* size) { + if (!size) + return NULL; + size_t tmp = 0; + const char** list = vgmstream_get_formats(&tmp); + *size = tmp; + return list; } -LIBVGMSTREAM_API const char** libvgmstream_get_common_extensions(size_t* size) { - return vgmstream_get_common_formats(size); +LIBVGMSTREAM_API const char** libvgmstream_get_common_extensions(int* size) { + if (!size) + return NULL; + size_t tmp = 0; + const char** list = vgmstream_get_common_formats(&tmp); + *size = tmp; + return list; } diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_internal.h b/Frameworks/vgmstream/vgmstream/src/base/api_internal.h index 1472d4ba4..0f80fcc11 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_internal.h +++ b/Frameworks/vgmstream/vgmstream/src/base/api_internal.h @@ -33,31 +33,36 @@ typedef struct { } libvgmstream_priv_buf_t; +// used to calculate and stop stream (to be removed once VGMSTREAM can stop on its own) typedef struct { int64_t play_forever; int64_t play_samples; int64_t current; } libvgmstream_priv_position_t; -/* vgmstream context/handle */ +// vgmstream context/handle typedef struct { - libvgmstream_format_t fmt; // externally exposed - libvgmstream_decoder_t dec; // externally exposed + // externally exposed to API + libvgmstream_format_t fmt; + libvgmstream_decoder_t dec; - libvgmstream_config_t cfg; // internal copy + // internals + libvgmstream_config_t cfg; VGMSTREAM* vgmstream; - libvgmstream_priv_buf_t buf; libvgmstream_priv_position_t pos; + bool config_loaded; + bool setup_done; bool decode_done; } libvgmstream_priv_t; -void libvgmstream_priv_reset(libvgmstream_priv_t* priv, bool reset_buf); -libvgmstream_sample_t api_get_output_sample_type(libvgmstream_priv_t* priv); -int api_get_sample_size(libvgmstream_sample_t sample_type); +void libvgmstream_priv_reset(libvgmstream_priv_t* priv, bool full); +libvgmstream_sfmt_t api_get_output_sample_type(libvgmstream_priv_t* priv); +int api_get_sample_size(libvgmstream_sfmt_t sample_format); +void api_apply_config(libvgmstream_priv_t* priv); STREAMFILE* open_api_streamfile(libstreamfile_t* libsf); diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_libsf.c b/Frameworks/vgmstream/vgmstream/src/base/api_libsf.c index a81fe7c30..4587b4a40 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_libsf.c +++ b/Frameworks/vgmstream/vgmstream/src/base/api_libsf.c @@ -5,63 +5,23 @@ static libstreamfile_t* libstreamfile_from_streamfile(STREAMFILE* sf); /* libstreamfile_t for external use, as a default implementation calling some internal SF */ typedef struct { - int64_t offset; int64_t size; STREAMFILE* sf; char name[PATH_LIMIT]; } libsf_priv_t; -static int libsf_read(void* user_data, uint8_t* dst, int dst_size) { +static int libsf_read(void* user_data, uint8_t* dst, int64_t offset, int length) { libsf_priv_t* priv = user_data; - if (!priv || !dst) - return 0; - - int bytes = priv->sf->read(priv->sf, dst, priv->offset, dst_size); - priv->offset += bytes; - - return bytes; -} - -static int64_t libsf_seek(void* user_data, int64_t offset, int whence) { - libsf_priv_t* priv = user_data; - if (!priv) - return -1; - - switch (whence) { - case LIBSTREAMFILE_SEEK_SET: /* absolute */ - break; - case LIBSTREAMFILE_SEEK_CUR: /* relative to current */ - offset += priv->offset; - break; - case LIBSTREAMFILE_SEEK_END: /* relative to file end (should be negative) */ - offset += priv->size; - break; - default: - break; - } - - /* clamp offset like fseek */ - if (offset > priv->size) - offset = priv->size; - else if (offset < 0) - offset = 0; - - /* main seek */ - priv->offset = offset; - return 0; + return priv->sf->read(priv->sf, dst, offset, length); } static int64_t libsf_get_size(void* user_data) { libsf_priv_t* priv = user_data; - if (!priv) - return 0; - return priv->size; + return priv->sf->get_size(priv->sf); } static const char* libsf_get_name(void* user_data) { libsf_priv_t* priv = user_data; - if (!priv) - return NULL; if (priv->name[0] == '\0') { priv->sf->get_name(priv->sf, priv->name, sizeof(priv->name)); @@ -72,7 +32,8 @@ static const char* libsf_get_name(void* user_data) { static libstreamfile_t* libsf_open(void* user_data, const char* filename) { libsf_priv_t* priv = user_data; - if (!priv || !priv->sf || !filename) + + if (!filename) return NULL; STREAMFILE* sf = priv->sf->open(priv->sf, filename, 0); @@ -104,14 +65,11 @@ static libstreamfile_t* libstreamfile_from_streamfile(STREAMFILE* sf) { if (!sf) return NULL; - libstreamfile_t* libsf = NULL; libsf_priv_t* priv = NULL; - - libsf = calloc(1, sizeof(libstreamfile_t)); + libstreamfile_t* libsf = calloc(1, sizeof(libstreamfile_t)); if (!libsf) goto fail; libsf->read = libsf_read; - libsf->seek = libsf_seek; libsf->get_size = libsf_get_size; libsf->get_name = libsf_get_name; libsf->open = libsf_open; diff --git a/Frameworks/vgmstream/vgmstream/src/base/api_libsf_cache.c b/Frameworks/vgmstream/vgmstream/src/base/api_libsf_cache.c index e73b3108a..f017a812b 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/api_libsf_cache.c +++ b/Frameworks/vgmstream/vgmstream/src/base/api_libsf_cache.c @@ -18,10 +18,10 @@ typedef struct { char name[PATH_LIMIT]; } cache_priv_t; -static int cache_read(void* user_data, uint8_t* dst, int dst_size) { +static int cache_read(void* user_data, uint8_t* dst, int64_t offset, int length) { cache_priv_t* priv = user_data; size_t read_total = 0; - if (!dst || dst_size <= 0) + if (!dst || length <= 0 || offset < 0) return 0; /* is the part of the requested length in the buffer? */ @@ -30,19 +30,22 @@ static int cache_read(void* user_data, uint8_t* dst, int dst_size) { int buf_into = (int)(priv->offset - priv->buf_offset); buf_limit = priv->valid_size - buf_into; - if (buf_limit > dst_size) - buf_limit = dst_size; + if (buf_limit > length) + buf_limit = length; memcpy(dst, priv->buf + buf_into, buf_limit); read_total += buf_limit; - dst_size -= buf_limit; + length -= buf_limit; priv->offset += buf_limit; dst += buf_limit; } + /* possible if all data was copied to buf and FD closed */ + if (!priv->libsf) + return read_total; /* read the rest of the requested length */ - while (dst_size > 0) { + while (length > 0) { size_t buf_limit; /* ignore requests at EOF */ @@ -52,18 +55,15 @@ static int cache_read(void* user_data, uint8_t* dst, int dst_size) { break; } - /* position to new offset */ - priv->libsf->seek(priv, priv->offset, 0); - /* fill the buffer (offset now is beyond buf_offset) */ priv->buf_offset = priv->offset; - priv->valid_size = priv->libsf->read(priv, priv->buf, priv->buf_size); + priv->valid_size = priv->libsf->read(priv, priv->buf, priv->buf_offset, priv->buf_size); /* decide how much must be read this time */ - if (dst_size > priv->buf_size) + if (length > priv->buf_size) buf_limit = priv->buf_size; else - buf_limit = dst_size; + buf_limit = length; /* give up on partial reads (EOF) */ if (priv->valid_size < buf_limit) { @@ -77,40 +77,14 @@ static int cache_read(void* user_data, uint8_t* dst, int dst_size) { memcpy(dst, priv->buf, buf_limit); priv->offset += buf_limit; read_total += buf_limit; - dst_size -= buf_limit; + length -= buf_limit; dst += buf_limit; } + priv->offset = offset; /* last fread offset */ return read_total; } -static int64_t cache_seek(void* user_data, int64_t offset, int whence) { - cache_priv_t* priv = user_data; - - switch (whence) { - case LIBSTREAMFILE_SEEK_SET: /* absolute */ - break; - case LIBSTREAMFILE_SEEK_CUR: /* relative to current */ - offset += priv->offset; - break; - case LIBSTREAMFILE_SEEK_END: /* relative to file end (should be negative) */ - offset += priv->file_size; - break; - default: - break; - } - - /* clamp offset like fseek */ - if (offset > priv->file_size) - offset = priv->file_size; - else if (offset < 0) - offset = 0; - - /* main seek */ - priv->offset = offset; - return 0; -} - static int64_t cache_get_size(void* user_data) { cache_priv_t* priv = user_data; return priv->file_size; @@ -168,7 +142,6 @@ LIBVGMSTREAM_API libstreamfile_t* libstreamfile_open_buffered(libstreamfile_t* e if (!libsf) goto fail; libsf->read = cache_read; - libsf->seek = cache_seek; libsf->get_size = cache_get_size; libsf->get_name = cache_get_name; libsf->open = cache_open; diff --git a/Frameworks/vgmstream/vgmstream/src/base/codec_info.c b/Frameworks/vgmstream/vgmstream/src/base/codec_info.c new file mode 100644 index 000000000..a78bc829c --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/base/codec_info.c @@ -0,0 +1,43 @@ +#include "codec_info.h" + +//TODO: move to root folder? +extern const codec_info_t ka1a_decoder; +extern const codec_info_t ubimpeg_decoder; +extern const codec_info_t hca_decoder; +#ifdef VGM_USE_VORBIS +extern const codec_info_t vorbis_custom_decoder; +#endif +extern const codec_info_t tac_decoder; +extern const codec_info_t compresswave_decoder; +extern const codec_info_t speex_decoder; +extern const codec_info_t imuse_decoder; +extern const codec_info_t mio_decoder; + +const codec_info_t* codec_get_info(VGMSTREAM* v) { + switch(v->coding_type) { + case coding_CRI_HCA: + return &hca_decoder; + case coding_KA1A: + return &ka1a_decoder; + case coding_UBI_MPEG: + return &ubimpeg_decoder; +#ifdef VGM_USE_VORBIS + case coding_VORBIS_custom: + return &vorbis_custom_decoder; +#endif + case coding_TAC: + return &tac_decoder; + case coding_COMPRESSWAVE: + return &compresswave_decoder; +#ifdef VGM_USE_SPEEX + case coding_SPEEX: + return &speex_decoder; +#endif + case coding_IMUSE: + return &imuse_decoder; + case coding_MIO: + return &mio_decoder; + default: + return NULL; + } +} diff --git a/Frameworks/vgmstream/vgmstream/src/base/codec_info.h b/Frameworks/vgmstream/vgmstream/src/base/codec_info.h new file mode 100644 index 000000000..85c40976b --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/base/codec_info.h @@ -0,0 +1,33 @@ +#ifndef _CODEC_INFO_H +#define _CODEC_INFO_H + +#include +#include +#include "../vgmstream.h" +#include "../base/sbuf.h" + +/* Class-like definition for codecs. + */ +typedef struct { + //int (*init)(); + sfmt_t sample_type; // fixed for most cases; if not set will be assumed to be PCM16 + sfmt_t (*get_sample_type)(VGMSTREAM* v); //variable for codecs with variations depending on data + + bool (*decode_frame)(VGMSTREAM* v); + void (*free)(void* codec_data); + void (*reset)(void* codec_data); + void (*seek)(VGMSTREAM* v, int32_t num_sample); + + // info for vgmstream + //uint32_t flags; + // alloc size of effect's private data (don't set to manage manually in init/free) + //int priv_size; + + //int sample_type; + //int get_sample_type(); +} codec_info_t; + + +const codec_info_t* codec_get_info(VGMSTREAM* v); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/base/decode.c b/Frameworks/vgmstream/vgmstream/src/base/decode.c index 52b5d09bb..97d382d55 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/decode.c +++ b/Frameworks/vgmstream/vgmstream/src/base/decode.c @@ -5,6 +5,7 @@ #include "mixing.h" #include "plugins.h" #include "sbuf.h" +#include "codec_info.h" #include "../util/log.h" #include "decode_state.h" @@ -38,15 +39,17 @@ void decode_free(VGMSTREAM* vgmstream) { if (!vgmstream->codec_data) return; + + const codec_info_t* codec_info = codec_get_info(vgmstream); + if (codec_info) { + codec_info->free(vgmstream->codec_data); + return; + } #ifdef VGM_USE_VORBIS if (vgmstream->coding_type == coding_OGG_VORBIS) { free_ogg_vorbis(vgmstream->codec_data); } - - if (vgmstream->coding_type == coding_VORBIS_custom) { - free_vorbis_custom(vgmstream->codec_data); - } #endif if (vgmstream->coding_type == coding_CIRCUS_VQ) { @@ -57,14 +60,6 @@ void decode_free(VGMSTREAM* vgmstream) { free_relic(vgmstream->codec_data); } - if (vgmstream->coding_type == coding_CRI_HCA) { - free_hca(vgmstream->codec_data); - } - - if (vgmstream->coding_type == coding_TAC) { - free_tac(vgmstream->codec_data); - } - if (vgmstream->coding_type == coding_ICE_RANGE || vgmstream->coding_type == coding_ICE_DCT) { free_ice(vgmstream->codec_data); @@ -74,26 +69,14 @@ void decode_free(VGMSTREAM* vgmstream) { free_ubi_adpcm(vgmstream->codec_data); } - if (vgmstream->coding_type == coding_IMUSE) { - free_imuse(vgmstream->codec_data); - } - if (vgmstream->coding_type == coding_ONGAKUKAN_ADPCM) { free_ongakukan_adp(vgmstream->codec_data); } - if (vgmstream->coding_type == coding_COMPRESSWAVE) { - free_compresswave(vgmstream->codec_data); - } - if (vgmstream->coding_type == coding_EA_MT) { free_ea_mt(vgmstream->codec_data, vgmstream->channels); } - if (vgmstream->coding_type == coding_KA1A) { - free_ka1a(vgmstream->codec_data); - } - #ifdef VGM_USE_FFMPEG if (vgmstream->coding_type == coding_FFmpeg) { free_ffmpeg(vgmstream->codec_data); @@ -140,12 +123,6 @@ void decode_free(VGMSTREAM* vgmstream) { } #endif -#ifdef VGM_USE_SPEEX - if (vgmstream->coding_type == coding_SPEEX) { - free_speex(vgmstream->codec_data); - } -#endif - if (vgmstream->coding_type == coding_ACM) { free_acm(vgmstream->codec_data); } @@ -162,6 +139,12 @@ void decode_seek(VGMSTREAM* vgmstream) { if (!vgmstream->codec_data) return; + const codec_info_t* codec_info = codec_get_info(vgmstream); + if (codec_info) { + codec_info->seek(vgmstream, vgmstream->loop_current_sample); + return; + } + if (vgmstream->coding_type == coding_CIRCUS_VQ) { seek_circus_vq(vgmstream->codec_data, vgmstream->loop_current_sample); } @@ -170,14 +153,6 @@ void decode_seek(VGMSTREAM* vgmstream) { seek_relic(vgmstream->codec_data, vgmstream->loop_current_sample); } - if (vgmstream->coding_type == coding_CRI_HCA) { - loop_hca(vgmstream->codec_data, vgmstream->loop_current_sample); - } - - if (vgmstream->coding_type == coding_TAC) { - seek_tac(vgmstream->codec_data, vgmstream->loop_current_sample); - } - if (vgmstream->coding_type == coding_ICE_RANGE || vgmstream->coding_type == coding_ICE_DCT) { seek_ice(vgmstream->codec_data, vgmstream->loop_current_sample); @@ -187,34 +162,18 @@ void decode_seek(VGMSTREAM* vgmstream) { seek_ubi_adpcm(vgmstream->codec_data, vgmstream->loop_current_sample); } - if (vgmstream->coding_type == coding_IMUSE) { - seek_imuse(vgmstream->codec_data, vgmstream->loop_current_sample); - } - if (vgmstream->coding_type == coding_ONGAKUKAN_ADPCM) { seek_ongakukan_adp(vgmstream->codec_data, vgmstream->loop_current_sample); } - if (vgmstream->coding_type == coding_COMPRESSWAVE) { - seek_compresswave(vgmstream->codec_data, vgmstream->loop_current_sample); - } - if (vgmstream->coding_type == coding_EA_MT) { seek_ea_mt(vgmstream, vgmstream->loop_current_sample); } - if (vgmstream->coding_type == coding_KA1A) { - seek_ka1a(vgmstream, vgmstream->loop_current_sample); - } - #ifdef VGM_USE_VORBIS if (vgmstream->coding_type == coding_OGG_VORBIS) { seek_ogg_vorbis(vgmstream->codec_data, vgmstream->loop_current_sample); } - - if (vgmstream->coding_type == coding_VORBIS_custom) { - seek_vorbis_custom(vgmstream, vgmstream->loop_current_sample); - } #endif #ifdef VGM_USE_FFMPEG @@ -241,12 +200,6 @@ void decode_seek(VGMSTREAM* vgmstream) { } #endif -#ifdef VGM_USE_SPEEX - if (vgmstream->coding_type == coding_SPEEX) { - seek_speex(vgmstream, vgmstream->loop_current_sample); - } -#endif - #ifdef VGM_USE_MPEG if (vgmstream->coding_type == coding_MPEG_custom || vgmstream->coding_type == coding_MPEG_ealayer3 || @@ -269,14 +222,16 @@ void decode_reset(VGMSTREAM* vgmstream) { if (!vgmstream->codec_data) return; + const codec_info_t* codec_info = codec_get_info(vgmstream); + if (codec_info) { + codec_info->reset(vgmstream->codec_data); + return; + } + #ifdef VGM_USE_VORBIS if (vgmstream->coding_type == coding_OGG_VORBIS) { reset_ogg_vorbis(vgmstream->codec_data); } - - if (vgmstream->coding_type == coding_VORBIS_custom) { - reset_vorbis_custom(vgmstream); - } #endif if (vgmstream->coding_type == coding_CIRCUS_VQ) { @@ -287,14 +242,6 @@ void decode_reset(VGMSTREAM* vgmstream) { reset_relic(vgmstream->codec_data); } - if (vgmstream->coding_type == coding_CRI_HCA) { - reset_hca(vgmstream->codec_data); - } - - if (vgmstream->coding_type == coding_TAC) { - reset_tac(vgmstream->codec_data); - } - if (vgmstream->coding_type == coding_ICE_RANGE || vgmstream->coding_type == coding_ICE_DCT) { reset_ice(vgmstream->codec_data); @@ -304,26 +251,14 @@ void decode_reset(VGMSTREAM* vgmstream) { reset_ubi_adpcm(vgmstream->codec_data); } - if (vgmstream->coding_type == coding_IMUSE) { - reset_imuse(vgmstream->codec_data); - } - if (vgmstream->coding_type == coding_ONGAKUKAN_ADPCM) { reset_ongakukan_adp(vgmstream->codec_data); } - if (vgmstream->coding_type == coding_COMPRESSWAVE) { - reset_compresswave(vgmstream->codec_data); - } - if (vgmstream->coding_type == coding_EA_MT) { reset_ea_mt(vgmstream); } - if (vgmstream->coding_type == coding_KA1A) { - reset_ka1a(vgmstream->codec_data); - } - #if defined(VGM_USE_MP4V2) && defined(VGM_USE_FDKAAC) if (vgmstream->coding_type == coding_MP4_AAC) { reset_mp4_aac(vgmstream); @@ -364,12 +299,6 @@ void decode_reset(VGMSTREAM* vgmstream) { } #endif -#ifdef VGM_USE_SPEEX - if (vgmstream->coding_type == coding_SPEEX) { - reset_speex(vgmstream->codec_data); - } -#endif - #ifdef VGM_USE_FFMPEG if (vgmstream->coding_type == coding_FFmpeg) { reset_ffmpeg(vgmstream->codec_data); @@ -433,7 +362,6 @@ int decode_get_samples_per_frame(VGMSTREAM* vgmstream) { return 1; #ifdef VGM_USE_VORBIS case coding_OGG_VORBIS: - case coding_VORBIS_custom: #endif #ifdef VGM_USE_MPEG case coding_MPEG_custom: @@ -586,18 +514,12 @@ int decode_get_samples_per_frame(VGMSTREAM* vgmstream) { return 0; /* varies per frame */ case coding_ONGAKUKAN_ADPCM: return 0; /* actually 1. */ - case coding_COMPRESSWAVE: - return 0; /* multiple of 2 */ case coding_EA_MT: return 0; /* 432, but variable in looped files */ case coding_CIRCUS_VQ: return 0; case coding_RELIC: return 0; /* 512 */ - case coding_CRI_HCA: - return 0; /* 1024 - delay/padding (which can be bigger than 1024) */ - case coding_TAC: - return 0; /* 1024 - delay/padding */ case coding_ICE_RANGE: case coding_ICE_DCT: return 0; /* ~100 (range), ~16 (DCT) */ @@ -612,10 +534,6 @@ int decode_get_samples_per_frame(VGMSTREAM* vgmstream) { #ifdef VGM_USE_CELT case coding_CELT_FSB: return 0; /* 512? */ -#endif -#ifdef VGM_USE_SPEEX - case coding_SPEEX: - return 0; #endif default: return 0; @@ -807,12 +725,9 @@ int decode_get_frame_size(VGMSTREAM* vgmstream) { /* UBI_ADPCM: varies per mode? */ /* IMUSE: VBR */ /* EA_MT: VBR, frames of bit counts or PCM frames */ - /* COMPRESSWAVE: VBR/huffman bits */ /* ATRAC9: CBR around 0x100-200 */ /* CELT FSB: varies, usually 0x80-100 */ - /* SPEEX: varies, usually 0x40-60 */ /* TAC: VBR around ~0x200-300 */ - /* Vorbis, MPEG, ACM, etc: varies */ default: /* (VBR or managed by decoder) */ return 0; } @@ -875,6 +790,7 @@ static void decode_frames(sbuf_t* sdst, VGMSTREAM* vgmstream) { decode_state_t* ds = vgmstream->decode_state; sbuf_t* ssrc = &ds->sbuf; + const codec_info_t* codec_info = codec_get_info(vgmstream); // fill the external buf by decoding N times; may read partially that buf while (sdst->filled < sdst->samples) { @@ -882,12 +798,12 @@ static void decode_frames(sbuf_t* sdst, VGMSTREAM* vgmstream) { // decode new frame if prev one was consumed if (ssrc->filled == 0) { bool ok = false; - switch (vgmstream->coding_type) { - case coding_KA1A: - ok = decode_ka1a_frame(vgmstream); - break; - default: - goto decode_fail; + + if (codec_info) { + ok = codec_info->decode_frame(vgmstream); + } + else { + goto decode_fail; } if (!ok) @@ -902,6 +818,9 @@ static void decode_frames(sbuf_t* sdst, VGMSTREAM* vgmstream) { goto decode_fail; } } + else { + num_empty = 0; //reset for discard loops + } if (ds->discard) { // decoder may signal that samples need to be discarded (ex. encoder delay or during loops) @@ -1233,10 +1152,6 @@ void decode_vgmstream(sbuf_t* sdst, VGMSTREAM* vgmstream, int samples_to_do) { case coding_OGG_VORBIS: decode_ogg_vorbis(vgmstream->codec_data, buffer, samples_to_do, vgmstream->channels); break; - - case coding_VORBIS_custom: - decode_vorbis_custom(vgmstream, buffer, samples_to_do, vgmstream->channels); - break; #endif case coding_CIRCUS_VQ: decode_circus_vq(vgmstream->codec_data, buffer, samples_to_do, vgmstream->channels); @@ -1244,12 +1159,6 @@ void decode_vgmstream(sbuf_t* sdst, VGMSTREAM* vgmstream, int samples_to_do) { case coding_RELIC: decode_relic(&vgmstream->ch[0], vgmstream->codec_data, buffer, samples_to_do); break; - case coding_CRI_HCA: - decode_hca(vgmstream->codec_data, buffer, samples_to_do); - break; - case coding_TAC: - decode_tac(vgmstream, buffer, samples_to_do); - break; case coding_ICE_RANGE: case coding_ICE_DCT: decode_ice(vgmstream->codec_data, buffer, samples_to_do); @@ -1482,11 +1391,6 @@ void decode_vgmstream(sbuf_t* sdst, VGMSTREAM* vgmstream, int samples_to_do) { case coding_CELT_FSB: decode_celt_fsb(vgmstream, buffer, samples_to_do, vgmstream->channels); break; -#endif -#ifdef VGM_USE_SPEEX - case coding_SPEEX: - decode_speex(vgmstream, buffer, samples_to_do); - break; #endif case coding_ACM: decode_acm(vgmstream->codec_data, buffer, samples_to_do, vgmstream->channels); @@ -1656,18 +1560,10 @@ void decode_vgmstream(sbuf_t* sdst, VGMSTREAM* vgmstream, int samples_to_do) { decode_ubi_adpcm(vgmstream, buffer, samples_to_do); break; - case coding_IMUSE: - decode_imuse(vgmstream, buffer, samples_to_do); - break; - case coding_ONGAKUKAN_ADPCM: decode_ongakukan_adp(vgmstream, buffer, samples_to_do); break; - case coding_COMPRESSWAVE: - decode_compresswave(vgmstream->codec_data, buffer, samples_to_do); - break; - case coding_EA_MT: for (ch = 0; ch < vgmstream->channels; ch++) { decode_ea_mt(vgmstream, buffer+ch, vgmstream->channels, samples_to_do, ch); diff --git a/Frameworks/vgmstream/vgmstream/src/base/info.c b/Frameworks/vgmstream/vgmstream/src/base/info.c index eea570afc..a374e64f8 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/info.c +++ b/Frameworks/vgmstream/vgmstream/src/base/info.c @@ -330,7 +330,7 @@ static STREAMFILE* get_vgmstream_average_bitrate_channel_streamfile(VGMSTREAM* v } if (vgmstream->coding_type == coding_COMPRESSWAVE) { - return compresswave_get_streamfile(vgmstream->codec_data); + return compresswave_get_streamfile(vgmstream); } #ifdef VGM_USE_VORBIS diff --git a/Frameworks/vgmstream/vgmstream/src/base/mixer.c b/Frameworks/vgmstream/vgmstream/src/base/mixer.c index 272fca0c2..09a77ef90 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/mixer.c +++ b/Frameworks/vgmstream/vgmstream/src/base/mixer.c @@ -116,7 +116,7 @@ void mixer_process(mixer_t* mixer, sbuf_t* sbuf, int32_t current_pos) { setup_mixbuf(mixer, sbuf); - // apply mixing ops in order. channesl in mixersmix may increase or decrease per op + // apply mixing ops in order. channels in mixers may increase or decrease per op (set in sbuf) // - 2ch w/ "1+2,1u" = ch1+ch2, ch1(add and push rest) = 3ch: ch1' ch1+ch2 ch2 // - 2ch w/ "1u" = downmix to 1ch (current_channels decreases once) for (int m = 0; m < mixer->chain_count; m++) { diff --git a/Frameworks/vgmstream/vgmstream/src/base/mixer_ops_fade.c b/Frameworks/vgmstream/vgmstream/src/base/mixer_ops_fade.c index 0591c07e4..c688033ee 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/mixer_ops_fade.c +++ b/Frameworks/vgmstream/vgmstream/src/base/mixer_ops_fade.c @@ -125,8 +125,11 @@ void mixer_op_fade(mixer_t* mixer, mix_op_t* mix) { //TODO optimize for case 0? for (int s = 0; s < smix->filled; s++) { bool fade_applies = get_fade_gain(mix, &new_gain, current_subpos); - if (!fade_applies) //TODO optimize? + if (!fade_applies) { //TODO optimize? + dst += channels; + current_subpos++; continue; + } if (mix->ch_dst < 0) { for (int ch = 0; ch < channels; ch++) { diff --git a/Frameworks/vgmstream/vgmstream/src/base/mixing.c b/Frameworks/vgmstream/vgmstream/src/base/mixing.c index fd7e22aea..8a7806a97 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/mixing.c +++ b/Frameworks/vgmstream/vgmstream/src/base/mixing.c @@ -7,6 +7,7 @@ #include "mixer.h" #include "mixer_priv.h" #include "sbuf.h" +#include "codec_info.h" /* Wrapper/helpers for vgmstream's "mixer", which does main sample buffer transformations */ @@ -143,9 +144,20 @@ void mixing_info(VGMSTREAM* vgmstream, int* p_input_channels, int* p_output_chan } sfmt_t mixing_get_input_sample_type(VGMSTREAM* vgmstream) { + + const codec_info_t* codec_info = codec_get_info(vgmstream); + if (codec_info) { + if (codec_info->sample_type) + return codec_info->sample_type; + if (codec_info->get_sample_type) + return codec_info->get_sample_type(vgmstream); + } + // TODO: on layered/segments, detect biggest value and use that (ex. if one of the layers uses flt > flt) switch(vgmstream->coding_type) { - case coding_KA1A: +#ifdef VGM_USE_VORBIS + case coding_VORBIS_custom: +#endif return SFMT_FLT; default: return SFMT_S16; diff --git a/Frameworks/vgmstream/vgmstream/src/base/mixing_macros.c b/Frameworks/vgmstream/vgmstream/src/base/mixing_macros.c index e54e63dc9..d3f6e4e7e 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/mixing_macros.c +++ b/Frameworks/vgmstream/vgmstream/src/base/mixing_macros.c @@ -569,7 +569,7 @@ void mixing_macro_downmix(VGMSTREAM* vgmstream, int max /*, mapping_t output_map void mixing_macro_output_sample_format(VGMSTREAM* vgmstream, sfmt_t type) { mixer_t* mixer = vgmstream->mixer; - if (!mixer) + if (!mixer || !type) return; // optimization (may skip initializing mixer) @@ -577,4 +577,5 @@ void mixing_macro_output_sample_format(VGMSTREAM* vgmstream, sfmt_t type) { if (input_fmt == type) return; mixer->force_type = type; + mixer->has_non_fade = true; } diff --git a/Frameworks/vgmstream/vgmstream/src/base/sbuf.c b/Frameworks/vgmstream/vgmstream/src/base/sbuf.c index 5f7538ce0..070e22e9b 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/sbuf.c +++ b/Frameworks/vgmstream/vgmstream/src/base/sbuf.c @@ -1,10 +1,16 @@ #include #include -//#include #include "../util.h" #include "sbuf.h" #include "../util/log.h" +// float-to-int modes +//#define PCM16_ROUNDING_LRINT // potentially faster in some systems/compilers and much slower in others +//#define PCM16_ROUNDING_HALF // rounding half + down (vorbis-style), more 'accurate' but slower + +#ifdef PCM16_ROUNDING_HALF +#include +#endif void sbuf_init(sbuf_t* sbuf, sfmt_t format, void* buf, int samples, int channels) { memset(sbuf, 0, sizeof(sbuf_t)); @@ -48,6 +54,8 @@ void* sbuf_get_filled_buf(sbuf_t* sbuf) { } void sbuf_consume(sbuf_t* sbuf, int samples) { + if (samples == 0) //some discards + return; int sample_size = sfmt_get_sample_size(sbuf->fmt); if (sample_size <= 0) //??? return; @@ -67,7 +75,7 @@ void sbuf_consume(sbuf_t* sbuf, int samples) { * alts for more accurate rounding could be: * - (int)floor(f) * - (int)(f < 0 ? f - 0.5f : f + 0.5f) - * - (((int) (f1 + 32768.5)) - 32768) + * - (((int) (f1 + 32767.5)) - 32767) * - etc * but since +-1 isn't really audible we'll just cast, as it's the fastest * @@ -77,22 +85,22 @@ void sbuf_consume(sbuf_t* sbuf, int samples) { * It's slightly faster (~5%) but causes fuzzy PCM<>float<>PCM conversions. */ static inline int float_to_int(float val) { -#if 1 - return (int)val; +#if PCM16_ROUNDING_LRINT + return lrintf(val); #elif defined(_MSC_VER) return (int)val; #else - return lrintf(val); + return (int)val; #endif } static inline int double_to_int(double val) { -#if 1 - return (int)val; +#if PCM16_ROUNDING_LRINT + return lrint(val); #elif defined(_MSC_VER) return (int)val; #else - return lrint(val); + return (int)val; #endif } @@ -122,7 +130,7 @@ void sbuf_copy_to_f32(float* dst, sbuf_t* sbuf) { case SFMT_FLT: { float* src = sbuf->buf; for (int s = 0; s < sbuf->filled * sbuf->channels; s++) { - dst[s] = src[s] * 32768.0f; + dst[s] = src[s] * 32767.0f; } break; } @@ -150,7 +158,7 @@ void sbuf_copy_from_f32(sbuf_t* sbuf, float* src) { case SFMT_FLT: { float* dst = sbuf->buf; for (int s = 0; s < sbuf->filled * sbuf->channels; s++) { - dst[s] = src[s] / 32768.0f; + dst[s] = src[s] / 32767.0f; } break; } @@ -175,23 +183,35 @@ int sbuf_get_copy_max(sbuf_t* sdst, sbuf_t* ssrc) { dst[dst_pos++] = src[src_pos++]; \ } +#define sbuf_copy_segments_internal_f16(dst, src, src_pos, dst_pos, src_max) \ + while (src_pos < src_max) { \ + dst[dst_pos++] = clamp16(float_to_int(src[src_pos++])); \ + } + +#ifdef PCM16_ROUNDING_HALF +#define sbuf_copy_segments_internal_s16(dst, src, src_pos, dst_pos, src_max, value) \ + while (src_pos < src_max) { \ + dst[dst_pos++] = clamp16(float_to_int( floor(src[src_pos++] * value + 0.5f) )); \ + } +#else #define sbuf_copy_segments_internal_s16(dst, src, src_pos, dst_pos, src_max, value) \ while (src_pos < src_max) { \ dst[dst_pos++] = clamp16(float_to_int(src[src_pos++] * value)); \ } +#endif #define sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, value) \ while (src_pos < src_max) { \ - dst[dst_pos++] = float_to_int(src[src_pos++] * value); \ + dst[dst_pos++] = (src[src_pos++] * value); \ } // copy N samples from ssrc into dst (should be clamped externally) void sbuf_copy_segments(sbuf_t* sdst, sbuf_t* ssrc, int samples_copy) { - + if (ssrc->channels != sdst->channels) { // 0'd other channels first (uncommon so probably fine albeit slower-ish) sbuf_silence_part(sdst, sdst->filled, samples_copy); - sbuf_copy_layers(sdst, ssrc, 0, ssrc->filled); + sbuf_copy_layers(sdst, ssrc, 0, samples_copy); #if 0 // "faster" but lots of extra ifs per sample format, not worth it while (src_pos < src_max) { @@ -210,49 +230,54 @@ void sbuf_copy_segments(sbuf_t* sdst, sbuf_t* ssrc, int samples_copy) { int src_max = samples_copy * ssrc->channels; // define all posible combos, probably there is a better way to handle this but... - - if (sdst->fmt == SFMT_S16 && ssrc->fmt == SFMT_S16) { - int16_t* dst = sdst->buf; + // s16 > s16 + if (ssrc->fmt == SFMT_S16 && sdst->fmt == SFMT_S16) { int16_t* src = ssrc->buf; + int16_t* dst = sdst->buf; sbuf_copy_segments_internal(dst, src, src_pos, dst_pos, src_max); } - else if (sdst->fmt == SFMT_F32 && ssrc->fmt == SFMT_S16) { - float* dst = sdst->buf; + // s16 > f32 + else if (ssrc->fmt == SFMT_S16 && sdst->fmt == SFMT_F32) { int16_t* src = ssrc->buf; + float* dst = sdst->buf; sbuf_copy_segments_internal(dst, src, src_pos, dst_pos, src_max); } - else if ((sdst->fmt == SFMT_F32 && ssrc->fmt == SFMT_F32) || (sdst->fmt == SFMT_FLT && ssrc->fmt == SFMT_FLT)) { + // s16 > flt + else if (ssrc->fmt == SFMT_S16 && sdst->fmt == SFMT_FLT) { + int16_t* src = ssrc->buf; float* dst = sdst->buf; + sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, (1.0f / 32767.0f)); + } + // f32 > f32 / flt > flt + else if ((ssrc->fmt == SFMT_F32 && sdst->fmt == SFMT_F32) || + (ssrc->fmt == SFMT_FLT && sdst->fmt == SFMT_FLT)) { float* src = ssrc->buf; + float* dst = sdst->buf; sbuf_copy_segments_internal(dst, src, src_pos, dst_pos, src_max); } - // to s16 - else if (sdst->fmt == SFMT_S16 && ssrc->fmt == SFMT_F32) { + // f32 > s16 + else if (ssrc->fmt == SFMT_F32 && sdst->fmt == SFMT_S16) { + float* src = ssrc->buf; int16_t* dst = sdst->buf; - float* src = ssrc->buf; - sbuf_copy_segments_internal_s16(dst, src, src_pos, dst_pos, src_max, 1.0f); + sbuf_copy_segments_internal_f16(dst, src, src_pos, dst_pos, src_max); } - else if (sdst->fmt == SFMT_S16 && ssrc->fmt == SFMT_FLT) { + // flt > s16 + else if (ssrc->fmt == SFMT_FLT && sdst->fmt == SFMT_S16) { + float* src = ssrc->buf; int16_t* dst = sdst->buf; - float* src = ssrc->buf; - sbuf_copy_segments_internal_s16(dst, src, src_pos, dst_pos, src_max, 32768.0f); + sbuf_copy_segments_internal_s16(dst, src, src_pos, dst_pos, src_max, 32767.0f); } - // to f32 - else if (sdst->fmt == SFMT_F32 && ssrc->fmt == SFMT_FLT) { - float* dst = sdst->buf; + // f32 > flt + else if (ssrc->fmt == SFMT_F32 && sdst->fmt == SFMT_FLT) { float* src = ssrc->buf; - sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, 32768.0f); - } - // to flt - else if (sdst->fmt == SFMT_FLT && ssrc->fmt == SFMT_S16) { float* dst = sdst->buf; - int16_t* src = ssrc->buf; - sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, (1/32768.0f)); + sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, (1.0f / 32767.0f)); } - else if (sdst->fmt == SFMT_FLT && ssrc->fmt == SFMT_F32) { - float* dst = sdst->buf; + // flt > f32 + else if (ssrc->fmt == SFMT_FLT && sdst->fmt == SFMT_F32) { float* src = ssrc->buf; - sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, (1/32768.0f)); + float* dst = sdst->buf; + sbuf_copy_segments_internal_flt(dst, src, src_pos, dst_pos, src_max, 32767.0f); } //TODO: may want to handle externally? @@ -260,6 +285,14 @@ void sbuf_copy_segments(sbuf_t* sdst, sbuf_t* ssrc, int samples_copy) { } +#define sbuf_copy_layers_internal_blank(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step) \ + for (int s = src_filled; s < dst_expected; s++) { \ + for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ + dst[dst_pos++] = 0; \ + } \ + dst_pos += dst_ch_step; \ + } + //TODO fix missing ->channels /* ugly thing to avoid repeating functions */ #define sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step) \ @@ -270,14 +303,32 @@ void sbuf_copy_segments(sbuf_t* sdst, sbuf_t* ssrc, int samples_copy) { dst_pos += dst_ch_step; \ } \ \ - for (int s = src_filled; s < dst_expected; s++) { \ + sbuf_copy_layers_internal_blank(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); + +// float +-1.0 <> pcm +-32767.0 +#define sbuf_copy_layers_internal_f16(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step) \ + for (int s = 0; s < src_filled; s++) { \ for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ - dst[dst_pos++] = 0; \ + dst[dst_pos++] = clamp16(float_to_int(src[src_pos++])); \ } \ dst_pos += dst_ch_step; \ - } + } \ + \ + sbuf_copy_layers_internal_blank(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); -// float +-1.0 <> pcm +-32768.0 +#ifdef PCM16_ROUNDING_HALF +// float +-1.0 <> pcm +-32767.0 +#define sbuf_copy_layers_internal_s16(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, value) \ + for (int s = 0; s < src_filled; s++) { \ + for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ + dst[dst_pos++] = clamp16(float_to_int( floor(src[src_pos++] * value + 0.5f) )); \ + } \ + dst_pos += dst_ch_step; \ + } \ + \ + sbuf_copy_layers_internal_blank(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); +#else +// float +-1.0 <> pcm +-32767.0 #define sbuf_copy_layers_internal_s16(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, value) \ for (int s = 0; s < src_filled; s++) { \ for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ @@ -286,14 +337,10 @@ void sbuf_copy_segments(sbuf_t* sdst, sbuf_t* ssrc, int samples_copy) { dst_pos += dst_ch_step; \ } \ \ - for (int s = src_filled; s < dst_expected; s++) { \ - for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ - dst[dst_pos++] = 0; \ - } \ - dst_pos += dst_ch_step; \ - } + sbuf_copy_layers_internal_blank(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); +#endif -// float +-1.0 <> pcm +-32768.0 +// float +-1.0 <> pcm +-32767.0 #define sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, value) \ for (int s = 0; s < src_filled; s++) { \ for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ @@ -302,68 +349,72 @@ void sbuf_copy_segments(sbuf_t* sdst, sbuf_t* ssrc, int samples_copy) { dst_pos += dst_ch_step; \ } \ \ - for (int s = src_filled; s < dst_expected; s++) { \ - for (int src_ch = 0; src_ch < src_channels; src_ch++) { \ - dst[dst_pos++] = 0; \ - } \ - dst_pos += dst_ch_step; \ - } + sbuf_copy_layers_internal_blank(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); -/* copy interleaving: dst ch1 ch2 ch3 ch4 w/ src ch1 ch2 ch1 ch2 = only fill dst ch1 ch2 */ -// dst_channels == src_channels isn't likely so ignore that optimization +// copy interleaving: dst ch1 ch2 ch3 ch4 w/ src ch1 ch2 ch1 ch2 = only fill dst ch1 ch2 +// dst_channels == src_channels isn't likely so ignore that optimization (dst must be >= than src). +// dst_ch_start indicates it should write to dst's chN,chN+1,etc // sometimes one layer has less samples than others and need to 0-fill rest -void sbuf_copy_layers(sbuf_t* sdst, sbuf_t* ssrc, int dst_ch_start, int dst_expected) { - int src_filled = ssrc->filled; +void sbuf_copy_layers(sbuf_t* sdst, sbuf_t* ssrc, int dst_ch_start, int dst_max) { + int src_copy = dst_max; int src_channels = ssrc->channels; - int dst_ch_step = (sdst->channels - ssrc->channels); \ + int dst_ch_step = (sdst->channels - ssrc->channels); int src_pos = 0; int dst_pos = sdst->filled * sdst->channels + dst_ch_start; + if (src_copy > ssrc->filled) + src_copy = ssrc->filled; + + if (ssrc->channels > sdst->channels) { + VGM_LOG("SBUF: wrong copy\n"); + return; + } + // define all posible combos, probably there is a better way to handle this but... // 1:1 if (sdst->fmt == SFMT_S16 && ssrc->fmt == SFMT_S16) { int16_t* dst = sdst->buf; int16_t* src = ssrc->buf; - sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); + sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step); } else if (sdst->fmt == SFMT_F32 && ssrc->fmt == SFMT_S16) { float* dst = sdst->buf; int16_t* src = ssrc->buf; - sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); + sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step); } else if ((sdst->fmt == SFMT_F32 && ssrc->fmt == SFMT_F32) || (sdst->fmt == SFMT_FLT && ssrc->fmt == SFMT_FLT)) { float* dst = sdst->buf; float* src = ssrc->buf; - sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step); + sbuf_copy_layers_internal(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step); } // to s16 else if (sdst->fmt == SFMT_S16 && ssrc->fmt == SFMT_F32) { int16_t* dst = sdst->buf; float* src = ssrc->buf; - sbuf_copy_layers_internal_s16(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, 1.0f); + sbuf_copy_layers_internal_f16(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step); } else if (sdst->fmt == SFMT_S16 && ssrc->fmt == SFMT_FLT) { int16_t* dst = sdst->buf; float* src = ssrc->buf; - sbuf_copy_layers_internal_s16(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, 32768.0f); + sbuf_copy_layers_internal_s16(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step, 32767.0f); } // to f32 else if (sdst->fmt == SFMT_F32 && ssrc->fmt == SFMT_FLT) { float* dst = sdst->buf; float* src = ssrc->buf; - sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, 32768.0f); + sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step, 32767.0f); } // to flt else if (sdst->fmt == SFMT_FLT && ssrc->fmt == SFMT_S16) { float* dst = sdst->buf; int16_t* src = ssrc->buf; - sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, (1/32768.0f)); + sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step, (1.0f / 32767.0f)); } else if (sdst->fmt == SFMT_FLT && ssrc->fmt == SFMT_F32) { float* dst = sdst->buf; float* src = ssrc->buf; - sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_filled, dst_expected, src_channels, dst_ch_step, (1/32768.0f)); + sbuf_copy_layers_internal_flt(dst, src, src_pos, dst_pos, src_copy, dst_max, src_channels, dst_ch_step, (1.0f / 32767.0f)); } } @@ -428,3 +479,29 @@ void sbuf_fadeout(sbuf_t* sbuf, int start, int to_do, int fade_pos, int fade_dur int count = sbuf->filled - (start + to_do); sbuf_silence_part(sbuf, start + to_do, count); } + +void sbuf_interleave(sbuf_t* sbuf, float** ibuf) { + if (sbuf->fmt != SFMT_FLT) + return; + + // copy multidimensional buf (pcm[0]=[ch0,ch0,...], pcm[1]=[ch1,ch1,...]) + // to interleaved buf (buf[0]=ch0, sbuf[1]=ch1, sbuf[2]=ch0, sbuf[3]=ch1, ...) + for (int ch = 0; ch < sbuf->channels; ch++) { + /* channels should be in standard order unlike Ogg Vorbis (at least in FSB) */ + float* ptr = sbuf->buf; + float* channel = ibuf[ch]; + + ptr += ch; + for (int s = 0; s < sbuf->filled; s++) { + float val = channel[s]; + #if 0 //to pcm16 //from vorbis) + int val = (int)floor(channel[s] * 32767.0f + 0.5f); + if (val > 32767) val = 32767; + else if (val < -32768) val = -32768; + #endif + + *ptr = val; + ptr += sbuf->channels; + } + } +} diff --git a/Frameworks/vgmstream/vgmstream/src/base/sbuf.h b/Frameworks/vgmstream/vgmstream/src/base/sbuf.h index e3a31542a..fc97f1923 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/sbuf.h +++ b/Frameworks/vgmstream/vgmstream/src/base/sbuf.h @@ -57,4 +57,6 @@ void sbuf_silence_part(sbuf_t* sbuf, int from, int count); void sbuf_fadeout(sbuf_t* sbuf, int start, int to_do, int fade_pos, int fade_duration); +void sbuf_interleave(sbuf_t* sbuf, float** ibuf); + #endif diff --git a/Frameworks/vgmstream/vgmstream/src/base/streamfile_api.c b/Frameworks/vgmstream/vgmstream/src/base/streamfile_api.c index a4d2acfda..7bfedc15c 100644 --- a/Frameworks/vgmstream/vgmstream/src/base/streamfile_api.c +++ b/Frameworks/vgmstream/vgmstream/src/base/streamfile_api.c @@ -15,8 +15,7 @@ typedef struct { static size_t api_read(API_STREAMFILE* sf, uint8_t* dst, offv_t offset, size_t length) { void* user_data = sf->libsf->user_data; - sf->libsf->seek(sf->libsf->user_data, offset, LIBSTREAMFILE_SEEK_SET); - return sf->libsf->read(user_data, dst, length); + return sf->libsf->read(user_data, dst, offset, length); } static size_t api_get_size(API_STREAMFILE* sf) { diff --git a/Frameworks/vgmstream/vgmstream/src/coding/coding.h b/Frameworks/vgmstream/vgmstream/src/coding/coding.h index d4f261735..1bb65c86a 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/coding.h +++ b/Frameworks/vgmstream/vgmstream/src/coding/coding.h @@ -288,13 +288,8 @@ int32_t ubi_adpcm_get_samples(ubi_adpcm_codec_data* data); /* imuse_decoder */ -typedef struct imuse_codec_data imuse_codec_data; - -imuse_codec_data* init_imuse(STREAMFILE* sf, int channels); -void decode_imuse(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do); -void reset_imuse(imuse_codec_data* data); -void seek_imuse(imuse_codec_data* data, int32_t num_sample); -void free_imuse(imuse_codec_data* data); +void* init_imuse_mcomp(STREAMFILE* sf, int channels); +void* init_imuse_aifc(STREAMFILE* sf, uint32_t start_offset, int channels); /* ongakukan_adp_decoder */ typedef struct ongakukan_adp_data ongakukan_adp_data; @@ -308,14 +303,8 @@ void free_ongakukan_adp(ongakukan_adp_data* data); int32_t ongakukan_adp_get_samples(ongakukan_adp_data* data); /* compresswave_decoder */ -typedef struct compresswave_codec_data compresswave_codec_data; - -compresswave_codec_data* init_compresswave(STREAMFILE* sf); -void decode_compresswave(compresswave_codec_data* data, sample_t* outbuf, int32_t samples_to_do); -void reset_compresswave(compresswave_codec_data* data); -void seek_compresswave(compresswave_codec_data* data, int32_t num_sample); -void free_compresswave(compresswave_codec_data* data); -STREAMFILE* compresswave_get_streamfile(compresswave_codec_data* data); +void* init_compresswave(STREAMFILE* sf); +STREAMFILE* compresswave_get_streamfile(VGMSTREAM* v); /* ea_mt_decoder*/ @@ -346,10 +335,8 @@ int32_t relic_bytes_to_samples(size_t bytes, int channels, int bitrate); typedef struct hca_codec_data hca_codec_data; hca_codec_data* init_hca(STREAMFILE* sf); -void decode_hca(hca_codec_data* data, sample_t* outbuf, int32_t samples_to_do); -void reset_hca(hca_codec_data* data); -void loop_hca(hca_codec_data* data, int32_t num_sample); -void free_hca(hca_codec_data* data); +void free_hca(void* data); + clHCA_stInfo* hca_get_info(hca_codec_data* data); typedef struct { @@ -369,13 +356,7 @@ STREAMFILE* hca_get_streamfile(hca_codec_data* data); /* tac_decoder */ -typedef struct tac_codec_data tac_codec_data; - -tac_codec_data* init_tac(STREAMFILE* sf); -void decode_tac(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do); -void reset_tac(tac_codec_data* data); -void seek_tac(tac_codec_data* data, int32_t num_sample); -void free_tac(tac_codec_data* data); +void* init_tac(STREAMFILE* sf); /* ice_decoder */ @@ -389,13 +370,13 @@ void free_ice(ice_codec_data* data); /* ka1a_decoder */ -typedef struct ka1a_codec_data ka1a_codec_data; +void* init_ka1a(int bitrate_mode, int channels_tracks); -ka1a_codec_data* init_ka1a(int bitrate_mode, int channels_tracks); -void free_ka1a(ka1a_codec_data* data); -void reset_ka1a(ka1a_codec_data* data); -bool decode_ka1a_frame(VGMSTREAM* vgmstream); -void seek_ka1a(VGMSTREAM* v, int32_t num_sample); +/* ubimpeg_decoder */ +void* init_ubimpeg(uint32_t mode); + +/* mio_decoder */ +void* init_mio(STREAMFILE* sf, int* p_loop_point); #ifdef VGM_USE_VORBIS @@ -438,6 +419,7 @@ typedef enum { VORBIS_SK, /* Silicon Knights AUD: "OggS" replaced by "SK" */ VORBIS_VID1, /* Neversoft VID1: custom packet blocks/headers */ VORBIS_AWC, /* Rockstar AWC: custom packet blocks/headers */ + VORBIS_OOR, /* Age .OOR: custom bitpacked pages (custom header + setup) */ } vorbis_custom_t; /* config for Wwise Vorbis (3 types for flexibility though not all combinations exist) */ @@ -466,14 +448,13 @@ typedef struct { /* output (kinda ugly here but to simplify) */ off_t data_start_offset; + int64_t last_granule; } vorbis_custom_config; vorbis_custom_codec_data* init_vorbis_custom(STREAMFILE* sf, off_t start_offset, vorbis_custom_t type, vorbis_custom_config* config); -void decode_vorbis_custom(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do, int channels); -void reset_vorbis_custom(VGMSTREAM* vgmstream); -void seek_vorbis_custom(VGMSTREAM* vgmstream, int32_t num_sample); -void free_vorbis_custom(vorbis_custom_codec_data* data); +void free_vorbis_custom(void* data); +int32_t vorbis_custom_get_samples(VGMSTREAM* v); #endif typedef struct { @@ -622,14 +603,8 @@ void free_celt_fsb(celt_codec_data* data); #ifdef VGM_USE_SPEEX /* speex_decoder */ -typedef struct speex_codec_data speex_codec_data; - -speex_codec_data* init_speex_ea(int channels); -speex_codec_data* init_speex_torus(int channels); -void decode_speex(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do); -void reset_speex(speex_codec_data* data); -void seek_speex(VGMSTREAM* vgmstream, int32_t num_sample); -void free_speex(speex_codec_data* data); +void* init_speex_ea(int channels); +void* init_speex_torus(int channels); #endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/coding_utils_samples.h b/Frameworks/vgmstream/vgmstream/src/coding/coding_utils_samples.h deleted file mode 100644 index 659d30123..000000000 --- a/Frameworks/vgmstream/vgmstream/src/coding/coding_utils_samples.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef _CODING_UTILS_SAMPLES_ -#define _CODING_UTILS_SAMPLES_ - -/* sample helpers */ -//TODO maybe move to .c -// (as .h can be inlined but these probably aren't called enough times that there is a notable boost) - -typedef struct { - int16_t* samples; /* current samples (pointer is moved once consumed) */ - int filled; /* samples left */ - int channels; /* max channels sample buf handles */ - //TODO may be more useful with filled+consumed and not moving *samples? -} s16buf_t; - -static inline void s16buf_silence(sample_t** p_outbuf, int32_t* p_samples_silence, int channels) { - int samples_silence; - - samples_silence = *p_samples_silence; - - memset(*p_outbuf, 0, samples_silence * channels * sizeof(int16_t)); - - *p_outbuf += samples_silence * channels; - *p_samples_silence -= samples_silence; -} - -static inline void s16buf_discard(sample_t** p_outbuf, s16buf_t* sbuf, int32_t* p_samples_discard) { - int samples_discard; - - samples_discard = *p_samples_discard; - if (samples_discard > sbuf->filled) - samples_discard = sbuf->filled; - - /* just ignore part of samples */ - - sbuf->samples += samples_discard * sbuf->channels; - sbuf->filled -= samples_discard; - - *p_samples_discard -= samples_discard; -} - -/* copy, move and mark consumed samples */ -static inline void s16buf_consume(sample_t** p_outbuf, s16buf_t* sbuf, int32_t* p_samples_consume) { - int samples_consume; - - samples_consume = *p_samples_consume; - if (samples_consume > sbuf->filled) - samples_consume = sbuf->filled; - - /* memcpy is safe when filled/samples_copy is 0 (but must pass non-NULL bufs) */ - memcpy(*p_outbuf, sbuf->samples, samples_consume * sbuf->channels * sizeof(int16_t)); - - sbuf->samples += samples_consume * sbuf->channels; - sbuf->filled -= samples_consume; - - *p_outbuf += samples_consume * sbuf->channels; - *p_samples_consume -= samples_consume; -} - - -#endif /* _CODING_UTILS_SAMPLES_ */ diff --git a/Frameworks/vgmstream/vgmstream/src/coding/compresswave_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/compresswave_decoder.c index f61e8ab28..422aa0b2d 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/compresswave_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/compresswave_decoder.c @@ -1,27 +1,45 @@ #include "coding.h" -#include "coding_utils_samples.h" +#include "../base/decode_state.h" +#include "../base/codec_info.h" #include "libs/compresswave_lib.h" -#define COMPRESSWAVE_MAX_FRAME_SAMPLES 0x1000 /* arbitrary but should be multiple of 2 for 22050 mode */ +#define COMPRESSWAVE_MAX_FRAME_SAMPLES 512 // arbitrary, but should be multiple of 2 for 22050 mode +#define COMPRESSWAVE_MAX_CHANNELS 2 -/* opaque struct */ -struct compresswave_codec_data { - /* config */ +typedef struct { STREAMFILE* sf; - TCompressWaveData* cw; + TCompressWaveData* handle; - /* frame state */ - int16_t* samples; - int frame_samples; + int16_t pbuf[COMPRESSWAVE_MAX_FRAME_SAMPLES * COMPRESSWAVE_MAX_CHANNELS]; + int discard; +} compresswave_codec_data; - /* frame state */ - s16buf_t sbuf; - int samples_discard; -}; +static void reset_compresswave(void* priv_data) { + compresswave_codec_data* data = priv_data; + if (!data) return; + /* actual way to reset internal flags */ + TCompressWaveData_Stop(data->handle); + TCompressWaveData_Play(data->handle, 0); -compresswave_codec_data* init_compresswave(STREAMFILE* sf) { + data->discard = 0; + + return; +} + +static void free_compresswave(void* priv_data) { + compresswave_codec_data* data = priv_data; + if (!data) + return; + + TCompressWaveData_Free(data->handle); + + close_streamfile(data->sf); + free(data); +} + +void* init_compresswave(STREAMFILE* sf) { compresswave_codec_data* data = NULL; data = calloc(1, sizeof(compresswave_codec_data)); @@ -30,15 +48,10 @@ compresswave_codec_data* init_compresswave(STREAMFILE* sf) { data->sf = reopen_streamfile(sf, 0); if (!data->sf) goto fail; - data->frame_samples = COMPRESSWAVE_MAX_FRAME_SAMPLES; - data->samples = malloc(2 * data->frame_samples * sizeof(int16_t)); /* always stereo */ - if (!data->samples) goto fail; + data->handle = TCompressWaveData_Create(); + if (!data->handle) goto fail; - - data->cw = TCompressWaveData_Create(); - if (!data->cw) goto fail; - - TCompressWaveData_LoadFromStream(data->cw, data->sf); + TCompressWaveData_LoadFromStream(data->handle, data->sf); reset_compresswave(data); @@ -49,90 +62,46 @@ fail: } -static int decode_frame(compresswave_codec_data* data, int32_t samples_to_do) { - uint32_t Len; - int ok; +static bool decode_frame_compresswave(VGMSTREAM* v) { + compresswave_codec_data* data = v->codec_data; + decode_state_t* ds = v->decode_state; - data->sbuf.samples = data->samples; - data->sbuf.channels = 2; - data->sbuf.filled = 0; + int samples = COMPRESSWAVE_MAX_FRAME_SAMPLES; + //if (samples % 2 && samples > 1) + // samples -= 1; /* 22khz does 2 samples at once */ - if (samples_to_do > data->frame_samples) - samples_to_do = data->frame_samples; - if (samples_to_do % 2 && samples_to_do > 1) - samples_to_do -= 1; /* 22khz does 2 samples at once */ - Len = samples_to_do * sizeof(int16_t) * 2; /* forced stereo */ + uint32_t len = samples * sizeof(int16_t) * 2; /* forced stereo */ - ok = TCompressWaveData_Rendering(data->cw, data->sbuf.samples, Len); - if (!ok) goto fail; + int ok = TCompressWaveData_Rendering(data->handle, data->pbuf, len); + if (!ok) return false; - data->sbuf.filled = samples_to_do; + sbuf_init_s16(&ds->sbuf, data->pbuf, samples, v->channels); + ds->sbuf.filled = ds->sbuf.samples; - return 1; -fail: - return 0; + return true; } - -void decode_compresswave(compresswave_codec_data* data, sample_t* outbuf, int32_t samples_to_do) { - int ok; - - - while (samples_to_do > 0) { - s16buf_t* sbuf = &data->sbuf; - - if (sbuf->filled <= 0) { - ok = decode_frame(data, samples_to_do); - if (!ok) goto fail; - } - - if (data->samples_discard) - s16buf_discard(&outbuf, sbuf, &data->samples_discard); - else - s16buf_consume(&outbuf, sbuf, &samples_to_do); - } - - return; - -fail: - VGM_LOG("COMPRESSWAVE: decode fail, missing %i samples\n", samples_to_do); - s16buf_silence(&outbuf, &samples_to_do, 2); -} - - -void reset_compresswave(compresswave_codec_data* data) { - if (!data) return; - - /* actual way to reset internal flags */ - TCompressWaveData_Stop(data->cw); - TCompressWaveData_Play(data->cw, 0); - - data->sbuf.filled = 0; - data->samples_discard = 0; - - return; -} - -void seek_compresswave(compresswave_codec_data* data, int32_t num_sample) { +void seek_compresswave(VGMSTREAM* v, int32_t num_sample) { + compresswave_codec_data* data = v->codec_data; if (!data) return; reset_compresswave(data); - data->samples_discard += num_sample; + data->discard += num_sample; } -void free_compresswave(compresswave_codec_data* data) { - if (!data) - return; - - TCompressWaveData_Free(data->cw); - - close_streamfile(data->sf); - free(data->samples); - free(data); -} - -STREAMFILE* compresswave_get_streamfile(compresswave_codec_data* data) { +STREAMFILE* compresswave_get_streamfile(VGMSTREAM* v) { + compresswave_codec_data* data = v->codec_data; if (!data) return NULL; return data->sf; } + +const codec_info_t compresswave_decoder = { + .sample_type = SFMT_S16, + .decode_frame = decode_frame_compresswave, + .free = free_compresswave, + .reset = reset_compresswave, + .seek = seek_compresswave, + //.frame_samples = 2-4 (lib handles arbitrary calls) + //.frame_size = VBR / huffman codes +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/hca_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/hca_decoder.c index d3dc56629..0bdcc95ec 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/hca_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/hca_decoder.c @@ -1,26 +1,44 @@ #include "coding.h" +#include "../base/decode_state.h" #include "libs/clhca.h" +#include "../base/codec_info.h" struct hca_codec_data { STREAMFILE* sf; clHCA_stInfo info; - signed short* sample_buffer; - size_t samples_filled; - size_t samples_consumed; - size_t samples_to_discard; - - void* data_buffer; - + void* buf; + float* fbuf; + int current_delay; unsigned int current_block; void* handle; }; +static void reset_hca(void* priv) { + hca_codec_data* data = priv; + + clHCA_DecodeReset(data->handle); + data->current_block = 0; + data->current_delay = data->info.encoderDelay; +} + +void free_hca(void* priv) { + hca_codec_data* data = priv; + if (!data) return; + + close_streamfile(data->sf); + clHCA_done(data->handle); + free(data->handle); + free(data->buf); + free(data->fbuf); + free(data); +} + /* init a HCA stream; STREAMFILE will be duplicated for internal use. */ hca_codec_data* init_hca(STREAMFILE* sf) { - uint8_t header_buffer[0x2000]; /* hca header buffer data (probable max ~0x400) */ + uint8_t header_buffer[0x1000]; /* hca header buffer data (probable max ~0x400) */ hca_codec_data* data = NULL; /* vgmstream HCA context */ int header_size; int status; @@ -51,11 +69,11 @@ hca_codec_data* init_hca(STREAMFILE* sf) { status = clHCA_getInfo(data->handle, &data->info); /* extract header info */ if (status < 0) goto fail; - data->data_buffer = malloc(data->info.blockSize); - if (!data->data_buffer) goto fail; + data->buf = malloc(data->info.blockSize); + if (!data->buf) goto fail; - data->sample_buffer = malloc(sizeof(signed short) * data->info.channelCount * data->info.samplesPerBlock); - if (!data->sample_buffer) goto fail; + data->fbuf = malloc(sizeof(float) * data->info.channelCount * data->info.samplesPerBlock); + if (!data->fbuf) goto fail; /* load streamfile for reads */ data->sf = reopen_streamfile(sf, 0); @@ -71,86 +89,64 @@ fail: return NULL; } -void decode_hca(hca_codec_data* data, sample_t* outbuf, int32_t samples_to_do) { - int samples_done = 0; - const unsigned int channels = data->info.channelCount; - const unsigned int blockSize = data->info.blockSize; +static bool read_packet(VGMSTREAM* v) { + hca_codec_data* data = v->codec_data; + // EOF/error + if (data->current_block >= data->info.blockCount) + return false; - while (samples_done < samples_to_do) { + // single block of frames + const unsigned int block_size = data->info.blockSize; + //VGMSTREAMCHANNEL* vs = &v->ch[0]; + off_t offset = data->info.headerSize + data->current_block * block_size; //vs->offset - if (data->samples_filled) { - int samples_to_get = data->samples_filled; - - if (data->samples_to_discard) { - /* discard samples for looping */ - if (samples_to_get > data->samples_to_discard) - samples_to_get = data->samples_to_discard; - data->samples_to_discard -= samples_to_get; - } - else { - /* get max samples and copy */ - if (samples_to_get > samples_to_do - samples_done) - samples_to_get = samples_to_do - samples_done; - - memcpy(outbuf + samples_done*channels, - data->sample_buffer + data->samples_consumed*channels, - samples_to_get*channels * sizeof(sample_t)); - samples_done += samples_to_get; - } - - /* mark consumed samples */ - data->samples_consumed += samples_to_get; - data->samples_filled -= samples_to_get; - } - else { - off_t offset = data->info.headerSize + data->current_block * blockSize; - int status; - size_t bytes; - - /* EOF/error */ - if (data->current_block >= data->info.blockCount) { - memset(outbuf, 0, (samples_to_do - samples_done) * channels * sizeof(sample_t)); - break; - } - - /* read frame */ - bytes = read_streamfile(data->data_buffer, offset, blockSize, data->sf); - if (bytes != blockSize) { - VGM_LOG("HCA: read %x vs expected %x bytes at %x\n", bytes, blockSize, (uint32_t)offset); - break; - } - - data->current_block++; - - /* decode frame */ - status = clHCA_DecodeBlock(data->handle, (void*)(data->data_buffer), blockSize); - if (status < 0) { - VGM_LOG("HCA: decode fail at %x, code=%i\n", (uint32_t)offset, status); - break; - } - - /* extract samples */ - clHCA_ReadSamples16(data->handle, data->sample_buffer); - - data->samples_consumed = 0; - data->samples_filled += data->info.samplesPerBlock; - } + int bytes = read_streamfile(data->buf, offset, block_size, data->sf); + if (bytes != block_size) { + VGM_LOG("HCA: read %x vs expected %x bytes at %x\n", bytes, block_size, (uint32_t)offset); + return false; } + data->current_block++; + + return true; } -void reset_hca(hca_codec_data* data) { - if (!data) return; +bool decode_frame_hca(VGMSTREAM* v) { + bool ok = read_packet(v); + if (!ok) + return false; - clHCA_DecodeReset(data->handle); - data->current_block = 0; - data->samples_filled = 0; - data->samples_consumed = 0; - data->samples_to_discard = data->info.encoderDelay; + decode_state_t* ds = v->decode_state; + hca_codec_data* data = v->codec_data; + const unsigned int block_size = data->info.blockSize; + + + /* decode frame */ + int status = clHCA_DecodeBlock(data->handle, data->buf, block_size); + if (status < 0) { + VGM_LOG("HCA: decode fail, code=%i\n", status); + return false; + } + + clHCA_ReadSamples(data->handle, data->fbuf); + + int samples = data->info.samplesPerBlock; + sbuf_init_flt(&ds->sbuf, data->fbuf, samples, v->channels); + ds->sbuf.filled = samples; + + if (data->current_delay) { + ds->discard += data->current_delay; + data->current_delay = 0; + } + + return true; } -void loop_hca(hca_codec_data* data, int32_t num_sample) { - if (!data) return; +void seek_hca(VGMSTREAM* v, int32_t num_sample) { + hca_codec_data* data = v->codec_data; + //decode_state_t* ds = v->decode_state; + + //TODO handle arbitrary seek points to block N /* manually calc loop values if not set (should only happen with installed/forced looping, * as actual files usually pad encoder delay so earliest loopStartBlock becomes 1-2, @@ -163,20 +159,9 @@ void loop_hca(hca_codec_data* data, int32_t num_sample) { } data->current_block = data->info.loopStartBlock; - data->samples_filled = 0; - data->samples_consumed = 0; - data->samples_to_discard = data->info.loopStartDelay; -} + data->current_delay = data->info.loopStartDelay; + //ds->discard = data->info.loopStartDelay //overwritten on decode -void free_hca(hca_codec_data* data) { - if (!data) return; - - close_streamfile(data->sf); - clHCA_done(data->handle); - free(data->handle); - free(data->data_buffer); - free(data->sample_buffer); - free(data); } clHCA_stInfo* hca_get_info(hca_codec_data* data) { @@ -235,14 +220,14 @@ static int test_hca_score(hca_codec_data* data, hca_keytest_t* hk) { size_t bytes; /* read and test frame */ - bytes = read_streamfile(data->data_buffer, offset, block_size, data->sf); + bytes = read_streamfile(data->buf, offset, block_size, data->sf); if (bytes != block_size) { /* normally this shouldn't happen, but pre-fetch ACB stop with frames in half, so just keep score */ //total_score = -1; break; } - score = clHCA_TestBlock(data->handle, data->data_buffer, block_size); + score = clHCA_TestBlock(data->handle, data->buf, block_size); /* get first non-blank frame */ if (!hk->start_offset && score != 0) { @@ -315,3 +300,13 @@ void hca_set_encryption_key(hca_codec_data* data, uint64_t keycode, uint64_t sub } clHCA_SetKey(data->handle, (unsigned long long)keycode); } + +const codec_info_t hca_decoder = { + .sample_type = SFMT_FLT, + .decode_frame = decode_frame_hca, + .free = free_hca, + .reset = reset_hca, + .seek = seek_hca, + // frame_samples: 1024 + discard + // frame_size: variable +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/imuse_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/imuse_decoder.c index 238c7ff8f..3e7e9785e 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/imuse_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/imuse_decoder.c @@ -1,5 +1,7 @@ #include "coding.h" -#include "coding_utils_samples.h" +#include "../base/decode_state.h" +#include "../base/codec_info.h" +#include "../util/bitstream_msb.h" /* LucasArts' iMUSE decoder, mainly for VIMA (like IMA but with variable frame and code sizes). * Reverse engineered from various .exe @@ -12,29 +14,29 @@ */ static const int16_t step_table[] = { /* same as IMA */ - 7, 8, 9, 10, 11, 12, 13, 14, - 16, 17, 19, 21, 23, 25, 28, 31, - 34, 37, 41, 45, 50, 55, 60, 66, - 73, 80, 88, 97, 107, 118, 130, 143, - 157, 173, 190, 209, 230, 253, 279, 307, - 337, 371, 408, 449, 494, 544, 598, 658, - 724, 796, 876, 963, 1060, 1166, 1282, 1411, - 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, - 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, - 7132, 7845, 8630, 9493, 10442,11487,12635,13899, - 15289,16818,18500,20350,22385,24623,27086,29794, + 7, 8, 9, 10, 11, 12, 13, 14, + 16, 17, 19, 21, 23, 25, 28, 31, + 34, 37, 41, 45, 50, 55, 60, 66, + 73, 80, 88, 97, 107, 118, 130, 143, + 157, 173, 190, 209, 230, 253, 279, 307, + 337, 371, 408, 449, 494, 544, 598, 658, + 724, 796, 876, 963, 1060, 1166, 1282, 1411, + 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, + 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, + 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, + 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767, }; -/* pre-calculated in V1: - for (i = 0; i < 89; i++) { +/* pre-calculated in COMP: + for (int = 0; i < 89; i++) { int counter = (4 * step_table[i] / 7) >> 1; int size = 1; while (counter > 0) { size++; counter >>= 1; } - code_size_table[i] = clamp(size, 3, 8) - 1 + code_size_table[i] = clamp(size, 3, 8) - 1; } */ static const uint8_t code_size_table_v1[89] = { @@ -42,6 +44,19 @@ static const uint8_t code_size_table_v1[89] = { 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }; + +/* pre-calculated in AIFC: + for (int i = 0; i < 89; i++) { + int counter = (step_table[i]) >> 1; + int size = 1; + while (counter > 0) { + size++; + counter >>= 1; + } + size = size >> 1; + code_size_table[i] = clamp(size, 4, 7); + } +*/ static const uint8_t code_size_table_v2[89] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, @@ -103,7 +118,7 @@ static const int8_t* index_tables_v1[8] = { index_table6b_v1, index_table7b_v1, }; -/* seems V2 doesn't actually use <4b, nor mirrored parts, even though they are defined */ +/* seems V2 doesn't actually use <4b, nor mirrored parts, even though they are defined (both MCMP and AIFC) */ static const int8_t* index_tables_v2[8] = { NULL, NULL, @@ -115,10 +130,10 @@ static const int8_t* index_tables_v2[8] = { index_table7b_v2, }; - #define MAX_CHANNELS 2 #define MAX_BLOCK_SIZE 0x2000 -#define MAX_BLOCK_COUNT 0x10000 /* arbitrary max */ +#define MAX_BLOCK_COUNT 0x10000 // arbitrary max +#define BLOCK_COUNT_AIFC 0x2000 // observed max /* ************************** */ @@ -132,132 +147,73 @@ static int clamp_s32(int val, int min, int max) { /* ************************** */ -typedef enum { COMP, MCMP } imuse_type_t; -struct imuse_codec_data { +typedef enum { COMP, MCMP, AIFC } imuse_type_t; + +typedef struct { + uint32_t offset; // absolute + uint32_t size; // block size + uint32_t flags; // block type + uint32_t data; // PCM bytes + int16_t hist_l; + int16_t hist_r; + uint8_t step_l; + uint8_t step_r; +} block_entry_t; + +typedef struct { /* config */ imuse_type_t type; int channels; size_t block_count; - struct block_entry_t { - uint32_t offset; /* from file start */ - uint32_t size; - uint32_t flags; - uint32_t data; - } *block_table; + block_entry_t* block_table; - uint16_t adpcm_table[64 * 89]; + uint16_t adpcm_table[64 * 89]; // 2D array /* state */ - s16buf_t sbuf; + uint8_t block[MAX_BLOCK_SIZE]; int current_block; - int16_t samples[MAX_BLOCK_SIZE / sizeof(int16_t) * MAX_CHANNELS]; -}; + + int16_t adpcm_history[MAX_CHANNELS]; + uint8_t adpcm_step_index[MAX_CHANNELS]; + + short pbuf[MAX_BLOCK_SIZE / sizeof(short) * MAX_CHANNELS]; +} imuse_codec_data; -imuse_codec_data* init_imuse(STREAMFILE* sf, int channels) { - int i, j; - off_t offset, data_offset; - imuse_codec_data* data = NULL; +static void free_imuse(void* priv_data) { + imuse_codec_data* data = priv_data; + if (!data) return; + free(data->block_table); + free(data); +} + +static void reset_imuse(void* priv_data) { + imuse_codec_data* data = priv_data; + if (!data) return; + + data->current_block = 0; +} + +imuse_codec_data* init_imuse_internal(int channels, int blocks) { if (channels > MAX_CHANNELS) - goto fail; + return NULL; - data = calloc(1, sizeof(struct imuse_codec_data)); + imuse_codec_data* data = calloc(1, sizeof(imuse_codec_data)); if (!data) goto fail; data->channels = channels; - /* read index table */ - if (read_u32be(0x00,sf) == 0x434F4D50) { /* "COMP" */ - data->block_count = read_u32be(0x04,sf); - if (data->block_count > MAX_BLOCK_COUNT) goto fail; - /* 08: base codec? */ - /* 0c: some size? */ + data->block_count = blocks; + if (data->block_count > MAX_BLOCK_COUNT) goto fail; - data->block_table = calloc(data->block_count, sizeof(struct block_entry_t)); - if (!data->block_table) goto fail; + data->block_table = calloc(data->block_count, sizeof(block_entry_t)); + if (!data->block_table) goto fail; - offset = 0x10; - for (i = 0; i < data->block_count; i++) { - struct block_entry_t* entry = &data->block_table[i]; - - entry->offset = read_u32be(offset + 0x00, sf); - entry->size = read_u32be(offset + 0x04, sf); - entry->flags = read_u32be(offset + 0x08, sf); - /* 0x0c: null */ - entry->data = MAX_BLOCK_SIZE; - /* blocks decode into fixed size, that may include header */ - - if (entry->size > MAX_BLOCK_SIZE) { - VGM_LOG("IMUSE: block size too big\n"); - goto fail; - } - - if (entry->flags != 0x0D && entry->flags != 0x0F) { /* VIMA */ - VGM_LOG("IMUSE: unknown codec\n"); - goto fail; /* others are bunch of mini-codecs (ex. The Dig) */ - } - - offset += 0x10; - } - - /* detect type */ - { - uint32_t id = read_u32be(data->block_table[0].offset + 0x02, sf); - if (id == 0x694D5553) { /* "iMUS" header [The Curse of Monkey Island (PC)] */ - data->type = COMP; - } else { - goto fail; /* no header [The Dig (PC)] */ - } - } - } - else if (read_u32be(0x00,sf) == 0x4D434D50) { /* "MCMP" */ - data->block_count = read_u16be(0x04,sf); - if (data->block_count > MAX_BLOCK_COUNT) goto fail; - - data->block_table = calloc(data->block_count, sizeof(struct block_entry_t)); - if (!data->block_table) goto fail; - - /* pre-calculate for simpler logic */ - data_offset = 0x06 + data->block_count * 0x09; - data_offset += 0x02 + read_u16be(data_offset + 0x00, sf); /* mini text header */ - - offset = 0x06; - for (i = 0; i < data->block_count; i++) { - struct block_entry_t* entry = &data->block_table[i]; - - entry->flags = read_u8 (offset + 0x00, sf); - entry->data = read_u32be(offset + 0x01, sf); - entry->size = read_u32be(offset + 0x05, sf); - entry->offset = data_offset; - /* blocks of data and audio are separate */ - - if (entry->data > MAX_BLOCK_SIZE || entry->size > MAX_BLOCK_SIZE) { - VGM_LOG("IMUSE: block size too big\n"); - goto fail; - } - - if (entry->flags != 0x00 && entry->flags != 0x01) { /* data or VIMA */ - VGM_LOG("IMUSE: unknown codec\n"); - goto fail; - } - - offset += 0x09; - data_offset += entry->size; - } - - data->type = MCMP; /* with header [Grim Fandango (multi)] */ - - /* there are iMUS or RIFF headers but affect parser */ - } - else { - goto fail; - } - - /* iMUSE pre-calculates main decode ops as a table, looks similar to standard IMA expand */ - for (i = 0; i < 64; i++) { - for (j = 0; j < 89; j++) { + // iMUSE pre-calculates main decode ops as a table, looks similar to standard IMA expand + for (int i = 0; i < 64; i++) { + for (int j = 0; j < 89; j++) { int counter = 32; int value = 0; int step = step_table[j]; @@ -268,15 +224,179 @@ imuse_codec_data* init_imuse(STREAMFILE* sf, int channels) { counter >>= 1; } - data->adpcm_table[i + j * 64] = value; /* non sequential: all 64 [0]s, [1]s ... [88]s */ + data->adpcm_table[j * 64 + i] = value; } } + return data; +fail: + free_imuse(data); + return NULL; +} - reset_imuse(data); +void* init_imuse_mcomp(STREAMFILE* sf, int channels) { + imuse_codec_data* data = NULL; + + /* read block table */ + if (is_id32be(0x00,sf, "COMP")) { + int block_count = read_u32be(0x04,sf); + // 08: base codec? + // 0c: some size? + + data = init_imuse_internal(channels, block_count); + if (!data) return NULL; + + uint32_t offset = 0x10; + for (int i = 0; i < data->block_count; i++) { + block_entry_t* entry = &data->block_table[i]; + + entry->offset = read_u32be(offset + 0x00, sf); + entry->size = read_u32be(offset + 0x04, sf); + entry->flags = read_u32be(offset + 0x08, sf); + // 0x0c: null + entry->data = 0x2000; // blocks decode into fixed size, that may include header + + if (entry->size > MAX_BLOCK_SIZE) { + VGM_LOG("IMUSE: block size too big\n"); + goto fail; + } + + // iMUSE blocks usually have VIMA but may contain mini-codecs (ex. The Dig) + if (entry->flags != 0x0D && entry->flags != 0x0F) { + VGM_LOG("IMUSE: unknown codec\n"); + goto fail; + } + + offset += 0x10; + } + + // detect type + { + uint32_t id = read_u32be(data->block_table[0].offset + 0x02, sf); + if (id == get_id32be("iMUS")) { // [The Curse of Monkey Island (PC)] + data->type = COMP; + } else { + goto fail; // no header [The Dig (PC)] + } + } + } + else if (is_id32be(0x00,sf, "MCMP")) { + int block_count = read_u16be(0x04,sf); + + data = init_imuse_internal(channels, block_count); + if (!data) return NULL; + + // pre-calculate for simpler logic + uint32_t data_offset = 0x06 + data->block_count * 0x09; + data_offset += 0x02 + read_u16be(data_offset + 0x00, sf); // mini text header + + uint32_t offset = 0x06; + for (int i = 0; i < data->block_count; i++) { + block_entry_t* entry = &data->block_table[i]; + + entry->flags = read_u8 (offset + 0x00, sf); + entry->data = read_u32be(offset + 0x01, sf); + entry->size = read_u32be(offset + 0x05, sf); + entry->offset = data_offset; + // blocks of data and audio are separate + + if (entry->data > MAX_BLOCK_SIZE || entry->size > MAX_BLOCK_SIZE) { + VGM_LOG("IMUSE: block size too big\n"); + goto fail; + } + + // data or VIMA + if (entry->flags != 0x00 && entry->flags != 0x01) { + VGM_LOG("IMUSE: unknown codec\n"); + goto fail; + } + + offset += 0x09; + data_offset += entry->size; + } + + data->type = MCMP; // with header [Grim Fandango (multi)] + } + else { + goto fail; + } return data; +fail: + free_imuse(data); + return NULL; +} +void* init_imuse_aifc(STREAMFILE* sf, uint32_t start_offset, int channels) { + imuse_codec_data* data = NULL; + + // mini header in AIFC's SSND chunk: + // 00: flags? (fixed) + // 04: crc-like value (may be shared between different files) + // 08: small number (ex. 0x20, 0x2C) + + // doesn't seem there is a block count (nor in AIFC fields), for now so use a known max and recalculate later + int block_count = BLOCK_COUNT_AIFC; + + if (read_u32be(start_offset, sf) != 0x00040700) + return NULL; + + data = init_imuse_internal(channels, block_count); + if (!data) return NULL; + + + /* read block table */ + int block_num = 0; + uint32_t data_size = get_streamfile_size(sf); + uint32_t offset = start_offset + 0x0a; + for (int i = 0; i < data->block_count; i++) { + block_entry_t* entry = &data->block_table[i]; + + entry->offset = read_u32be(offset + 0x00, sf); // after block table + entry->size = read_u32be(offset + 0x04, sf); // in bits + entry->hist_l = read_s16be(offset + 0x08, sf); + entry->hist_r = read_s16be(offset + 0x0a, sf); + entry->step_l = read_u8 (offset + 0x0c, sf); + entry->step_r = read_u8 (offset + 0x0d, sf); + + // bits to bytes + padding (ex. 0x2A45 > 0x549), seems to agree vs (next_offset - offset) + entry->size = (entry->size / 8) + ((entry->size % 8) ? 0x01 : 0x00); + + entry->data = 0x800 * channels; // blocks decode into fixed size + + if (entry->size > MAX_BLOCK_SIZE) { + VGM_LOG("IMUSE: block size %x too big\n", entry->size); + goto fail; + } + + offset += 0x0E; + block_num++; + + // last block found + if (offset + entry->offset + entry->size + 0x10 >= data_size) { + break; + } + } + + if (block_num >= data->block_count) { + vgm_logi("IMUSE: reached max blocks (report)\n"); + goto fail; + } + + data->block_count = block_num; + data->type = AIFC; + + { + // make offsets absolute to unify with other iMUSEs + uint32_t base_offset = start_offset + 0x0a + data->block_count * 0x0e; + for (int i = 0; i < data->block_count; i++) { + block_entry_t* entry = &data->block_table[i]; + + entry->offset += base_offset; + } + } + + return data; fail: free_imuse(data); return NULL; @@ -284,354 +404,345 @@ fail: /* **************************************** */ -static void decode_vima1(s16buf_t* sbuf, uint8_t* buf, size_t data_left, int block_num, uint16_t* adpcm_table) { - int ch, i, j, s; - int bitpos; - int adpcm_history[MAX_CHANNELS] = {0}; - int adpcm_step_index[MAX_CHANNELS] = {0}; - int chs = sbuf->channels; +static void expand_vima(imuse_codec_data* data, bitstream_t* is, int ch, int s) { + bool is_v1 = data->type == COMP; + + int step_index = data->adpcm_step_index[ch]; + int sample = data->adpcm_history[ch]; + int code_bits = is_v1 ? + code_size_table_v1[step_index] : + code_size_table_v2[step_index]; + + // LUT in AIFC: table[bits] = { code_shift, index_table, data_mask, sign_mask, index_add } + int code_shift = (7 - code_bits); + int sign_mask = (1 << (code_bits - 1)); + int data_mask = (sign_mask - 1); // LUT in COMI + + int code = bm_read(is, code_bits); + int code_base = code & data_mask; + + // all bits set means 'keyframe' = read next BE sample + if (!is_v1 && code_base == data_mask) { + sample = (short)bm_read(is, 16); + } + else { + int adpcm_index = (code_base << code_shift); + + if (data->type == AIFC && adpcm_index) { + // this results in very slight differences; not sure about meaning + int index_add = code_shift ? (1 << code_shift) : 0; + adpcm_index |= index_add; + } + + int delta = data->adpcm_table[(step_index * 64) + (adpcm_index)]; + + if (data->type == COMP || (data->type == MCMP && code_base)) { + delta += step_table[step_index] >> (code_bits - 1); + } + + if (code & sign_mask) + delta = -delta; + + sample += delta; + sample = clamp16(sample); + } + + data->pbuf[s] = sample; + data->adpcm_history[ch] = sample; + + int new_step = is_v1 ? + index_tables_v1[code_bits][code] : + index_tables_v2[code_bits][code]; + step_index += new_step; + data->adpcm_step_index[ch] = clamp_s32(step_index, 0, 88); +} + +static int decode_vima_comp(imuse_codec_data* data, block_entry_t* entry) { + int chs = data->channels; + size_t data_left = entry->data; + + int filled = 0; + int pos = 0; /* read header (outside decode in original code) */ { - int pos = 0; - size_t copy_size; - - /* decodes BLOCK_SIZE bytes (not samples), including copy_size if exists, but not first 16b - * or ADPCM headers. ADPCM setup must be set to 0 if headers weren't read. */ - copy_size = get_u16be(buf + pos); + // decodes BLOCK_SIZE bytes (not samples), including copy_size if exists, but not first 16b + // or ADPCM headers. ADPCM setup must be set to 0 if headers weren't read. + uint16_t copy_size = get_u16be(data->block + pos); pos += 0x02; - if (block_num == 0 && copy_size > 0) { + if (data->current_block == 0 && copy_size > 0) { /* iMUS header (always in first block) */ pos += copy_size; data_left -= copy_size; } else if (copy_size > 0) { + VGM_LOG("IMUSE: found PCM block %i\n", data->current_block); + /* presumably PCM data (not seen) */ - for (i = 0, j = pos; i < copy_size / sizeof(sample_t); i++, j += 2) { - sbuf->samples[i] = get_s16le(buf + j); + for (int i = 0, j = pos; i < copy_size / sizeof(sample_t); i++, j += 2) { + data->pbuf[i] = get_s16le(data->block + j); } - sbuf->filled += copy_size / chs / sizeof(sample_t); + filled += copy_size / chs / sizeof(sample_t); pos += copy_size; data_left -= copy_size; - VGM_LOG("IMUS: found PCM block %i\n", block_num); } else { /* ADPCM header (never in first block) */ - for (i = 0; i < chs; i++) { - adpcm_step_index[i] = get_u8 (buf + pos + 0x00); - //adpcm_step[i] = get_s32be(buf + pos + 0x01); /* same as step_table[step_index] */ - adpcm_history[i] = get_s32be(buf + pos + 0x05); + for (int i = 0; i < chs; i++) { + data->adpcm_step_index[i] = get_u8 (data->block + pos + 0x00); + //adpcm_step[i] = get_s32be(data->block + pos + 0x01); // same as step_table[step_index] + data->adpcm_history[i] = get_s32be(data->block + pos + 0x05); pos += 0x09; - adpcm_step_index[i] = clamp_s32(adpcm_step_index[i], 0, 88); /* not originally */ + // not done originally + data->adpcm_step_index[i] = clamp_s32(data->adpcm_step_index[i], 0, 88); } } - - bitpos = pos * 8; } + bitstream_t is = {0}; + bm_setup(&is, data->block, entry->size); // original BR reads max 16 bit per call + bm_skip(&is, pos * 8); - /* decode ADPCM data after header - * (stereo layout: all samples from L, then all for R) */ - for (ch = 0; ch < chs; ch++) { - int sample, step_index; + /* decode ADPCM data after header (stereo layout: all samples from L, then all for R) */ + int samples_left = data_left / sizeof(short); + + for (int ch = 0; ch < chs; ch++) { int samples_to_do; - int samples_left = data_left / sizeof(int16_t); - int first_sample = sbuf->filled * chs + ch; - if (chs == 1) { samples_to_do = samples_left; - } else { - /* L has +1 code for aligment in first block, must be read to reach R (code seems empty). - * Not sure if COMI uses decoded bytes or decoded samples (returns samples_left / channels) - * though but the latter makes more sense. */ + } + else { + // L has +1 code for aligment at the end of block, must be read to reach R (code seems empty). + // Not sure if COMI uses decoded bytes or decoded samples (returns samples_left / channels), + // but the latter makes more sense. if (ch == 0) samples_to_do = (samples_left + 1) / chs; else samples_to_do = (samples_left + 0) / chs; } - //;VGM_ASSERT((samples_left + 1) / 2 != (samples_left + 0) / 2, "IMUSE: sample diffs\n"); - step_index = adpcm_step_index[ch]; - sample = adpcm_history[ch]; - - for (i = 0, s = first_sample; i < samples_to_do; i++, s += chs) { - int code_size, code, sign_mask, data_mask, delta; - - if (bitpos >= MAX_BLOCK_SIZE * 8) { - VGM_LOG("IMUSE: wrong bit offset\n"); - break; - } - - code_size = code_size_table_v1[step_index]; - - /* get bit thing from COMI (reads closest 16b then masks + shifts as needed), BE layout */ - code = get_u16be(buf + (bitpos >> 3)); //ok - code = (code << (bitpos & 7)) & 0xFFFF; - code = code >> (16 - code_size); - bitpos += code_size; - - sign_mask = (1 << (code_size - 1)); - data_mask = sign_mask - 1; /* done with a LUT in COMI */ - - delta = adpcm_table[(step_index * 64) + (((code & data_mask) << (7 - code_size)))]; - delta += step_table[step_index] >> (code_size - 1); - if (code & sign_mask) - delta = -delta; - - sample += delta; - sample = clamp16(sample); - sbuf->samples[s] = sample; - - step_index += index_tables_v1[code_size][code]; - step_index = clamp_s32(step_index, 0, 88); + int s = filled * chs + ch; + for (int i = 0; i < samples_to_do; i++) { + expand_vima(data, &is, ch, s); + s += chs; } } - sbuf->filled += data_left / sizeof(int16_t) / chs; + filled += data_left / sizeof(short) / chs; + return filled; } -static int decode_block1(imuse_codec_data* data, uint8_t* block, size_t data_left) { - int block_num = data->current_block; - - switch(data->block_table[block_num].flags) { - case 0x0D: - case 0x0F: - decode_vima1(&data->sbuf, block, data_left, block_num, data->adpcm_table); - break; - default: - return 0; - } - return 1; -} - -static void decode_data2(s16buf_t* sbuf, uint8_t* buf, size_t data_left, int block_num) { - int i, j; - int channels = sbuf->channels; - - if (block_num == 0) { - /* iMUS header (always in first block, not shared with audio data unlike V1) */ - sbuf->filled = 0; - } - else { - /* presumably PCM data (not seen) */ - for (i = 0, j = 0; i < data_left / sizeof(sample_t); i++, j += 2) { - sbuf->samples[i] = get_s16le(buf + j); - } - sbuf->filled += data_left / channels / sizeof(sample_t); - - VGM_LOG("IMUS: found PCM block %i\n", block_num); - } -} - -static void decode_vima2(s16buf_t* sbuf, uint8_t* buf, size_t data_left, uint16_t* adpcm_table) { - int ch, i, s; - int bitpos; - int adpcm_history[MAX_CHANNELS] = {0}; - int adpcm_step_index[MAX_CHANNELS] = {0}; - int chs = sbuf->channels; - uint16_t word; - int pos = 0; +static int decode_vima_mcmp(imuse_codec_data* data, block_entry_t* entry) { + int chs = data->channels; + size_t data_left = entry->data; + int filled = 0; + int pos = 0x00; /* read ADPCM header */ { - - for (i = 0; i < chs; i++) { - adpcm_step_index[i] = get_u8 (buf + pos + 0x00); - adpcm_history[i] = get_s16be(buf + pos + 0x01); + for (int i = 0; i < chs; i++) { + data->adpcm_step_index[i] = get_u8 (data->block + pos + 0x00); + data->adpcm_history[i] = get_s16be(data->block + pos + 0x01); pos += 0x03; - /* checked as < 0 and only for first index, means "stereo" */ - if (adpcm_step_index[i] & 0x80) { - adpcm_step_index[i] = (~adpcm_step_index[i]) & 0xFF; - if (chs != 2) return; + // checked as < 0 and only for first index, means "stereo" + if (data->adpcm_step_index[i] & 0x80) { + data->adpcm_step_index[i] = (~data->adpcm_step_index[i]) & 0xFF; + if (chs != 2) return 0; } - /* not originally done but in case of garbage data */ - adpcm_step_index[i] = clamp_s32(adpcm_step_index[i], 0, 88); - } - - } - - bitpos = 0; - word = get_u16be(buf + pos); /* originally with a rolling buf, use index to validate overflow */ - pos += 0x02; - - /* decode ADPCM data after header - * (stereo layout: all samples from L, then all for R) */ - for (ch = 0; ch < chs; ch++) { - int sample, step_index; - int samples_to_do; - int samples_left = data_left / sizeof(int16_t); - int first_sample = sbuf->filled * chs + ch; - - samples_to_do = samples_left / chs; - - step_index = adpcm_step_index[ch]; - sample = adpcm_history[ch]; - - for (i = 0, s = first_sample; i < samples_to_do; i++, s += chs) { - int code_size, code, sign_mask, data_mask, delta; - - if (pos >= MAX_BLOCK_SIZE) { - VGM_LOG("IMUSE: wrong pos offset\n"); - break; - } - - code_size = code_size_table_v2[step_index]; - sign_mask = (1 << (code_size - 1)); - data_mask = (sign_mask - 1); - - /* get bit thing, masks current code and moves 'upwards' word after reading 8 bits */ - bitpos += code_size; - code = (word >> (16 - bitpos)) & (sign_mask | data_mask); - if (bitpos > 7) { - word = (word << 8) | buf[pos++]; - bitpos -= 8; - } - - /* clean sign stuff for next tests */ - if (code & sign_mask) - code ^= sign_mask; - else - sign_mask = 0; - - /* all bits set mean 'keyframe' = read next sample */ - if (code == data_mask) { - sample = (int16_t)(word << bitpos); - word = (word << 8) | buf[pos++]; - sample |= (word >> (8 - bitpos)) & 0xFF; - word = (word << 8) | buf[pos++]; - } - else { - delta = adpcm_table[(step_index * 64) + ((code << (7 - code_size)))]; - if (code) - delta += step_table[step_index] >> (code_size - 1); - if (sign_mask) - delta = -delta; - - sample += delta; - sample = clamp16(sample); - } - - sbuf->samples[s] = sample; - - step_index += index_tables_v2[code_size][code]; - step_index = clamp_s32(step_index, 0, 88); + // not done originally + data->adpcm_step_index[i] = clamp_s32(data->adpcm_step_index[i], 0, 88); } } - sbuf->filled += data_left / sizeof(int16_t) / chs; -} + bitstream_t is = {0}; + bm_setup(&is, data->block, entry->size); // original BR reads max 16 bit per call + bm_skip(&is, pos * 8); -static int decode_block2(imuse_codec_data* data, uint8_t* block, size_t data_left) { - int block_num = data->current_block; + /* decode ADPCM data after header (stereo layout: all samples from L, then all for R) */ + int samples_left = data_left / sizeof(short); + int samples_to_do = samples_left / chs; - switch(data->block_table[block_num].flags) { - case 0x00: - decode_data2(&data->sbuf, block, data_left, block_num); - break; - - case 0x01: - decode_vima2(&data->sbuf, block, data_left, data->adpcm_table); - break; - default: - return 0; + for (int ch = 0; ch < chs; ch++) { + int s = filled * chs + ch; + for (int i = 0; i < samples_to_do; i++) { + expand_vima(data, &is, ch, s); + s += chs; + } } - return 1; + + filled += data_left / sizeof(short) / chs; + return filled; } +//TO-DO: a few files have samples going go over max at times. +// All AIFC tables, decode, samples, clamps, etc below seem correct though, maybe encoder bug? +static int decode_vima_aifc(imuse_codec_data* data, block_entry_t* entry) { + int chs = data->channels; + size_t data_left = entry->data; + int filled = 0; + int pos = 0; -/* decodes a whole block into sample buffer, all at once due to L/R layout and VBR data */ -static int decode_block(STREAMFILE* sf, imuse_codec_data* data) { - int ok; - uint8_t block[MAX_BLOCK_SIZE]; - size_t data_left; + /* read ADPCM header */ + { + data->adpcm_history[0] = entry->hist_l; + data->adpcm_history[1] = entry->hist_r; + data->adpcm_step_index[0] = entry->step_l; + data->adpcm_step_index[1] = entry->step_r; - data->sbuf.samples = data->samples; - data->sbuf.channels = data->channels; + // not done originally + data->adpcm_step_index[0] = clamp_s32(data->adpcm_step_index[0], 0, 88); + data->adpcm_step_index[1] = clamp_s32(data->adpcm_step_index[1], 0, 88); + } - if (data->current_block >= data->block_count) { + bitstream_t is = {0}; + bm_setup(&is, data->block, entry->size); // original BR reads max 16 bit per call + bm_skip(&is, pos * 8); + + /* decode ADPCM data after header (stereo layout: L then R xN) */ + int samples_left = data_left / sizeof(short); + int samples_to_do = samples_left / chs; + + int s = filled * chs; + for (int i = 0; i < samples_to_do; i++) { + for (int ch = 0; ch < chs; ch++) { + expand_vima(data, &is, ch, s); + s++; + } + } + + filled += data_left / sizeof(short) / chs; + return filled; +} + +static int decode_data_mcmp(imuse_codec_data* data, block_entry_t* entry) { + + if (data->current_block == 0) { + // iMUS header (always in first block, not shared with audio data unlike V1) return 0; } - /* read block */ - { - off_t offset = data->block_table[data->current_block].offset; - size_t size = data->block_table[data->current_block].size; + VGM_LOG("IMUSE: found PCM block %i\n", data->current_block); - read_streamfile(block, offset, size, sf); - - data_left = data->block_table[data->current_block].data; + // presumably PCM data (not seen) + for (int i = 0; i < entry->data / sizeof(short); i++) { + data->pbuf[i] = get_s16le(data->block + i * 0x02); } + return entry->data / data->channels / sizeof(short); +} + +static int decode_block_comp(imuse_codec_data* data, block_entry_t* entry) { + + switch(entry->flags) { + case 0x0D: + case 0x0F: + return decode_vima_comp(data, entry); + default: + return -1; + } +} + +static int decode_block_mcmp(imuse_codec_data* data, block_entry_t* entry) { + + switch(entry->flags) { + case 0x00: + return decode_data_mcmp(data, entry); + + case 0x01: + return decode_vima_mcmp(data, entry); + + default: + return -1; + } +} + +static int decode_block_aifc(imuse_codec_data* data, block_entry_t* entry) { + + return decode_vima_aifc(data, entry); +} + +// decodes a whole block into sample buffer, all at once due to L/R layout and VBR data +static int decode_block(imuse_codec_data* data) { + int block_num = data->current_block; + block_entry_t* entry = &data->block_table[block_num]; + + int samples; switch(data->type) { - case COMP: - ok = decode_block1(data, block, data_left); + case COMP: + samples = decode_block_comp(data, entry); break; case MCMP: - ok = decode_block2(data, block, data_left); + samples = decode_block_mcmp(data, entry); + break; + + case AIFC: + samples = decode_block_aifc(data, entry); break; default: - return 0; + return -1; } - /* block fully read */ + // block done data->current_block++; - return ok; + return samples; } +static bool read_block(STREAMFILE* sf, imuse_codec_data* data) { + if (data->current_block >= data->block_count) + return false; -void decode_imuse(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do) { - imuse_codec_data* data = vgmstream->codec_data; - STREAMFILE* sf = vgmstream->ch[0].streamfile; - int ok; + off_t offset = data->block_table[data->current_block].offset; + size_t size = data->block_table[data->current_block].size; + read_streamfile(data->block, offset, size, sf); - while (samples_to_do > 0) { - s16buf_t* sbuf = &data->sbuf; - - if (sbuf->filled == 0) { - ok = decode_block(sf, data); - if (!ok) goto fail; - } - - s16buf_consume(&outbuf, sbuf, &samples_to_do); - } - - return; -fail: - //todo fill silence - return; + return true; } +static bool decode_frame_imuse(VGMSTREAM* v) { + imuse_codec_data* data = v->codec_data; + STREAMFILE* sf = v->ch[0].streamfile; -void free_imuse(imuse_codec_data* data) { + decode_state_t* ds = v->decode_state; + + bool ok = read_block(sf, data); + if (!ok) return false; + + int samples = decode_block(data); + if (samples < 0) return false; //may be zero on header blocks + + sbuf_init_s16(&ds->sbuf, data->pbuf, samples, data->channels); + ds->sbuf.filled = ds->sbuf.samples; + + return true; +} + +static void seek_imuse(VGMSTREAM* v, int32_t num_sample) { + imuse_codec_data* data = v->codec_data; + decode_state_t* ds = v->decode_state; if (!data) return; - free(data->block_table); - free(data); -} - -void seek_imuse(imuse_codec_data* data, int32_t num_sample) { - if (!data) return; - - //todo find closest block, set skip count - reset_imuse(data); + + //TODO: find closest block, set skip count + ds->discard = num_sample; } -void reset_imuse(imuse_codec_data* data) { - if (!data) return; - - data->current_block = 0; - data->sbuf.filled = 0; -} +const codec_info_t imuse_decoder = { + .sample_type = SFMT_S16, + .decode_frame = decode_frame_imuse, + .free = free_imuse, + .reset = reset_imuse, + .seek = seek_imuse, +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/ka1a_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/ka1a_decoder.c index 17d23a953..bc58cd21d 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/ka1a_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/ka1a_decoder.c @@ -1,19 +1,31 @@ #include "coding.h" #include "../base/decode_state.h" +#include "../base/codec_info.h" #include "libs/ka1a_dec.h" /* opaque struct */ -struct ka1a_codec_data { +typedef struct { uint8_t* buf; float* fbuf; int frame_size; void* handle; -}; +} ka1a_codec_data; -ka1a_codec_data* init_ka1a(int bitrate_mode, int channels_tracks) { +static void free_ka1a(void* priv_data) { + ka1a_codec_data* data = priv_data; + if (!data) return; + + if (data->handle) + ka1a_free(data->handle); + free(data->buf); + free(data->fbuf); + free(data); +} + +void* init_ka1a(int bitrate_mode, int channels_tracks) { ka1a_codec_data* data = NULL; int buf_size; @@ -39,7 +51,7 @@ fail: return NULL; } -static bool read_ka1a_frame(VGMSTREAM* v) { +static bool read_frame(VGMSTREAM* v) { ka1a_codec_data* data = v->codec_data; int bytes; @@ -72,8 +84,8 @@ static bool read_ka1a_frame(VGMSTREAM* v) { return true; } -bool decode_ka1a_frame(VGMSTREAM* v) { - bool ok = read_ka1a_frame(v); +bool decode_frame_ka1a(VGMSTREAM* v) { + bool ok = read_frame(v); if (!ok) return false; @@ -90,13 +102,14 @@ bool decode_ka1a_frame(VGMSTREAM* v) { return true; } -void reset_ka1a(ka1a_codec_data* data) { +static void reset_ka1a(void* priv_data) { + ka1a_codec_data* data = priv_data; if (!data || !data->handle) return; ka1a_reset(data->handle); } -void seek_ka1a(VGMSTREAM* v, int32_t num_sample) { +static void seek_ka1a(VGMSTREAM* v, int32_t num_sample) { ka1a_codec_data* data = v->codec_data; decode_state_t* ds = v->decode_state; if (!data) return; @@ -135,12 +148,10 @@ void seek_ka1a(VGMSTREAM* v, int32_t num_sample) { #endif } -void free_ka1a(ka1a_codec_data* data) { - if (!data) return; - - if (data->handle) - ka1a_free(data->handle); - free(data->buf); - free(data->fbuf); - free(data); -} +const codec_info_t ka1a_decoder = { + .sample_type = SFMT_FLT, + .decode_frame = decode_frame_ka1a, + .free = free_ka1a, + .reset = reset_ka1a, + .seek = seek_ka1a, +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.c index 262721c5c..08c79233d 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.c @@ -329,19 +329,16 @@ int clHCA_getInfo(clHCA* hca, clHCA_stInfo *info) { } //HCADecoder_DecodeBlockInt32 -void clHCA_ReadSamples16(clHCA* hca, signed short *samples) { +void clHCA_ReadSamples16(clHCA* hca, short* samples) { const float scale_f = 32768.0f; - float f; - signed int s; - unsigned int i, j, k; /* PCM output is generally unused, but lib functions seem to use SIMD for f32 to s32 + round to zero */ - for (i = 0; i < HCA_SUBFRAMES; i++) { - for (j = 0; j < HCA_SAMPLES_PER_SUBFRAME; j++) { - for (k = 0; k < hca->channels; k++) { - f = hca->channel[k].wave[i][j]; + for (int i = 0; i < HCA_SUBFRAMES; i++) { + for (int j = 0; j < HCA_SAMPLES_PER_SUBFRAME; j++) { + for (int k = 0; k < hca->channels; k++) { + float f = hca->channel[k].wave[i][j]; //f = f * hca->rva_volume; /* rare, won't apply for now */ - s = (signed int)(f * scale_f); + int s = (signed int)(f * scale_f); if (s > 32767) s = 32767; else if (s < -32768) @@ -352,6 +349,20 @@ void clHCA_ReadSamples16(clHCA* hca, signed short *samples) { } } +void clHCA_ReadSamples(clHCA* hca, float* samples) { + + /* interleave output */ + for (int i = 0; i < HCA_SUBFRAMES; i++) { + for (int j = 0; j < HCA_SAMPLES_PER_SUBFRAME; j++) { + for (int k = 0; k < hca->channels; k++) { + float f = hca->channel[k].wave[i][j]; + //f = f * hca->rva_volume; /* rare, won't apply for now */ + *samples++ = f; + } + } + } +} + //-------------------------------------------------- // Allocation and creation diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.h index 84b4aae03..2ffc140a1 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.h +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/clhca.h @@ -64,7 +64,9 @@ int clHCA_DecodeBlock(clHCA* hca, void* data, unsigned int size); /* Extracts signed and clipped 16 bit samples into sample buffer. * May be called after clHCA_DecodeBlock, and will return the same data until * next decode. Buffer must be at least (samplesPerBlock*channels) long. */ -void clHCA_ReadSamples16(clHCA* hca, short* outSamples); +void clHCA_ReadSamples16(clHCA* hca, short* samples); +void clHCA_ReadSamples(clHCA* hca, float* samples); + /* Sets a 64 bit encryption key, to properly decode blocks. This may be called * multiple times to change the key, before or after clHCA_DecodeHeader. diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/compresswave_lib.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/compresswave_lib.c index 8c4b17786..f11cd78d5 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/libs/compresswave_lib.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/compresswave_lib.c @@ -695,7 +695,10 @@ int TCompressWaveData_Rendering(TCompressWaveData* self, int16_t* buf, uint32_t } else { //in case of playback without loop self->FPlay = CW_FALSE; - return result; //exit + //return result; //exit + + // OG lib returns error if requested more than avaiable, return partial buf here + break; } } @@ -761,10 +764,10 @@ int TCompressWaveData_Rendering(TCompressWaveData* self, int16_t* buf, uint32_t self->FWavePosition += WaveStep; } - //remainder calcs - //depending on buffer lenght remainder may happen - //example: 44100 / 4 = 11025...OK 44100 / 8 = 5512.5...NG - // in that case appear as noise + // remainder calcs + // depending on buffer length remainder may happen + // example: 44100 / 4 = 11025...OK 44100 / 8 = 5512.5...NG + // in that case it appears as noise if (Len % 8 == 4) { TCompressWaveData_Rendering_WriteWave(self, &buf1, RVol, LVol); } diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/minimp3.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/minimp3.h new file mode 100644 index 000000000..3220ae1a8 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/minimp3.h @@ -0,0 +1,1865 @@ +#ifndef MINIMP3_H +#define MINIMP3_H +/* + https://github.com/lieff/minimp3 + To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. + This software is distributed without any warranty. + See . +*/ +#include + +#define MINIMP3_MAX_SAMPLES_PER_FRAME (1152*2) + +typedef struct +{ + int frame_bytes, frame_offset, channels, hz, layer, bitrate_kbps; +} mp3dec_frame_info_t; + +typedef struct +{ + float mdct_overlap[2][9*32], qmf_state[15*2*32]; + int reserv, free_format_bytes; + unsigned char header[4], reserv_buf[511]; +} mp3dec_t; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +void mp3dec_init(mp3dec_t *dec); +#ifndef MINIMP3_FLOAT_OUTPUT +typedef int16_t mp3d_sample_t; +#else /* MINIMP3_FLOAT_OUTPUT */ +typedef float mp3d_sample_t; +void mp3dec_f32_to_s16(const float *in, int16_t *out, int num_samples); +#endif /* MINIMP3_FLOAT_OUTPUT */ +int mp3dec_decode_frame(mp3dec_t *dec, const uint8_t *mp3, int mp3_bytes, mp3d_sample_t *pcm, mp3dec_frame_info_t *info); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* MINIMP3_H */ +#if defined(MINIMP3_IMPLEMENTATION) && !defined(_MINIMP3_IMPLEMENTATION_GUARD) +#define _MINIMP3_IMPLEMENTATION_GUARD + +#include +#include + +#define MAX_FREE_FORMAT_FRAME_SIZE 2304 /* more than ISO spec's */ +#ifndef MAX_FRAME_SYNC_MATCHES +#define MAX_FRAME_SYNC_MATCHES 10 +#endif /* MAX_FRAME_SYNC_MATCHES */ + +#define MAX_L3_FRAME_PAYLOAD_BYTES MAX_FREE_FORMAT_FRAME_SIZE /* MUST be >= 320000/8/32000*1152 = 1440 */ + +#define MAX_BITRESERVOIR_BYTES 511 +#define SHORT_BLOCK_TYPE 2 +#define STOP_BLOCK_TYPE 3 +#define MODE_MONO 3 +#define MODE_JOINT_STEREO 1 +#define HDR_SIZE 4 +#define HDR_IS_MONO(h) (((h[3]) & 0xC0) == 0xC0) +#define HDR_IS_MS_STEREO(h) (((h[3]) & 0xE0) == 0x60) +#define HDR_IS_FREE_FORMAT(h) (((h[2]) & 0xF0) == 0) +#define HDR_IS_CRC(h) (!((h[1]) & 1)) +#define HDR_TEST_PADDING(h) ((h[2]) & 0x2) +#define HDR_TEST_MPEG1(h) ((h[1]) & 0x8) +#define HDR_TEST_NOT_MPEG25(h) ((h[1]) & 0x10) +#define HDR_TEST_I_STEREO(h) ((h[3]) & 0x10) +#define HDR_TEST_MS_STEREO(h) ((h[3]) & 0x20) +#define HDR_GET_STEREO_MODE(h) (((h[3]) >> 6) & 3) +#define HDR_GET_STEREO_MODE_EXT(h) (((h[3]) >> 4) & 3) +#define HDR_GET_LAYER(h) (((h[1]) >> 1) & 3) +#define HDR_GET_BITRATE(h) ((h[2]) >> 4) +#define HDR_GET_SAMPLE_RATE(h) (((h[2]) >> 2) & 3) +#define HDR_GET_MY_SAMPLE_RATE(h) (HDR_GET_SAMPLE_RATE(h) + (((h[1] >> 3) & 1) + ((h[1] >> 4) & 1))*3) +#define HDR_IS_FRAME_576(h) ((h[1] & 14) == 2) +#define HDR_IS_LAYER_1(h) ((h[1] & 6) == 6) + +#define BITS_DEQUANTIZER_OUT -1 +#define MAX_SCF (255 + BITS_DEQUANTIZER_OUT*4 - 210) +#define MAX_SCFI ((MAX_SCF + 3) & ~3) + +#define MINIMP3_MIN(a, b) ((a) > (b) ? (b) : (a)) +#define MINIMP3_MAX(a, b) ((a) < (b) ? (b) : (a)) + +#if !defined(MINIMP3_NO_SIMD) + +#if !defined(MINIMP3_ONLY_SIMD) && (defined(_M_X64) || defined(__x86_64__) || defined(__aarch64__) || defined(_M_ARM64)) +/* x64 always have SSE2, arm64 always have neon, no need for generic code */ +#define MINIMP3_ONLY_SIMD +#endif /* SIMD checks... */ + +#if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))) || ((defined(__i386__) || defined(__x86_64__)) && defined(__SSE2__)) +#if defined(_MSC_VER) +#include +#endif /* defined(_MSC_VER) */ +#include +#define HAVE_SSE 1 +#define HAVE_SIMD 1 +#define VSTORE _mm_storeu_ps +#define VLD _mm_loadu_ps +#define VSET _mm_set1_ps +#define VADD _mm_add_ps +#define VSUB _mm_sub_ps +#define VMUL _mm_mul_ps +#define VMAC(a, x, y) _mm_add_ps(a, _mm_mul_ps(x, y)) +#define VMSB(a, x, y) _mm_sub_ps(a, _mm_mul_ps(x, y)) +#define VMUL_S(x, s) _mm_mul_ps(x, _mm_set1_ps(s)) +#define VREV(x) _mm_shuffle_ps(x, x, _MM_SHUFFLE(0, 1, 2, 3)) +typedef __m128 f4; +#if defined(_MSC_VER) || defined(MINIMP3_ONLY_SIMD) +#define minimp3_cpuid __cpuid +#else /* defined(_MSC_VER) || defined(MINIMP3_ONLY_SIMD) */ +static __inline__ __attribute__((always_inline)) void minimp3_cpuid(int CPUInfo[], const int InfoType) +{ +#if defined(__PIC__) + __asm__ __volatile__( +#if defined(__x86_64__) + "push %%rbx\n" + "cpuid\n" + "xchgl %%ebx, %1\n" + "pop %%rbx\n" +#else /* defined(__x86_64__) */ + "xchgl %%ebx, %1\n" + "cpuid\n" + "xchgl %%ebx, %1\n" +#endif /* defined(__x86_64__) */ + : "=a" (CPUInfo[0]), "=r" (CPUInfo[1]), "=c" (CPUInfo[2]), "=d" (CPUInfo[3]) + : "a" (InfoType)); +#else /* defined(__PIC__) */ + __asm__ __volatile__( + "cpuid" + : "=a" (CPUInfo[0]), "=b" (CPUInfo[1]), "=c" (CPUInfo[2]), "=d" (CPUInfo[3]) + : "a" (InfoType)); +#endif /* defined(__PIC__)*/ +} +#endif /* defined(_MSC_VER) || defined(MINIMP3_ONLY_SIMD) */ +static int have_simd(void) +{ +#ifdef MINIMP3_ONLY_SIMD + return 1; +#else /* MINIMP3_ONLY_SIMD */ + static int g_have_simd; + int CPUInfo[4]; +#ifdef MINIMP3_TEST + static int g_counter; + if (g_counter++ > 100) + return 0; +#endif /* MINIMP3_TEST */ + if (g_have_simd) + goto end; + minimp3_cpuid(CPUInfo, 0); + g_have_simd = 1; + if (CPUInfo[0] > 0) + { + minimp3_cpuid(CPUInfo, 1); + g_have_simd = (CPUInfo[3] & (1 << 26)) + 1; /* SSE2 */ + } +end: + return g_have_simd - 1; +#endif /* MINIMP3_ONLY_SIMD */ +} +#elif defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) +#include +#define HAVE_SSE 0 +#define HAVE_SIMD 1 +#define VSTORE vst1q_f32 +#define VLD vld1q_f32 +#define VSET vmovq_n_f32 +#define VADD vaddq_f32 +#define VSUB vsubq_f32 +#define VMUL vmulq_f32 +#define VMAC(a, x, y) vmlaq_f32(a, x, y) +#define VMSB(a, x, y) vmlsq_f32(a, x, y) +#define VMUL_S(x, s) vmulq_f32(x, vmovq_n_f32(s)) +#define VREV(x) vcombine_f32(vget_high_f32(vrev64q_f32(x)), vget_low_f32(vrev64q_f32(x))) +typedef float32x4_t f4; +static int have_simd() +{ /* TODO: detect neon for !MINIMP3_ONLY_SIMD */ + return 1; +} +#else /* SIMD checks... */ +#define HAVE_SSE 0 +#define HAVE_SIMD 0 +#ifdef MINIMP3_ONLY_SIMD +#error MINIMP3_ONLY_SIMD used, but SSE/NEON not enabled +#endif /* MINIMP3_ONLY_SIMD */ +#endif /* SIMD checks... */ +#else /* !defined(MINIMP3_NO_SIMD) */ +#define HAVE_SIMD 0 +#endif /* !defined(MINIMP3_NO_SIMD) */ + +#if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) && !defined(__aarch64__) && !defined(_M_ARM64) +#define HAVE_ARMV6 1 +static __inline__ __attribute__((always_inline)) int32_t minimp3_clip_int16_arm(int32_t a) +{ + int32_t x = 0; + __asm__ ("ssat %0, #16, %1" : "=r"(x) : "r"(a)); + return x; +} +#else +#define HAVE_ARMV6 0 +#endif + +typedef struct +{ + const uint8_t *buf; + int pos, limit; +} bs_t; + +typedef struct +{ + float scf[3*64]; + uint8_t total_bands, stereo_bands, bitalloc[64], scfcod[64]; +} L12_scale_info; + +typedef struct +{ + uint8_t tab_offset, code_tab_width, band_count; +} L12_subband_alloc_t; + +typedef struct +{ + const uint8_t *sfbtab; + uint16_t part_23_length, big_values, scalefac_compress; + uint8_t global_gain, block_type, mixed_block_flag, n_long_sfb, n_short_sfb; + uint8_t table_select[3], region_count[3], subblock_gain[3]; + uint8_t preflag, scalefac_scale, count1_table, scfsi; +} L3_gr_info_t; + +typedef struct +{ + bs_t bs; + uint8_t maindata[MAX_BITRESERVOIR_BYTES + MAX_L3_FRAME_PAYLOAD_BYTES]; + L3_gr_info_t gr_info[4]; + float grbuf[2][576], scf[40], syn[18 + 15][2*32]; + uint8_t ist_pos[2][39]; +} mp3dec_scratch_t; + +static void bs_init(bs_t *bs, const uint8_t *data, int bytes) +{ + bs->buf = data; + bs->pos = 0; + bs->limit = bytes*8; +} + +static uint32_t get_bits(bs_t *bs, int n) +{ + uint32_t next, cache = 0, s = bs->pos & 7; + int shl = n + s; + const uint8_t *p = bs->buf + (bs->pos >> 3); + if ((bs->pos += n) > bs->limit) + return 0; + next = *p++ & (255 >> s); + while ((shl -= 8) > 0) + { + cache |= next << shl; + next = *p++; + } + return cache | (next >> -shl); +} + +static int hdr_valid(const uint8_t *h) +{ + return h[0] == 0xff && + ((h[1] & 0xF0) == 0xf0 || (h[1] & 0xFE) == 0xe2) && + (HDR_GET_LAYER(h) != 0) && + (HDR_GET_BITRATE(h) != 15) && + (HDR_GET_SAMPLE_RATE(h) != 3); +} + +static int hdr_compare(const uint8_t *h1, const uint8_t *h2) +{ + return hdr_valid(h2) && + ((h1[1] ^ h2[1]) & 0xFE) == 0 && + ((h1[2] ^ h2[2]) & 0x0C) == 0 && + !(HDR_IS_FREE_FORMAT(h1) ^ HDR_IS_FREE_FORMAT(h2)); +} + +static unsigned hdr_bitrate_kbps(const uint8_t *h) +{ + static const uint8_t halfrate[2][3][15] = { + { { 0,4,8,12,16,20,24,28,32,40,48,56,64,72,80 }, { 0,4,8,12,16,20,24,28,32,40,48,56,64,72,80 }, { 0,16,24,28,32,40,48,56,64,72,80,88,96,112,128 } }, + { { 0,16,20,24,28,32,40,48,56,64,80,96,112,128,160 }, { 0,16,24,28,32,40,48,56,64,80,96,112,128,160,192 }, { 0,16,32,48,64,80,96,112,128,144,160,176,192,208,224 } }, + }; + return 2*halfrate[!!HDR_TEST_MPEG1(h)][HDR_GET_LAYER(h) - 1][HDR_GET_BITRATE(h)]; +} + +static unsigned hdr_sample_rate_hz(const uint8_t *h) +{ + static const unsigned g_hz[3] = { 44100, 48000, 32000 }; + return g_hz[HDR_GET_SAMPLE_RATE(h)] >> (int)!HDR_TEST_MPEG1(h) >> (int)!HDR_TEST_NOT_MPEG25(h); +} + +static unsigned hdr_frame_samples(const uint8_t *h) +{ + return HDR_IS_LAYER_1(h) ? 384 : (1152 >> (int)HDR_IS_FRAME_576(h)); +} + +static int hdr_frame_bytes(const uint8_t *h, int free_format_size) +{ + int frame_bytes = hdr_frame_samples(h)*hdr_bitrate_kbps(h)*125/hdr_sample_rate_hz(h); + if (HDR_IS_LAYER_1(h)) + { + frame_bytes &= ~3; /* slot align */ + } + return frame_bytes ? frame_bytes : free_format_size; +} + +static int hdr_padding(const uint8_t *h) +{ + return HDR_TEST_PADDING(h) ? (HDR_IS_LAYER_1(h) ? 4 : 1) : 0; +} + +#ifndef MINIMP3_ONLY_MP3 +static const L12_subband_alloc_t *L12_subband_alloc_table(const uint8_t *hdr, L12_scale_info *sci) +{ + const L12_subband_alloc_t *alloc; + int mode = HDR_GET_STEREO_MODE(hdr); + int nbands, stereo_bands = (mode == MODE_MONO) ? 0 : (mode == MODE_JOINT_STEREO) ? (HDR_GET_STEREO_MODE_EXT(hdr) << 2) + 4 : 32; + + if (HDR_IS_LAYER_1(hdr)) + { + static const L12_subband_alloc_t g_alloc_L1[] = { { 76, 4, 32 } }; + alloc = g_alloc_L1; + nbands = 32; + } else if (!HDR_TEST_MPEG1(hdr)) + { + static const L12_subband_alloc_t g_alloc_L2M2[] = { { 60, 4, 4 }, { 44, 3, 7 }, { 44, 2, 19 } }; + alloc = g_alloc_L2M2; + nbands = 30; + } else + { + static const L12_subband_alloc_t g_alloc_L2M1[] = { { 0, 4, 3 }, { 16, 4, 8 }, { 32, 3, 12 }, { 40, 2, 7 } }; + int sample_rate_idx = HDR_GET_SAMPLE_RATE(hdr); + unsigned kbps = hdr_bitrate_kbps(hdr) >> (int)(mode != MODE_MONO); + if (!kbps) /* free-format */ + { + kbps = 192; + } + + alloc = g_alloc_L2M1; + nbands = 27; + if (kbps < 56) + { + static const L12_subband_alloc_t g_alloc_L2M1_lowrate[] = { { 44, 4, 2 }, { 44, 3, 10 } }; + alloc = g_alloc_L2M1_lowrate; + nbands = sample_rate_idx == 2 ? 12 : 8; + } else if (kbps >= 96 && sample_rate_idx != 1) + { + nbands = 30; + } + } + + sci->total_bands = (uint8_t)nbands; + sci->stereo_bands = (uint8_t)MINIMP3_MIN(stereo_bands, nbands); + + return alloc; +} + +static void L12_read_scalefactors(bs_t *bs, uint8_t *pba, uint8_t *scfcod, int bands, float *scf) +{ + static const float g_deq_L12[18*3] = { +#define DQ(x) 9.53674316e-07f/x, 7.56931807e-07f/x, 6.00777173e-07f/x + DQ(3),DQ(7),DQ(15),DQ(31),DQ(63),DQ(127),DQ(255),DQ(511),DQ(1023),DQ(2047),DQ(4095),DQ(8191),DQ(16383),DQ(32767),DQ(65535),DQ(3),DQ(5),DQ(9) + }; + int i, m; + for (i = 0; i < bands; i++) + { + float s = 0; + int ba = *pba++; + int mask = ba ? 4 + ((19 >> scfcod[i]) & 3) : 0; + for (m = 4; m; m >>= 1) + { + if (mask & m) + { + int b = get_bits(bs, 6); + s = g_deq_L12[ba*3 - 6 + b % 3]*(1 << 21 >> b/3); + } + *scf++ = s; + } + } +} + +static void L12_read_scale_info(const uint8_t *hdr, bs_t *bs, L12_scale_info *sci) +{ + static const uint8_t g_bitalloc_code_tab[] = { + 0,17, 3, 4, 5,6,7, 8,9,10,11,12,13,14,15,16, + 0,17,18, 3,19,4,5, 6,7, 8, 9,10,11,12,13,16, + 0,17,18, 3,19,4,5,16, + 0,17,18,16, + 0,17,18,19, 4,5,6, 7,8, 9,10,11,12,13,14,15, + 0,17,18, 3,19,4,5, 6,7, 8, 9,10,11,12,13,14, + 0, 2, 3, 4, 5,6,7, 8,9,10,11,12,13,14,15,16 + }; + const L12_subband_alloc_t *subband_alloc = L12_subband_alloc_table(hdr, sci); + + int i, k = 0, ba_bits = 0; + const uint8_t *ba_code_tab = g_bitalloc_code_tab; + + for (i = 0; i < sci->total_bands; i++) + { + uint8_t ba; + if (i == k) + { + k += subband_alloc->band_count; + ba_bits = subband_alloc->code_tab_width; + ba_code_tab = g_bitalloc_code_tab + subband_alloc->tab_offset; + subband_alloc++; + } + ba = ba_code_tab[get_bits(bs, ba_bits)]; + sci->bitalloc[2*i] = ba; + if (i < sci->stereo_bands) + { + ba = ba_code_tab[get_bits(bs, ba_bits)]; + } + sci->bitalloc[2*i + 1] = sci->stereo_bands ? ba : 0; + } + + for (i = 0; i < 2*sci->total_bands; i++) + { + sci->scfcod[i] = sci->bitalloc[i] ? HDR_IS_LAYER_1(hdr) ? 2 : get_bits(bs, 2) : 6; + } + + L12_read_scalefactors(bs, sci->bitalloc, sci->scfcod, sci->total_bands*2, sci->scf); + + for (i = sci->stereo_bands; i < sci->total_bands; i++) + { + sci->bitalloc[2*i + 1] = 0; + } +} + +static int L12_dequantize_granule(float *grbuf, bs_t *bs, L12_scale_info *sci, int group_size) +{ + int i, j, k, choff = 576; + for (j = 0; j < 4; j++) + { + float *dst = grbuf + group_size*j; + for (i = 0; i < 2*sci->total_bands; i++) + { + int ba = sci->bitalloc[i]; + if (ba != 0) + { + if (ba < 17) + { + int half = (1 << (ba - 1)) - 1; + for (k = 0; k < group_size; k++) + { + dst[k] = (float)((int)get_bits(bs, ba) - half); + } + } else + { + unsigned mod = (2 << (ba - 17)) + 1; /* 3, 5, 9 */ + unsigned code = get_bits(bs, mod + 2 - (mod >> 3)); /* 5, 7, 10 */ + for (k = 0; k < group_size; k++, code /= mod) + { + dst[k] = (float)((int)(code % mod - mod/2)); + } + } + } + dst += choff; + choff = 18 - choff; + } + } + return group_size*4; +} + +static void L12_apply_scf_384(L12_scale_info *sci, const float *scf, float *dst) +{ + int i, k; + memcpy(dst + 576 + sci->stereo_bands*18, dst + sci->stereo_bands*18, (sci->total_bands - sci->stereo_bands)*18*sizeof(float)); + for (i = 0; i < sci->total_bands; i++, dst += 18, scf += 6) + { + for (k = 0; k < 12; k++) + { + dst[k + 0] *= scf[0]; + dst[k + 576] *= scf[3]; + } + } +} +#endif /* MINIMP3_ONLY_MP3 */ + +static int L3_read_side_info(bs_t *bs, L3_gr_info_t *gr, const uint8_t *hdr) +{ + static const uint8_t g_scf_long[8][23] = { + { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, + { 12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2,0 }, + { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, + { 6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36,0 }, + { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, + { 4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76,158,0 }, + { 4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54,192,0 }, + { 4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102,26,0 } + }; + static const uint8_t g_scf_short[8][40] = { + { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 8,8,8,8,8,8,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26,0 }, + { 4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18,0 }, + { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12,0 }, + { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56,0 }, + { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66,0 }, + { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12,0 } + }; + static const uint8_t g_scf_mixed[8][40] = { + { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 12,12,12,4,4,4,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26,0 }, + { 6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18,0 }, + { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12,0 }, + { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56,0 }, + { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66,0 }, + { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12,0 } + }; + + unsigned tables, scfsi = 0; + int main_data_begin, part_23_sum = 0; + int sr_idx = HDR_GET_MY_SAMPLE_RATE(hdr); sr_idx -= (sr_idx != 0); + int gr_count = HDR_IS_MONO(hdr) ? 1 : 2; + + if (HDR_TEST_MPEG1(hdr)) + { + gr_count *= 2; + main_data_begin = get_bits(bs, 9); + scfsi = get_bits(bs, 7 + gr_count); + } else + { + main_data_begin = get_bits(bs, 8 + gr_count) >> gr_count; + } + + do + { + if (HDR_IS_MONO(hdr)) + { + scfsi <<= 4; + } + gr->part_23_length = (uint16_t)get_bits(bs, 12); + part_23_sum += gr->part_23_length; + gr->big_values = (uint16_t)get_bits(bs, 9); + if (gr->big_values > 288) + { + return -1; + } + gr->global_gain = (uint8_t)get_bits(bs, 8); + gr->scalefac_compress = (uint16_t)get_bits(bs, HDR_TEST_MPEG1(hdr) ? 4 : 9); + gr->sfbtab = g_scf_long[sr_idx]; + gr->n_long_sfb = 22; + gr->n_short_sfb = 0; + if (get_bits(bs, 1)) + { + gr->block_type = (uint8_t)get_bits(bs, 2); + if (!gr->block_type) + { + return -1; + } + gr->mixed_block_flag = (uint8_t)get_bits(bs, 1); + gr->region_count[0] = 7; + gr->region_count[1] = 255; + if (gr->block_type == SHORT_BLOCK_TYPE) + { + scfsi &= 0x0F0F; + if (!gr->mixed_block_flag) + { + gr->region_count[0] = 8; + gr->sfbtab = g_scf_short[sr_idx]; + gr->n_long_sfb = 0; + gr->n_short_sfb = 39; + } else + { + gr->sfbtab = g_scf_mixed[sr_idx]; + gr->n_long_sfb = HDR_TEST_MPEG1(hdr) ? 8 : 6; + gr->n_short_sfb = 30; + } + } + tables = get_bits(bs, 10); + tables <<= 5; + gr->subblock_gain[0] = (uint8_t)get_bits(bs, 3); + gr->subblock_gain[1] = (uint8_t)get_bits(bs, 3); + gr->subblock_gain[2] = (uint8_t)get_bits(bs, 3); + } else + { + gr->block_type = 0; + gr->mixed_block_flag = 0; + tables = get_bits(bs, 15); + gr->region_count[0] = (uint8_t)get_bits(bs, 4); + gr->region_count[1] = (uint8_t)get_bits(bs, 3); + gr->region_count[2] = 255; + } + gr->table_select[0] = (uint8_t)(tables >> 10); + gr->table_select[1] = (uint8_t)((tables >> 5) & 31); + gr->table_select[2] = (uint8_t)((tables) & 31); + gr->preflag = HDR_TEST_MPEG1(hdr) ? get_bits(bs, 1) : (gr->scalefac_compress >= 500); + gr->scalefac_scale = (uint8_t)get_bits(bs, 1); + gr->count1_table = (uint8_t)get_bits(bs, 1); + gr->scfsi = (uint8_t)((scfsi >> 12) & 15); + scfsi <<= 4; + gr++; + } while(--gr_count); + + if (part_23_sum + bs->pos > bs->limit + main_data_begin*8) + { + return -1; + } + + return main_data_begin; +} + +static void L3_read_scalefactors(uint8_t *scf, uint8_t *ist_pos, const uint8_t *scf_size, const uint8_t *scf_count, bs_t *bitbuf, int scfsi) +{ + int i, k; + for (i = 0; i < 4 && scf_count[i]; i++, scfsi *= 2) + { + int cnt = scf_count[i]; + if (scfsi & 8) + { + memcpy(scf, ist_pos, cnt); + } else + { + int bits = scf_size[i]; + if (!bits) + { + memset(scf, 0, cnt); + memset(ist_pos, 0, cnt); + } else + { + int max_scf = (scfsi < 0) ? (1 << bits) - 1 : -1; + for (k = 0; k < cnt; k++) + { + int s = get_bits(bitbuf, bits); + ist_pos[k] = (s == max_scf ? -1 : s); + scf[k] = s; + } + } + } + ist_pos += cnt; + scf += cnt; + } + scf[0] = scf[1] = scf[2] = 0; +} + +static float L3_ldexp_q2(float y, int exp_q2) +{ + static const float g_expfrac[4] = { 9.31322575e-10f,7.83145814e-10f,6.58544508e-10f,5.53767716e-10f }; + int e; + do + { + e = MINIMP3_MIN(30*4, exp_q2); + y *= g_expfrac[e & 3]*(1 << 30 >> (e >> 2)); + } while ((exp_q2 -= e) > 0); + return y; +} + +static void L3_decode_scalefactors(const uint8_t *hdr, uint8_t *ist_pos, bs_t *bs, const L3_gr_info_t *gr, float *scf, int ch) +{ + static const uint8_t g_scf_partitions[3][28] = { + { 6,5,5, 5,6,5,5,5,6,5, 7,3,11,10,0,0, 7, 7, 7,0, 6, 6,6,3, 8, 8,5,0 }, + { 8,9,6,12,6,9,9,9,6,9,12,6,15,18,0,0, 6,15,12,0, 6,12,9,6, 6,18,9,0 }, + { 9,9,6,12,9,9,9,9,9,9,12,6,18,18,0,0,12,12,12,0,12, 9,9,6,15,12,9,0 } + }; + const uint8_t *scf_partition = g_scf_partitions[!!gr->n_short_sfb + !gr->n_long_sfb]; + uint8_t scf_size[4], iscf[40]; + int i, scf_shift = gr->scalefac_scale + 1, gain_exp, scfsi = gr->scfsi; + float gain; + + if (HDR_TEST_MPEG1(hdr)) + { + static const uint8_t g_scfc_decode[16] = { 0,1,2,3, 12,5,6,7, 9,10,11,13, 14,15,18,19 }; + int part = g_scfc_decode[gr->scalefac_compress]; + scf_size[1] = scf_size[0] = (uint8_t)(part >> 2); + scf_size[3] = scf_size[2] = (uint8_t)(part & 3); + } else + { + static const uint8_t g_mod[6*4] = { 5,5,4,4,5,5,4,1,4,3,1,1,5,6,6,1,4,4,4,1,4,3,1,1 }; + int k, modprod, sfc, ist = HDR_TEST_I_STEREO(hdr) && ch; + sfc = gr->scalefac_compress >> ist; + for (k = ist*3*4; sfc >= 0; sfc -= modprod, k += 4) + { + for (modprod = 1, i = 3; i >= 0; i--) + { + scf_size[i] = (uint8_t)(sfc / modprod % g_mod[k + i]); + modprod *= g_mod[k + i]; + } + } + scf_partition += k; + scfsi = -16; + } + L3_read_scalefactors(iscf, ist_pos, scf_size, scf_partition, bs, scfsi); + + if (gr->n_short_sfb) + { + int sh = 3 - scf_shift; + for (i = 0; i < gr->n_short_sfb; i += 3) + { + iscf[gr->n_long_sfb + i + 0] += gr->subblock_gain[0] << sh; + iscf[gr->n_long_sfb + i + 1] += gr->subblock_gain[1] << sh; + iscf[gr->n_long_sfb + i + 2] += gr->subblock_gain[2] << sh; + } + } else if (gr->preflag) + { + static const uint8_t g_preamp[10] = { 1,1,1,1,2,2,3,3,3,2 }; + for (i = 0; i < 10; i++) + { + iscf[11 + i] += g_preamp[i]; + } + } + + gain_exp = gr->global_gain + BITS_DEQUANTIZER_OUT*4 - 210 - (HDR_IS_MS_STEREO(hdr) ? 2 : 0); + gain = L3_ldexp_q2(1 << (MAX_SCFI/4), MAX_SCFI - gain_exp); + for (i = 0; i < (int)(gr->n_long_sfb + gr->n_short_sfb); i++) + { + scf[i] = L3_ldexp_q2(gain, iscf[i] << scf_shift); + } +} + +static const float g_pow43[129 + 16] = { + 0,-1,-2.519842f,-4.326749f,-6.349604f,-8.549880f,-10.902724f,-13.390518f,-16.000000f,-18.720754f,-21.544347f,-24.463781f,-27.473142f,-30.567351f,-33.741992f,-36.993181f, + 0,1,2.519842f,4.326749f,6.349604f,8.549880f,10.902724f,13.390518f,16.000000f,18.720754f,21.544347f,24.463781f,27.473142f,30.567351f,33.741992f,36.993181f,40.317474f,43.711787f,47.173345f,50.699631f,54.288352f,57.937408f,61.644865f,65.408941f,69.227979f,73.100443f,77.024898f,81.000000f,85.024491f,89.097188f,93.216975f,97.382800f,101.593667f,105.848633f,110.146801f,114.487321f,118.869381f,123.292209f,127.755065f,132.257246f,136.798076f,141.376907f,145.993119f,150.646117f,155.335327f,160.060199f,164.820202f,169.614826f,174.443577f,179.305980f,184.201575f,189.129918f,194.090580f,199.083145f,204.107210f,209.162385f,214.248292f,219.364564f,224.510845f,229.686789f,234.892058f,240.126328f,245.389280f,250.680604f,256.000000f,261.347174f,266.721841f,272.123723f,277.552547f,283.008049f,288.489971f,293.998060f,299.532071f,305.091761f,310.676898f,316.287249f,321.922592f,327.582707f,333.267377f,338.976394f,344.709550f,350.466646f,356.247482f,362.051866f,367.879608f,373.730522f,379.604427f,385.501143f,391.420496f,397.362314f,403.326427f,409.312672f,415.320884f,421.350905f,427.402579f,433.475750f,439.570269f,445.685987f,451.822757f,457.980436f,464.158883f,470.357960f,476.577530f,482.817459f,489.077615f,495.357868f,501.658090f,507.978156f,514.317941f,520.677324f,527.056184f,533.454404f,539.871867f,546.308458f,552.764065f,559.238575f,565.731879f,572.243870f,578.774440f,585.323483f,591.890898f,598.476581f,605.080431f,611.702349f,618.342238f,625.000000f,631.675540f,638.368763f,645.079578f +}; + +static float L3_pow_43(int x) +{ + float frac; + int sign, mult = 256; + + if (x < 129) + { + return g_pow43[16 + x]; + } + + if (x < 1024) + { + mult = 16; + x <<= 3; + } + + sign = 2*x & 64; + frac = (float)((x & 63) - sign) / ((x & ~63) + sign); + return g_pow43[16 + ((x + sign) >> 6)]*(1.f + frac*((4.f/3) + frac*(2.f/9)))*mult; +} + +static void L3_huffman(float *dst, bs_t *bs, const L3_gr_info_t *gr_info, const float *scf, int layer3gr_limit) +{ + static const int16_t tabs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 785,785,785,785,784,784,784,784,513,513,513,513,513,513,513,513,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256, + -255,1313,1298,1282,785,785,785,785,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,290,288, + -255,1313,1298,1282,769,769,769,769,529,529,529,529,529,529,529,529,528,528,528,528,528,528,528,528,512,512,512,512,512,512,512,512,290,288, + -253,-318,-351,-367,785,785,785,785,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,819,818,547,547,275,275,275,275,561,560,515,546,289,274,288,258, + -254,-287,1329,1299,1314,1312,1057,1057,1042,1042,1026,1026,784,784,784,784,529,529,529,529,529,529,529,529,769,769,769,769,768,768,768,768,563,560,306,306,291,259, + -252,-413,-477,-542,1298,-575,1041,1041,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-383,-399,1107,1092,1106,1061,849,849,789,789,1104,1091,773,773,1076,1075,341,340,325,309,834,804,577,577,532,532,516,516,832,818,803,816,561,561,531,531,515,546,289,289,288,258, + -252,-429,-493,-559,1057,1057,1042,1042,529,529,529,529,529,529,529,529,784,784,784,784,769,769,769,769,512,512,512,512,512,512,512,512,-382,1077,-415,1106,1061,1104,849,849,789,789,1091,1076,1029,1075,834,834,597,581,340,340,339,324,804,833,532,532,832,772,818,803,817,787,816,771,290,290,290,290,288,258, + -253,-349,-414,-447,-463,1329,1299,-479,1314,1312,1057,1057,1042,1042,1026,1026,785,785,785,785,784,784,784,784,769,769,769,769,768,768,768,768,-319,851,821,-335,836,850,805,849,341,340,325,336,533,533,579,579,564,564,773,832,578,548,563,516,321,276,306,291,304,259, + -251,-572,-733,-830,-863,-879,1041,1041,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-511,-527,-543,1396,1351,1381,1366,1395,1335,1380,-559,1334,1138,1138,1063,1063,1350,1392,1031,1031,1062,1062,1364,1363,1120,1120,1333,1348,881,881,881,881,375,374,359,373,343,358,341,325,791,791,1123,1122,-703,1105,1045,-719,865,865,790,790,774,774,1104,1029,338,293,323,308,-799,-815,833,788,772,818,803,816,322,292,307,320,561,531,515,546,289,274,288,258, + -251,-525,-605,-685,-765,-831,-846,1298,1057,1057,1312,1282,785,785,785,785,784,784,784,784,769,769,769,769,512,512,512,512,512,512,512,512,1399,1398,1383,1367,1382,1396,1351,-511,1381,1366,1139,1139,1079,1079,1124,1124,1364,1349,1363,1333,882,882,882,882,807,807,807,807,1094,1094,1136,1136,373,341,535,535,881,775,867,822,774,-591,324,338,-671,849,550,550,866,864,609,609,293,336,534,534,789,835,773,-751,834,804,308,307,833,788,832,772,562,562,547,547,305,275,560,515,290,290, + -252,-397,-477,-557,-622,-653,-719,-735,-750,1329,1299,1314,1057,1057,1042,1042,1312,1282,1024,1024,785,785,785,785,784,784,784,784,769,769,769,769,-383,1127,1141,1111,1126,1140,1095,1110,869,869,883,883,1079,1109,882,882,375,374,807,868,838,881,791,-463,867,822,368,263,852,837,836,-543,610,610,550,550,352,336,534,534,865,774,851,821,850,805,593,533,579,564,773,832,578,578,548,548,577,577,307,276,306,291,516,560,259,259, + -250,-2107,-2507,-2764,-2909,-2974,-3007,-3023,1041,1041,1040,1040,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-767,-1052,-1213,-1277,-1358,-1405,-1469,-1535,-1550,-1582,-1614,-1647,-1662,-1694,-1726,-1759,-1774,-1807,-1822,-1854,-1886,1565,-1919,-1935,-1951,-1967,1731,1730,1580,1717,-1983,1729,1564,-1999,1548,-2015,-2031,1715,1595,-2047,1714,-2063,1610,-2079,1609,-2095,1323,1323,1457,1457,1307,1307,1712,1547,1641,1700,1699,1594,1685,1625,1442,1442,1322,1322,-780,-973,-910,1279,1278,1277,1262,1276,1261,1275,1215,1260,1229,-959,974,974,989,989,-943,735,478,478,495,463,506,414,-1039,1003,958,1017,927,942,987,957,431,476,1272,1167,1228,-1183,1256,-1199,895,895,941,941,1242,1227,1212,1135,1014,1014,490,489,503,487,910,1013,985,925,863,894,970,955,1012,847,-1343,831,755,755,984,909,428,366,754,559,-1391,752,486,457,924,997,698,698,983,893,740,740,908,877,739,739,667,667,953,938,497,287,271,271,683,606,590,712,726,574,302,302,738,736,481,286,526,725,605,711,636,724,696,651,589,681,666,710,364,467,573,695,466,466,301,465,379,379,709,604,665,679,316,316,634,633,436,436,464,269,424,394,452,332,438,363,347,408,393,448,331,422,362,407,392,421,346,406,391,376,375,359,1441,1306,-2367,1290,-2383,1337,-2399,-2415,1426,1321,-2431,1411,1336,-2447,-2463,-2479,1169,1169,1049,1049,1424,1289,1412,1352,1319,-2495,1154,1154,1064,1064,1153,1153,416,390,360,404,403,389,344,374,373,343,358,372,327,357,342,311,356,326,1395,1394,1137,1137,1047,1047,1365,1392,1287,1379,1334,1364,1349,1378,1318,1363,792,792,792,792,1152,1152,1032,1032,1121,1121,1046,1046,1120,1120,1030,1030,-2895,1106,1061,1104,849,849,789,789,1091,1076,1029,1090,1060,1075,833,833,309,324,532,532,832,772,818,803,561,561,531,560,515,546,289,274,288,258, + -250,-1179,-1579,-1836,-1996,-2124,-2253,-2333,-2413,-2477,-2542,-2574,-2607,-2622,-2655,1314,1313,1298,1312,1282,785,785,785,785,1040,1040,1025,1025,768,768,768,768,-766,-798,-830,-862,-895,-911,-927,-943,-959,-975,-991,-1007,-1023,-1039,-1055,-1070,1724,1647,-1103,-1119,1631,1767,1662,1738,1708,1723,-1135,1780,1615,1779,1599,1677,1646,1778,1583,-1151,1777,1567,1737,1692,1765,1722,1707,1630,1751,1661,1764,1614,1736,1676,1763,1750,1645,1598,1721,1691,1762,1706,1582,1761,1566,-1167,1749,1629,767,766,751,765,494,494,735,764,719,749,734,763,447,447,748,718,477,506,431,491,446,476,461,505,415,430,475,445,504,399,460,489,414,503,383,474,429,459,502,502,746,752,488,398,501,473,413,472,486,271,480,270,-1439,-1455,1357,-1471,-1487,-1503,1341,1325,-1519,1489,1463,1403,1309,-1535,1372,1448,1418,1476,1356,1462,1387,-1551,1475,1340,1447,1402,1386,-1567,1068,1068,1474,1461,455,380,468,440,395,425,410,454,364,467,466,464,453,269,409,448,268,432,1371,1473,1432,1417,1308,1460,1355,1446,1459,1431,1083,1083,1401,1416,1458,1445,1067,1067,1370,1457,1051,1051,1291,1430,1385,1444,1354,1415,1400,1443,1082,1082,1173,1113,1186,1066,1185,1050,-1967,1158,1128,1172,1097,1171,1081,-1983,1157,1112,416,266,375,400,1170,1142,1127,1065,793,793,1169,1033,1156,1096,1141,1111,1155,1080,1126,1140,898,898,808,808,897,897,792,792,1095,1152,1032,1125,1110,1139,1079,1124,882,807,838,881,853,791,-2319,867,368,263,822,852,837,866,806,865,-2399,851,352,262,534,534,821,836,594,594,549,549,593,593,533,533,848,773,579,579,564,578,548,563,276,276,577,576,306,291,516,560,305,305,275,259, + -251,-892,-2058,-2620,-2828,-2957,-3023,-3039,1041,1041,1040,1040,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-511,-527,-543,-559,1530,-575,-591,1528,1527,1407,1526,1391,1023,1023,1023,1023,1525,1375,1268,1268,1103,1103,1087,1087,1039,1039,1523,-604,815,815,815,815,510,495,509,479,508,463,507,447,431,505,415,399,-734,-782,1262,-815,1259,1244,-831,1258,1228,-847,-863,1196,-879,1253,987,987,748,-767,493,493,462,477,414,414,686,669,478,446,461,445,474,429,487,458,412,471,1266,1264,1009,1009,799,799,-1019,-1276,-1452,-1581,-1677,-1757,-1821,-1886,-1933,-1997,1257,1257,1483,1468,1512,1422,1497,1406,1467,1496,1421,1510,1134,1134,1225,1225,1466,1451,1374,1405,1252,1252,1358,1480,1164,1164,1251,1251,1238,1238,1389,1465,-1407,1054,1101,-1423,1207,-1439,830,830,1248,1038,1237,1117,1223,1148,1236,1208,411,426,395,410,379,269,1193,1222,1132,1235,1221,1116,976,976,1192,1162,1177,1220,1131,1191,963,963,-1647,961,780,-1663,558,558,994,993,437,408,393,407,829,978,813,797,947,-1743,721,721,377,392,844,950,828,890,706,706,812,859,796,960,948,843,934,874,571,571,-1919,690,555,689,421,346,539,539,944,779,918,873,932,842,903,888,570,570,931,917,674,674,-2575,1562,-2591,1609,-2607,1654,1322,1322,1441,1441,1696,1546,1683,1593,1669,1624,1426,1426,1321,1321,1639,1680,1425,1425,1305,1305,1545,1668,1608,1623,1667,1592,1638,1666,1320,1320,1652,1607,1409,1409,1304,1304,1288,1288,1664,1637,1395,1395,1335,1335,1622,1636,1394,1394,1319,1319,1606,1621,1392,1392,1137,1137,1137,1137,345,390,360,375,404,373,1047,-2751,-2767,-2783,1062,1121,1046,-2799,1077,-2815,1106,1061,789,789,1105,1104,263,355,310,340,325,354,352,262,339,324,1091,1076,1029,1090,1060,1075,833,833,788,788,1088,1028,818,818,803,803,561,561,531,531,816,771,546,546,289,274,288,258, + -253,-317,-381,-446,-478,-509,1279,1279,-811,-1179,-1451,-1756,-1900,-2028,-2189,-2253,-2333,-2414,-2445,-2511,-2526,1313,1298,-2559,1041,1041,1040,1040,1025,1025,1024,1024,1022,1007,1021,991,1020,975,1019,959,687,687,1018,1017,671,671,655,655,1016,1015,639,639,758,758,623,623,757,607,756,591,755,575,754,559,543,543,1009,783,-575,-621,-685,-749,496,-590,750,749,734,748,974,989,1003,958,988,973,1002,942,987,957,972,1001,926,986,941,971,956,1000,910,985,925,999,894,970,-1071,-1087,-1102,1390,-1135,1436,1509,1451,1374,-1151,1405,1358,1480,1420,-1167,1507,1494,1389,1342,1465,1435,1450,1326,1505,1310,1493,1373,1479,1404,1492,1464,1419,428,443,472,397,736,526,464,464,486,457,442,471,484,482,1357,1449,1434,1478,1388,1491,1341,1490,1325,1489,1463,1403,1309,1477,1372,1448,1418,1433,1476,1356,1462,1387,-1439,1475,1340,1447,1402,1474,1324,1461,1371,1473,269,448,1432,1417,1308,1460,-1711,1459,-1727,1441,1099,1099,1446,1386,1431,1401,-1743,1289,1083,1083,1160,1160,1458,1445,1067,1067,1370,1457,1307,1430,1129,1129,1098,1098,268,432,267,416,266,400,-1887,1144,1187,1082,1173,1113,1186,1066,1050,1158,1128,1143,1172,1097,1171,1081,420,391,1157,1112,1170,1142,1127,1065,1169,1049,1156,1096,1141,1111,1155,1080,1126,1154,1064,1153,1140,1095,1048,-2159,1125,1110,1137,-2175,823,823,1139,1138,807,807,384,264,368,263,868,838,853,791,867,822,852,837,866,806,865,790,-2319,851,821,836,352,262,850,805,849,-2399,533,533,835,820,336,261,578,548,563,577,532,532,832,772,562,562,547,547,305,275,560,515,290,290,288,258 }; + static const uint8_t tab32[] = { 130,162,193,209,44,28,76,140,9,9,9,9,9,9,9,9,190,254,222,238,126,94,157,157,109,61,173,205 }; + static const uint8_t tab33[] = { 252,236,220,204,188,172,156,140,124,108,92,76,60,44,28,12 }; + static const int16_t tabindex[2*16] = { 0,32,64,98,0,132,180,218,292,364,426,538,648,746,0,1126,1460,1460,1460,1460,1460,1460,1460,1460,1842,1842,1842,1842,1842,1842,1842,1842 }; + static const uint8_t g_linbits[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,6,8,10,13,4,5,6,7,8,9,11,13 }; + +#define PEEK_BITS(n) (bs_cache >> (32 - n)) +#define FLUSH_BITS(n) { bs_cache <<= (n); bs_sh += (n); } +#define CHECK_BITS while (bs_sh >= 0) { bs_cache |= (uint32_t)*bs_next_ptr++ << bs_sh; bs_sh -= 8; } +#define BSPOS ((bs_next_ptr - bs->buf)*8 - 24 + bs_sh) + + float one = 0.0f; + int ireg = 0, big_val_cnt = gr_info->big_values; + const uint8_t *sfb = gr_info->sfbtab; + const uint8_t *bs_next_ptr = bs->buf + bs->pos/8; + uint32_t bs_cache = (((bs_next_ptr[0]*256u + bs_next_ptr[1])*256u + bs_next_ptr[2])*256u + bs_next_ptr[3]) << (bs->pos & 7); + int pairs_to_decode, np, bs_sh = (bs->pos & 7) - 8; + bs_next_ptr += 4; + + while (big_val_cnt > 0) + { + int tab_num = gr_info->table_select[ireg]; + int sfb_cnt = gr_info->region_count[ireg++]; + const int16_t *codebook = tabs + tabindex[tab_num]; + int linbits = g_linbits[tab_num]; + if (linbits) + { + do + { + np = *sfb++ / 2; + pairs_to_decode = MINIMP3_MIN(big_val_cnt, np); + one = *scf++; + do + { + int j, w = 5; + int leaf = codebook[PEEK_BITS(w)]; + while (leaf < 0) + { + FLUSH_BITS(w); + w = leaf & 7; + leaf = codebook[PEEK_BITS(w) - (leaf >> 3)]; + } + FLUSH_BITS(leaf >> 8); + + for (j = 0; j < 2; j++, dst++, leaf >>= 4) + { + int lsb = leaf & 0x0F; + if (lsb == 15) + { + lsb += PEEK_BITS(linbits); + FLUSH_BITS(linbits); + CHECK_BITS; + *dst = one*L3_pow_43(lsb)*((int32_t)bs_cache < 0 ? -1: 1); + } else + { + *dst = g_pow43[16 + lsb - 16*(bs_cache >> 31)]*one; + } + FLUSH_BITS(lsb ? 1 : 0); + } + CHECK_BITS; + } while (--pairs_to_decode); + } while ((big_val_cnt -= np) > 0 && --sfb_cnt >= 0); + } else + { + do + { + np = *sfb++ / 2; + pairs_to_decode = MINIMP3_MIN(big_val_cnt, np); + one = *scf++; + do + { + int j, w = 5; + int leaf = codebook[PEEK_BITS(w)]; + while (leaf < 0) + { + FLUSH_BITS(w); + w = leaf & 7; + leaf = codebook[PEEK_BITS(w) - (leaf >> 3)]; + } + FLUSH_BITS(leaf >> 8); + + for (j = 0; j < 2; j++, dst++, leaf >>= 4) + { + int lsb = leaf & 0x0F; + *dst = g_pow43[16 + lsb - 16*(bs_cache >> 31)]*one; + FLUSH_BITS(lsb ? 1 : 0); + } + CHECK_BITS; + } while (--pairs_to_decode); + } while ((big_val_cnt -= np) > 0 && --sfb_cnt >= 0); + } + } + + for (np = 1 - big_val_cnt;; dst += 4) + { + const uint8_t *codebook_count1 = (gr_info->count1_table) ? tab33 : tab32; + int leaf = codebook_count1[PEEK_BITS(4)]; + if (!(leaf & 8)) + { + leaf = codebook_count1[(leaf >> 3) + (bs_cache << 4 >> (32 - (leaf & 3)))]; + } + FLUSH_BITS(leaf & 7); + if (BSPOS > layer3gr_limit) + { + break; + } +#define RELOAD_SCALEFACTOR if (!--np) { np = *sfb++/2; if (!np) break; one = *scf++; } +#define DEQ_COUNT1(s) if (leaf & (128 >> s)) { dst[s] = ((int32_t)bs_cache < 0) ? -one : one; FLUSH_BITS(1) } + RELOAD_SCALEFACTOR; + DEQ_COUNT1(0); + DEQ_COUNT1(1); + RELOAD_SCALEFACTOR; + DEQ_COUNT1(2); + DEQ_COUNT1(3); + CHECK_BITS; + } + + bs->pos = layer3gr_limit; +} + +static void L3_midside_stereo(float *left, int n) +{ + int i = 0; + float *right = left + 576; +#if HAVE_SIMD + if (have_simd()) + { + for (; i < n - 3; i += 4) + { + f4 vl = VLD(left + i); + f4 vr = VLD(right + i); + VSTORE(left + i, VADD(vl, vr)); + VSTORE(right + i, VSUB(vl, vr)); + } +#ifdef __GNUC__ + /* Workaround for spurious -Waggressive-loop-optimizations warning from gcc. + * For more info see: https://github.com/lieff/minimp3/issues/88 + */ + if (__builtin_constant_p(n % 4 == 0) && n % 4 == 0) + return; +#endif + } +#endif /* HAVE_SIMD */ + for (; i < n; i++) + { + float a = left[i]; + float b = right[i]; + left[i] = a + b; + right[i] = a - b; + } +} + +static void L3_intensity_stereo_band(float *left, int n, float kl, float kr) +{ + int i; + for (i = 0; i < n; i++) + { + left[i + 576] = left[i]*kr; + left[i] = left[i]*kl; + } +} + +static void L3_stereo_top_band(const float *right, const uint8_t *sfb, int nbands, int max_band[3]) +{ + int i, k; + + max_band[0] = max_band[1] = max_band[2] = -1; + + for (i = 0; i < nbands; i++) + { + for (k = 0; k < sfb[i]; k += 2) + { + if (right[k] != 0 || right[k + 1] != 0) + { + max_band[i % 3] = i; + break; + } + } + right += sfb[i]; + } +} + +static void L3_stereo_process(float *left, const uint8_t *ist_pos, const uint8_t *sfb, const uint8_t *hdr, int max_band[3], int mpeg2_sh) +{ + static const float g_pan[7*2] = { 0,1,0.21132487f,0.78867513f,0.36602540f,0.63397460f,0.5f,0.5f,0.63397460f,0.36602540f,0.78867513f,0.21132487f,1,0 }; + unsigned i, max_pos = HDR_TEST_MPEG1(hdr) ? 7 : 64; + + for (i = 0; sfb[i]; i++) + { + unsigned ipos = ist_pos[i]; + if ((int)i > max_band[i % 3] && ipos < max_pos) + { + float kl, kr, s = HDR_TEST_MS_STEREO(hdr) ? 1.41421356f : 1; + if (HDR_TEST_MPEG1(hdr)) + { + kl = g_pan[2*ipos]; + kr = g_pan[2*ipos + 1]; + } else + { + kl = 1; + kr = L3_ldexp_q2(1, (ipos + 1) >> 1 << mpeg2_sh); + if (ipos & 1) + { + kl = kr; + kr = 1; + } + } + L3_intensity_stereo_band(left, sfb[i], kl*s, kr*s); + } else if (HDR_TEST_MS_STEREO(hdr)) + { + L3_midside_stereo(left, sfb[i]); + } + left += sfb[i]; + } +} + +static void L3_intensity_stereo(float *left, uint8_t *ist_pos, const L3_gr_info_t *gr, const uint8_t *hdr) +{ + int max_band[3], n_sfb = gr->n_long_sfb + gr->n_short_sfb; + int i, max_blocks = gr->n_short_sfb ? 3 : 1; + + L3_stereo_top_band(left + 576, gr->sfbtab, n_sfb, max_band); + if (gr->n_long_sfb) + { + max_band[0] = max_band[1] = max_band[2] = MINIMP3_MAX(MINIMP3_MAX(max_band[0], max_band[1]), max_band[2]); + } + for (i = 0; i < max_blocks; i++) + { + int default_pos = HDR_TEST_MPEG1(hdr) ? 3 : 0; + int itop = n_sfb - max_blocks + i; + int prev = itop - max_blocks; + ist_pos[itop] = max_band[i] >= prev ? default_pos : ist_pos[prev]; + } + L3_stereo_process(left, ist_pos, gr->sfbtab, hdr, max_band, gr[1].scalefac_compress & 1); +} + +static void L3_reorder(float *grbuf, float *scratch, const uint8_t *sfb) +{ + int i, len; + float *src = grbuf, *dst = scratch; + + for (;0 != (len = *sfb); sfb += 3, src += 2*len) + { + for (i = 0; i < len; i++, src++) + { + *dst++ = src[0*len]; + *dst++ = src[1*len]; + *dst++ = src[2*len]; + } + } + memcpy(grbuf, scratch, (dst - scratch)*sizeof(float)); +} + +static void L3_antialias(float *grbuf, int nbands) +{ + static const float g_aa[2][8] = { + {0.85749293f,0.88174200f,0.94962865f,0.98331459f,0.99551782f,0.99916056f,0.99989920f,0.99999316f}, + {0.51449576f,0.47173197f,0.31337745f,0.18191320f,0.09457419f,0.04096558f,0.01419856f,0.00369997f} + }; + + for (; nbands > 0; nbands--, grbuf += 18) + { + int i = 0; +#if HAVE_SIMD + if (have_simd()) for (; i < 8; i += 4) + { + f4 vu = VLD(grbuf + 18 + i); + f4 vd = VLD(grbuf + 14 - i); + f4 vc0 = VLD(g_aa[0] + i); + f4 vc1 = VLD(g_aa[1] + i); + vd = VREV(vd); + VSTORE(grbuf + 18 + i, VSUB(VMUL(vu, vc0), VMUL(vd, vc1))); + vd = VADD(VMUL(vu, vc1), VMUL(vd, vc0)); + VSTORE(grbuf + 14 - i, VREV(vd)); + } +#endif /* HAVE_SIMD */ +#ifndef MINIMP3_ONLY_SIMD + for(; i < 8; i++) + { + float u = grbuf[18 + i]; + float d = grbuf[17 - i]; + grbuf[18 + i] = u*g_aa[0][i] - d*g_aa[1][i]; + grbuf[17 - i] = u*g_aa[1][i] + d*g_aa[0][i]; + } +#endif /* MINIMP3_ONLY_SIMD */ + } +} + +static void L3_dct3_9(float *y) +{ + float s0, s1, s2, s3, s4, s5, s6, s7, s8, t0, t2, t4; + + s0 = y[0]; s2 = y[2]; s4 = y[4]; s6 = y[6]; s8 = y[8]; + t0 = s0 + s6*0.5f; + s0 -= s6; + t4 = (s4 + s2)*0.93969262f; + t2 = (s8 + s2)*0.76604444f; + s6 = (s4 - s8)*0.17364818f; + s4 += s8 - s2; + + s2 = s0 - s4*0.5f; + y[4] = s4 + s0; + s8 = t0 - t2 + s6; + s0 = t0 - t4 + t2; + s4 = t0 + t4 - s6; + + s1 = y[1]; s3 = y[3]; s5 = y[5]; s7 = y[7]; + + s3 *= 0.86602540f; + t0 = (s5 + s1)*0.98480775f; + t4 = (s5 - s7)*0.34202014f; + t2 = (s1 + s7)*0.64278761f; + s1 = (s1 - s5 - s7)*0.86602540f; + + s5 = t0 - s3 - t2; + s7 = t4 - s3 - t0; + s3 = t4 + s3 - t2; + + y[0] = s4 - s7; + y[1] = s2 + s1; + y[2] = s0 - s3; + y[3] = s8 + s5; + y[5] = s8 - s5; + y[6] = s0 + s3; + y[7] = s2 - s1; + y[8] = s4 + s7; +} + +static void L3_imdct36(float *grbuf, float *overlap, const float *window, int nbands) +{ + int i, j; + static const float g_twid9[18] = { + 0.73727734f,0.79335334f,0.84339145f,0.88701083f,0.92387953f,0.95371695f,0.97629601f,0.99144486f,0.99904822f,0.67559021f,0.60876143f,0.53729961f,0.46174861f,0.38268343f,0.30070580f,0.21643961f,0.13052619f,0.04361938f + }; + + for (j = 0; j < nbands; j++, grbuf += 18, overlap += 9) + { + float co[9], si[9]; + co[0] = -grbuf[0]; + si[0] = grbuf[17]; + for (i = 0; i < 4; i++) + { + si[8 - 2*i] = grbuf[4*i + 1] - grbuf[4*i + 2]; + co[1 + 2*i] = grbuf[4*i + 1] + grbuf[4*i + 2]; + si[7 - 2*i] = grbuf[4*i + 4] - grbuf[4*i + 3]; + co[2 + 2*i] = -(grbuf[4*i + 3] + grbuf[4*i + 4]); + } + L3_dct3_9(co); + L3_dct3_9(si); + + si[1] = -si[1]; + si[3] = -si[3]; + si[5] = -si[5]; + si[7] = -si[7]; + + i = 0; + +#if HAVE_SIMD + if (have_simd()) for (; i < 8; i += 4) + { + f4 vovl = VLD(overlap + i); + f4 vc = VLD(co + i); + f4 vs = VLD(si + i); + f4 vr0 = VLD(g_twid9 + i); + f4 vr1 = VLD(g_twid9 + 9 + i); + f4 vw0 = VLD(window + i); + f4 vw1 = VLD(window + 9 + i); + f4 vsum = VADD(VMUL(vc, vr1), VMUL(vs, vr0)); + VSTORE(overlap + i, VSUB(VMUL(vc, vr0), VMUL(vs, vr1))); + VSTORE(grbuf + i, VSUB(VMUL(vovl, vw0), VMUL(vsum, vw1))); + vsum = VADD(VMUL(vovl, vw1), VMUL(vsum, vw0)); + VSTORE(grbuf + 14 - i, VREV(vsum)); + } +#endif /* HAVE_SIMD */ + for (; i < 9; i++) + { + float ovl = overlap[i]; + float sum = co[i]*g_twid9[9 + i] + si[i]*g_twid9[0 + i]; + overlap[i] = co[i]*g_twid9[0 + i] - si[i]*g_twid9[9 + i]; + grbuf[i] = ovl*window[0 + i] - sum*window[9 + i]; + grbuf[17 - i] = ovl*window[9 + i] + sum*window[0 + i]; + } + } +} + +static void L3_idct3(float x0, float x1, float x2, float *dst) +{ + float m1 = x1*0.86602540f; + float a1 = x0 - x2*0.5f; + dst[1] = x0 + x2; + dst[0] = a1 + m1; + dst[2] = a1 - m1; +} + +static void L3_imdct12(float *x, float *dst, float *overlap) +{ + static const float g_twid3[6] = { 0.79335334f,0.92387953f,0.99144486f, 0.60876143f,0.38268343f,0.13052619f }; + float co[3], si[3]; + int i; + + L3_idct3(-x[0], x[6] + x[3], x[12] + x[9], co); + L3_idct3(x[15], x[12] - x[9], x[6] - x[3], si); + si[1] = -si[1]; + + for (i = 0; i < 3; i++) + { + float ovl = overlap[i]; + float sum = co[i]*g_twid3[3 + i] + si[i]*g_twid3[0 + i]; + overlap[i] = co[i]*g_twid3[0 + i] - si[i]*g_twid3[3 + i]; + dst[i] = ovl*g_twid3[2 - i] - sum*g_twid3[5 - i]; + dst[5 - i] = ovl*g_twid3[5 - i] + sum*g_twid3[2 - i]; + } +} + +static void L3_imdct_short(float *grbuf, float *overlap, int nbands) +{ + for (;nbands > 0; nbands--, overlap += 9, grbuf += 18) + { + float tmp[18]; + memcpy(tmp, grbuf, sizeof(tmp)); + memcpy(grbuf, overlap, 6*sizeof(float)); + L3_imdct12(tmp, grbuf + 6, overlap + 6); + L3_imdct12(tmp + 1, grbuf + 12, overlap + 6); + L3_imdct12(tmp + 2, overlap, overlap + 6); + } +} + +static void L3_change_sign(float *grbuf) +{ + int b, i; + for (b = 0, grbuf += 18; b < 32; b += 2, grbuf += 36) + for (i = 1; i < 18; i += 2) + grbuf[i] = -grbuf[i]; +} + +static void L3_imdct_gr(float *grbuf, float *overlap, unsigned block_type, unsigned n_long_bands) +{ + static const float g_mdct_window[2][18] = { + { 0.99904822f,0.99144486f,0.97629601f,0.95371695f,0.92387953f,0.88701083f,0.84339145f,0.79335334f,0.73727734f,0.04361938f,0.13052619f,0.21643961f,0.30070580f,0.38268343f,0.46174861f,0.53729961f,0.60876143f,0.67559021f }, + { 1,1,1,1,1,1,0.99144486f,0.92387953f,0.79335334f,0,0,0,0,0,0,0.13052619f,0.38268343f,0.60876143f } + }; + if (n_long_bands) + { + L3_imdct36(grbuf, overlap, g_mdct_window[0], n_long_bands); + grbuf += 18*n_long_bands; + overlap += 9*n_long_bands; + } + if (block_type == SHORT_BLOCK_TYPE) + L3_imdct_short(grbuf, overlap, 32 - n_long_bands); + else + L3_imdct36(grbuf, overlap, g_mdct_window[block_type == STOP_BLOCK_TYPE], 32 - n_long_bands); +} + +static void L3_save_reservoir(mp3dec_t *h, mp3dec_scratch_t *s) +{ + int pos = (s->bs.pos + 7)/8u; + int remains = s->bs.limit/8u - pos; + if (remains > MAX_BITRESERVOIR_BYTES) + { + pos += remains - MAX_BITRESERVOIR_BYTES; + remains = MAX_BITRESERVOIR_BYTES; + } + if (remains > 0) + { + memmove(h->reserv_buf, s->maindata + pos, remains); + } + h->reserv = remains; +} + +static int L3_restore_reservoir(mp3dec_t *h, bs_t *bs, mp3dec_scratch_t *s, int main_data_begin) +{ + int frame_bytes = (bs->limit - bs->pos)/8; + int bytes_have = MINIMP3_MIN(h->reserv, main_data_begin); + memcpy(s->maindata, h->reserv_buf + MINIMP3_MAX(0, h->reserv - main_data_begin), MINIMP3_MIN(h->reserv, main_data_begin)); + memcpy(s->maindata + bytes_have, bs->buf + bs->pos/8, frame_bytes); + bs_init(&s->bs, s->maindata, bytes_have + frame_bytes); + return h->reserv >= main_data_begin; +} + +static void L3_decode(mp3dec_t *h, mp3dec_scratch_t *s, L3_gr_info_t *gr_info, int nch) +{ + int ch; + + for (ch = 0; ch < nch; ch++) + { + int layer3gr_limit = s->bs.pos + gr_info[ch].part_23_length; + L3_decode_scalefactors(h->header, s->ist_pos[ch], &s->bs, gr_info + ch, s->scf, ch); + L3_huffman(s->grbuf[ch], &s->bs, gr_info + ch, s->scf, layer3gr_limit); + } + + if (HDR_TEST_I_STEREO(h->header)) + { + L3_intensity_stereo(s->grbuf[0], s->ist_pos[1], gr_info, h->header); + } else if (HDR_IS_MS_STEREO(h->header)) + { + L3_midside_stereo(s->grbuf[0], 576); + } + + for (ch = 0; ch < nch; ch++, gr_info++) + { + int aa_bands = 31; + int n_long_bands = (gr_info->mixed_block_flag ? 2 : 0) << (int)(HDR_GET_MY_SAMPLE_RATE(h->header) == 2); + + if (gr_info->n_short_sfb) + { + aa_bands = n_long_bands - 1; + L3_reorder(s->grbuf[ch] + n_long_bands*18, s->syn[0], gr_info->sfbtab + gr_info->n_long_sfb); + } + + L3_antialias(s->grbuf[ch], aa_bands); + L3_imdct_gr(s->grbuf[ch], h->mdct_overlap[ch], gr_info->block_type, n_long_bands); + L3_change_sign(s->grbuf[ch]); + } +} + +static void mp3d_DCT_II(float *grbuf, int n) +{ + static const float g_sec[24] = { + 10.19000816f,0.50060302f,0.50241929f,3.40760851f,0.50547093f,0.52249861f,2.05778098f,0.51544732f,0.56694406f,1.48416460f,0.53104258f,0.64682180f,1.16943991f,0.55310392f,0.78815460f,0.97256821f,0.58293498f,1.06067765f,0.83934963f,0.62250412f,1.72244716f,0.74453628f,0.67480832f,5.10114861f + }; + int i, k = 0; +#if HAVE_SIMD + if (have_simd()) for (; k < n; k += 4) + { + f4 t[4][8], *x; + float *y = grbuf + k; + + for (x = t[0], i = 0; i < 8; i++, x++) + { + f4 x0 = VLD(&y[i*18]); + f4 x1 = VLD(&y[(15 - i)*18]); + f4 x2 = VLD(&y[(16 + i)*18]); + f4 x3 = VLD(&y[(31 - i)*18]); + f4 t0 = VADD(x0, x3); + f4 t1 = VADD(x1, x2); + f4 t2 = VMUL_S(VSUB(x1, x2), g_sec[3*i + 0]); + f4 t3 = VMUL_S(VSUB(x0, x3), g_sec[3*i + 1]); + x[0] = VADD(t0, t1); + x[8] = VMUL_S(VSUB(t0, t1), g_sec[3*i + 2]); + x[16] = VADD(t3, t2); + x[24] = VMUL_S(VSUB(t3, t2), g_sec[3*i + 2]); + } + for (x = t[0], i = 0; i < 4; i++, x += 8) + { + f4 x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4], x5 = x[5], x6 = x[6], x7 = x[7], xt; + xt = VSUB(x0, x7); x0 = VADD(x0, x7); + x7 = VSUB(x1, x6); x1 = VADD(x1, x6); + x6 = VSUB(x2, x5); x2 = VADD(x2, x5); + x5 = VSUB(x3, x4); x3 = VADD(x3, x4); + x4 = VSUB(x0, x3); x0 = VADD(x0, x3); + x3 = VSUB(x1, x2); x1 = VADD(x1, x2); + x[0] = VADD(x0, x1); + x[4] = VMUL_S(VSUB(x0, x1), 0.70710677f); + x5 = VADD(x5, x6); + x6 = VMUL_S(VADD(x6, x7), 0.70710677f); + x7 = VADD(x7, xt); + x3 = VMUL_S(VADD(x3, x4), 0.70710677f); + x5 = VSUB(x5, VMUL_S(x7, 0.198912367f)); /* rotate by PI/8 */ + x7 = VADD(x7, VMUL_S(x5, 0.382683432f)); + x5 = VSUB(x5, VMUL_S(x7, 0.198912367f)); + x0 = VSUB(xt, x6); xt = VADD(xt, x6); + x[1] = VMUL_S(VADD(xt, x7), 0.50979561f); + x[2] = VMUL_S(VADD(x4, x3), 0.54119611f); + x[3] = VMUL_S(VSUB(x0, x5), 0.60134488f); + x[5] = VMUL_S(VADD(x0, x5), 0.89997619f); + x[6] = VMUL_S(VSUB(x4, x3), 1.30656302f); + x[7] = VMUL_S(VSUB(xt, x7), 2.56291556f); + } + + if (k > n - 3) + { +#if HAVE_SSE +#define VSAVE2(i, v) _mm_storel_pi((__m64 *)(void*)&y[i*18], v) +#else /* HAVE_SSE */ +#define VSAVE2(i, v) vst1_f32((float32_t *)&y[i*18], vget_low_f32(v)) +#endif /* HAVE_SSE */ + for (i = 0; i < 7; i++, y += 4*18) + { + f4 s = VADD(t[3][i], t[3][i + 1]); + VSAVE2(0, t[0][i]); + VSAVE2(1, VADD(t[2][i], s)); + VSAVE2(2, VADD(t[1][i], t[1][i + 1])); + VSAVE2(3, VADD(t[2][1 + i], s)); + } + VSAVE2(0, t[0][7]); + VSAVE2(1, VADD(t[2][7], t[3][7])); + VSAVE2(2, t[1][7]); + VSAVE2(3, t[3][7]); + } else + { +#define VSAVE4(i, v) VSTORE(&y[i*18], v) + for (i = 0; i < 7; i++, y += 4*18) + { + f4 s = VADD(t[3][i], t[3][i + 1]); + VSAVE4(0, t[0][i]); + VSAVE4(1, VADD(t[2][i], s)); + VSAVE4(2, VADD(t[1][i], t[1][i + 1])); + VSAVE4(3, VADD(t[2][1 + i], s)); + } + VSAVE4(0, t[0][7]); + VSAVE4(1, VADD(t[2][7], t[3][7])); + VSAVE4(2, t[1][7]); + VSAVE4(3, t[3][7]); + } + } else +#endif /* HAVE_SIMD */ +#ifdef MINIMP3_ONLY_SIMD + {} /* for HAVE_SIMD=1, MINIMP3_ONLY_SIMD=1 case we do not need non-intrinsic "else" branch */ +#else /* MINIMP3_ONLY_SIMD */ + for (; k < n; k++) + { + float t[4][8], *x, *y = grbuf + k; + + for (x = t[0], i = 0; i < 8; i++, x++) + { + float x0 = y[i*18]; + float x1 = y[(15 - i)*18]; + float x2 = y[(16 + i)*18]; + float x3 = y[(31 - i)*18]; + float t0 = x0 + x3; + float t1 = x1 + x2; + float t2 = (x1 - x2)*g_sec[3*i + 0]; + float t3 = (x0 - x3)*g_sec[3*i + 1]; + x[0] = t0 + t1; + x[8] = (t0 - t1)*g_sec[3*i + 2]; + x[16] = t3 + t2; + x[24] = (t3 - t2)*g_sec[3*i + 2]; + } + for (x = t[0], i = 0; i < 4; i++, x += 8) + { + float x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4], x5 = x[5], x6 = x[6], x7 = x[7], xt; + xt = x0 - x7; x0 += x7; + x7 = x1 - x6; x1 += x6; + x6 = x2 - x5; x2 += x5; + x5 = x3 - x4; x3 += x4; + x4 = x0 - x3; x0 += x3; + x3 = x1 - x2; x1 += x2; + x[0] = x0 + x1; + x[4] = (x0 - x1)*0.70710677f; + x5 = x5 + x6; + x6 = (x6 + x7)*0.70710677f; + x7 = x7 + xt; + x3 = (x3 + x4)*0.70710677f; + x5 -= x7*0.198912367f; /* rotate by PI/8 */ + x7 += x5*0.382683432f; + x5 -= x7*0.198912367f; + x0 = xt - x6; xt += x6; + x[1] = (xt + x7)*0.50979561f; + x[2] = (x4 + x3)*0.54119611f; + x[3] = (x0 - x5)*0.60134488f; + x[5] = (x0 + x5)*0.89997619f; + x[6] = (x4 - x3)*1.30656302f; + x[7] = (xt - x7)*2.56291556f; + + } + for (i = 0; i < 7; i++, y += 4*18) + { + y[0*18] = t[0][i]; + y[1*18] = t[2][i] + t[3][i] + t[3][i + 1]; + y[2*18] = t[1][i] + t[1][i + 1]; + y[3*18] = t[2][i + 1] + t[3][i] + t[3][i + 1]; + } + y[0*18] = t[0][7]; + y[1*18] = t[2][7] + t[3][7]; + y[2*18] = t[1][7]; + y[3*18] = t[3][7]; + } +#endif /* MINIMP3_ONLY_SIMD */ +} + +#ifndef MINIMP3_FLOAT_OUTPUT +static int16_t mp3d_scale_pcm(float sample) +{ +#if HAVE_ARMV6 + int32_t s32 = (int32_t)(sample + .5f); + s32 -= (s32 < 0); + int16_t s = (int16_t)minimp3_clip_int16_arm(s32); +#else + if (sample >= 32766.5) return (int16_t) 32767; + if (sample <= -32767.5) return (int16_t)-32768; + int16_t s = (int16_t)(sample + .5f); + s -= (s < 0); /* away from zero, to be compliant */ +#endif + return s; +} +#else /* MINIMP3_FLOAT_OUTPUT */ +static float mp3d_scale_pcm(float sample) +{ + return sample*(1.f/32768.f); +} +#endif /* MINIMP3_FLOAT_OUTPUT */ + +static void mp3d_synth_pair(mp3d_sample_t *pcm, int nch, const float *z) +{ + float a; + a = (z[14*64] - z[ 0]) * 29; + a += (z[ 1*64] + z[13*64]) * 213; + a += (z[12*64] - z[ 2*64]) * 459; + a += (z[ 3*64] + z[11*64]) * 2037; + a += (z[10*64] - z[ 4*64]) * 5153; + a += (z[ 5*64] + z[ 9*64]) * 6574; + a += (z[ 8*64] - z[ 6*64]) * 37489; + a += z[ 7*64] * 75038; + pcm[0] = mp3d_scale_pcm(a); + + z += 2; + a = z[14*64] * 104; + a += z[12*64] * 1567; + a += z[10*64] * 9727; + a += z[ 8*64] * 64019; + a += z[ 6*64] * -9975; + a += z[ 4*64] * -45; + a += z[ 2*64] * 146; + a += z[ 0*64] * -5; + pcm[16*nch] = mp3d_scale_pcm(a); +} + +static void mp3d_synth(float *xl, mp3d_sample_t *dstl, int nch, float *lins) +{ + int i; + float *xr = xl + 576*(nch - 1); + mp3d_sample_t *dstr = dstl + (nch - 1); + + static const float g_win[] = { + -1,26,-31,208,218,401,-519,2063,2000,4788,-5517,7134,5959,35640,-39336,74992, + -1,24,-35,202,222,347,-581,2080,1952,4425,-5879,7640,5288,33791,-41176,74856, + -1,21,-38,196,225,294,-645,2087,1893,4063,-6237,8092,4561,31947,-43006,74630, + -1,19,-41,190,227,244,-711,2085,1822,3705,-6589,8492,3776,30112,-44821,74313, + -1,17,-45,183,228,197,-779,2075,1739,3351,-6935,8840,2935,28289,-46617,73908, + -1,16,-49,176,228,153,-848,2057,1644,3004,-7271,9139,2037,26482,-48390,73415, + -2,14,-53,169,227,111,-919,2032,1535,2663,-7597,9389,1082,24694,-50137,72835, + -2,13,-58,161,224,72,-991,2001,1414,2330,-7910,9592,70,22929,-51853,72169, + -2,11,-63,154,221,36,-1064,1962,1280,2006,-8209,9750,-998,21189,-53534,71420, + -2,10,-68,147,215,2,-1137,1919,1131,1692,-8491,9863,-2122,19478,-55178,70590, + -3,9,-73,139,208,-29,-1210,1870,970,1388,-8755,9935,-3300,17799,-56778,69679, + -3,8,-79,132,200,-57,-1283,1817,794,1095,-8998,9966,-4533,16155,-58333,68692, + -4,7,-85,125,189,-83,-1356,1759,605,814,-9219,9959,-5818,14548,-59838,67629, + -4,7,-91,117,177,-106,-1428,1698,402,545,-9416,9916,-7154,12980,-61289,66494, + -5,6,-97,111,163,-127,-1498,1634,185,288,-9585,9838,-8540,11455,-62684,65290 + }; + float *zlin = lins + 15*64; + const float *w = g_win; + + zlin[4*15] = xl[18*16]; + zlin[4*15 + 1] = xr[18*16]; + zlin[4*15 + 2] = xl[0]; + zlin[4*15 + 3] = xr[0]; + + zlin[4*31] = xl[1 + 18*16]; + zlin[4*31 + 1] = xr[1 + 18*16]; + zlin[4*31 + 2] = xl[1]; + zlin[4*31 + 3] = xr[1]; + + mp3d_synth_pair(dstr, nch, lins + 4*15 + 1); + mp3d_synth_pair(dstr + 32*nch, nch, lins + 4*15 + 64 + 1); + mp3d_synth_pair(dstl, nch, lins + 4*15); + mp3d_synth_pair(dstl + 32*nch, nch, lins + 4*15 + 64); + +#if HAVE_SIMD + if (have_simd()) for (i = 14; i >= 0; i--) + { +#define VLOAD(k) f4 w0 = VSET(*w++); f4 w1 = VSET(*w++); f4 vz = VLD(&zlin[4*i - 64*k]); f4 vy = VLD(&zlin[4*i - 64*(15 - k)]); +#define V0(k) { VLOAD(k) b = VADD(VMUL(vz, w1), VMUL(vy, w0)) ; a = VSUB(VMUL(vz, w0), VMUL(vy, w1)); } +#define V1(k) { VLOAD(k) b = VADD(b, VADD(VMUL(vz, w1), VMUL(vy, w0))); a = VADD(a, VSUB(VMUL(vz, w0), VMUL(vy, w1))); } +#define V2(k) { VLOAD(k) b = VADD(b, VADD(VMUL(vz, w1), VMUL(vy, w0))); a = VADD(a, VSUB(VMUL(vy, w1), VMUL(vz, w0))); } + f4 a, b; + zlin[4*i] = xl[18*(31 - i)]; + zlin[4*i + 1] = xr[18*(31 - i)]; + zlin[4*i + 2] = xl[1 + 18*(31 - i)]; + zlin[4*i + 3] = xr[1 + 18*(31 - i)]; + zlin[4*i + 64] = xl[1 + 18*(1 + i)]; + zlin[4*i + 64 + 1] = xr[1 + 18*(1 + i)]; + zlin[4*i - 64 + 2] = xl[18*(1 + i)]; + zlin[4*i - 64 + 3] = xr[18*(1 + i)]; + + V0(0) V2(1) V1(2) V2(3) V1(4) V2(5) V1(6) V2(7) + + { +#ifndef MINIMP3_FLOAT_OUTPUT +#if HAVE_SSE + static const f4 g_max = { 32767.0f, 32767.0f, 32767.0f, 32767.0f }; + static const f4 g_min = { -32768.0f, -32768.0f, -32768.0f, -32768.0f }; + __m128i pcm8 = _mm_packs_epi32(_mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(a, g_max), g_min)), + _mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(b, g_max), g_min))); + dstr[(15 - i)*nch] = _mm_extract_epi16(pcm8, 1); + dstr[(17 + i)*nch] = _mm_extract_epi16(pcm8, 5); + dstl[(15 - i)*nch] = _mm_extract_epi16(pcm8, 0); + dstl[(17 + i)*nch] = _mm_extract_epi16(pcm8, 4); + dstr[(47 - i)*nch] = _mm_extract_epi16(pcm8, 3); + dstr[(49 + i)*nch] = _mm_extract_epi16(pcm8, 7); + dstl[(47 - i)*nch] = _mm_extract_epi16(pcm8, 2); + dstl[(49 + i)*nch] = _mm_extract_epi16(pcm8, 6); +#else /* HAVE_SSE */ + int16x4_t pcma, pcmb; + a = VADD(a, VSET(0.5f)); + b = VADD(b, VSET(0.5f)); + pcma = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(a), vreinterpretq_s32_u32(vcltq_f32(a, VSET(0))))); + pcmb = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(b), vreinterpretq_s32_u32(vcltq_f32(b, VSET(0))))); + vst1_lane_s16(dstr + (15 - i)*nch, pcma, 1); + vst1_lane_s16(dstr + (17 + i)*nch, pcmb, 1); + vst1_lane_s16(dstl + (15 - i)*nch, pcma, 0); + vst1_lane_s16(dstl + (17 + i)*nch, pcmb, 0); + vst1_lane_s16(dstr + (47 - i)*nch, pcma, 3); + vst1_lane_s16(dstr + (49 + i)*nch, pcmb, 3); + vst1_lane_s16(dstl + (47 - i)*nch, pcma, 2); + vst1_lane_s16(dstl + (49 + i)*nch, pcmb, 2); +#endif /* HAVE_SSE */ + +#else /* MINIMP3_FLOAT_OUTPUT */ + + static const f4 g_scale = { 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f }; + a = VMUL(a, g_scale); + b = VMUL(b, g_scale); +#if HAVE_SSE + _mm_store_ss(dstr + (15 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(1, 1, 1, 1))); + _mm_store_ss(dstr + (17 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(1, 1, 1, 1))); + _mm_store_ss(dstl + (15 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(0, 0, 0, 0))); + _mm_store_ss(dstl + (17 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(0, 0, 0, 0))); + _mm_store_ss(dstr + (47 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 3, 3, 3))); + _mm_store_ss(dstr + (49 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(3, 3, 3, 3))); + _mm_store_ss(dstl + (47 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(2, 2, 2, 2))); + _mm_store_ss(dstl + (49 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(2, 2, 2, 2))); +#else /* HAVE_SSE */ + vst1q_lane_f32(dstr + (15 - i)*nch, a, 1); + vst1q_lane_f32(dstr + (17 + i)*nch, b, 1); + vst1q_lane_f32(dstl + (15 - i)*nch, a, 0); + vst1q_lane_f32(dstl + (17 + i)*nch, b, 0); + vst1q_lane_f32(dstr + (47 - i)*nch, a, 3); + vst1q_lane_f32(dstr + (49 + i)*nch, b, 3); + vst1q_lane_f32(dstl + (47 - i)*nch, a, 2); + vst1q_lane_f32(dstl + (49 + i)*nch, b, 2); +#endif /* HAVE_SSE */ +#endif /* MINIMP3_FLOAT_OUTPUT */ + } + } else +#endif /* HAVE_SIMD */ +#ifdef MINIMP3_ONLY_SIMD + {} /* for HAVE_SIMD=1, MINIMP3_ONLY_SIMD=1 case we do not need non-intrinsic "else" branch */ +#else /* MINIMP3_ONLY_SIMD */ + for (i = 14; i >= 0; i--) + { +#define LOAD(k) float w0 = *w++; float w1 = *w++; float *vz = &zlin[4*i - k*64]; float *vy = &zlin[4*i - (15 - k)*64]; +#define S0(k) { int j; LOAD(k); for (j = 0; j < 4; j++) b[j] = vz[j]*w1 + vy[j]*w0, a[j] = vz[j]*w0 - vy[j]*w1; } +#define S1(k) { int j; LOAD(k); for (j = 0; j < 4; j++) b[j] += vz[j]*w1 + vy[j]*w0, a[j] += vz[j]*w0 - vy[j]*w1; } +#define S2(k) { int j; LOAD(k); for (j = 0; j < 4; j++) b[j] += vz[j]*w1 + vy[j]*w0, a[j] += vy[j]*w1 - vz[j]*w0; } + float a[4], b[4]; + + zlin[4*i] = xl[18*(31 - i)]; + zlin[4*i + 1] = xr[18*(31 - i)]; + zlin[4*i + 2] = xl[1 + 18*(31 - i)]; + zlin[4*i + 3] = xr[1 + 18*(31 - i)]; + zlin[4*(i + 16)] = xl[1 + 18*(1 + i)]; + zlin[4*(i + 16) + 1] = xr[1 + 18*(1 + i)]; + zlin[4*(i - 16) + 2] = xl[18*(1 + i)]; + zlin[4*(i - 16) + 3] = xr[18*(1 + i)]; + + S0(0) S2(1) S1(2) S2(3) S1(4) S2(5) S1(6) S2(7) + + dstr[(15 - i)*nch] = mp3d_scale_pcm(a[1]); + dstr[(17 + i)*nch] = mp3d_scale_pcm(b[1]); + dstl[(15 - i)*nch] = mp3d_scale_pcm(a[0]); + dstl[(17 + i)*nch] = mp3d_scale_pcm(b[0]); + dstr[(47 - i)*nch] = mp3d_scale_pcm(a[3]); + dstr[(49 + i)*nch] = mp3d_scale_pcm(b[3]); + dstl[(47 - i)*nch] = mp3d_scale_pcm(a[2]); + dstl[(49 + i)*nch] = mp3d_scale_pcm(b[2]); + } +#endif /* MINIMP3_ONLY_SIMD */ +} + +static void mp3d_synth_granule(float *qmf_state, float *grbuf, int nbands, int nch, mp3d_sample_t *pcm, float *lins) +{ + int i; + for (i = 0; i < nch; i++) + { + mp3d_DCT_II(grbuf + 576*i, nbands); + } + + memcpy(lins, qmf_state, sizeof(float)*15*64); + + for (i = 0; i < nbands; i += 2) + { + mp3d_synth(grbuf + i, pcm + 32*nch*i, nch, lins + i*64); + } +#ifndef MINIMP3_NONSTANDARD_BUT_LOGICAL + if (nch == 1) + { + for (i = 0; i < 15*64; i += 2) + { + qmf_state[i] = lins[nbands*64 + i]; + } + } else +#endif /* MINIMP3_NONSTANDARD_BUT_LOGICAL */ + { + memcpy(qmf_state, lins + nbands*64, sizeof(float)*15*64); + } +} + +static int mp3d_match_frame(const uint8_t *hdr, int mp3_bytes, int frame_bytes) +{ + int i, nmatch; + for (i = 0, nmatch = 0; nmatch < MAX_FRAME_SYNC_MATCHES; nmatch++) + { + i += hdr_frame_bytes(hdr + i, frame_bytes) + hdr_padding(hdr + i); + if (i + HDR_SIZE > mp3_bytes) + return nmatch > 0; + if (!hdr_compare(hdr, hdr + i)) + return 0; + } + return 1; +} + +static int mp3d_find_frame(const uint8_t *mp3, int mp3_bytes, int *free_format_bytes, int *ptr_frame_bytes) +{ + int i, k; + for (i = 0; i < mp3_bytes - HDR_SIZE; i++, mp3++) + { + if (hdr_valid(mp3)) + { + int frame_bytes = hdr_frame_bytes(mp3, *free_format_bytes); + int frame_and_padding = frame_bytes + hdr_padding(mp3); + + for (k = HDR_SIZE; !frame_bytes && k < MAX_FREE_FORMAT_FRAME_SIZE && i + 2*k < mp3_bytes - HDR_SIZE; k++) + { + if (hdr_compare(mp3, mp3 + k)) + { + int fb = k - hdr_padding(mp3); + int nextfb = fb + hdr_padding(mp3 + k); + if (i + k + nextfb + HDR_SIZE > mp3_bytes || !hdr_compare(mp3, mp3 + k + nextfb)) + continue; + frame_and_padding = k; + frame_bytes = fb; + *free_format_bytes = fb; + } + } + if ((frame_bytes && i + frame_and_padding <= mp3_bytes && + mp3d_match_frame(mp3, mp3_bytes - i, frame_bytes)) || + (!i && frame_and_padding == mp3_bytes)) + { + *ptr_frame_bytes = frame_and_padding; + return i; + } + *free_format_bytes = 0; + } + } + *ptr_frame_bytes = 0; + return mp3_bytes; +} + +void mp3dec_init(mp3dec_t *dec) +{ + dec->header[0] = 0; +} + +int mp3dec_decode_frame(mp3dec_t *dec, const uint8_t *mp3, int mp3_bytes, mp3d_sample_t *pcm, mp3dec_frame_info_t *info) +{ + int i = 0, igr, frame_size = 0, success = 1; + const uint8_t *hdr; + bs_t bs_frame[1]; + mp3dec_scratch_t scratch; + + if (mp3_bytes > 4 && dec->header[0] == 0xff && hdr_compare(dec->header, mp3)) + { + frame_size = hdr_frame_bytes(mp3, dec->free_format_bytes) + hdr_padding(mp3); + if (frame_size != mp3_bytes && (frame_size + HDR_SIZE > mp3_bytes || !hdr_compare(mp3, mp3 + frame_size))) + { + frame_size = 0; + } + } + if (!frame_size) + { + memset(dec, 0, sizeof(mp3dec_t)); + i = mp3d_find_frame(mp3, mp3_bytes, &dec->free_format_bytes, &frame_size); + if (!frame_size || i + frame_size > mp3_bytes) + { + info->frame_bytes = i; + return 0; + } + } + + hdr = mp3 + i; + memcpy(dec->header, hdr, HDR_SIZE); + info->frame_bytes = i + frame_size; + info->frame_offset = i; + info->channels = HDR_IS_MONO(hdr) ? 1 : 2; + info->hz = hdr_sample_rate_hz(hdr); + info->layer = 4 - HDR_GET_LAYER(hdr); + info->bitrate_kbps = hdr_bitrate_kbps(hdr); + + if (!pcm) + { + return hdr_frame_samples(hdr); + } + + bs_init(bs_frame, hdr + HDR_SIZE, frame_size - HDR_SIZE); + if (HDR_IS_CRC(hdr)) + { + get_bits(bs_frame, 16); + } + + if (info->layer == 3) + { + int main_data_begin = L3_read_side_info(bs_frame, scratch.gr_info, hdr); + if (main_data_begin < 0 || bs_frame->pos > bs_frame->limit) + { + mp3dec_init(dec); + return 0; + } + success = L3_restore_reservoir(dec, bs_frame, &scratch, main_data_begin); + if (success) + { + for (igr = 0; igr < (HDR_TEST_MPEG1(hdr) ? 2 : 1); igr++, pcm += 576*info->channels) + { + memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); + L3_decode(dec, &scratch, scratch.gr_info + igr*info->channels, info->channels); + mp3d_synth_granule(dec->qmf_state, scratch.grbuf[0], 18, info->channels, pcm, scratch.syn[0]); + } + } + L3_save_reservoir(dec, &scratch); + } else + { +#ifdef MINIMP3_ONLY_MP3 + return 0; +#else /* MINIMP3_ONLY_MP3 */ + L12_scale_info sci[1]; + L12_read_scale_info(hdr, bs_frame, sci); + + memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); + for (i = 0, igr = 0; igr < 3; igr++) + { + if (12 == (i += L12_dequantize_granule(scratch.grbuf[0] + i, bs_frame, sci, info->layer | 1))) + { + i = 0; + L12_apply_scf_384(sci, sci->scf + igr, scratch.grbuf[0]); + mp3d_synth_granule(dec->qmf_state, scratch.grbuf[0], 12, info->channels, pcm, scratch.syn[0]); + memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); + pcm += 384*info->channels; + } + if (bs_frame->pos > bs_frame->limit) + { + mp3dec_init(dec); + return 0; + } + } +#endif /* MINIMP3_ONLY_MP3 */ + } + return success*hdr_frame_samples(dec->header); +} + +#ifdef MINIMP3_FLOAT_OUTPUT +void mp3dec_f32_to_s16(const float *in, int16_t *out, int num_samples) +{ + int i = 0; +#if HAVE_SIMD + int aligned_count = num_samples & ~7; + for(; i < aligned_count; i += 8) + { + static const f4 g_scale = { 32768.0f, 32768.0f, 32768.0f, 32768.0f }; + f4 a = VMUL(VLD(&in[i ]), g_scale); + f4 b = VMUL(VLD(&in[i+4]), g_scale); +#if HAVE_SSE + static const f4 g_max = { 32767.0f, 32767.0f, 32767.0f, 32767.0f }; + static const f4 g_min = { -32768.0f, -32768.0f, -32768.0f, -32768.0f }; + __m128i pcm8 = _mm_packs_epi32(_mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(a, g_max), g_min)), + _mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(b, g_max), g_min))); + out[i ] = _mm_extract_epi16(pcm8, 0); + out[i+1] = _mm_extract_epi16(pcm8, 1); + out[i+2] = _mm_extract_epi16(pcm8, 2); + out[i+3] = _mm_extract_epi16(pcm8, 3); + out[i+4] = _mm_extract_epi16(pcm8, 4); + out[i+5] = _mm_extract_epi16(pcm8, 5); + out[i+6] = _mm_extract_epi16(pcm8, 6); + out[i+7] = _mm_extract_epi16(pcm8, 7); +#else /* HAVE_SSE */ + int16x4_t pcma, pcmb; + a = VADD(a, VSET(0.5f)); + b = VADD(b, VSET(0.5f)); + pcma = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(a), vreinterpretq_s32_u32(vcltq_f32(a, VSET(0))))); + pcmb = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(b), vreinterpretq_s32_u32(vcltq_f32(b, VSET(0))))); + vst1_lane_s16(out+i , pcma, 0); + vst1_lane_s16(out+i+1, pcma, 1); + vst1_lane_s16(out+i+2, pcma, 2); + vst1_lane_s16(out+i+3, pcma, 3); + vst1_lane_s16(out+i+4, pcmb, 0); + vst1_lane_s16(out+i+5, pcmb, 1); + vst1_lane_s16(out+i+6, pcmb, 2); + vst1_lane_s16(out+i+7, pcmb, 3); +#endif /* HAVE_SSE */ + } +#endif /* HAVE_SIMD */ + for(; i < num_samples; i++) + { + float sample = in[i] * 32768.0f; + if (sample >= 32766.5) + out[i] = (int16_t) 32767; + else if (sample <= -32767.5) + out[i] = (int16_t)-32768; + else + { + int16_t s = (int16_t)(sample + .5f); + s -= (s < 0); /* away from zero, to be compliant */ + out[i] = s; + } + } +} +#endif /* MINIMP3_FLOAT_OUTPUT */ +#endif /* MINIMP3_IMPLEMENTATION && !_MINIMP3_IMPLEMENTATION_GUARD */ diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisacontext.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisacontext.c new file mode 100644 index 000000000..759734a4e --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisacontext.c @@ -0,0 +1,869 @@ +/***************************************************************************** + E R I S A - L i b r a r y + ----------------------------------------------------------------------------- + Copyright (C) 2002-2003 Leshade Entis, Entis-soft. All rights reserved. + *****************************************************************************/ + +#include +#include "mio_xerisa.h" + +#define MIO_ERISA_SYMBOL_ERROR -1 + +/************************/ +/* huffman tree helpers */ +/************************/ + +static void EHT_Initialize(ERINA_HUFFMAN_TREE* tree) { + for (int i = 0; i < MIO_HUFFMAN_SYMBOLS; i++) { + tree->m_iSymLookup[i] = ERINA_HUFFMAN_NULL; + } + tree->m_iEscape = ERINA_HUFFMAN_NULL; + tree->m_iTreePointer = ERINA_HUFFMAN_ROOT; + tree->m_hnTree[ERINA_HUFFMAN_ROOT].weight = 0; + tree->m_hnTree[ERINA_HUFFMAN_ROOT].parent = ERINA_HUFFMAN_NULL; + tree->m_hnTree[ERINA_HUFFMAN_ROOT].child_code = ERINA_HUFFMAN_NULL; +} + +static void EHT_RecountOccuredCount(ERINA_HUFFMAN_TREE* tree, int iParent) { + int iChild = tree->m_hnTree[iParent].child_code; + tree->m_hnTree[iParent].weight = tree->m_hnTree[iChild].weight + tree->m_hnTree[iChild + 1].weight; +} + +static void EHT_Normalize(ERINA_HUFFMAN_TREE* tree, int iEntry) { + while (iEntry < ERINA_HUFFMAN_ROOT) { + // find swap entry + int iSwap = iEntry + 1; + WORD weight = tree->m_hnTree[iEntry].weight; + while (iSwap < ERINA_HUFFMAN_ROOT) { + if (tree->m_hnTree[iSwap].weight >= weight) break; + ++iSwap; + } + if (iEntry == --iSwap) { + iEntry = tree->m_hnTree[iEntry].parent; + EHT_RecountOccuredCount(tree, iEntry); + continue; + } + + // swap + int iChild, nCode; + if (!(tree->m_hnTree[iEntry].child_code & ERINA_CODE_FLAG)) { + iChild = tree->m_hnTree[iEntry].child_code; + tree->m_hnTree[iChild].parent = iSwap; + tree->m_hnTree[iChild + 1].parent = iSwap; + } + else { + nCode = tree->m_hnTree[iEntry].child_code & ~ERINA_CODE_FLAG; + if (nCode != ERINA_HUFFMAN_ESCAPE) + tree->m_iSymLookup[nCode & 0xFF] = iSwap; + else + tree->m_iEscape = iSwap; + } + if (!(tree->m_hnTree[iSwap].child_code & ERINA_CODE_FLAG)) { + int iChild = tree->m_hnTree[iSwap].child_code; + tree->m_hnTree[iChild].parent = iEntry; + tree->m_hnTree[iChild + 1].parent = iEntry; + } + else { + int nCode = tree->m_hnTree[iSwap].child_code & ~ERINA_CODE_FLAG; + if (nCode != ERINA_HUFFMAN_ESCAPE) + tree->m_iSymLookup[nCode & 0xFF] = iEntry; + else + tree->m_iEscape = iEntry; + } + + ERINA_HUFFMAN_NODE node; + WORD iEntryParent = tree->m_hnTree[iEntry].parent; + WORD iSwapParent = tree->m_hnTree[iSwap].parent; + node = tree->m_hnTree[iSwap]; + tree->m_hnTree[iSwap] = tree->m_hnTree[iEntry]; + tree->m_hnTree[iEntry] = node; + tree->m_hnTree[iSwap].parent = iSwapParent; + tree->m_hnTree[iEntry].parent = iEntryParent; + + // recalc parent weight + EHT_RecountOccuredCount(tree, iSwapParent); + iEntry = iSwapParent; + } +} + +static void EHT_AddNewEntry(ERINA_HUFFMAN_TREE* tree, int nNewCode) { + if (tree->m_iTreePointer > 0) { + // reserve 2 areas + int i = tree->m_iTreePointer = tree->m_iTreePointer - 2; + + // setup new entry + ERINA_HUFFMAN_NODE* phnNew = &tree->m_hnTree[i]; + phnNew->weight = 1; + phnNew->child_code = ERINA_CODE_FLAG | nNewCode; + tree->m_iSymLookup[nNewCode & 0xFF] = i; + + ERINA_HUFFMAN_NODE* phnRoot = &tree->m_hnTree[ERINA_HUFFMAN_ROOT]; + if (phnRoot->child_code != ERINA_HUFFMAN_NULL) { + // add new entry + ERINA_HUFFMAN_NODE* phnParent = &tree->m_hnTree[i + 2]; + ERINA_HUFFMAN_NODE* phnChild = &tree->m_hnTree[i + 1]; + tree->m_hnTree[i + 1] = tree->m_hnTree[i + 2]; + + if (phnChild->child_code & ERINA_CODE_FLAG) { + int nCode = phnChild->child_code & ~ERINA_CODE_FLAG; + if (nCode != ERINA_HUFFMAN_ESCAPE) + tree->m_iSymLookup[nCode & 0xFF] = i + 1; + else + tree->m_iEscape = i + 1; + } + + phnParent->weight = phnNew->weight + phnChild->weight; + phnParent->parent = phnChild->parent; + phnParent->child_code = i; + + phnNew->parent = phnChild->parent = i + 2; + + // fix parent entry + EHT_Normalize(tree, i + 2); + } + else { + // create initial tree state + phnNew->parent = ERINA_HUFFMAN_ROOT; + + ERINA_HUFFMAN_NODE* phnEscape = &tree->m_hnTree[tree->m_iEscape = i + 1]; + phnEscape->weight = 1; + phnEscape->parent = ERINA_HUFFMAN_ROOT; + phnEscape->child_code = ERINA_CODE_FLAG | ERINA_HUFFMAN_ESCAPE; + + phnRoot->weight = 2; + phnRoot->child_code = i; + } + } + else { + // replace least ocurring symbol with new symbol + int i = tree->m_iTreePointer; + ERINA_HUFFMAN_NODE* phnEntry = &tree->m_hnTree[i]; + if (phnEntry->child_code == (ERINA_CODE_FLAG | ERINA_HUFFMAN_ESCAPE)) { + phnEntry = &tree->m_hnTree[i + 1]; + } + phnEntry->child_code = ERINA_CODE_FLAG | nNewCode; + } +} + +static void EHT_HalfAndRebuild(ERINA_HUFFMAN_TREE* tree) { + // halve ocurrence count and rebuild the tree + int iNextEntry = ERINA_HUFFMAN_ROOT; + for (int i = ERINA_HUFFMAN_ROOT - 1; i >= tree->m_iTreePointer; i--) { + if (tree->m_hnTree[i].child_code & ERINA_CODE_FLAG) { + tree->m_hnTree[i].weight = (tree->m_hnTree[i].weight + 1) >> 1; + tree->m_hnTree[iNextEntry--] = tree->m_hnTree[i]; + } + } + ++iNextEntry; + + // rebuild tree + int iChild, nCode; + int i = tree->m_iTreePointer; + for (;;) { + // put the smallest 2 entries into the huffman tree + tree->m_hnTree[i] = tree->m_hnTree[iNextEntry]; + tree->m_hnTree[i + 1] = tree->m_hnTree[iNextEntry + 1]; + iNextEntry += 2; + ERINA_HUFFMAN_NODE* phnChild1 = &tree->m_hnTree[i]; + ERINA_HUFFMAN_NODE* phnChild2 = &tree->m_hnTree[i + 1]; + + if (!(phnChild1->child_code & ERINA_CODE_FLAG)) { + iChild = phnChild1->child_code; + tree->m_hnTree[iChild].parent = i; + tree->m_hnTree[iChild + 1].parent = i; + } + else { + nCode = phnChild1->child_code & ~ERINA_CODE_FLAG; + if (nCode == ERINA_HUFFMAN_ESCAPE) + tree->m_iEscape = i; + else + tree->m_iSymLookup[nCode & 0xFF] = i; + } + + if (!(phnChild2->child_code & ERINA_CODE_FLAG)) { + iChild = phnChild2->child_code; + tree->m_hnTree[iChild].parent = i + 1; + tree->m_hnTree[iChild + 1].parent = i + 1; + } + else { + nCode = phnChild2->child_code & ~ERINA_CODE_FLAG; + if (nCode == ERINA_HUFFMAN_ESCAPE) + tree->m_iEscape = i + 1; + else + tree->m_iSymLookup[nCode & 0xFF] = i + 1; + } + + WORD weight = phnChild1->weight + phnChild2->weight; + + // include parent entry in list + if (iNextEntry <= ERINA_HUFFMAN_ROOT) { + int j = iNextEntry; + for (;;) { + if (weight <= tree->m_hnTree[j].weight) { + tree->m_hnTree[j - 1].weight = weight; + tree->m_hnTree[j - 1].child_code = i; + break; + } + tree->m_hnTree[j - 1] = tree->m_hnTree[j]; + if (++j > ERINA_HUFFMAN_ROOT) { + tree->m_hnTree[ERINA_HUFFMAN_ROOT].weight = weight; + tree->m_hnTree[ERINA_HUFFMAN_ROOT].child_code = i; + break; + } + } + --iNextEntry; + } + else { + tree->m_hnTree[ERINA_HUFFMAN_ROOT].weight = weight; + tree->m_hnTree[ERINA_HUFFMAN_ROOT].parent = ERINA_HUFFMAN_NULL; + tree->m_hnTree[ERINA_HUFFMAN_ROOT].child_code = i; + phnChild1->parent = ERINA_HUFFMAN_ROOT; + phnChild2->parent = ERINA_HUFFMAN_ROOT; + break; + } + + i += 2; + } +} + +static void EHT_IncreaseOccuredCount(ERINA_HUFFMAN_TREE* tree, int iEntry) { + tree->m_hnTree[iEntry].weight++; + EHT_Normalize(tree, iEntry); + + if (tree->m_hnTree[ERINA_HUFFMAN_ROOT].weight >= ERINA_HUFFMAN_MAX) { + EHT_HalfAndRebuild(tree); + } +} + +/*****************************/ +/* arithmetic coding helpers */ +/*****************************/ + +static void EPM_Initialize(ERISA_PROB_MODEL* prob) { + prob->dwTotalCount = ERISA_SYMBOL_SORTS; + prob->dwSymbolSorts = ERISA_SYMBOL_SORTS; + + for (int i = 0; i < 0x100; i++) { + prob->acsSymTable[i].wOccured = 1; + prob->acsSymTable[i].wSymbol = (SWORD)(BYTE)i; + } + prob->acsSymTable[0x100].wOccured = 1; + prob->acsSymTable[0x100].wSymbol = (SWORD)ERISA_ESCAPE_CODE; + + for (int i = 0; i < ERISA_SUB_SORT_MAX; i++) { + prob->acsSubModel[i].wOccured = 0; + prob->acsSubModel[i].wSymbol = (SWORD)-1; + } +} + +static void EPM_HalfOccuredCount(ERISA_PROB_MODEL* prob) { + UDWORD i; + + prob->dwTotalCount = 0; + for (i = 0; i < prob->dwSymbolSorts; i++) { + prob->dwTotalCount += prob->acsSymTable[i].wOccured = ((prob->acsSymTable[i].wOccured + 1) >> 1); + } + for (i = 0; i < ERISA_SUB_SORT_MAX; i++) { + prob->acsSubModel[i].wOccured >>= 1; + } +} + +static int EPM_IncreaseSymbol(ERISA_PROB_MODEL* prob, int index) { + WORD wOccured = ++prob->acsSymTable[index].wOccured; + SWORD wSymbol = prob->acsSymTable[index].wSymbol; + + while (--index >= 0) { + if (prob->acsSymTable[index].wOccured >= wOccured) + break; + prob->acsSymTable[index + 1] = prob->acsSymTable[index]; + } + prob->acsSymTable[++index].wOccured = wOccured; + prob->acsSymTable[index].wSymbol = wSymbol; + + if (++prob->dwTotalCount >= ERISA_TOTAL_LIMIT) { + EPM_HalfOccuredCount(prob); + } + + return index; +} + +/**************************/ +/* general decode context */ +/**************************/ + +ULONG MIOContext_DecodeSymbolBytes(MIOContext* context, SBYTE* ptrDst, ULONG nCount) { + + /* (assert) */ + if (context->m_pfnDecodeSymbolBytes == NULL) + return 0; + + return (context->m_pfnDecodeSymbolBytes)(context, ptrDst, nCount); +} + + +static const SBYTE /*BYTE*/ nGammaCodeLookup[512] = { + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 6, 8, 6, 8, 6, 8, 6, 16, 8, -1, -1, 17, 8, -1, -1, 9, 6, 9, 6, 9, 6, 9, 6, 18, + 8, -1, -1, 19, 8, -1, -1, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, + 5, 4, 10, 6, 10, 6, 10, 6, 10, 6, 20, 8, -1, -1, 21, 8, -1, -1, 11, 6, 11, 6, 11, 6, 11, 6, 22, 8, -1, -1, 23, 8, -1, -1, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, + 4, 6, 4, 6, 4, 6, 4, 6, 4, 12, 6, 12, 6, 12, 6, 12, 6, 24, 8, -1, -1, 25, 8, -1, -1, 13, 6, 13, 6, 13, 6, 13, 6, 26, 8, -1, -1, + 27, 8, -1, -1, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 7, 4, 14, + 6, 14, 6, 14, 6, 14, 6, 28, 8, -1, -1, 29, 8, -1, -1, 15, 6, 15, 6, 15, 6, 15, 6, 30, 8, -1, -1, 31, 8, -1, -1 +}; + + +static ESLError MIOContext_PrefetchBuffer(MIOContext* context) { + if (context->m_nIntBufCount != 0) + return eslErrSuccess; + + if (context->m_pFilePos >= context->m_pFileLength) + return eslErrGeneral; + + // read next int32 BE + int dwLeft = context->m_pFileLength - context->m_pFilePos; + if (dwLeft < 4) { + // read partially at buffer edge + context->m_dwIntBuffer = 0; + for (int i = 0; i < dwLeft; i++) { + context->m_dwIntBuffer |= (UDWORD)context->m_pFileBuf[context->m_pFilePos + i] << (24 - 8*i); + } + context->m_pFilePos += dwLeft; + } + else { + context->m_dwIntBuffer = + ((UDWORD)context->m_pFileBuf[context->m_pFilePos + 0] << 24) | + ((UDWORD)context->m_pFileBuf[context->m_pFilePos + 1] << 16) | + ((UDWORD)context->m_pFileBuf[context->m_pFilePos + 2] << 8) | + ((UDWORD)context->m_pFileBuf[context->m_pFilePos + 3]); + context->m_pFilePos += 4; + } + + // get next int32 + context->m_nIntBufCount = 32; + + return eslErrSuccess; +} + +int MIOContext_GetABit(MIOContext* context) { + if (MIOContext_PrefetchBuffer(context)) { + return 1; // on error does return 1 + } + + // returns one bit ("0 or -1" according to original comment) + int nValue = (int)(((SDWORD)context->m_dwIntBuffer) >> 31); + --context->m_nIntBufCount; + context->m_dwIntBuffer <<= 1; + return nValue; +} + +UINT MIOContext_GetNBits(MIOContext* context, int n) { + UINT nCode = 0; + while (n != 0) { + if (MIOContext_PrefetchBuffer(context)) + break; + + int nCopyBits = n; + if (nCopyBits > context->m_nIntBufCount) + nCopyBits = context->m_nIntBufCount; + + nCode = (nCode << nCopyBits) | (context->m_dwIntBuffer >> (32 - nCopyBits)); + n -= nCopyBits; + context->m_nIntBufCount -= nCopyBits; + context->m_dwIntBuffer <<= nCopyBits; + } + return nCode; +} + +static int MIOContext_GetGammaCode(MIOContext* context) { + // test 1 + if (MIOContext_PrefetchBuffer(context)) { + return 0; + } + + /*register*/ UDWORD dwIntBuf; + context->m_nIntBufCount--; + dwIntBuf = context->m_dwIntBuffer; + context->m_dwIntBuffer <<= 1; + if (!(dwIntBuf & 0x80000000)) { + return 1; + } + + + // test end code + if (MIOContext_PrefetchBuffer(context)) { + return 0; + } + + if ((~context->m_dwIntBuffer & 0x55000000) && (context->m_nIntBufCount >= 8)) { + int i = (context->m_dwIntBuffer >> 24) << 1; + int nCode = nGammaCodeLookup[i]; + int nBitCount = nGammaCodeLookup[i + 1]; + + /* (assert) */ + if (nBitCount > context->m_nIntBufCount || nCode <= 0) + return 0; + + context->m_nIntBufCount -= nBitCount; + context->m_dwIntBuffer <<= nBitCount; + return nCode; + } + + // regular routine + int nCode = 0, nBase = 2; + for (;;) { + if (context->m_nIntBufCount >= 2) { + // process 2 bits + dwIntBuf = context->m_dwIntBuffer; + context->m_dwIntBuffer <<= 2; + nCode = (nCode << 1) | (dwIntBuf >> 31); + context->m_nIntBufCount -= 2; + if (!(dwIntBuf & 0x40000000)) { + return nCode + nBase; + } + nBase <<= 1; + } + else { + // extract 1-bit + if (MIOContext_PrefetchBuffer(context)) { + return 0; + } + nCode = (nCode << 1) | (context->m_dwIntBuffer >> 31); + context->m_nIntBufCount--; + context->m_dwIntBuffer <<= 1; + + // test end code + if (MIOContext_PrefetchBuffer(context)) { + return 0; + } + + dwIntBuf = context->m_dwIntBuffer; + context->m_nIntBufCount--; + context->m_dwIntBuffer <<= 1; + if (!(dwIntBuf & 0x80000000)) { + return nCode + nBase; + } + nBase <<= 1; + } + } +} + +/* original clones this into 2 functions with different escape codes but here we use a flag */ +static int MIOContext_GetHuffmanCommon(MIOContext* context, ERINA_HUFFMAN_TREE* tree, int escapeGamma) { + // get one huffman code + int nCode; + if (tree->m_iEscape != ERINA_HUFFMAN_NULL) { + int iEntry = ERINA_HUFFMAN_ROOT; + int iChild = tree->m_hnTree[ERINA_HUFFMAN_ROOT].child_code; + + // decode codes + do { + if (MIOContext_PrefetchBuffer(context)) { + return ERINA_HUFFMAN_ESCAPE; + } + + // extract 1-bit + iEntry = iChild + (context->m_dwIntBuffer >> 31); + --context->m_nIntBufCount; + iChild = tree->m_hnTree[iEntry].child_code; + context->m_dwIntBuffer <<= 1; + } while (!(iChild & ERINA_CODE_FLAG)); + + // increase code occurence + if ((context->m_dwERINAFlags != ERINAEncodingFlag_efERINAOrder0) || (tree->m_hnTree[ERINA_HUFFMAN_ROOT].weight < ERINA_HUFFMAN_MAX - 1)) { + EHT_IncreaseOccuredCount(tree, iEntry); + } + + // regular code + nCode = iChild & ~ERINA_CODE_FLAG; + if (nCode != ERINA_HUFFMAN_ESCAPE) { + return nCode; + } + } + + if (escapeGamma) { + // escape code: gamma code + nCode = MIOContext_GetGammaCode(context); + if (nCode == -1) { + return ERINA_HUFFMAN_ESCAPE; + } + } + else { + // escape code: 8-bit code + nCode = MIOContext_GetNBits(context, 8); + } + EHT_AddNewEntry(tree, nCode); + + return nCode; +} + +// get one "regular huffman" code +static int MIOContext_GetHuffmanCode(MIOContext* context, ERINA_HUFFMAN_TREE* tree) { + return MIOContext_GetHuffmanCommon(context, tree, 0); +} + +// get one "length huffman" code +static int MIOContext_GetHuffmanLength(MIOContext* context, ERINA_HUFFMAN_TREE* tree) { + return MIOContext_GetHuffmanCommon(context, tree, 1); +} + +////////////////////////////////////////////////////////////////////////////// + +/* decode ERINA (huffman-coded) */ +ULONG MIOContext_DecodeERINACodeBytes(MIOContext* context, SBYTE* ptrDst, ULONG nCount) { + ERINA_HUFFMAN_TREE* tree = context->m_pLastHuffmanTree; + int symbol, length; + ULONG i = 0; + if (context->m_nLength > 0) { + length = context->m_nLength; + if (length > (int)nCount) { + length = nCount; + } + context->m_nLength -= length; + do { + ptrDst[i++] = 0; + } while (--length); + } + while (i < nCount) { + symbol = MIOContext_GetHuffmanCode(context, tree); + if (symbol == ERINA_HUFFMAN_ESCAPE) { + break; + } + ptrDst[i++] = (SBYTE)symbol; + + if (symbol == 0) { + length = MIOContext_GetHuffmanLength(context, context->m_ppHuffmanTree[0x100]); + if (length == ERINA_HUFFMAN_ESCAPE) { + break; + } + if (--length) { + context->m_nLength = length; + if (i + length > nCount) { + length = nCount - i; + } + context->m_nLength -= length; + if (length > 0) { + do { + ptrDst[i++] = 0; + } while (--length); + } + } + } + tree = context->m_ppHuffmanTree[symbol & 0xFF]; + } + context->m_pLastHuffmanTree = tree; + + return i; +} + +static int MIOContext_DecodeERISACodeIndex(MIOContext* context, ERISA_PROB_MODEL* pModel) { + // serach via index + UDWORD dwAcc = context->m_dwCodeRegister * pModel->dwTotalCount / context->m_dwAugendRegister; + if (dwAcc >= ERISA_TOTAL_LIMIT) { + return MIO_ERISA_SYMBOL_ERROR; + } + + int iSym = 0; + WORD wAcc = (WORD)dwAcc; + WORD wFs = 0; + WORD wOccured; + for (;;) { + wOccured = pModel->acsSymTable[iSym].wOccured; + if (wAcc < wOccured) { + break; + } + wAcc -= wOccured; + wFs += wOccured; + if ((UDWORD)++iSym >= pModel->dwSymbolSorts) { + return MIO_ERISA_SYMBOL_ERROR; + } + } + + // update code and augend registers + context->m_dwCodeRegister -= (context->m_dwAugendRegister * wFs + pModel->dwTotalCount - 1) / pModel->dwTotalCount; + context->m_dwAugendRegister = context->m_dwAugendRegister * wOccured / pModel->dwTotalCount; + + /* (assert) */ + if (context->m_dwAugendRegister == 0) + return MIO_ERISA_SYMBOL_ERROR; + + // normalize augend register and load into code register + while (!(context->m_dwAugendRegister & 0x8000)) { + int nNextBit = MIOContext_GetABit(context); + if (nNextBit == 1) { + if ((++context->m_nPostBitCount) >= 256) { + return MIO_ERISA_SYMBOL_ERROR; + } + nNextBit = 0; + } + context->m_dwCodeRegister = (context->m_dwCodeRegister << 1) | (nNextBit & 0x01); + + context->m_dwAugendRegister <<= 1; + } + + + /* (assert) */ + if ((context->m_dwAugendRegister & 0x8000) == 0) + return MIO_ERISA_SYMBOL_ERROR; + + context->m_dwCodeRegister &= 0xFFFF; + + return iSym; +} + +/* decode ERISA (arithmetic-coded, using designated statistical model) */ +int MIOContext_DecodeERISACode(MIOContext* context, ERISA_PROB_MODEL* pModel) { + int iSym = MIOContext_DecodeERISACodeIndex(context, pModel); + int nSymbol = ERISA_ESCAPE_CODE; + if (iSym >= 0) { + nSymbol = pModel->acsSymTable[iSym].wSymbol; + EPM_IncreaseSymbol(pModel, iSym); + } + return nSymbol; +} + +////////////////////////////////////////////////////////////////////////////// + +MIOContext* MIOContext_Open() { + MIOContext* context = malloc(sizeof(MIOContext)); + if (!context) return NULL; + + context->m_nIntBufCount = 0; + + context->m_pfnDecodeSymbolBytes = NULL; + + context->m_ppHuffmanTree = NULL; + context->m_pPhraseLenProb = NULL; + context->m_pPhraseIndexProb = NULL; + context->m_pRunLenProb = NULL; + context->m_ppTableERISA = NULL; + + return context; +} + +void MIOContext_Close(MIOContext* context) { + if (!context) return; + + free(context->m_ppHuffmanTree); + free(context->m_pPhraseLenProb); + free(context->m_pPhraseIndexProb); + free(context->m_pRunLenProb); + free(context->m_ppTableERISA); + + free(context); +} + +void MIOContext_AttachInputFile(MIOContext* context, uint8_t* pFileBuf, int pFileLength) { + context->m_pFileBuf = pFileBuf; + context->m_pFileLength = pFileLength; + context->m_pFilePos = 0; +} + +void MIOContext_FlushBuffer(MIOContext* context) { + context->m_nIntBufCount = 0; +} + +////////////////////////////////////////////////////////////////////////////// + +ESLError MIOContext_PrepareToDecodeERINACode(MIOContext* context, UDWORD dwFlags) { + if (context->m_ppHuffmanTree == NULL) { + UDWORD dwSize = (sizeof(ERINA_HUFFMAN_TREE*) + sizeof(ERINA_HUFFMAN_TREE)) * 0x101; + dwSize = (dwSize + 0x0F) & ~0x0F; + context->m_ppHuffmanTree = (ERINA_HUFFMAN_TREE**)malloc(dwSize); + if (!context->m_ppHuffmanTree) + return eslErrGeneral; + + BYTE* ptrBuf = (BYTE*)(context->m_ppHuffmanTree + 0x101); + for (int i = 0; i < 0x101; i++) { + void* ptrTmp = ptrBuf; + context->m_ppHuffmanTree[i] = ptrTmp; + ptrBuf += sizeof(ERINA_HUFFMAN_TREE); + } + } + + // init huffman + context->m_dwERINAFlags = dwFlags; + context->m_nLength = 0; + if (dwFlags == ERINAEncodingFlag_efERINAOrder0) { // not used in audio actually + EHT_Initialize(context->m_ppHuffmanTree[0]); + EHT_Initialize(context->m_ppHuffmanTree[0x100]); + for (int i = 1; i < 0x100; i++) { + context->m_ppHuffmanTree[i] = context->m_ppHuffmanTree[0]; + } + } + else { + for (int i = 0; i < 0x101; i++) { + EHT_Initialize(context->m_ppHuffmanTree[i]); + } + } + + context->m_pLastHuffmanTree = context->m_ppHuffmanTree[0]; + + context->m_pfnDecodeSymbolBytes = &MIOContext_DecodeERINACodeBytes; + + return eslErrSuccess; +} + +ESLError MIOContext_PrepareToDecodeERISACode(MIOContext* context) { + // init memory + if (context->m_ppTableERISA == NULL) { //TODO improve + UDWORD dwBytes = sizeof(ERISA_PROB_MODEL*) * 0x104 + sizeof(ERISA_PROB_MODEL) * 0x101; + dwBytes = (dwBytes + 0x100F) & (~0xFFF); + context->m_ppTableERISA = (ERISA_PROB_MODEL**)malloc(dwBytes); + if (!context->m_ppTableERISA) + return eslErrGeneral; + } + + if (context->m_pPhraseLenProb == NULL) + context->m_pPhraseLenProb = malloc(sizeof(ERISA_PROB_MODEL)); + if (context->m_pPhraseIndexProb == NULL) + context->m_pPhraseIndexProb = malloc(sizeof(ERISA_PROB_MODEL)); + if (context->m_pRunLenProb == NULL) + context->m_pRunLenProb = malloc(sizeof(ERISA_PROB_MODEL)); + if (!context->m_pPhraseLenProb || !context->m_pPhraseIndexProb || !context->m_pRunLenProb) + return eslErrGeneral; + + // init probability model + ERISA_PROB_MODEL* pNextProb = (ERISA_PROB_MODEL*)(context->m_ppTableERISA + 0x104); + context->m_pLastERISAProb = pNextProb; + for (int i = 0; i < 0x101; i++) { + EPM_Initialize(pNextProb); + context->m_ppTableERISA[i] = pNextProb; + pNextProb++; + } + EPM_Initialize(context->m_pPhraseLenProb); + EPM_Initialize(context->m_pPhraseIndexProb); + EPM_Initialize(context->m_pRunLenProb); + + // init register + context->m_nLength = 0; + context->m_dwCodeRegister = MIOContext_GetNBits(context, 32); + context->m_dwAugendRegister = 0xFFFF; + context->m_nPostBitCount = 0; + + context->m_pfnDecodeSymbolBytes = &MIOContext_DecodeERISACodeBytes; + + return eslErrSuccess; +} + +// init "arithtmetic code" +void MIOContext_InitializeERISACode(MIOContext* context) { + context->m_nLength = 0; + context->m_dwCodeRegister = MIOContext_GetNBits(context, 32); + context->m_dwAugendRegister = 0xFFFF; + context->m_nPostBitCount = 0; +} + +ULONG MIOContext_DecodeERISACodeBytes(MIOContext* context, SBYTE* ptrDst, ULONG nCount) { + ERISA_PROB_MODEL* pProb = context->m_pLastERISAProb; + int nSymbol, iSym; + int i = 0; + + while ((ULONG)i < nCount) { + if (context->m_nLength > 0) { + // zero-length + ULONG nCurrent = nCount - i; + if (nCurrent > context->m_nLength) + nCurrent = context->m_nLength; + + context->m_nLength -= nCurrent; + for (ULONG j = 0; j < nCurrent; j++) { + ptrDst[i++] = 0; + } + + continue; + } + + // decode next arithmetic code + iSym = MIOContext_DecodeERISACodeIndex(context, pProb); + if (iSym < 0) + break; + nSymbol = pProb->acsSymTable[iSym].wSymbol; + EPM_IncreaseSymbol(pProb, iSym); + ptrDst[i++] = (SBYTE)nSymbol; + + if (nSymbol == 0) { + // get zero-length + iSym = MIOContext_DecodeERISACodeIndex(context, context->m_pRunLenProb); + if (iSym < 0) + break; + context->m_nLength = context->m_pRunLenProb->acsSymTable[iSym].wSymbol; + EPM_IncreaseSymbol(context->m_pRunLenProb, iSym); + } + + pProb = context->m_ppTableERISA[(nSymbol & 0xFF)]; + } + context->m_pLastERISAProb = pProb; + + return i; +} + +ULONG MIOContext_DecodeERISACodeWords(MIOContext* context, SWORD* ptrDst, ULONG nCount) { + ERISA_PROB_MODEL* pProb = context->m_pLastERISAProb; + int nSymbol, iSym; + int i = 0; + + while ((ULONG)i < nCount) { + if (context->m_nLength > 0) { + // zero-length + ULONG nCurrent = nCount - i; + if (nCurrent > context->m_nLength) + nCurrent = context->m_nLength; + + context->m_nLength -= nCurrent; + for (ULONG j = 0; j < nCurrent; j++) { + ptrDst[i++] = 0; + } + + continue; + } + + // decode next arithmetic code + iSym = MIOContext_DecodeERISACodeIndex(context, pProb); + if (iSym < 0) + break; + nSymbol = pProb->acsSymTable[iSym].wSymbol; + EPM_IncreaseSymbol(pProb, iSym); + + + if (nSymbol == ERISA_ESCAPE_CODE) { + iSym = MIOContext_DecodeERISACodeIndex(context, context->m_pPhraseIndexProb); + if (iSym < 0) + break; + nSymbol = context->m_pPhraseIndexProb->acsSymTable[iSym].wSymbol; + EPM_IncreaseSymbol(context->m_pPhraseIndexProb, iSym); + + iSym = MIOContext_DecodeERISACodeIndex(context, context->m_pPhraseLenProb); + if (iSym < 0) + break; + nSymbol = (nSymbol << 8) | (context->m_pPhraseLenProb->acsSymTable[iSym].wSymbol & 0xFF); + EPM_IncreaseSymbol(context->m_pPhraseLenProb, iSym); + + ptrDst[i++] = (SWORD)nSymbol; + pProb = context->m_ppTableERISA[0x100]; + } + else { + ptrDst[i++] = (SWORD)(SBYTE)nSymbol; + pProb = context->m_ppTableERISA[(nSymbol & 0xFF)]; + + if (nSymbol == 0) { + // get zero-length + iSym = MIOContext_DecodeERISACodeIndex(context, context->m_pRunLenProb); + if (iSym < 0) + break; + context->m_nLength = context->m_pRunLenProb->acsSymTable[iSym].wSymbol; + EPM_IncreaseSymbol(context->m_pRunLenProb, iSym); + } + } + } + + context->m_pLastERISAProb = pProb; + + return i; +} diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisacontext.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisacontext.h new file mode 100644 index 000000000..a5d0cbed5 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisacontext.h @@ -0,0 +1,123 @@ +/* Handles bitreading from blocks and code unpacking (huffman/arithmetical decoding). + */ +#ifndef _MIO_ERISA_CONTEXT_H_ +#define _MIO_ERISA_CONTEXT_H_ + +/* tree for huffman coding ("ERINA" codes) */ + +#define ERINA_CODE_FLAG 0x80000000u +#define ERINA_HUFFMAN_ESCAPE 0x7FFFFFFF +#define ERINA_HUFFMAN_NULL 0x8000u +#define ERINA_HUFFMAN_MAX 0x4000 +#define ERINA_HUFFMAN_ROOT 0x200 + +#define MIO_HUFFMAN_SYMBOLS 256 + +typedef struct { + uint16_t weight; + uint16_t parent; + uint32_t child_code; +} ERINA_HUFFMAN_NODE; + +typedef struct { + ERINA_HUFFMAN_NODE m_hnTree[0x201]; + int m_iSymLookup[MIO_HUFFMAN_SYMBOLS]; + int m_iEscape; + int m_iTreePointer; +} ERINA_HUFFMAN_TREE; + + +/* probability model for arithmetic coding ("ERISA" codes) */ + +#define ERISA_TOTAL_LIMIT 0x2000 // parameter limit +#define ERISA_SYMBOL_SORTS 0x101 // max types +#define ERISA_SUB_SORT_MAX 0x80 +#define ERISA_PROB_SLOT_MAX 0x800 // max slots for probability model +#define ERISA_ESCAPE_CODE (-1) + +typedef struct { + WORD wOccured; // symbol occurence count + SWORD wSymbol; // symbol (lower 8-bit only +} ERISA_CODE_SYMBOL; + +typedef struct { + UDWORD dwTotalCount; // param < 2000H + UDWORD dwSymbolSorts; // number of symbol types + ERISA_CODE_SYMBOL acsSymTable[ERISA_SYMBOL_SORTS]; // probability model + ERISA_CODE_SYMBOL acsSubModel[ERISA_SUB_SORT_MAX]; // sub-probability model index +} ERISA_PROB_MODEL; + +typedef enum { + ERINAEncodingFlag_efERINAOrder0 = 0x0000, + ERINAEncodingFlag_efERINAOrder1 = 0x0001 +} ERINAEncodingFlag; + + +/* coding context for the decoder (AKA ERISADecodeContext), used to extract codes from a bitstream buffer */ + +typedef struct MIOContext MIOContext; +struct MIOContext { + // bitstream buffer + int m_nIntBufCount; // helper input buffer bitpos + UDWORD m_dwIntBuffer; // helper input buffer + + uint8_t* m_pFileBuf; + int m_pFileLength; + int m_pFilePos; + + // current symbol expansion + ULONG (*m_pfnDecodeSymbolBytes)(MIOContext* context, SBYTE* ptrDst, ULONG nCount); + + // for run-length encoding + ULONG m_nLength; + + // ERINA (huffman) code context + UDWORD m_dwERINAFlags; + ERINA_HUFFMAN_TREE* m_pLastHuffmanTree; + ERINA_HUFFMAN_TREE** m_ppHuffmanTree; + + // ERISA (arithmetic) code context + UDWORD m_dwCodeRegister; // 16-bit + UDWORD m_dwAugendRegister; // 16-bit + int m_nPostBitCount; // end bit buffer counter + + // ERISA-N context + ERISA_PROB_MODEL* m_pPhraseLenProb; + ERISA_PROB_MODEL* m_pPhraseIndexProb; + ERISA_PROB_MODEL* m_pRunLenProb; + ERISA_PROB_MODEL* m_pLastERISAProb; + ERISA_PROB_MODEL** m_ppTableERISA; +}; + +MIOContext* MIOContext_Open(); +void MIOContext_Close(MIOContext* context); + +void MIOContext_AttachInputFile(MIOContext* context, uint8_t* pFileBuf, int pFileLength); + +int MIOContext_GetABit(MIOContext* context); + +UINT MIOContext_GetNBits(MIOContext* context, int n); + +void MIOContext_FlushBuffer(MIOContext* context); + +ULONG MIOContext_DecodeSymbolBytes(MIOContext* context, SBYTE* ptrDst, ULONG nCount); + +ESLError MIOContext_PrepareToDecodeERINACode(MIOContext* context, UDWORD dwFlags); + +// (indirect call) +ULONG MIOContext_DecodeERINACodeBytes(MIOContext* context, SBYTE* ptrDst, ULONG nCount); + +ESLError MIOContext_PrepareToDecodeERISACode(MIOContext* context); + +void MIOContext_InitializeERISACode(MIOContext* context); + +int MIOContext_DecodeERISACode(MIOContext* context, ERISA_PROB_MODEL* pModel); + +//int MIOContext_DecodeERISACodeIndex(MIOContext* context, ERISA_PROB_MODEL* pModel); + +// (indirect call) +ULONG MIOContext_DecodeERISACodeBytes(MIOContext* context, SBYTE* ptrDst, ULONG nCount); + +ULONG MIOContext_DecodeERISACodeWords(MIOContext* context, SWORD* ptrDst, ULONG nCount); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisafile.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisafile.c new file mode 100644 index 000000000..aaaa73f86 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisafile.c @@ -0,0 +1,375 @@ +/***************************************************************************** + E R I S A - L i b r a r y + ----------------------------------------------------------------------------- + Copyright (C) 2002-2003 Leshade Entis, Entis-soft. All rights reserved. + *****************************************************************************/ + +#include +#include +#include +#include "mio_xerisa.h" +#include "../../util/reader_get.h" + +#define MIO_PACKET_BUFFER_MAX 0x20000 /* observed max is ~0x1d000 */ +#define MIO_PACKET_HEADER_SIZE 0x08 +#define MIO_PACKET_BYTES_MAX (32768 * 2 * 2) /* observed max: samples * channels * pcm16 */ + + +static inline /*const*/ uint64_t get_id64le(const char* s) { + return (uint64_t)( + ((uint64_t)s[7] << 56) | + ((uint64_t)s[6] << 48) | + ((uint64_t)s[5] << 40) | + ((uint64_t)s[4] << 32) | + ((uint64_t)s[3] << 24) | + ((uint64_t)s[2] << 16) | + ((uint64_t)s[1] << 8) | + ((uint64_t)s[0] << 0) + ); +} + +MIOFile* MIOFile_Open() { + MIOFile* mf = calloc(1, sizeof(MIOFile)); + if (!mf) + return NULL; + + return mf; +} + +void MIOFile_Close(MIOFile* mf) { + if (!mf) return; + + free(mf->ptrWaveBuf); + free(mf->desc); + free(mf->buf); + free(mf); +} + + +static int read_chunk(EMC_RECORD_HEADER* rh, io_callback_t* file) { + uint8_t chunk[0x10]; + + int len = file->read(chunk, 1, 0x10, file->arg); + if (len != 0x10) goto fail; + + rh->nRecordID = get_u64le(chunk + 0x00); + rh->nRecLength = get_u64le(chunk + 0x08); + + return 1; +fail: + return 0; +} + +/* reads string (possibly utf16) in the form of "KEY\r\nVAL\r\n" */ +static int read_tag(char* tag, int tag_len, char* buf, int buf_len, int is_utf16le) { + int step = is_utf16le ? 2 : 1; + + int buf_pos = 0; + int tag_pos = 0; + + tag[0] = '\0'; + while (1) { + if (buf_pos + step >= buf_len) + break; + if (tag_pos + 1 >= tag_len) + break; + + char elem = buf[buf_pos++]; + if (is_utf16le) /* ignore high byte for now (only seen simple tags) */ + buf_pos++; + + if (elem == '\0') + break; + + tag[tag_pos++] = elem; + } + + tag[tag_pos] = '\0'; + return buf_pos; +} + +static int read_int(const char* params, UDWORD *value) { + int n,m; + int temp; + + m = sscanf(params, " %d%n", &temp,&n); + if (m != 1 || temp < 0) + return 0; + + *value = temp; + return n; +} + +/* Originally this is parsed into a list then returned when requested (ex. ERIFile::ETagInfo::GetRewindPoint) + * but pre-read to simplify. Tags format: + * - optional BOM (text is char16, possibly SHIFT-JIS), only seen files with utf-16 + * - key\r\nvalue\r\n (keys usually start with '#') xN (probably null-separated but only seen 1 tag) + * - null padding (tag block is usually 0x80 even if only one short string is used) */ +static void read_tags(MIOFile* mf) { + char tag[128]; + int tag_len = sizeof(tag); + char* desc = mf->desc; + int desc_len = mf->desc_len; + int is_utf16le = 0; + + if (desc[0] == '\xff' && desc[1] == '\xfe') { + is_utf16le = 1; + } + + desc += 2; + desc_len -= 2; + + while (1) { + int read = read_tag(tag, tag_len, desc, desc_len, is_utf16le); + if (read <= 0) + break; + + if (memcmp(tag, "#rewind-point\r\n", 15) == 0) + read_int(tag + 15, &mf->mioih.rewindPoint); + + desc += read; + desc_len -= read; + } +} + +ESLError MIOFile_Initialize(MIOFile* mf, io_callback_t* file) { + EMC_RECORD_HEADER rh; + uint8_t buf[0x40]; + int len, ok; + int size, to_read; + + file->seek(file->arg, 0, IO_CALLBACK_SEEK_SET); + + /* read base chunk */ + { + to_read = 0x40; + + len = file->read(buf, 1, to_read, file->arg); + if (len < to_read) goto fail; + + mf->emcfh.cHeader = get_u64le(buf + 0x00); + mf->emcfh.dwFileID = get_u32le(buf + 0x08); + mf->emcfh.dwReserved = get_u32le(buf + 0x0c); + memcpy(mf->emcfh.cFormatDesc, buf + 0x10, 0x20); + /* 0x30: extra info 0x10 */ + + if (mf->emcfh.cHeader != get_id64le("Entis\x1a\x00\x00")) + goto fail; + + /* each format has a fixed description, not checked in OG lib though */ + if (memcmp(mf->emcfh.cFormatDesc, "Music Interleaved and Orthogonal", 0x20) != 0) + goto fail; + /* older files end with " transformed\0\0\0\0", and newer with null + data size */ + } + + + /* read header chunks */ + { + ok = read_chunk(&rh, file); + if (!ok) goto fail; + + if (rh.nRecordID != get_id64le("Header ")) + goto fail; + + size = rh.nRecLength; + while (size > 0) { + + ok = read_chunk(&rh, file); + if (!ok) goto fail; + + size -= 0x10; + + /* common info */ + if (rh.nRecordID == get_id64le("FileHdr ")) { + to_read = rh.nRecLength; + if (to_read > sizeof(buf) || to_read != 0x14) goto fail; + + len = file->read(buf, 1, to_read, file->arg); + if (len != to_read) goto fail; + + mf->erifh.dwVersion = get_u32le(buf + 0x00); + mf->erifh.dwContainedFlag = get_u32le(buf + 0x04); + mf->erifh.dwKeyFrameCount = get_u32le(buf + 0x08); + mf->erifh.dwFrameCount = get_u32le(buf + 0x0c); + mf->erifh.dwAllFrameTime = get_u32le(buf + 0x10); + } + + /* audio header */ + if (rh.nRecordID == get_id64le("SoundInf")) { + to_read = rh.nRecLength; + if (to_read > sizeof(buf) || to_read != 0x28) goto fail; + + len = file->read(buf, 1, to_read, file->arg); + if (len != to_read) goto fail; + + mf->mioih.dwVersion = get_u32le(buf + 0x00); + mf->mioih.fdwTransformation= get_u32le(buf + 0x04); + mf->mioih.dwArchitecture = get_u32le(buf + 0x08); + mf->mioih.dwChannelCount = get_u32le(buf + 0x0c); + + mf->mioih.dwSamplesPerSec = get_u32le(buf + 0x10); + mf->mioih.dwBlocksetCount = get_u32le(buf + 0x14); + mf->mioih.dwSubbandDegree = get_u32le(buf + 0x18); + mf->mioih.dwAllSampleCount = get_u32le(buf + 0x1c); + + mf->mioih.dwLappedDegree = get_u32le(buf + 0x20); + mf->mioih.dwBitsPerSample = get_u32le(buf + 0x24); + } + + /* other defaults */ + mf->mioih.rewindPoint = -1; /* not looped (since #rewind-point 0 means loop from the beginning) */ + + /* tags */ + if (rh.nRecordID == get_id64le("descript")) { + /* OG lib supports: + "title", "vocal-player", "composer", "arranger", "source", "track", "release-date", "genre", + "rewind-point" (loop start), "hot-spot", "resolution", "comment", "words" (lyrics) + Only seen loops though. + */ + + /* sometimes chunk exists with just size 0x02 (empty but probably for BOM) */ + to_read = rh.nRecLength; + if (to_read < 0x02 || to_read > 0x10000) goto fail; + + mf->desc = calloc(1, to_read + 2); + if (!mf->desc) goto fail; + + len = file->read(mf->desc, 1, to_read, file->arg); + if (len != to_read) goto fail; + + /* doesn't always end with null */ + mf->desc[to_read+0] = '\0'; + mf->desc[to_read+1] = '\0'; + mf->desc_len = to_read; + + read_tags(mf); + } + + /* other chunks (not seen / for other non-MIO formats?): + * - "PrevwInf" (image preview) + * - "ImageInf" (image header) + * - "Sequence" (image?) + * - "cpyright" (text info) + */ + + size -= rh.nRecLength; + } + + if (mf->erifh.dwVersion > 0x00020100) { + goto fail; + } + } + + + /* read file data */ + { + ok = read_chunk(&rh, file); + if (!ok) goto fail; + + if (rh.nRecordID != get_id64le("Stream ")) + goto fail; + + //printf("stream chunk reached\n"); + /* packets are in "SoundStm" chunks ("ImageFrm" in images) */ + mf->start = file->tell(file->arg); + } + + return eslErrSuccess; +fail: + return eslErrGeneral; +} + +ESLError MIOFile_Reset(MIOFile* mf, io_callback_t* file) { + if (!mf) goto fail; + + file->seek(file->arg, mf->start, IO_CALLBACK_SEEK_SET); + + return eslErrSuccess; +fail: + return eslErrGeneral; +} + +static int parse_packet_header(uint8_t* buf, int buf_size, MIO_DATA_HEADER* dh) { + if (buf_size < MIO_PACKET_HEADER_SIZE) + goto fail; + + dh->bytVersion = get_u8(buf + 0x00); + dh->bytFlags = get_u8(buf + 0x01); + dh->bytReserved1 = get_u8(buf + 0x02); + dh->bytReserved2 = get_u8(buf + 0x03); + dh->dwSampleCount = get_u32le(buf + 0x04); + + return 1; +fail: + return 0; +} + +ESLError MIOFile_NextPacket(MIOFile* mf, io_callback_t* file) { + EMC_RECORD_HEADER rh; + int ok, len; + + ok = read_chunk(&rh, file); + if (!ok) return eslErrEof; + + if (rh.nRecordID != get_id64le("SoundStm")) + goto fail; + + /* prepare buf */ + if (mf->buf_size < rh.nRecLength) { + if (rh.nRecLength > MIO_PACKET_BUFFER_MAX) + goto fail; + if (rh.nRecLength <= MIO_PACKET_HEADER_SIZE) + goto fail; + + free(mf->buf); + mf->buf_size = rh.nRecLength; + mf->buf = malloc(mf->buf_size); + if (!mf->buf) goto fail; + } + + len = file->read(mf->buf, 1, rh.nRecLength, file->arg); + if (len != rh.nRecLength) goto fail; + + ok = parse_packet_header(mf->buf, rh.nRecLength, &mf->miodh); + if (!ok) goto fail; + + mf->packet = mf->buf + MIO_PACKET_HEADER_SIZE; + mf->packet_size = rh.nRecLength - MIO_PACKET_HEADER_SIZE; + + return eslErrSuccess; +fail: + return eslErrGeneral; +} + + +int MIOFile_GetTagLoop(MIOFile* mf, const char* tag) { + return mf->mioih.rewindPoint; +} + +void* MIOFile_GetCurrentWaveBuffer(MIOFile* mf) { + int channels = mf->mioih.dwChannelCount; + int bps = mf->mioih.dwBitsPerSample; + int bytes_per_sample = channels * (bps / 8); + int chunk_samples = mf->miodh.dwSampleCount; + + /* usually same for all except less in last packet */ + UDWORD dwBytesAudio = chunk_samples * bytes_per_sample; + if (dwBytesAudio > MIO_PACKET_BYTES_MAX) goto fail; + + if (dwBytesAudio > mf->ptrWaveBuf_len) { + free(mf->ptrWaveBuf); + mf->ptrWaveBuf = malloc(dwBytesAudio); + if (!mf->ptrWaveBuf) goto fail; + mf->ptrWaveBuf_len = dwBytesAudio; + } + + return mf->ptrWaveBuf; +fail: + return NULL; +} + +int MIOFile_GetCurrentWaveBufferCount(MIOFile* mf) { + int channels = mf->mioih.dwChannelCount; + int chunk_samples = mf->miodh.dwSampleCount; + return chunk_samples * channels; +} diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisafile.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisafile.h new file mode 100644 index 000000000..8c4f99307 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisafile.h @@ -0,0 +1,40 @@ +/* iDTC/iLOT/etc helper functions. + */ +#ifndef _MIO_ERISA_FILE_H_ +#define _MIO_ERISA_FILE_H_ + +/* custom IO (OG lib uses FILEs) */ +#include "../../util/io_callback.h" + + +typedef struct { + EMC_FILE_HEADER emcfh; // base header (EMC = Entis Media Complex) + ERI_FILE_HEADER erifh; // common file chunk + MIO_INFO_HEADER mioih; // audio audio chunk + uint32_t start; + + char* desc; // text info + int desc_len; // extra + + MIO_DATA_HEADER miodh; // packet info + uint8_t* buf; + int buf_size; + uint8_t* packet; //m_ptrBuffer + int packet_size; + + void* ptrWaveBuf; // not part of the original code but to simplify usage + int ptrWaveBuf_len; +} MIOFile; + +MIOFile* MIOFile_Open(); +void MIOFile_Close(MIOFile* mf); +ESLError MIOFile_Initialize(MIOFile* mf, io_callback_t* file); +ESLError MIOFile_Reset(MIOFile* mf, io_callback_t* file); +ESLError MIOFile_NextPacket(MIOFile* mf, io_callback_t* file); + +int MIOFile_GetTagLoop(MIOFile* mf, const char* tag); +// extra +void* MIOFile_GetCurrentWaveBuffer(MIOFile* mf); +int MIOFile_GetCurrentWaveBufferCount(MIOFile* mf); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisamatrix.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisamatrix.c new file mode 100644 index 000000000..968133be4 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisamatrix.c @@ -0,0 +1,392 @@ +/***************************************************************************** + E R I S A - L i b r a r y + ---------------------------------------------------------------------------- + Copyright (C) 2000-2003 Leshade Entis. All rights reserved. + *****************************************************************************/ + +#include +#include +#include "mio_xerisa.h" + +static volatile int g_eri_initialized = 0; //extra, not really that important but.. + +void ERI_eriInitializeLibrary(void) { + if (g_eri_initialized) + return; + EMT_eriInitializeMatrix(); + g_eri_initialized = 1; +} + +void ERI_eriCloseLibrary(void) { +} + +// + +static int round_f32(float r) { + if (r >= 0.0) { + return (int)floor(r + 0.5); + } + else { + return (int)ceil(r - 0.5); + } +} + +void EMT_eriRoundR32ToWordArray(SWORD* ptrDst, int nStep, const float* ptrSrc, int nCount) { + for (int i = 0; i < nCount; i++) { + int nValue = round_f32(ptrSrc[i]); + if (nValue <= -0x8000) { + *ptrDst = -0x8000; + } + else if (nValue >= 0x7FFF) { + *ptrDst = 0x7FFF; + } + else { + *ptrDst = (SWORD)nValue; + } + ptrDst += nStep; + } +} + + +static const double ERI_PI = 3.141592653589; // = π +static const float ERI_rHalf = 0.5F; // = 1/2 +//static const float ERI_r2 = 2.0F; // = 2.0 + +// revolve 2-point matrix (for MSS) +void EMT_eriRevolve2x2(float* ptrBuf1, float* ptrBuf2, float rSin, float rCos, unsigned int nStep, unsigned int nCount) { + for (int i = 0; i < nCount; i++) { + float r1 = *ptrBuf1; + float r2 = *ptrBuf2; + + *ptrBuf1 = r1 * rCos - r2 * rSin; + *ptrBuf2 = r1 * rSin + r2 * rCos; + + ptrBuf1 += nStep; + ptrBuf2 += nStep; + } +} + +// create rotation matrix parameter for LOT transformation +ERI_SIN_COS* EMT_eriCreateRevolveParameter(unsigned int nDegreeDCT) { + int i, nDegreeNum; + nDegreeNum = 1 << nDegreeDCT; + + int lc = 1, n = nDegreeNum / 2; + while (n >= 8) { + n /= 8; + ++lc; + } + + ERI_SIN_COS* ptrRevolve = malloc(lc * 8 * sizeof(ERI_SIN_COS)); + if (!ptrRevolve) + return NULL; + + double k = ERI_PI / (nDegreeNum * 2); + ERI_SIN_COS* ptrNextRev = ptrRevolve; + int nStep = 2; + do { + for (i = 0; i < 7; i++) { + double ws = 1.0; + double a = 0.0; + for (int j = 0; j < i; j++) { + a += nStep; + ws = ws * ptrNextRev[j].rSin + ptrNextRev[j].rCos * cos(a * k); + } + double r = atan2(ws, cos((a + nStep) * k)); + ptrNextRev[i].rSin = (float)sin(r); + ptrNextRev[i].rCos = (float)cos(r); + } + ptrNextRev += 7; + nStep *= 8; + } + while (nStep < nDegreeNum); + + return ptrRevolve; +} + +void EMT_eriOddGivensInverseMatrix(float* ptrSrc, const ERI_SIN_COS* ptrRevolve, unsigned int nDegreeDCT) { + int i, j, k; + int nDegreeNum = 1 << nDegreeDCT; + + // odd number rotate operation + int nStep, lc, index; + index = 1; + nStep = 2; + lc = (nDegreeNum / 2) / 8; + + for (;;) { + ptrRevolve += 7; + index += nStep * 7; + nStep *= 8; + if (lc <= 8) + break; + lc /= 8; + } + + k = index + nStep * (lc - 2); + for (j = lc - 2; j >= 0; j--) { + float r1 = ptrSrc[k]; + float r2 = ptrSrc[k + nStep]; + ptrSrc[k] = r1 * ptrRevolve[j].rCos + r2 * ptrRevolve[j].rSin; + ptrSrc[k + nStep] = r2 * ptrRevolve[j].rCos - r1 * ptrRevolve[j].rSin; + k -= nStep; + } + + for (;;) { + if (lc > (nDegreeNum / 2) / 8) + break; + + ptrRevolve -= 7; + nStep /= 8; + index -= nStep * 7; + + for (i = 0; i < lc; i++) { + k = i * (nStep * 8) + index + nStep * 6; + for (j = 6; j >= 0; j--) { + float r1 = ptrSrc[k]; + float r2 = ptrSrc[k + nStep]; + ptrSrc[k] = r1 * ptrRevolve[j].rCos + r2 * ptrRevolve[j].rSin; + ptrSrc[k + nStep] = r2 * ptrRevolve[j].rCos - r1 * ptrRevolve[j].rSin; + k -= nStep; + } + } + + lc *= 8; + } +} + +// Inverse Previous LOT +void EMT_eriFastIPLOT(float* ptrSrc, unsigned int nDegreeDCT) { + unsigned int nDegreeNum = 1 << nDegreeDCT; + + // divide odd and even freqs + for (int i = 0; i < nDegreeNum; i += 2) { + float r1 = ptrSrc[i]; + float r2 = ptrSrc[i + 1]; + ptrSrc[i] = ERI_rHalf * (r1 + r2); + ptrSrc[i + 1] = ERI_rHalf * (r1 - r2); + } +} + +// Inverse LOT +void EMT_eriFastILOT(float* ptrDst, const float* ptrSrc1, const float* ptrSrc2, unsigned int nDegreeDCT) { + unsigned int nDegreeNum = 1 << nDegreeDCT; + + // reverse duplication + for (int i = 0; i < nDegreeNum; i += 2) { + float r1 = ptrSrc1[i]; + float r2 = ptrSrc2[i + 1]; + ptrDst[i] = r1 + r2; + ptrDst[i + 1] = r1 - r2; + } +} + + +////////////////////////////////////////////////////////////////////////////// + +static float ERI_rCosPI4; // = cos(pi/4) +static float ERI_r2CosPI4; // = 2*cos(pi/4) + +// matrix coefs: k(n,i) = cos( (2*i+1) / (4*n) ) +// +static float ERI_DCTofK2[2]; // = cos( (2*i+1) / 8 ) +static float ERI_DCTofK4[4]; // = cos( (2*i+1) / 16 ) +static float ERI_DCTofK8[8]; // = cos( (2*i+1) / 32 ) +static float ERI_DCTofK16[16]; // = cos( (2*i+1) / 64 ) +static float ERI_DCTofK32[32]; // = cos( (2*i+1) / 128 ) +static float ERI_DCTofK64[64]; // = cos( (2*i+1) / 256 ) +static float ERI_DCTofK128[128]; // = cos( (2*i+1) / 512 ) +static float ERI_DCTofK256[256]; // = cos( (2*i+1) / 1024 ) +static float ERI_DCTofK512[512]; // = cos( (2*i+1) / 2048 ) +static float ERI_DCTofK1024[1024]; // = cos( (2*i+1) / 4096 ) +static float ERI_DCTofK2048[2048]; // = cos( (2*i+1) / 8192 ) + +// matrix coefs table +static float* ERI_pMatrixDCTofK[MAX_DCT_DEGREE] = { + NULL, + ERI_DCTofK2, + ERI_DCTofK4, + ERI_DCTofK8, + ERI_DCTofK16, + ERI_DCTofK32, + ERI_DCTofK64, + ERI_DCTofK128, + ERI_DCTofK256, + ERI_DCTofK512, + ERI_DCTofK1024, + ERI_DCTofK2048 +}; + +// initialize tables for DCT matrix operations +void EMT_eriInitializeMatrix(void) { + // prepare special constants + ERI_rCosPI4 = (float)cos(ERI_PI * 0.25); + ERI_r2CosPI4 = 2.0F * ERI_rCosPI4; + + // matrix coefs init + for (int i = 1; i < MAX_DCT_DEGREE; i++) { + int n = (1 << i); + float* pDCTofK = ERI_pMatrixDCTofK[i]; + double nr = ERI_PI / (4.0 * n); + double dr = nr + nr; + double ir = nr; + + for (int j = 0; j < n; j++) { + pDCTofK[j] = (float)cos(ir); + ir += dr; + } + } +} + +static void eriFastDCT(float* ptrDst, unsigned int nDstInterval, float* ptrSrc, float* ptrWorkBuf, unsigned int nDegreeDCT) { + if (nDegreeDCT < MIN_DCT_DEGREE || nDegreeDCT > MAX_DCT_DEGREE) + return; + + if (nDegreeDCT == MIN_DCT_DEGREE) { + // 4th order DCT + float r32Buf[4]; + + // cross ops + r32Buf[0] = ptrSrc[0] + ptrSrc[3]; + r32Buf[2] = ptrSrc[0] - ptrSrc[3]; + r32Buf[1] = ptrSrc[1] + ptrSrc[2]; + r32Buf[3] = ptrSrc[1] - ptrSrc[2]; + + // first half: A2 * DCT2 + ptrDst[0] = ERI_rHalf * (r32Buf[0] + r32Buf[1]); + ptrDst[nDstInterval * 2] = ERI_rCosPI4 * (r32Buf[0] - r32Buf[1]); + + // last half: R2 * 2 * A2 * DCT2 * K2 + r32Buf[2] = ERI_DCTofK2[0] * r32Buf[2]; + r32Buf[3] = ERI_DCTofK2[1] * r32Buf[3]; + + r32Buf[0] = r32Buf[2] + r32Buf[3]; + r32Buf[1] = ERI_r2CosPI4 * (r32Buf[2] - r32Buf[3]); + + r32Buf[1] -= r32Buf[0]; + + ptrDst[nDstInterval] = r32Buf[0]; + ptrDst[nDstInterval * 3] = r32Buf[1]; + } + else { + // regular DCT + ////////////////////////////////////////////////////////////////////// + // | I J | + // cross ops = | | + // | I -J | + unsigned int nDegreeNum = (1 << nDegreeDCT); + unsigned int nHalfDegree = (nDegreeNum >> 1); + for (int i = 0; i < nHalfDegree; i++) { + ptrWorkBuf[i] = ptrSrc[i] + ptrSrc[nDegreeNum - i - 1]; + ptrWorkBuf[i + nHalfDegree] = ptrSrc[i] - ptrSrc[nDegreeNum - i - 1]; + } + + // first half DCT : A * DCT + unsigned int nDstStep = (nDstInterval << 1); + eriFastDCT(ptrDst, nDstStep, ptrWorkBuf, ptrSrc, (nDegreeDCT - 1)); + + // last half DCT-IV : R * 2 * A * DCT * K + float* pDCTofK = ERI_pMatrixDCTofK[nDegreeDCT - 1]; + ptrSrc = ptrWorkBuf + nHalfDegree; + ptrDst += nDstInterval; + + for (int i = 0; i < nHalfDegree; i++) { + ptrSrc[i] *= pDCTofK[i]; + } + + eriFastDCT(ptrDst, nDstStep, ptrSrc, ptrWorkBuf, (nDegreeDCT - 1)); + + float* ptrNext = ptrDst; + for (int i = 0; i < nHalfDegree; i++) { + *ptrNext += *ptrNext; + ptrNext += nDstStep; + } + + ptrNext = ptrDst; + for (int i = 1; i < nHalfDegree; i++) { + ptrNext[nDstStep] -= *ptrNext; + ptrNext += nDstStep; + } + } +} + +void EMT_eriFastIDCT(float* ptrDst, float* ptrSrc, unsigned int nSrcInterval, float* ptrWorkBuf, unsigned int nDegreeDCT) { + if (nDegreeDCT < MIN_DCT_DEGREE || nDegreeDCT > MAX_DCT_DEGREE) + return; + + if (nDegreeDCT == MIN_DCT_DEGREE) { + // 4th order IDCT + float r32Buf1[2]; + float r32Buf2[4]; + + // even rows: IDCT2 + r32Buf1[0] = ptrSrc[0]; + r32Buf1[1] = ERI_rCosPI4 * ptrSrc[nSrcInterval * 2]; + + r32Buf2[0] = r32Buf1[0] + r32Buf1[1]; + r32Buf2[1] = r32Buf1[0] - r32Buf1[1]; + + // odd rows: R * 2 * A * DCT * K + r32Buf1[0] = ERI_DCTofK2[0] * ptrSrc[nSrcInterval]; + r32Buf1[1] = ERI_DCTofK2[1] * ptrSrc[nSrcInterval * 3]; + + r32Buf2[2] = r32Buf1[0] + r32Buf1[1]; + r32Buf2[3] = ERI_r2CosPI4 * (r32Buf1[0] - r32Buf1[1]); + + r32Buf2[3] -= r32Buf2[2]; + + // cross ops + ptrDst[0] = r32Buf2[0] + r32Buf2[2]; + ptrDst[3] = r32Buf2[0] - r32Buf2[2]; + ptrDst[1] = r32Buf2[1] + r32Buf2[3]; + ptrDst[2] = r32Buf2[1] - r32Buf2[3]; + } + else { + // regular IDCT + ////////////////////////////////////////////////////////////////////// + + // even rows: IDCT + unsigned int nDegreeNum = (1 << nDegreeDCT); + unsigned int nHalfDegree = (nDegreeNum >> 1); + unsigned int nSrcStep = (nSrcInterval << 1); + EMT_eriFastIDCT(ptrDst, ptrSrc, nSrcStep, ptrWorkBuf, (nDegreeDCT - 1)); + + // odd rows: R * 2 * A * DCT * K + float* pDCTofK = ERI_pMatrixDCTofK[nDegreeDCT - 1]; + float* pOddSrc = ptrSrc + nSrcInterval; + float* pOddDst = ptrDst + nHalfDegree; + + float* ptrNext = pOddSrc; + for (int i = 0; i < nHalfDegree; i++) { + ptrWorkBuf[i] = *ptrNext * pDCTofK[i]; + ptrNext += nSrcStep; + } + + eriFastDCT(pOddDst, 1, ptrWorkBuf, (ptrWorkBuf + nHalfDegree), (nDegreeDCT - 1)); + + for (int i = 0; i < nHalfDegree; i++) { + pOddDst[i] += pOddDst[i]; + } + + for (int i = 1; i < nHalfDegree; i++) { + pOddDst[i] -= pOddDst[i - 1]; + } + + // | I I | + // cross ops = | | + // | J -J | + float r32Buf[4]; + unsigned int nQuadDegree = (nHalfDegree >> 1); + for (int i = 0; i < nQuadDegree; i++) { + r32Buf[0] = ptrDst[i] + ptrDst[nHalfDegree + i]; + r32Buf[3] = ptrDst[i] - ptrDst[nHalfDegree + i]; + r32Buf[1] = ptrDst[nHalfDegree - 1 - i] + ptrDst[nDegreeNum - 1 - i]; + r32Buf[2] = ptrDst[nHalfDegree - 1 - i] - ptrDst[nDegreeNum - 1 - i]; + + ptrDst[i] = r32Buf[0]; + ptrDst[nHalfDegree - 1 - i] = r32Buf[1]; + ptrDst[nHalfDegree + i] = r32Buf[2]; + ptrDst[nDegreeNum - 1 - i] = r32Buf[3]; + } + } +} diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisamatrix.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisamatrix.h new file mode 100644 index 000000000..270f3ef79 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisamatrix.h @@ -0,0 +1,30 @@ +/* Handles file ops like parsing header and reading blocks. + */ +#ifndef _MIO_ERISA_MATRIX_H_ +#define _MIO_ERISA_MATRIX_H_ + +#define MIN_DCT_DEGREE 2 +#define MAX_DCT_DEGREE 12 + +typedef struct { + float rSin; + float rCos; +} ERI_SIN_COS; + + +void EMT_eriInitializeMatrix(void); + +void EMT_eriRoundR32ToWordArray(SWORD* ptrDst, int nStep, const float* ptrSrc, int nCount); + +void EMT_eriRevolve2x2(float* ptrBuf1, float* ptrBuf2, float rSin, float rCos, unsigned int nStep, unsigned int nCount); + +ERI_SIN_COS* EMT_eriCreateRevolveParameter(unsigned int nDegreeDCT); + +void EMT_eriOddGivensInverseMatrix(float* ptrSrc, const ERI_SIN_COS* ptrRevolve, unsigned int nDegreeDCT); + +void EMT_eriFastIPLOT(float* ptrSrc, unsigned int nDegreeDCT); +void EMT_eriFastILOT(float* ptrDst, const float* ptrSrc1, const float* ptrSrc2, unsigned int nDegreeDCT); + +void EMT_eriFastIDCT(float* ptrDst, float* ptrSrc, unsigned int nSrcInterval, float* ptrWorkBuf, unsigned int nDegreeDCT); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisasound.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisasound.c new file mode 100644 index 000000000..b6c06cfe2 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisasound.c @@ -0,0 +1,991 @@ +/***************************************************************************** + E R I S A - L i b r a r y + ----------------------------------------------------------------------------- + Copyright (C) 2002-2003 Leshade Entis, Entis-soft. All rights reserved. + *****************************************************************************/ + +#include +#include +#include "mio_xerisa.h" + +static const double ERI_PI = 3.141592653589; +#define MIO_MAX_CHANNELS 2 + + +/*******************/ +/* audio converter */ +/*******************/ + +MIODecoder* MIODecoder_Open() { + MIODecoder* dec = calloc(1, sizeof(MIODecoder)); + if (!dec) + return NULL; + + dec->m_nBufLength = 0; + dec->m_ptrBuffer1 = NULL; + dec->m_ptrBuffer2 = NULL; + dec->m_ptrBuffer3 = NULL; + dec->m_ptrDivisionTable = NULL; + dec->m_ptrRevolveCode = NULL; + dec->m_ptrWeightCode = NULL; + dec->m_ptrCoefficient = NULL; + dec->m_ptrMatrixBuf = NULL; + dec->m_ptrInternalBuf = NULL; + dec->m_ptrWorkBuf = NULL; + dec->m_ptrWeightTable = NULL; + dec->m_ptrLastDCT = NULL; + dec->m_pRevolveParam = NULL; + return dec; +} + +static void MIODecoder_Delete(MIODecoder* dec) { + free(dec->m_ptrBuffer1); + dec->m_ptrBuffer1 = NULL; + free(dec->m_ptrBuffer2); + dec->m_ptrBuffer2 = NULL; + free(dec->m_ptrBuffer3); + dec->m_ptrBuffer3 = NULL; + free(dec->m_ptrDivisionTable); + dec->m_ptrDivisionTable = NULL; + free(dec->m_ptrRevolveCode); + dec->m_ptrRevolveCode = NULL; + free(dec->m_ptrWeightCode); + dec->m_ptrWeightCode = NULL; + free(dec->m_ptrCoefficient); + dec->m_ptrCoefficient = NULL; + free(dec->m_ptrMatrixBuf); + dec->m_ptrMatrixBuf = NULL; + free(dec->m_ptrInternalBuf); + dec->m_ptrInternalBuf = NULL; + free(dec->m_ptrWorkBuf); + dec->m_ptrWorkBuf = NULL; + free(dec->m_ptrWeightTable); + dec->m_ptrWeightTable = NULL; + free(dec->m_ptrLastDCT); + dec->m_ptrLastDCT = NULL; + free(dec->m_pRevolveParam); + dec->m_pRevolveParam = NULL; + + dec->m_nBufLength = 0; +} + +void MIODecoder_Close(MIODecoder* dec) { + if (!dec) + return; + MIODecoder_Delete(dec); + free(dec); +} + +// recalculate matrix size when params change +static int MIODecoder_InitializeWithDegree(MIODecoder* dec, unsigned int nSubbandDegree) { + free(dec->m_pRevolveParam); + dec->m_pRevolveParam = EMT_eriCreateRevolveParameter(nSubbandDegree); + if (!dec->m_pRevolveParam) return eslErrGeneral; + + // params for inverse quantization + static const int freq_width[7] = { -6, -6, -5, -4, -3, -2, -1 }; + for (int i = 0, j = 0; i < 7; i++) { + int nFrequencyWidth = 1 << (nSubbandDegree + freq_width[i]); + dec->m_nFrequencyPoint[i] = j + (nFrequencyWidth / 2); + j += nFrequencyWidth; + } + + dec->m_nSubbandDegree = nSubbandDegree; + dec->m_nDegreeNum = (1 << nSubbandDegree); + + return eslErrSuccess; +} + +ESLError MIODecoder_Initialize(MIODecoder* dec, const MIO_INFO_HEADER* infhdr) { + MIODecoder_Delete(dec); + + dec->m_mioih = *infhdr; /* copy */ + + if (dec->m_mioih.fdwTransformation == CVTYPE_LOSSLESS_ERI) { + if (dec->m_mioih.dwArchitecture != ERI_RUNLENGTH_HUFFMAN) + return eslErrGeneral; + + if ((dec->m_mioih.dwChannelCount != 1) && (dec->m_mioih.dwChannelCount != 2)) + return eslErrGeneral; + + if ((dec->m_mioih.dwBitsPerSample != 8) && (dec->m_mioih.dwBitsPerSample != 16)) + return eslErrGeneral; + } + else if ((dec->m_mioih.fdwTransformation == CVTYPE_LOT_ERI) || (dec->m_mioih.fdwTransformation == CVTYPE_LOT_ERI_MSS)) { + + if ((dec->m_mioih.dwArchitecture != ERI_RUNLENGTH_GAMMA) && + (dec->m_mioih.dwArchitecture != ERI_RUNLENGTH_HUFFMAN) && + (dec->m_mioih.dwArchitecture != ERISA_NEMESIS_CODE)) + return eslErrGeneral; /* unknown code format */ + + if ((dec->m_mioih.dwChannelCount != 1) && (dec->m_mioih.dwChannelCount != 2)) + return eslErrGeneral; + + if (dec->m_mioih.dwBitsPerSample != 16) + return eslErrGeneral; + + if ((dec->m_mioih.dwSubbandDegree < 8) || (dec->m_mioih.dwSubbandDegree > MAX_DCT_DEGREE)) + return eslErrGeneral; + + if (dec->m_mioih.dwLappedDegree != 1) + return eslErrGeneral; + + // DCT buffers + { + int channel_size = sizeof(float) << dec->m_mioih.dwSubbandDegree; + int buf_size = dec->m_mioih.dwChannelCount * channel_size; + dec->m_ptrBuffer1 = malloc(buf_size); + dec->m_ptrMatrixBuf = malloc(buf_size); + dec->m_ptrInternalBuf = malloc(buf_size); + dec->m_ptrWorkBuf = malloc(channel_size); + if (!dec->m_ptrBuffer1 || !dec->m_ptrMatrixBuf || !dec->m_ptrInternalBuf || !dec->m_ptrWorkBuf) + return eslErrGeneral; + } + + // dequantization buffers + { + int channel_size = sizeof(float) << dec->m_mioih.dwSubbandDegree; + dec->m_ptrWeightTable = malloc(channel_size); + if (!dec->m_ptrWeightTable) + return eslErrGeneral; + } + + // LOT buffers + { + int nBlocksetSamples = dec->m_mioih.dwChannelCount << dec->m_mioih.dwSubbandDegree; + int nLappedSamples = nBlocksetSamples * dec->m_mioih.dwLappedDegree; + if (nLappedSamples > 0) { + dec->m_ptrLastDCT = malloc(sizeof(float) * nLappedSamples); + if (!dec->m_ptrLastDCT) + return eslErrGeneral; + + for (int i = 0; i < nLappedSamples; i++) { + dec->m_ptrLastDCT[i] = 0.0F; + } + } + } + + if (MIODecoder_InitializeWithDegree(dec, dec->m_mioih.dwSubbandDegree)) + return eslErrGeneral; + } + else { + return eslErrGeneral; + } + + return eslErrSuccess; +} + +static ESLError MIODecoder_DecodeSoundPCM8(MIODecoder* dec, MIOContext* context, const MIO_DATA_HEADER* datahdr, void* ptrWaveBuf) { + unsigned int nSampleCount = datahdr->dwSampleCount; + unsigned int nChannelCount = dec->m_mioih.dwChannelCount; + unsigned int nAllSampleCount = nSampleCount * nChannelCount; + ULONG nBytes = nAllSampleCount * sizeof(BYTE); + + if (nSampleCount > dec->m_nBufLength) { + free(dec->m_ptrBuffer1); + dec->m_ptrBuffer1 = malloc(nBytes); + if (!dec->m_ptrBuffer1) + return eslErrGeneral; + + dec->m_nBufLength = nSampleCount; + } + + // prepare huffman codes + if (datahdr->bytFlags & MIO_LEAD_BLOCK) { + ESLError err = MIOContext_PrepareToDecodeERINACode(context, ERINAEncodingFlag_efERINAOrder1); + if (err != eslErrSuccess) return err; + } + + if (MIOContext_DecodeSymbolBytes(context, (SBYTE*)dec->m_ptrBuffer1, nBytes) < nBytes) { + return eslErrGeneral; + } + + // differential processing output + BYTE* ptrSrcBuf = dec->m_ptrBuffer1; + BYTE* ptrDstBuf; + unsigned int nStep = nChannelCount; + unsigned int i, j; + for (i = 0; i < dec->m_mioih.dwChannelCount; i++) { + ptrDstBuf = ptrWaveBuf; + ptrDstBuf += i; + + BYTE bytValue = 0; + for (j = 0; j < nSampleCount; j++) { + bytValue += *(ptrSrcBuf++); + *ptrDstBuf = bytValue; + ptrDstBuf += nStep; + } + } + + return eslErrSuccess; +} + +static ESLError MIODecoder_DecodeSoundPCM16(MIODecoder* dec, MIOContext* context, const MIO_DATA_HEADER* datahdr, void* ptrWaveBuf) { + unsigned int i, j; + unsigned int nSampleCount = datahdr->dwSampleCount; + unsigned int nChannelCount = dec->m_mioih.dwChannelCount; + unsigned int nAllSampleCount = nSampleCount * nChannelCount; + ULONG nBytes = nAllSampleCount * sizeof(SWORD); + + if (nSampleCount > dec->m_nBufLength) { + free(dec->m_ptrBuffer1); + free(dec->m_ptrBuffer2); + dec->m_ptrBuffer1 = malloc(nBytes); + dec->m_ptrBuffer2 = malloc(nBytes); + if (!dec->m_ptrBuffer1 || !dec->m_ptrBuffer2) + return eslErrGeneral; + + dec->m_nBufLength = nSampleCount; + } + + // prepare huffman codes + if (datahdr->bytFlags & MIO_LEAD_BLOCK) { + ESLError err = MIOContext_PrepareToDecodeERINACode(context, ERINAEncodingFlag_efERINAOrder1); + if (err != eslErrSuccess) return err; + } + + if (MIOContext_DecodeSymbolBytes(context, (SBYTE*)dec->m_ptrBuffer1, nBytes) < nBytes) { + return eslErrGeneral; + } + + // pack hi/lo bytes + BYTE* pbytSrcBuf1; + BYTE* pbytSrcBuf2; + BYTE* pbytDstBuf; + for (i = 0; i < nChannelCount; i++) { + unsigned int nOffset = i * nSampleCount * sizeof(SWORD); + pbytSrcBuf1 = ((BYTE*)dec->m_ptrBuffer1) + nOffset; + pbytSrcBuf2 = pbytSrcBuf1 + nSampleCount; + pbytDstBuf = ((BYTE*)dec->m_ptrBuffer2) + nOffset; + + for (j = 0; j < nSampleCount; j++) { + SBYTE bytLow = pbytSrcBuf2[j]; + SBYTE bytHigh = pbytSrcBuf1[j]; + pbytDstBuf[j * sizeof(SWORD) + 0] = bytLow; + pbytDstBuf[j * sizeof(SWORD) + 1] = bytHigh ^ (bytLow >> 7); + } + } + + // differential processing output + SWORD* ptrSrcBuf = dec->m_ptrBuffer2; + SWORD* ptrDstBuf; + unsigned int nStep = dec->m_mioih.dwChannelCount; + for (i = 0; i < dec->m_mioih.dwChannelCount; i++) { + ptrDstBuf = ptrWaveBuf; + ptrDstBuf += i; + + SWORD wValue = 0; + SWORD wDelta = 0; + for (j = 0; j < nSampleCount; j++) { + wDelta += *(ptrSrcBuf++); + wValue += wDelta; + *ptrDstBuf = wValue; + ptrDstBuf += nStep; + } + } + + return eslErrSuccess; +} + +////////////////////////////////////////////////////////////////////////////// + +static void MIODecoder_IQuantumize(MIODecoder* dec, float* ptrDestination, const INT* ptrQuantumized, int nDegreeNum, SDWORD nWeightCode, int nCoefficient) { + int i, j; + double rMatrixScale = sqrt(2.0 / nDegreeNum); + double rCoefficient = rMatrixScale * nCoefficient; + + // generate weight table + double rAvgRatio[7]; + for (i = 0; i < 6; i++) { + rAvgRatio[i] = 1.0 / pow(2.0, (((nWeightCode >> (i * 5)) & 0x1F) - 15) * 0.5); + } + rAvgRatio[6] = 1.0; + + for (i = 0; i < dec->m_nFrequencyPoint[0]; i++) { + dec->m_ptrWeightTable[i] = (float)rAvgRatio[0]; + } + + for (j = 1; j < 7; j++) { + double a = rAvgRatio[j - 1]; + double k = (rAvgRatio[j] - a) / (dec->m_nFrequencyPoint[j] - dec->m_nFrequencyPoint[j - 1]); + while (i < dec->m_nFrequencyPoint[j]) { + dec->m_ptrWeightTable[i] = (float)(k * (i - dec->m_nFrequencyPoint[j - 1]) + a); + i++; + } + } + + while (i < nDegreeNum) { + dec->m_ptrWeightTable[i] = (float)rAvgRatio[6]; + i++; + } + + float rOddWeight = (float)((((nWeightCode >> 30) & 0x03) + 0x02) / 2.0); + for (i = 15; i < nDegreeNum; i += 16) { + dec->m_ptrWeightTable[i] *= rOddWeight; + } + dec->m_ptrWeightTable[nDegreeNum - 1] = (float)nCoefficient; + + for (i = 0; i < nDegreeNum; i++) { + dec->m_ptrWeightTable[i] = 1.0F / dec->m_ptrWeightTable[i]; + } + + // dequantize + for (i = 0; i < nDegreeNum; i++) { + ptrDestination[i] = (float)(rCoefficient * dec->m_ptrWeightTable[i] * ptrQuantumized[i]); + } +} + +////////////////////////////////////////////////////////////////////////////// + +/* Dequantizes and transforms block frames. Lib divides them into "lead" (keyframes), + * "internal" (standard) and "post" blocks, handled slightly differently. All of them can be MSS + * blocks, which OG code handles in a separate function (presumably as a minor optimization to + * avoid setting extra FORs), but here are handled with a flag since they are very similar. */ + +static ESLError MIODecoder_DecodeLeadBlock_All(MIODecoder* dec, int is_mss) { + unsigned int ch, i; + unsigned int nHalfDegree = dec->m_nDegreeNum / 2; + int internal_channels = is_mss ? 2 : 1; + //int output_channels = is_mss ? 2 : dec->m_mioih.dwChannelCount; + + SDWORD nWeightCode = *(dec->m_ptrNextWeight++); + int nCoefficient = *(dec->m_ptrNextCoefficient++); + + float* ptrLapBuf; + + + // dequantize + ptrLapBuf = dec->m_ptrLastDCTBuf; + for (ch = 0; ch < internal_channels; ch++) { + INT* ptrTempBuf = dec->m_ptrBuffer1; + for (i = 0; i < nHalfDegree; i++) { + ptrTempBuf[i * 2] = 0; + ptrTempBuf[i * 2 + 1] = *(dec->m_ptrNextSource++); + } + MIODecoder_IQuantumize(dec, ptrLapBuf, ptrTempBuf, dec->m_nDegreeNum, nWeightCode, nCoefficient); + + ptrLapBuf += dec->m_nDegreeNum; + } + + // revolve + if (is_mss) { + float rSin, rCos; + int nRevCode = *(dec->m_ptrNextRevCode++); + + float* ptrLapBuf1 = dec->m_ptrLastDCT; + float* ptrLapBuf2 = dec->m_ptrLastDCT + dec->m_nDegreeNum; + + rSin = (float)sin(nRevCode * ERI_PI / 8); + rCos = (float)cos(nRevCode * ERI_PI / 8); + EMT_eriRevolve2x2(ptrLapBuf1, ptrLapBuf2, rSin, rCos, 1, dec->m_nDegreeNum); + } + + // set duplicate parameters + ptrLapBuf = dec->m_ptrLastDCTBuf; + for (ch = 0; ch < internal_channels; ch++) { + EMT_eriOddGivensInverseMatrix(ptrLapBuf, dec->m_pRevolveParam, dec->m_nSubbandDegree); + + for (i = 0; i < dec->m_nDegreeNum; i += 2) { + ptrLapBuf[i] = ptrLapBuf[i + 1]; + } + + EMT_eriFastIPLOT(ptrLapBuf, dec->m_nSubbandDegree); + + ptrLapBuf += dec->m_nDegreeNum; + } + + return eslErrSuccess; +} + +static ESLError MIODecoder_DecodeInternalBlock_All(MIODecoder* dec, SWORD* ptrDst, unsigned int nSamples, int is_mss) { + unsigned int ch, i; + int internal_channels = is_mss ? 2 : 1; + int output_channels = is_mss ? 2 : dec->m_mioih.dwChannelCount; + + SDWORD nWeightCode = *(dec->m_ptrNextWeight++); + int nCoefficient = *(dec->m_ptrNextCoefficient++); + + float* ptrLapBuf; + float* ptrSrcBuf; + + // dequantize + ptrSrcBuf = dec->m_ptrMatrixBuf; + for (ch = 0; ch < internal_channels; ch++) { + MIODecoder_IQuantumize(dec, ptrSrcBuf, dec->m_ptrNextSource, dec->m_nDegreeNum, nWeightCode, nCoefficient); + dec->m_ptrNextSource += dec->m_nDegreeNum; + + ptrSrcBuf += dec->m_nDegreeNum; + } + + // revolve + if (is_mss) { + float rSin, rCos; + int nRevCode = *(dec->m_ptrNextRevCode++); + int nRevCode1 = (nRevCode >> 2) & 0x03; + int nRevCode2 = (nRevCode & 0x03); + + float* ptrSrcBuf1 = dec->m_ptrMatrixBuf; + float* ptrSrcBuf2 = dec->m_ptrMatrixBuf + dec->m_nDegreeNum; + + rSin = (float)sin(nRevCode1 * ERI_PI / 8); + rCos = (float)cos(nRevCode1 * ERI_PI / 8); + EMT_eriRevolve2x2(ptrSrcBuf1, ptrSrcBuf2, rSin, rCos, 2, dec->m_nDegreeNum / 2); + + rSin = (float)sin(nRevCode2 * ERI_PI / 8); + rCos = (float)cos(nRevCode2 * ERI_PI / 8); + EMT_eriRevolve2x2(ptrSrcBuf1 + 1, ptrSrcBuf2 + 1, rSin, rCos, 2, dec->m_nDegreeNum / 2); + } + + // inverse LOT + DCT + ptrLapBuf = dec->m_ptrLastDCTBuf; + ptrSrcBuf = dec->m_ptrMatrixBuf; + for (ch = 0; ch < internal_channels; ch++) { + EMT_eriOddGivensInverseMatrix(ptrSrcBuf, dec->m_pRevolveParam, dec->m_nSubbandDegree); + + EMT_eriFastIPLOT(ptrSrcBuf, dec->m_nSubbandDegree); + EMT_eriFastILOT(dec->m_ptrWorkBuf, ptrLapBuf, ptrSrcBuf, dec->m_nSubbandDegree); + + for (i = 0; i < dec->m_nDegreeNum; i++) { + ptrLapBuf[i] = ptrSrcBuf[i]; + ptrSrcBuf[i] = dec->m_ptrWorkBuf[i]; + } + + EMT_eriFastIDCT(dec->m_ptrInternalBuf, ptrSrcBuf, 1, dec->m_ptrWorkBuf, dec->m_nSubbandDegree); + + EMT_eriRoundR32ToWordArray(ptrDst + ch, output_channels, dec->m_ptrInternalBuf, nSamples); + + ptrLapBuf += dec->m_nDegreeNum; + ptrSrcBuf += dec->m_nDegreeNum; + } + + return eslErrSuccess; +} + +static ESLError MIODecoder_DecodePostBlock_All(MIODecoder* dec, SWORD* ptrDst, unsigned int nSamples, int is_mss) { + unsigned int ch, i; + unsigned int nHalfDegree = dec->m_nDegreeNum / 2; + int internal_channels = is_mss ? 2 : 1; + int output_channels = is_mss ? 2 : dec->m_mioih.dwChannelCount; + + SDWORD nWeightCode = *(dec->m_ptrNextWeight++); + int nCoefficient = *(dec->m_ptrNextCoefficient++); + + float* ptrLapBuf; + float* ptrSrcBuf; + + + // dequantize + ptrSrcBuf = dec->m_ptrMatrixBuf; + for (ch = 0; ch < internal_channels; ch++) { + INT* ptrTempBuf = dec->m_ptrBuffer1; + for (i = 0; i < nHalfDegree; i++) { + ptrTempBuf[i * 2] = 0; + ptrTempBuf[i * 2 + 1] = *(dec->m_ptrNextSource++); + } + MIODecoder_IQuantumize(dec, ptrSrcBuf, ptrTempBuf, dec->m_nDegreeNum, nWeightCode, nCoefficient); + + ptrSrcBuf += dec->m_nDegreeNum; + } + + // revolve + if (is_mss) { + float rSin, rCos; + int nRevCode = *(dec->m_ptrNextRevCode++); + + float* ptrSrcBuf1 = dec->m_ptrMatrixBuf; //L + float* ptrSrcBuf2 = dec->m_ptrMatrixBuf + dec->m_nDegreeNum; //R + + rSin = (float)sin(nRevCode * ERI_PI / 8); + rCos = (float)cos(nRevCode * ERI_PI / 8); + EMT_eriRevolve2x2(ptrSrcBuf1, ptrSrcBuf2, rSin, rCos, 1, dec->m_nDegreeNum); + } + + // inverse LOT + DCT + ptrLapBuf = dec->m_ptrLastDCTBuf; + ptrSrcBuf = dec->m_ptrMatrixBuf; + for (ch = 0; ch < internal_channels; ch++) { + EMT_eriOddGivensInverseMatrix(ptrSrcBuf, dec->m_pRevolveParam, dec->m_nSubbandDegree); + + for (i = 0; i < dec->m_nDegreeNum; i += 2) { + ptrSrcBuf[i] = -ptrSrcBuf[i + 1]; + } + + EMT_eriFastIPLOT(ptrSrcBuf, dec->m_nSubbandDegree); + EMT_eriFastILOT(dec->m_ptrWorkBuf, ptrLapBuf, ptrSrcBuf, dec->m_nSubbandDegree); + + for (i = 0; i < dec->m_nDegreeNum; i++) { + ptrSrcBuf[i] = dec->m_ptrWorkBuf[i]; + } + + EMT_eriFastIDCT(dec->m_ptrInternalBuf, ptrSrcBuf, 1, dec->m_ptrWorkBuf, dec->m_nSubbandDegree); + + EMT_eriRoundR32ToWordArray(ptrDst + ch, output_channels, dec->m_ptrInternalBuf, nSamples); + + ptrLapBuf += dec->m_nDegreeNum; + ptrSrcBuf += dec->m_nDegreeNum; + } + + return eslErrSuccess; +} + +////////////////////////////////////////////////////////////////////////////// + +static ESLError MIODecoder_DecodeSoundDCT_Std(MIODecoder* dec, MIOContext* context, const MIO_DATA_HEADER* datahdr, void* ptrWaveBuf) { + unsigned int i, j, k; + unsigned int nDegreeWidth = (1 << dec->m_mioih.dwSubbandDegree); + unsigned int nSampleCount = (datahdr->dwSampleCount + nDegreeWidth - 1) & ~(nDegreeWidth - 1); + unsigned int nSubbandCount = (nSampleCount >> dec->m_mioih.dwSubbandDegree); + unsigned int nChannelCount = dec->m_mioih.dwChannelCount; + unsigned int nAllSampleCount = nSampleCount * nChannelCount; + unsigned int nAllSubbandCount = nSubbandCount * nChannelCount; + + if (nSampleCount > dec->m_nBufLength) { + free(dec->m_ptrBuffer2); + free(dec->m_ptrBuffer3); + free(dec->m_ptrDivisionTable); + free(dec->m_ptrWeightCode); + free(dec->m_ptrCoefficient); + + dec->m_ptrBuffer2 = malloc(nAllSampleCount * sizeof(INT)); + dec->m_ptrBuffer3 = malloc(nAllSampleCount * sizeof(SWORD)); + dec->m_ptrDivisionTable = malloc(nAllSubbandCount * sizeof(BYTE)); + dec->m_ptrWeightCode = malloc(nAllSubbandCount * 5 * sizeof(SDWORD)); + dec->m_ptrCoefficient = malloc(nAllSubbandCount * 5 * sizeof(INT)); + if (!dec->m_ptrBuffer2 || !dec->m_ptrBuffer3 || !dec->m_ptrDivisionTable || !dec->m_ptrWeightCode || !dec->m_ptrCoefficient) + return eslErrGeneral; + + dec->m_nBufLength = nSampleCount; + } + + // decode quantization table + if (MIOContext_GetABit(context) != 0) { + return eslErrGeneral; + } + + unsigned int pLastDivision[MIO_MAX_CHANNELS]; + for (i = 0; i < nChannelCount; i++) { + pLastDivision[i] = -1; + } + + dec->m_ptrNextDivision = dec->m_ptrDivisionTable; + dec->m_ptrNextWeight = dec->m_ptrWeightCode; + dec->m_ptrNextCoefficient = dec->m_ptrCoefficient; + + for (i = 0; i < nSubbandCount; i++) { + for (j = 0; j < nChannelCount; j++) { + unsigned int nDivisionCode = MIOContext_GetNBits(context, 2); + *(dec->m_ptrNextDivision++) = (BYTE)nDivisionCode; + + if (nDivisionCode != pLastDivision[j]) { + if (i != 0) { + *(dec->m_ptrNextWeight++) = MIOContext_GetNBits(context, 32); + *(dec->m_ptrNextCoefficient++) = MIOContext_GetNBits(context, 16); + } + pLastDivision[j] = nDivisionCode; + } + + unsigned int nDivisionCount = (1 << nDivisionCode); + for (k = 0; k < nDivisionCount; k++) { + *(dec->m_ptrNextWeight++) = MIOContext_GetNBits(context, 32); + *(dec->m_ptrNextCoefficient++) = MIOContext_GetNBits(context, 16); + } + } + } + if (nSubbandCount > 0) { + for (i = 0; i < nChannelCount; i++) { + *(dec->m_ptrNextWeight++) = MIOContext_GetNBits(context, 32); + *(dec->m_ptrNextCoefficient++) = MIOContext_GetNBits(context, 16); + } + } + + /* sync? */ + if (MIOContext_GetABit(context) != 0) { + return eslErrGeneral; + } + + // init code model if needed + if (datahdr->bytFlags & MIO_LEAD_BLOCK) { + if (dec->m_mioih.dwArchitecture != ERISA_NEMESIS_CODE) { + ESLError err = MIOContext_PrepareToDecodeERINACode(context, ERINAEncodingFlag_efERINAOrder1); + if (err != eslErrSuccess) return err; + } + else { + ESLError err = MIOContext_PrepareToDecodeERISACode(context); + if (err != eslErrSuccess) return err; + } + } + else if (dec->m_mioih.dwArchitecture == ERISA_NEMESIS_CODE) { + MIOContext_InitializeERISACode(context); + } + + // decode and deinterleave + if (dec->m_mioih.dwArchitecture != ERISA_NEMESIS_CODE) { + if (MIOContext_DecodeSymbolBytes(context, dec->m_ptrBuffer3, nAllSampleCount * 2) < nAllSampleCount * 2) { + return eslErrGeneral; + } + + SBYTE* ptrHBuf = dec->m_ptrBuffer3; + SBYTE* ptrLBuf = ptrHBuf + nAllSampleCount; + + for (i = 0; i < nDegreeWidth; i++) { + INT* ptrQuantumized = ((INT*)dec->m_ptrBuffer2) + i; + + for (j = 0; j < nAllSubbandCount; j++) { + INT nLow = *(ptrLBuf++); + INT nHigh = *(ptrHBuf++) ^ (nLow >> 8); + *ptrQuantumized = (nLow & 0xFF) | (nHigh << 8); + ptrQuantumized += nDegreeWidth; + } + } + } + else { + if (MIOContext_DecodeERISACodeWords(context, (SWORD*)dec->m_ptrBuffer3, nAllSampleCount) < nAllSampleCount) { + return eslErrGeneral; + } + SWORD* ptrTmp = dec->m_ptrBuffer3; + for (i = 0; i < nAllSampleCount; i++) { + ((INT*)dec->m_ptrBuffer2)[i] = (ptrTmp)[i]; + } + } + + // apply iDCT to subband units + unsigned int nSamples; + unsigned int pRestSamples[MIO_MAX_CHANNELS]; + SWORD* ptrDstBuf[MIO_MAX_CHANNELS]; + + dec->m_ptrNextDivision = dec->m_ptrDivisionTable; + dec->m_ptrNextWeight = dec->m_ptrWeightCode; + dec->m_ptrNextCoefficient = dec->m_ptrCoefficient; + dec->m_ptrNextSource = dec->m_ptrBuffer2; + + for (i = 0; i < nChannelCount; i++) { + pLastDivision[i] = -1; + pRestSamples[i] = datahdr->dwSampleCount; + ptrDstBuf[i] = ((SWORD*)ptrWaveBuf) + i; + } + unsigned int nCurrentDivision = -1; + + for (i = 0; i < nSubbandCount; i++) { + for (j = 0; j < nChannelCount; j++) { + // get division/decomposition code + unsigned int nDivisionCode = *(dec->m_ptrNextDivision++); + unsigned int nDivisionCount = (1 << nDivisionCode); + + // get buffer for duplicate processing + int nChannelStep = nDegreeWidth * dec->m_mioih.dwLappedDegree * j; + dec->m_ptrLastDCTBuf = dec->m_ptrLastDCT + nChannelStep; + + // processing when matrix size changes + int bLeadBlock = 0; + + if (pLastDivision[j] != nDivisionCode) { + // complete until last moment + if (i != 0) { + if (nCurrentDivision != pLastDivision[j]) { + if (MIODecoder_InitializeWithDegree(dec, dec->m_mioih.dwSubbandDegree - pLastDivision[j])) + return eslErrGeneral; + nCurrentDivision = pLastDivision[j]; + } + nSamples = pRestSamples[j]; + if (nSamples > dec->m_nDegreeNum) { + nSamples = dec->m_nDegreeNum; + } + if (MIODecoder_DecodePostBlock_All(dec, ptrDstBuf[j], nSamples, 0)) { + return eslErrGeneral; + } + pRestSamples[j] -= nSamples; + ptrDstBuf[j] += nSamples * nChannelCount; + } + + // set params to change matrix size + pLastDivision[j] = nDivisionCode; + bLeadBlock = 1; + } + if (nCurrentDivision != nDivisionCode) { + if (MIODecoder_InitializeWithDegree(dec, dec->m_mioih.dwSubbandDegree - nDivisionCode)) + return eslErrGeneral; + nCurrentDivision = nDivisionCode; + } + + // perform sequential iLOT + for (k = 0; k < nDivisionCount; k++) { + if (bLeadBlock) { + // decode lead block + if (MIODecoder_DecodeLeadBlock_All(dec, 0)) { + return eslErrGeneral; + } + + bLeadBlock = 0; + } + else { + // decode regular block + nSamples = pRestSamples[j]; + if (nSamples > dec->m_nDegreeNum) { + nSamples = dec->m_nDegreeNum; + } + if (MIODecoder_DecodeInternalBlock_All(dec, ptrDstBuf[j], nSamples, 0)) { + return eslErrGeneral; + } + pRestSamples[j] -= nSamples; + ptrDstBuf[j] += nSamples * nChannelCount; + } + } + } + } + + // complete the matrix + if (nSubbandCount > 0) { + for (i = 0; i < nChannelCount; i++) { + int nChannelStep = nDegreeWidth * dec->m_mioih.dwLappedDegree * i; + dec->m_ptrLastDCTBuf = dec->m_ptrLastDCT + nChannelStep; + + if (nCurrentDivision != pLastDivision[i]) { + if (MIODecoder_InitializeWithDegree(dec, dec->m_mioih.dwSubbandDegree - pLastDivision[i])) + return eslErrGeneral; + nCurrentDivision = pLastDivision[i]; + } + nSamples = pRestSamples[i]; + if (nSamples > dec->m_nDegreeNum) { + nSamples = dec->m_nDegreeNum; + } + if (MIODecoder_DecodePostBlock_All(dec, ptrDstBuf[i], nSamples, 0)) { + return eslErrGeneral; + } + pRestSamples[i] -= nSamples; + ptrDstBuf[i] += nSamples * nChannelCount; + } + } + + return eslErrSuccess; +} + +static ESLError MIODecoder_DecodeSoundDCT_MSS(MIODecoder* dec, MIOContext* context, const MIO_DATA_HEADER* datahdr, void* ptrWaveBuf) { + unsigned int i, j, k; + unsigned int nDegreeWidth = (1 << dec->m_mioih.dwSubbandDegree); + unsigned int nSampleCount = (datahdr->dwSampleCount + nDegreeWidth - 1) & ~(nDegreeWidth - 1); + unsigned int nSubbandCount = (nSampleCount >> dec->m_mioih.dwSubbandDegree); + unsigned int nChannelCount = dec->m_mioih.dwChannelCount; // usually 2 + unsigned int nAllSampleCount = nSampleCount * nChannelCount; + unsigned int nAllSubbandCount = nSubbandCount; + + if (nSampleCount > dec->m_nBufLength) { + free(dec->m_ptrBuffer2); + free(dec->m_ptrBuffer3); + free(dec->m_ptrDivisionTable); + free(dec->m_ptrRevolveCode); + free(dec->m_ptrWeightCode); + free(dec->m_ptrCoefficient); + + dec->m_ptrBuffer2 = malloc(nAllSampleCount * sizeof(INT)); + dec->m_ptrBuffer3 = malloc(nAllSampleCount * sizeof(SWORD)); + dec->m_ptrDivisionTable = malloc(nAllSubbandCount * sizeof(BYTE)); + dec->m_ptrRevolveCode = malloc(nAllSubbandCount * 10 * sizeof(BYTE)); + dec->m_ptrWeightCode = malloc(nAllSubbandCount * 10 * sizeof(SDWORD)); + dec->m_ptrCoefficient = malloc(nAllSubbandCount * 10 * sizeof(INT)); + if (!dec->m_ptrBuffer2 || !dec->m_ptrBuffer3 || !dec->m_ptrDivisionTable || !dec->m_ptrRevolveCode || !dec->m_ptrWeightCode || !dec->m_ptrCoefficient) + return eslErrGeneral; + + dec->m_nBufLength = nSampleCount; + } + + // decode quantization table + if (MIOContext_GetABit(context) != 0) { + return eslErrGeneral; + } + + unsigned int nLastDivision = -1; + + dec->m_ptrNextDivision = dec->m_ptrDivisionTable; + dec->m_ptrNextRevCode = dec->m_ptrRevolveCode; + dec->m_ptrNextWeight = dec->m_ptrWeightCode; + dec->m_ptrNextCoefficient = dec->m_ptrCoefficient; + + for (i = 0; i < nSubbandCount; i++) { + unsigned int nDivisionCode = MIOContext_GetNBits(context, 2); + *(dec->m_ptrNextDivision++) = (BYTE)nDivisionCode; + + int bLeadBlock = 0; + if (nDivisionCode != nLastDivision) { + if (i != 0) { + *(dec->m_ptrNextRevCode++) = MIOContext_GetNBits(context, 2); + *(dec->m_ptrNextWeight++) = MIOContext_GetNBits(context, 32); + *(dec->m_ptrNextCoefficient++) = MIOContext_GetNBits(context, 16); + } + bLeadBlock = 1; + nLastDivision = nDivisionCode; + } + + unsigned int nDivisionCount = (1 << nDivisionCode); + for (k = 0; k < nDivisionCount; k++) { + if (bLeadBlock) { + *(dec->m_ptrNextRevCode++) = MIOContext_GetNBits(context, 2); + bLeadBlock = 0; + } + else { + *(dec->m_ptrNextRevCode++) = MIOContext_GetNBits(context, 4); + } + *(dec->m_ptrNextWeight++) = MIOContext_GetNBits(context, 32); + *(dec->m_ptrNextCoefficient++) = MIOContext_GetNBits(context, 16); + } + } + if (nSubbandCount > 0) { + *(dec->m_ptrNextRevCode++) = MIOContext_GetNBits(context, 2); + *(dec->m_ptrNextWeight++) = MIOContext_GetNBits(context, 32); + *(dec->m_ptrNextCoefficient++) = MIOContext_GetNBits(context, 16); + } + + if (MIOContext_GetABit(context) != 0) { + return eslErrGeneral; + } + + if (datahdr->bytFlags & MIO_LEAD_BLOCK) { + if (dec->m_mioih.dwArchitecture != ERISA_NEMESIS_CODE) { + ESLError err = MIOContext_PrepareToDecodeERINACode(context, ERINAEncodingFlag_efERINAOrder1); + if (err != eslErrSuccess) return err; + } + else { + ESLError err = MIOContext_PrepareToDecodeERISACode(context); + if (err != eslErrSuccess) return err; + } + } + else if (dec->m_mioih.dwArchitecture == ERISA_NEMESIS_CODE) { + MIOContext_InitializeERISACode(context); + } + + // decode and deinterleave + if (dec->m_mioih.dwArchitecture != ERISA_NEMESIS_CODE) { + if (MIOContext_DecodeSymbolBytes(context, dec->m_ptrBuffer3, nAllSampleCount * 2) < nAllSampleCount * 2) { + return eslErrGeneral; + } + + SBYTE* ptrHBuf = dec->m_ptrBuffer3; + SBYTE* ptrLBuf = ptrHBuf + nAllSampleCount; + + for (i = 0; i < nDegreeWidth * 2; i++) { + INT* ptrQuantumized = ((INT*)dec->m_ptrBuffer2) + i; + + for (j = 0; j < nAllSubbandCount; j++) { + INT nLow = *(ptrLBuf++); + INT nHigh = *(ptrHBuf++) ^ (nLow >> 8); + *ptrQuantumized = (nLow & 0xFF) | (nHigh << 8); + ptrQuantumized += nDegreeWidth * 2; + } + } + } + else { + if (MIOContext_DecodeERISACodeWords(context, (SWORD*)dec->m_ptrBuffer3, nAllSampleCount) < nAllSampleCount) { + return eslErrGeneral; + } + SWORD* ptrTmp = dec->m_ptrBuffer3; + for (i = 0; i < nAllSampleCount; i++) { + ((INT*)dec->m_ptrBuffer2)[i] = (ptrTmp)[i]; + } + } + + // apply iDCT to subband units + unsigned int nSamples; + unsigned int nRestSamples = datahdr->dwSampleCount; + SWORD* ptrDstBuf = ptrWaveBuf; + + nLastDivision = -1; + dec->m_ptrNextDivision = dec->m_ptrDivisionTable; + dec->m_ptrNextRevCode = dec->m_ptrRevolveCode; + dec->m_ptrNextWeight = dec->m_ptrWeightCode; + dec->m_ptrNextCoefficient = dec->m_ptrCoefficient; + dec->m_ptrNextSource = dec->m_ptrBuffer2; + + for (i = 0; i < nSubbandCount; i++) { + // get division/decomposition code + unsigned int nDivisionCode = *(dec->m_ptrNextDivision++); + unsigned int nDivisionCount = (1 << nDivisionCode); + + // processing when matrix size changes + int bLeadBlock = 0; + dec->m_ptrLastDCTBuf = dec->m_ptrLastDCT; + + if (nLastDivision != nDivisionCode) { + // complete until last moment + if (i != 0) { + nSamples = nRestSamples; + if (nSamples > dec->m_nDegreeNum) { + nSamples = dec->m_nDegreeNum; + } + if (MIODecoder_DecodePostBlock_All(dec, ptrDstBuf, nSamples, 1)) { + return eslErrGeneral; + } + nRestSamples -= nSamples; + ptrDstBuf += nSamples * nChannelCount; + } + + // set params to change matrix size + if (MIODecoder_InitializeWithDegree(dec, dec->m_mioih.dwSubbandDegree - nDivisionCode)) + return eslErrGeneral; + nLastDivision = nDivisionCode; + bLeadBlock = 1; + } + + // perform sequential iLOT + for (k = 0; k < nDivisionCount; k++) { + if (bLeadBlock) { + // decode lead block + if (MIODecoder_DecodeLeadBlock_All(dec, 1)) { + return eslErrGeneral; + } + + bLeadBlock = 0; + } + else { + // decode regular block + nSamples = nRestSamples; + if (nSamples > dec->m_nDegreeNum) { + nSamples = dec->m_nDegreeNum; + } + if (MIODecoder_DecodeInternalBlock_All(dec, ptrDstBuf, nSamples, 1)) { + return eslErrGeneral; + } + nRestSamples -= nSamples; + ptrDstBuf += nSamples * nChannelCount; + } + } + } + + // complete the matrix + if (nSubbandCount > 0) { + dec->m_ptrLastDCTBuf = dec->m_ptrLastDCT; + + nSamples = nRestSamples; + if (nSamples > dec->m_nDegreeNum) + nSamples = dec->m_nDegreeNum; + + if (MIODecoder_DecodePostBlock_All(dec, ptrDstBuf, nSamples, 1)) { + return eslErrGeneral; + } + nRestSamples -= nSamples; + ptrDstBuf += nSamples * nChannelCount; + } + + return eslErrSuccess; +} + +ESLError MIODecoder_DecodeSound(MIODecoder* dec, MIOContext* context, const MIO_DATA_HEADER* datahdr, void* ptrWaveBuf) { + MIOContext_FlushBuffer(context); + + if (dec->m_mioih.fdwTransformation == CVTYPE_LOSSLESS_ERI) { + if (dec->m_mioih.dwBitsPerSample == 8) { + return MIODecoder_DecodeSoundPCM8(dec, context, datahdr, ptrWaveBuf); + } + else if (dec->m_mioih.dwBitsPerSample == 16) { + return MIODecoder_DecodeSoundPCM16(dec, context, datahdr, ptrWaveBuf); + } + } + else if ((dec->m_mioih.fdwTransformation == CVTYPE_LOT_ERI) || (dec->m_mioih.fdwTransformation == CVTYPE_LOT_ERI_MSS)) { + if ((dec->m_mioih.dwChannelCount != 2) || (dec->m_mioih.fdwTransformation == CVTYPE_LOT_ERI)) { + return MIODecoder_DecodeSoundDCT_Std(dec, context, datahdr, ptrWaveBuf); + } + else { + return MIODecoder_DecodeSoundDCT_MSS(dec, context, datahdr, ptrWaveBuf); + } + } + + return eslErrGeneral; +} diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisasound.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisasound.h new file mode 100644 index 000000000..2c1da3b62 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_erisasound.h @@ -0,0 +1,49 @@ +/* Decodes audio context data into samples. + */ +#ifndef _MIO_ERISA_SOUND_H_ +#define _MIO_ERISA_SOUND_H_ + +typedef struct { + MIO_INFO_HEADER m_mioih; // voice info header (current file) + + unsigned int m_nBufLength; // block's sample count + + // various internal (alloc'd) bufs + void* m_ptrBuffer1; // processing + void* m_ptrBuffer2; // reordering + void* m_ptrBuffer3; // interleave + + BYTE* m_ptrDivisionTable; // block's division codes + BYTE* m_ptrRevolveCode; // block's revolve codes + SDWORD* m_ptrWeightCode; // block's quant weights + INT* m_ptrCoefficient; // block's scales + + float* m_ptrMatrixBuf; // matrix ops + float* m_ptrInternalBuf; // ops helper + float* m_ptrWorkBuf; // DCT work buf + float* m_ptrWeightTable; // freq weights + float* m_ptrLastDCT; // previous DCT values + + // temp pointers for the above (current pos) + BYTE* m_ptrNextDivision; + BYTE* m_ptrNextRevCode; + SDWORD* m_ptrNextWeight; + INT* m_ptrNextCoefficient; + INT* m_ptrNextSource; + float* m_ptrLastDCTBuf; + + // file degree config + unsigned int m_nSubbandDegree; // matrix size (N) + unsigned int m_nDegreeNum; // derived matrix size (2^N) + ERI_SIN_COS* m_pRevolveParam; // + + int m_nFrequencyPoint[7]; // freq center points +} MIODecoder; + +MIODecoder* MIODecoder_Open(); +void MIODecoder_Close(MIODecoder* dec); + +ESLError MIODecoder_Initialize(MIODecoder* dec, const MIO_INFO_HEADER* infhdr); +ESLError MIODecoder_DecodeSound(MIODecoder* dec, MIOContext* context, const MIO_DATA_HEADER* datahdr, void* ptrWaveBuf); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_xerisa.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_xerisa.h new file mode 100644 index 000000000..404412d3d --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/mio_xerisa.h @@ -0,0 +1,103 @@ +/***************************************************************************** + E R I S A - L i b r a r y + ----------------------------------------------------------------------------- + Copyright (C) 2002-2004 Leshade Entis, Entis-soft. All rights reserved. + *****************************************************************************/ + +#ifndef _MIO_ERISALIB_H_ +#define _MIO_ERISALIB_H_ + +#include +//#include + +typedef unsigned char BYTE; //, *PBYTE; +typedef unsigned short int WORD; //, *PWORD; +typedef unsigned int UDWORD; +typedef signed int INT; //, *PINT; +typedef unsigned int UINT; +//typedef signed long int LONG; //, *PLONG; +typedef unsigned long int ULONG; + +typedef signed char SBYTE; +typedef signed short int SWORD; +typedef signed int SDWORD; + + +typedef enum { + eslErrSuccess = 0, + eslErrGeneral = 1, + eslErrEof = 2, //extra +} ESLError; + +void ERI_eriInitializeLibrary(void); +void ERI_eriCloseLibrary(void); + +typedef struct { + uint64_t cHeader; // signature + UDWORD dwFileID; + UDWORD dwReserved; // 0 + char cFormatDesc[0x30]; // format name +} EMC_FILE_HEADER; + +typedef struct { + uint64_t nRecordID; + uint64_t nRecLength; +} EMC_RECORD_HEADER; + +typedef struct { + UDWORD dwVersion; + UDWORD dwContainedFlag; + UDWORD dwKeyFrameCount; + UDWORD dwFrameCount; + UDWORD dwAllFrameTime; +} ERI_FILE_HEADER; + +/* transformation (either lossless or LOT) */ +#define CVTYPE_LOSSLESS_ERI 0x03020000 +#define CVTYPE_DCT_ERI 0x00000001 // not used in audio +#define CVTYPE_LOT_ERI 0x00000005 +#define CVTYPE_LOT_ERI_MSS 0x00000105 + +/* architecture (huffman for lossless or gamma/nemesis for LOT) */ +#define ERI_ARITHMETIC_CODE 32 // not used in audio? +#define ERI_RUNLENGTH_GAMMA 0xFFFFFFFF //same as huffman with "gamma escape codes" +#define ERI_RUNLENGTH_HUFFMAN 0xFFFFFFFC +#define ERISA_NEMESIS_CODE 0xFFFFFFF0 // arithmetic coding (sliding window?) + +// per file +typedef struct { + UDWORD dwVersion; + UDWORD fdwTransformation; + UDWORD dwArchitecture; + UDWORD dwChannelCount; + UDWORD dwSamplesPerSec; // input sample rate (output is fixed) + UDWORD dwBlocksetCount; + UDWORD dwSubbandDegree; + UDWORD dwAllSampleCount; + UDWORD dwLappedDegree; + UDWORD dwBitsPerSample; + + // extra from comments + UDWORD rewindPoint; +} MIO_INFO_HEADER; + +// per chunk +typedef struct { + BYTE bytVersion; + BYTE bytFlags; + BYTE bytReserved1; + BYTE bytReserved2; + UDWORD dwSampleCount; +} MIO_DATA_HEADER; + +// Block is a "keyframe" and can be user to start decoding after flush/seek. +// Starting to decode in a non-keyframe returns an error. +#define MIO_LEAD_BLOCK 0x01 + + +#include "mio_erisacontext.h" +#include "mio_erisafile.h" +#include "mio_erisamatrix.h" +#include "mio_erisasound.h" + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/oor_helpers.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/oor_helpers.c new file mode 100644 index 000000000..cabbace10 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/oor_helpers.c @@ -0,0 +1,254 @@ +#ifdef VGM_USE_VORBIS +#include +#include +#include "oor_helpers.h" + + +// .oor is divided into pages like "OggS", but simplified (variable sized) +// - v0: 0x01 +// - v1: 0x0A +void oor_read_page(bitstream_t* is, oor_page_t* page) { + uint32_t granule_hi = 0, granule_lo = 0; //bitreader only handles 32b + + page->version = bm_read(is, 2); + page->flags = bm_read(is, 4); // vorbis packet flags + + // extra fields in V1 + switch(page->version) { + case 0: + page->granule = 0; + page->padding1 = 0; + page->padding2 = 0; + // bitstream ends with into bit 6 of current byte + break; + + case 1: + page->padding1 = bm_read(is, 2); // padding as granule must be byte-aligned + granule_hi = bm_read(is, 32); + granule_lo = bm_read(is, 32); + page->granule = ((uint64_t)granule_hi << 32) | granule_lo; + page->padding2 = bm_read(is, 6); // padding to leave bitstream into bit 6, like v0 + break; + + default: // unknown version + break; + } +} + +// each .oor page except the first (header) has N packets: +// size is variable but theoretical max is ~0x200 (plus page header) +void oor_read_size(bitstream_t* is, oor_size_t* size) { + // right after page info (meaning 6 bits into bitstream) + size->vps_bits = bm_read(is, 4); + size->padding1 = bm_read(is, 1); + size->packet_count = bm_read(is, 8); + size->bps_selector = bm_read(is, 2); + + switch(size->bps_selector) { + case 0: size->base_packet_size = 0; break; // 0 bits + case 1: size->base_packet_size = bm_read(is, 8); break; + case 2: size->base_packet_size = bm_read(is, 11); break; + case 3: //undefined + default: + size->base_packet_size = 0; + break; + } + + for (int i = 0; i < size->packet_count; i++) { + if (size->vps_bits) { + size->variable_packet_size[i] = bm_read(is, size->vps_bits); + } + else { + size->variable_packet_size[i] = 0; //reset in case of reusing struct + } + } + + uint32_t bit_pos = bm_pos(is) % 8; + if (bit_pos > 0) { + size->post_padding = bm_read(is, 8 - bit_pos); // aligned to next byte + } + else { + size->post_padding = 0; + } + + // bitstream is now byte-aligned, and next is N packets of base + variable packet sizes (in bytes) +} + +// bit-packed header (variable-sized): +// - v0 (sr_selector!=3): 0x02 +// - v0 (sr_selector==3): 0x03 +// - v1 (sr_selector!=3): 0x12 +// - v1 (sr_selector==3): 0x13 +void oor_read_header(bitstream_t* is, oor_header_t* hdr) { + hdr->pre_padding = bm_read(is, 2); // from first page, header is byte-aligned + + hdr->version = bm_read(is, 2); + hdr->channels = bm_read(is, 3); + int sr_selector = bm_read(is, 2); + + if (sr_selector == 3) { + int sr_index = bm_read(is, 8); + + // few known modes, though they have 8 bits + // seems v1 lib can handle v0 files but sample rate is not compatible, maybe an oversight + // (note that some games somehow have both v0 and v1 files) + switch(hdr->version) { + case 0: + switch(sr_index) { + case 3: hdr->sample_rate = 32000; break; + case 4: hdr->sample_rate = 48000; break; + case 5: hdr->sample_rate = 96000; break; + default: hdr->sample_rate = 0; break; + } + + case 1: + switch(sr_index) { + case 4: hdr->sample_rate = 32000; break; + case 5: hdr->sample_rate = 48000; break; + case 6: hdr->sample_rate = 64000; break; + case 7: hdr->sample_rate = 88200; break; + case 8: hdr->sample_rate = 96000; break; + default: hdr->sample_rate = 0; break; + } + break; + + default: + break; + } + + // shouldn't happen, but allow to catch missing cases + if (hdr->sample_rate == 0) // && sr_index < 256 + hdr->sample_rate = 8000; + } + else { + hdr->sample_rate = 11025 * pow(2, sr_selector); + } + + if (hdr->version == 1) { + uint32_t granule_hi = 0, granule_lo = 0; //bitreader only handles 32b + + hdr->unknown1 = bm_read(is, 1); // always 1? + hdr->unknown2 = bm_read(is, 1); // always 1? + hdr->unknown3 = bm_read(is, 7); // always 0? + + granule_hi = bm_read(is, 32); + granule_lo = bm_read(is, 32); + hdr->last_granule = ((uint64_t)granule_hi << 32) | granule_lo; + } + else { + hdr->unknown1 = 0; + hdr->unknown2 = 0; + hdr->unknown3 = 0; + hdr->last_granule = 0; + } + + hdr->blocksize1_exp = bm_read(is, 4); + hdr->blocksize0_exp = bm_read(is, 4); + hdr->framing = bm_read(is, 1); //always 1 + + uint32_t bit_pos = bm_pos(is) % 8; + if (bit_pos > 0) { + hdr->post_padding = bm_read(is, 8 - bit_pos); // aligned to next byte + } + else { + hdr->post_padding = 0; + } +} + +// bit-packed setup (should be byte-aligned) +void oor_read_setup(bitstream_t* is, oor_setup_t* setup) { + setup->type = bm_read(is, 2); + setup->codebook_id = bm_read(is, 6); + // known codebooks: + // 1~6: common on PC games + // 7: Muv-Luv, Muv-Luv Alternative (Vita) +} + + +// extra validations since bitpacket headers are a bit simple +bool oor_validate_header_page(oor_page_t* page, oor_header_t* hdr) { + if (page->version > 1 || page->flags != 0x02) + return false; + + if (page->granule != 0 || page->padding1 != 0 || page->padding2 != 0) + return false; + + if (hdr->pre_padding != 0 || hdr->version > 1 || hdr->version != page->version) + return false; + if (hdr->channels == 0 || hdr->sample_rate == 0) + return false; + //if (hdr->channels > OOR_MAX_CHANNELS) // known max is 2, allow to detect other cases + // return false; + + if (hdr->version == 1 && hdr->last_granule == 0) + return false; + + if (hdr->blocksize0_exp < 6 || hdr->blocksize0_exp > 13 || hdr->blocksize1_exp < 6 || hdr->blocksize1_exp > 13) + return false; + if (hdr->framing != 1) + return false; + + if (hdr->post_padding != 0) + return false; + + return true; +} + +bool oor_validate_setup_page(oor_page_t* page, oor_size_t* size, oor_header_t* hdr) { + if (page->version != hdr->version) + return false; + // oddly enough codebooks may be split into other pages using OOR_FLAG_PARTIAL + if (page->flags & OOR_FLAG_CONTINUED || page->flags & OOR_FLAG_BOS || page->flags & OOR_FLAG_EOS) + return false; + + if (page->granule != 0 || page->padding1 != 0 || page->padding2 != 0) + return false; + if (size->padding1 != 0 || size->bps_selector == 3) + return false; + if (size->post_padding != 0) + return false; + + //if (setup->type != 0x01) + // return false; + //if (setup->codebook_id > OOR_MAX_CODEBOOK_ID) // known max is 7, allow to detect other cases + // return false; + + return true; +} + +bool oor_validate_setup_info(oor_page_t* page, oor_size_t* size, oor_setup_t* setup) { + + // setup packet always has 2 packets: setup info + vorbis codebook + if (size->packet_count != 2) + return false; + int packet0_size = size->base_packet_size + size->variable_packet_size[0]; + int packet1_size = size->base_packet_size + size->variable_packet_size[1]; + + if (packet0_size != 0x01) + return false; + // size is 0 when using codebook ids + if ((setup->codebook_id > 0 && packet1_size != 0) || (setup->codebook_id == 0 && packet1_size == 0)) + return false; + return true; +} + +bool oor_validate_audio_page(oor_page_t* page, oor_size_t* size, oor_header_t* hdr) { + if (hdr != NULL && page->version != hdr->version) + return false; + if (page->flags & OOR_FLAG_BOS) + return false; + if (page->padding1 != 0 || page->padding2 != 0) + return false; + + if (size->padding1 != 0 || size->bps_selector == 3) + return false; + if (size->post_padding != 0) + return false; + + if (size->packet_count == 0) + return false; + + return true; +} + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/oor_helpers.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/oor_helpers.h new file mode 100644 index 000000000..dcb1002f0 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/oor_helpers.h @@ -0,0 +1,77 @@ +#ifndef _OOR_HELPERS_H +#define _OOR_HELPERS_H +#include +#include +#include "../../util/bitstream_msb.h" + +/** + * OOR has custom pages similar to OggS but not quite equivalent (needs to fiddle with packets). + * Header and setup packets are custom, but audio packets are standard. + * Format is bitpacked and some parts may be ambiguous, but it should fail midway on bad data. + * Lib expects the whole file in memory and isn't well tuned for streaming though. + * + * Info from: + * - mostly https://github.com/tsudoko/deoptimizeobs (FORMAT doc describes .oor, but some info is slightly off) + * - some bits from decompilation + */ + +#define OOR_FLAG_CONTINUED (1<<3) // 1000 = continued (first packet in page is part of last; equivalent to OggS 0x01) +#define OOR_FLAG_PARTIAL (1<<2) // 0100 = partial (last packet in page is not complete and must be merged with prev; OggS uses size 0xFF for this) +#define OOR_FLAG_BOS (1<<1) // 0010 = beginning-of-stream (irst page, OggS 0x02) +#define OOR_FLAG_EOS (1<<0) // 0001 = end-of-stream (last page, OggS 0x04) +//#define OOR_FLAG_NORMAL 0 // any other regular packet + + +typedef struct { + uint8_t version; + uint8_t flags; + int64_t granule; + int padding1; + int padding2; +} oor_page_t; + +typedef struct { + uint8_t vps_bits; + uint8_t padding1; + uint8_t packet_count; + uint8_t bps_selector; + int16_t base_packet_size; // max 7FF (may be 0) + int16_t variable_packet_size[256]; // max 7FFF of N packet_count (may be 0) + uint8_t post_padding; +} oor_size_t; + +typedef struct { + uint8_t pre_padding; + uint8_t version; + uint8_t channels; + int sample_rate; + uint8_t unknown1; + uint8_t unknown2; + uint8_t unknown3; + int64_t last_granule; + uint8_t blocksize0_exp; + uint8_t blocksize1_exp; + uint8_t framing; + uint8_t post_padding; +} oor_header_t; + +// codebooks are set in plugin with a table of size + codebook +typedef struct { + int type; + int codebook_id; + //int codebook_size; + //uint8_t* codebook; +} oor_setup_t; + +// page headers, assumes buf in bitstream (probable max ~0x200) +void oor_read_page(bitstream_t* is, oor_page_t* page); +void oor_read_size(bitstream_t* is, oor_size_t* size); +void oor_read_header(bitstream_t* is, oor_header_t* hdr); +void oor_read_setup(bitstream_t* is, oor_setup_t* setup); + +bool oor_validate_header_page(oor_page_t* page, oor_header_t* hdr); +bool oor_validate_setup_page(oor_page_t* page, oor_size_t* size, oor_header_t* hdr); +bool oor_validate_setup_info(oor_page_t* page, oor_size_t* size, oor_setup_t* setup); +bool oor_validate_audio_page(oor_page_t* page, oor_size_t* size, oor_header_t* hdr); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.c index 3b77b7756..63acf6082 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.c @@ -1260,12 +1260,11 @@ static inline int16_t clamp16f(float sample) { } void tac_get_samples_pcm16(tac_handle_t* handle, int16_t* dst) { - int ch, i; int chs = TAC_CHANNELS; - for (ch = 0; ch < chs; ch++) { + for (int ch = 0; ch < chs; ch++) { int s = 0; - for (i = 0; i < TAC_FRAME_SAMPLES / 4; i++) { + for (int i = 0; i < TAC_FRAME_SAMPLES / 4; i++) { dst[(s+0)*chs + ch] = clamp16f(handle->wave[ch][i].f.x); dst[(s+1)*chs + ch] = clamp16f(handle->wave[ch][i].f.y); dst[(s+2)*chs + ch] = clamp16f(handle->wave[ch][i].f.z); @@ -1275,6 +1274,21 @@ void tac_get_samples_pcm16(tac_handle_t* handle, int16_t* dst) { } } +// TAC originally returns PCM16 but allow internal floats for flexility +void tac_get_samples_float(tac_handle_t* handle, float* dst) { + int chs = TAC_CHANNELS; + + for (int ch = 0; ch < chs; ch++) { + int s = 0; + for (int i = 0; i < TAC_FRAME_SAMPLES / 4; i++) { + dst[(s+0)*chs + ch] = (handle->wave[ch][i].f.x); + dst[(s+1)*chs + ch] = (handle->wave[ch][i].f.y); + dst[(s+2)*chs + ch] = (handle->wave[ch][i].f.z); + dst[(s+3)*chs + ch] = (handle->wave[ch][i].f.w); + s += 4; + } + } +} void tac_set_loop(tac_handle_t* handle) { handle->frame_number = handle->header.loop_frame; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.h index fde5a40ed..ef307b393 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.h +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/tac_lib.h @@ -49,6 +49,7 @@ void tac_free(tac_handle_t* handle); int tac_decode_frame(tac_handle_t* handle, const uint8_t* block); void tac_get_samples_pcm16(tac_handle_t* handle, int16_t* dst); +void tac_get_samples_float(tac_handle_t* handle, float* dst); void tac_set_loop(tac_handle_t* handle); diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/ubi_mpeg_helpers.c b/Frameworks/vgmstream/vgmstream/src/coding/libs/ubi_mpeg_helpers.c new file mode 100644 index 000000000..b26abbc7a --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/ubi_mpeg_helpers.c @@ -0,0 +1,393 @@ +/* Handles Ubi-MPEG, a modified VBR MP2 (format seems to be called simply 'MPEG'). + * + * Sync is slightly different and MPEG config is fixed (info removed from the bitstream). Frames + * are also not byte-aligned, meaning a new frame starts right after prev ends in the bitstream + * (in practice frames are aligned to 4-bits though so recognizable in plain sight). + * It also has a mode where 1 stereo frame + 1 mono frame are used make surround(?) output. + * + * TODO: this doesn't handle surround modes at the moment, so it isn't fully accurate. + * + * Partially reverse engineered from DLLs. + * - MPGMXBVR.DLL: regular version, seems to (mostly) not use simd (ex. sub_10001400) + * - MPGMXSVR.DLL: xmm version + * + * Info+crosschecking from spec and libmpg123/various: + * - http://www.mp3-tech.org/programmer/frame_header.html + * - https://github.com/dreamerc/mpg123/blob/master/src/libmpg123/layer2.c + */ + +//TODO: test if files have encoding delay, but some files seem to have very few spare samples vs declared block samples + +#include +#include +#include +#include + +#include "ubi_mpeg_helpers.h" +#include "../../util/log.h" + +// forced size to simplify (explained later): (144 * bitrate * 1000 / sample_rate) + (1 optional padding byte) +//#define UBIMPEG_STEREO_FRAME_SIZE 0x20B // 128~160kkbps +//#define UBIMPEG_MONO_FRAME_SIZE 0x106 // 64~80kbps +#define UBIMPEG_FIXED_FRAME_SIZE 0x300 // ~256kbps at 48000hz + +// standard MPEG modes +#define CH_MODE_MONO 3 +#define CH_MODE_JOINT 1 +#define CH_MODE_STEREO 0 +#define MAX_BANDS 32 //30? +#define MAX_GRANULES 12 + +// band <> used allocation bits +// table 0 for 27 subbands (out of ~4); Ubi-MPEG only has this table. +// (spec's Table 3-B.2a, though we separate it into multiple tables for clarity) +static const uint8_t BITALLOC_TABLE_0[32] = { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, +}; + +// index of "number of steps" to the "bits per codeword" (qbit) table, [band][index] +static const uint8_t QINDEX_TABLE_0[32][16] = { + { 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, }, + { 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, }, + { 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, }, + + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, + + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + { 0, 1, 2, 3, 4, 5, 16, }, + + { 0, 1, 16, }, + { 0, 1, 16, }, + { 0, 1, 16, }, + { 0, 1, 16, }, + { 0, 1, 16, }, + { 0, 1, 16, }, + { 0, 1, 16, }, +}; + +// "bits per codeword" (qbit) table, number of bits used to quantize a value +// usually negative has a special meaning of "3 grouped qs" +static const int8_t QBITS_TABLE_0[17] = { + -5, -7, 3, -10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, +}; + +#if 0 +// often QBITS_TABLE uses negative values meaning "grouping" to avoid this table (-5, -7, 3, -10, ...) +static const int8_t GROUPING_TABLE[17] = { + 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +}; +#endif + +// bands in the bitstream, fixed to index 0 in Ubi MPEG +static const int MAX_SUBBANDS[5] = { 27, 30, 8, 12, 30 }; + +// number of subbands that are regular stereo, depending on mode extension (rest are intensity stereo) +static int JOINT_BOUNDS[4] = { 4, 8, 12, 16 }; + + +// most Ubi MPEG files have frames right after other, but sometimes they'll have some +// of padding. This doesn't seem a bitreading issue, their OG libs do seem to manually +// try to find sync until EOF on every new frame. +static int find_sync(bitstream_t* is) { + + // read until some limit rather than EOF + int tests = 0; + while (tests < 32) { + //TODO: OG lib seems to advance bit-by-bit, but this seems to work + uint16_t sync = bm_read(is, 12); // 12 bits unlike 11 in MPEG + if (sync != 0) + return sync; + + tests++; + } + + return 0; +} + +// reads a UBI-MPEG frame and transforms it into a regular MP2 frame +// Note that UBI-MPEG simply reads and decodes it by itself while handling surround modes, +// so this is just a quick hack. +int ubimpeg_transform_frame(bitstream_t* is, bitstream_t* os) { + //uint32_t offset = bm_pos(is) / 8; + + // config per sample rae + bitrate + channels, fixed in Ubi MPEG + const int table = 0; + // bit info about how samples in subband are quantized + uint8_t bit_alloc[MAX_BANDS][2] = {0};//todo invert ch, todo 'allocation' + uint32_t scfsi[MAX_BANDS][2] = {0}; + + /* read 16-bit Ubi-MPEG header */ + uint16_t sync = find_sync(is); + if (sync != 0xFFF) { + //VGM_LOG("UBI-MPEG: sync not found at %x (+ %i), value=%x\n", is->b_off / 8, is->b_off % 8, sync); + return 0; + } + + uint8_t mode = bm_read(is, 4); + + int extmode = (mode >> 0) & 0x03; + int ch_mode = (mode >> 2) & 0x03; + int channels = (ch_mode == CH_MODE_MONO) ? 1 : 2; + int subbands = MAX_SUBBANDS[table]; + int joint_bound = (ch_mode != CH_MODE_JOINT) ? subbands : JOINT_BOUNDS[extmode]; // boundary of non-js bands + + // Ubi-MPEG uses VBR and settings close to 44100 + 128~160kbps (stereo) / 64~80kbps (mono). However some + // frames spill into 1 more byte than the 0x20b allowed by 160kbps (even with padding bit). Sample rate + bitrate + // combo must end up using certain tables in decoders, so use a setting that allows a consistenct bitrate. + // Free bitrate (br_index 0) is usable too but decoders need several frames to detect sizes. + int frame_size = UBIMPEG_FIXED_FRAME_SIZE; + int br_index = 12; // 256kbps + int sr_index = 1; // fixed to 48000 (Ubi MPEG is 44100 but shouldn't affect decoding) + int padding = 0; + + // real-ish settings, but doesn't work for all frames + //frame_size = (channels == 2) ? UBIMPEG_STEREO_FRAME_SIZE : UBIMPEG_MONO_FRAME_SIZE; + //br_index = (channels == 2) ? 9 : 5; // 160kbps / 80kbps + //sr_index = 0; // fixed to 44100 + //padding = 1; + + /* write 32-bit MPEG frame header */ + bm_put(os, 11, 0x7FF); // sync + bm_put(os, 2, 3); // MPEG 1 index + bm_put(os, 2, 2); // layer II index + bm_put(os, 1, 1); // "no CRC" flag + bm_put(os, 4, br_index); // bitrate index + bm_put(os, 2, sr_index); // sample rate index + bm_put(os, 1, padding); // padding + bm_put(os, 1, 0); // private + bm_put(os, 2, ch_mode); // channel mode + bm_put(os, 2, extmode); // mode extension + bm_put(os, 1, 1); // copyrighted + bm_put(os, 1, 1); // original + bm_put(os, 2, 0); // emphasis + + + // step I: read allocation bits + for (int i = 0; i < joint_bound; i++) { + int ba_bits = BITALLOC_TABLE_0[i]; + for (int ch = 0; ch < channels; ch++) { + bit_alloc[i][ch] = bm_read(is, ba_bits); + bm_put(os, ba_bits, bit_alloc[i][ch]); + } + } + + // step I: read rest of joint stereo allocation bits (same for L and R) + for (int i = joint_bound; i < subbands; i++) { + int ba_bits = BITALLOC_TABLE_0[i]; + + bit_alloc[i][0] = bm_read(is, ba_bits); + bit_alloc[i][1] = bit_alloc[i][0]; + bm_put(os, ba_bits, bit_alloc[i][0]); + } + + // step I: read scalefactor selector information (how many scalefactors are included) + for (int i = 0; i < subbands; i++) { + for (int ch = 0; ch < channels; ch++) { + if (bit_alloc[i][ch] == 0) + continue; + + scfsi[i][ch] = bm_read(is, 2); + bm_put(os, 2, scfsi[i][ch]); + } + } + + // step I: read scalefactors from scfsi indexes + for (int i = 0; i < subbands; i++) { + for (int ch = 0; ch < channels; ch++) { + if (bit_alloc[i][ch] == 0) + continue; + + int scf; + switch(scfsi[i][ch]) { + case 0: // 3 scalefactors + scf = bm_read(is, 6); + bm_put(os, 6, scf); + scf = bm_read(is, 6); + bm_put(os, 6, scf); + scf = bm_read(is, 6); + bm_put(os, 6, scf); + break; + case 1: // 2 scalefactors (reuses 1st for 2nd) + case 3: // 2 scalefactors (reuses 2nd for 3rd) + scf = bm_read(is, 6); + bm_put(os, 6, scf); + scf = bm_read(is, 6); + bm_put(os, 6, scf); + break; + case 2: // 1 scalefactor (reuses all 3) + scf = bm_read(is, 6); + bm_put(os, 6, scf); + break; + default: + break; + } + } + } + + // step II: read quantized DCT coefficients + // (restored to 3 samples per granule and up to 32 subbands) + for (int gr = 0; gr < MAX_GRANULES; gr++) { + // regular quants + for (int i = 0; i < joint_bound; i++) { + for (int ch = 0; ch < channels; ch++) { + int ba_index = bit_alloc[i][ch]; + if (ba_index == 0) + continue; + + int qb_index = QINDEX_TABLE_0[i][ba_index - 1]; + int qbits = QBITS_TABLE_0[qb_index]; + + int qs; + if (qbits < 0) { // grouping used + qbits = -qbits; // remove flag + qs = 1; // same value for 3 codes + } + else { + qs = 3; // 3 distinct codes + } + + for (int q = 0; q < qs; q++) { + int qcode = bm_read(is, qbits); + bm_put(os, qbits, qcode); + } + } + } + + // joint stereo quants (1 channel only) + for (int i = joint_bound; i < subbands; i++) { + { + int ba_index = bit_alloc[i][0]; + if (ba_index == 0) + continue; + + int qb_index = QINDEX_TABLE_0[i][ba_index - 1]; + int qbits = QBITS_TABLE_0[qb_index]; + + int qs; + if (qbits < 0) { // grouping used + qbits = -qbits; // remove flag + qs = 1; // same value for 3 codes + } + else { + qs = 3; // 3 distinct codes + } + + for (int q = 0; q < qs; q++) { + int qcode = bm_read(is, qbits); + bm_put(os, qbits, qcode); + } + } + } + } + + // real MPEG frames are byte padded, but not Ubi-MPEG's (usually) + uint32_t bitpos = bm_pos(os); + if (bitpos % 8) { + bm_skip(os, 8 - (bitpos % 8)); + } + + //uint32_t end_offset = bm_pos(is) / 8; + //VGM_LOG("frame: ch_mode=%x, extmode=%x = chs=%i, reg_bands=%i, o=%x + %x\n", ch_mode, extmode, channels, joint_bound, offset, end_offset - offset); + + // 0-pad as may confuse decoders otherwise + uint32_t obuf_done = bm_pos(os) / 8; + if (obuf_done > frame_size) { + //VGM_LOG("error: buf done=%x (%i) vs %x\n", obuf_done, bm_pos(os), frame_size); + return 0; + } + else { + memset(os->buf + obuf_done, 0x00, frame_size - obuf_done); + } + + return frame_size; +} + + + +#if 0 +static bool parse_file(uint8_t* buf, int buf_size, FILE* outfile_mp2a, FILE* outfile_mp2b, FILE* outfile0_wav, FILE* outfile1_wav) { + + printf("UBI-MPEG: samples=%i, 2rus=%i, 1rus=%i\n", samples, is_2rus, is_1rus); + + + bitstream_t is; + bm_setup(&is, buf, buf_size); + bm_skip(&is, 0x04 * 8); + if (is_1rus || is_2rus) + bm_skip(&is, 0x04 * 8); + + uint8_t obuf[0x800]; + bitstream_t os; + + mp3dec_t mp3d0; + mp3dec_init(&mp3d0); + mp3dec_frame_info_t info0; + short pcm0[MINIMP3_MAX_SAMPLES_PER_FRAME]; + + mp3dec_t mp3d1; + mp3dec_init(&mp3d1); + mp3dec_frame_info_t info1; + short pcm1[MINIMP3_MAX_SAMPLES_PER_FRAME]; + + int frames = 0; + int done = 0; + int obuf_size; + while (1) { + + // 1st frame + { + bm_setup(&os, obuf, sizeof(obuf)); + + obuf_size = ubimpeg_transform_frame(&is, &os); + if (!obuf_size) break; + frames++; + fwrite(obuf, sizeof(uint8_t), obuf_size, outfile_mp2a); + + int pcm0_samples = mp3dec_decode_frame(&mp3d0, obuf, obuf_size, pcm0, &info0); + printf("mpeg0: pcm=%i, br=%i, ch=%i, by=%x\n", pcm0_samples, info0.bitrate_kbps, info0.channels, info0.frame_bytes); + fwrite(pcm0, sizeof(short), pcm0_samples * info0.channels, outfile0_wav); + } + + // 2nd frame + if (is_1rus || is_2rus) { + bm_setup(&os, obuf, sizeof(obuf)); + + obuf_size = ubimpeg_transform_frame(&is, &os); + if (!obuf_size) break; + frames++; + + fwrite(obuf, sizeof(uint8_t), obuf_size, outfile_mp2b); + + int pcm1_samples = mp3dec_decode_frame(&mp3d1, obuf, obuf_size, pcm1, &info1); + printf("mpeg1: pcm=%i, br=%i, ch=%i, by=%x\n", pcm1_samples, info1.bitrate_kbps, info1.channels, info1.frame_bytes); + fwrite(pcm1, sizeof(short), pcm1_samples * info1.channels, outfile1_wav); + } + + + done += 1152; + printf("samples: %i / %i, obuf=%x (%x)\n", done, samples, obuf_size); + if (done >= samples) + break; + } + printf("frames: done=%i (%x) / samples=%i (%x)\n", done, done, samples, samples); + + return true; +} +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/ubi_mpeg_helpers.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/ubi_mpeg_helpers.h new file mode 100644 index 000000000..d734c46f6 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/ubi_mpeg_helpers.h @@ -0,0 +1,9 @@ +#ifndef _UBI_MPEG_HELPERS_H +#define _UBI_MPEG_HELPERS_H + +#include "../../util/bitstream_msb.h" + +int ubimpeg_transform_frame(bitstream_t* is, bitstream_t* os); + + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_data_fsb.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_fsb.h similarity index 99% rename from Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_data_fsb.h rename to Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_fsb.h index e79855086..8662d7c70 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_data_fsb.h +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_fsb.h @@ -1,23 +1,17 @@ -#ifndef _FSB_VORBIS_DATA_H_ -#define _FSB_VORBIS_DATA_H_ +#ifndef _VORBIS_CODEBOOKS_FSB_H_ +#define _VORBIS_CODEBOOKS_FSB_H_ +#include "../../util/vorbis_codebooks.h" /** - * fvs (FSB vorbis setup) data for FSB Vorbis. - * They are Vorbis setup packets (type 0x05) binaries converted to c-arrays. + * Vorbis setup packets (type 0x05) binaries converted to c-arrays. ID is the CRC32. * Extracted from FMOD by python-fsb5 (https://github.com/HearthSim/python-fsb5). */ -typedef struct { - uint32_t id;/*crc32*/ - uint32_t size; - const uint8_t *setup; -} fvs_info; - /* ******************************************** */ /* autogenerated */ /* ******************************************** */ -static const uint8_t fvs_a72297ff[] = { +static const uint8_t vcb_a72297ff[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -202,7 +196,7 @@ static const uint8_t fvs_a72297ff[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_69ef6302[] = { +static const uint8_t vcb_69ef6302[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -325,7 +319,7 @@ static const uint8_t fvs_69ef6302[] = { 0x00,0x04,0x80,0x0f,0x00,0x80,0x64,0x05,0x88,0x88,0x66,0x66,0x8e,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0xa4,0xc4,0xe4,0x04,0x25,0x45,0x25,0x00,0x00,0x10,0x40, 0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_3660a305[] = { +static const uint8_t vcb_3660a305[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -447,7 +441,7 @@ static const uint8_t fvs_3660a305[] = { 0x00,0x00,0x00,0x00,0x80,0x1a,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_1bbad506[] = { +static const uint8_t vcb_1bbad506[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -579,7 +573,7 @@ static const uint8_t fvs_1bbad506[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_5d041107[] = { +static const uint8_t vcb_5d041107[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -681,7 +675,7 @@ static const uint8_t fvs_5d041107[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xd0,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_56e8ad09[] = { +static const uint8_t vcb_56e8ad09[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -806,7 +800,7 @@ static const uint8_t fvs_56e8ad09[] = { 0x03,0x00,0x20,0x59,0x01,0x22,0xa2,0x99,0x99,0xe3,0xe8,0xf0,0xf8,0x00,0x09,0x11,0x19,0x21,0x29,0x31,0x39,0x41,0x49,0x51,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_1f80570a[] = { +static const uint8_t vcb_1f80570a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -905,7 +899,7 @@ static const uint8_t fvs_1f80570a[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_49fd480c[] = { +static const uint8_t vcb_49fd480c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -1072,7 +1066,7 @@ static const uint8_t fvs_49fd480c[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_92d31401[] = { +static const uint8_t vcb_92d31401[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -1193,7 +1187,7 @@ static const uint8_t fvs_92d31401[] = { 0x00,0x1e,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_aee2590e[] = { +static const uint8_t vcb_aee2590e[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -1292,7 +1286,7 @@ static const uint8_t fvs_aee2590e[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_7973eb10[] = { +static const uint8_t vcb_7973eb10[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -1391,7 +1385,7 @@ static const uint8_t fvs_7973eb10[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_b720b682[] = { +static const uint8_t vcb_b720b682[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -1490,7 +1484,7 @@ static const uint8_t fvs_b720b682[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_d8220d13[] = { +static const uint8_t vcb_d8220d13[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -1589,7 +1583,7 @@ static const uint8_t fvs_d8220d13[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_0e05b915[] = { +static const uint8_t vcb_0e05b915[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -1774,7 +1768,7 @@ static const uint8_t fvs_0e05b915[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_c55efa16[] = { +static const uint8_t vcb_c55efa16[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -1887,7 +1881,7 @@ static const uint8_t fvs_c55efa16[] = { 0x48,0x4a,0x4c,0x4e,0x50,0x02,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x3e,0x00,0x00,0x92,0x14,0x20,0x22,0x22,0x9a,0x39,0x8e,0x0e,0x8f,0x0f,0x90,0x10,0x91,0x11,0x92, 0x12,0x93,0x13,0x94,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_3bf54b18[] = { +static const uint8_t vcb_3bf54b18[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -2009,7 +2003,7 @@ static const uint8_t fvs_3bf54b18[] = { 0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_6288f31b[] = { +static const uint8_t vcb_6288f31b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -2129,7 +2123,7 @@ static const uint8_t fvs_6288f31b[] = { 0x00,0xb4,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_1fdf9e1c[] = { +static const uint8_t vcb_1fdf9e1c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -2249,7 +2243,7 @@ static const uint8_t fvs_1fdf9e1c[] = { 0x00,0xb0,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_9f46fc1c[] = { +static const uint8_t vcb_9f46fc1c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -2370,7 +2364,7 @@ static const uint8_t fvs_9f46fc1c[] = { 0x80,0x1d,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_273faa21[] = { +static const uint8_t vcb_273faa21[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -2490,7 +2484,7 @@ static const uint8_t fvs_273faa21[] = { 0x00,0xd0,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_f675b121[] = { +static const uint8_t vcb_f675b121[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -2675,7 +2669,7 @@ static const uint8_t fvs_f675b121[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_14be1423[] = { +static const uint8_t vcb_14be1423[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -2796,7 +2790,7 @@ static const uint8_t fvs_14be1423[] = { 0x00,0x1c,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_d1bf11df[] = { +static const uint8_t vcb_d1bf11df[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -2907,7 +2901,7 @@ static const uint8_t fvs_d1bf11df[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0xc0,0x0d,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_3ffea827[] = { +static const uint8_t vcb_3ffea827[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -3092,7 +3086,7 @@ static const uint8_t fvs_3ffea827[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_b00da327[] = { +static const uint8_t vcb_b00da327[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -3214,7 +3208,7 @@ static const uint8_t fvs_b00da327[] = { 0x00,0x00,0x00,0x00,0x80,0x18,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_c4c30a29[] = { +static const uint8_t vcb_c4c30a29[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -3336,7 +3330,7 @@ static const uint8_t fvs_c4c30a29[] = { 0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_6b01ef2b[] = { +static const uint8_t vcb_6b01ef2b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -3468,7 +3462,7 @@ static const uint8_t fvs_6b01ef2b[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_4f739c2d[] = { +static const uint8_t vcb_4f739c2d[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -3564,7 +3558,7 @@ static const uint8_t fvs_4f739c2d[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_6c87a72f[] = { +static const uint8_t vcb_6c87a72f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -3699,7 +3693,7 @@ static const uint8_t fvs_6c87a72f[] = { 0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x02,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08, 0x08, }; -static const uint8_t fvs_f337612f[] = { +static const uint8_t vcb_f337612f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -3819,7 +3813,7 @@ static const uint8_t fvs_f337612f[] = { 0x92,0x12,0x93,0x13,0x94,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x80,0x0f,0x00,0x80,0x24,0x05,0x88,0x88,0x88,0x66,0x8e,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0xa4, 0xc4,0xe4,0x04,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, }; -static const uint8_t fvs_7d121031[] = { +static const uint8_t vcb_7d121031[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x26,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -3930,7 +3924,7 @@ static const uint8_t fvs_7d121031[] = { 0x44,0x34,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_cd089432[] = { +static const uint8_t vcb_cd089432[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -4038,7 +4032,7 @@ static const uint8_t fvs_cd089432[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_2f8dd637[] = { +static const uint8_t vcb_2f8dd637[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -4146,7 +4140,7 @@ static const uint8_t fvs_2f8dd637[] = { 0x80,0x88,0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_6760a9b4[] = { +static const uint8_t vcb_6760a9b4[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x0f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -4217,7 +4211,7 @@ static const uint8_t fvs_6760a9b4[] = { 0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x0f,0x00,0x80,0xa3,0x00,0x88,0x88,0x68,0xce,0xe0,0x00,0x21,0x41,0x61,0x81,0xa1,0xc1,0xe1,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x40, }; -static const uint8_t fvs_d73c3039[] = { +static const uint8_t vcb_d73c3039[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -4330,7 +4324,7 @@ static const uint8_t fvs_d73c3039[] = { 0x88,0x88,0x66,0x0e,0x23,0x43,0x63,0x83,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00, 0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, }; -static const uint8_t fvs_08474b3b[] = { +static const uint8_t vcb_08474b3b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -4426,7 +4420,7 @@ static const uint8_t fvs_08474b3b[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_2594af3c[] = { +static const uint8_t vcb_2594af3c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -4611,7 +4605,7 @@ static const uint8_t fvs_2594af3c[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_2a3a190a[] = { +static const uint8_t vcb_2a3a190a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -4719,7 +4713,7 @@ static const uint8_t fvs_2a3a190a[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_6d39bf3e[] = { +static const uint8_t vcb_6d39bf3e[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -4844,7 +4838,7 @@ static const uint8_t fvs_6d39bf3e[] = { 0x10,0x91,0x11,0x92,0x12,0x93,0x13,0x94,0x14,0x95,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00, 0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_b62ad8df[] = { +static const uint8_t vcb_b62ad8df[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -4973,7 +4967,7 @@ static const uint8_t fvs_b62ad8df[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_90ac8c41[] = { +static const uint8_t vcb_90ac8c41[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -5158,7 +5152,7 @@ static const uint8_t fvs_90ac8c41[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_30efa143[] = { +static const uint8_t vcb_30efa143[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -5269,7 +5263,7 @@ static const uint8_t fvs_30efa143[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0xc0,0x0a,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_2ba1a444[] = { +static const uint8_t vcb_2ba1a444[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x26,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -5380,7 +5374,7 @@ static const uint8_t fvs_2ba1a444[] = { 0x44,0x34,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_4ca44146[] = { +static const uint8_t vcb_4ca44146[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -5500,7 +5494,7 @@ static const uint8_t fvs_4ca44146[] = { 0x00,0xa4,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_8e53ea46[] = { +static const uint8_t vcb_8e53ea46[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -5602,7 +5596,7 @@ static const uint8_t fvs_8e53ea46[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_3f65b737[] = { +static const uint8_t vcb_3f65b737[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x11,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -5685,7 +5679,7 @@ static const uint8_t fvs_3f65b737[] = { 0x21,0x20,0x46,0x40,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0xe0,0x03,0x00,0x20,0x29,0x00,0x02,0x22,0xa2,0x99,0x33,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80, 0x88,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40, }; -static const uint8_t fvs_f234b061[] = { +static const uint8_t vcb_f234b061[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -5793,7 +5787,7 @@ static const uint8_t fvs_f234b061[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_1f2df74f[] = { +static const uint8_t vcb_1f2df74f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -5913,7 +5907,7 @@ static const uint8_t fvs_1f2df74f[] = { 0x00,0xd0,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_cb5df64f[] = { +static const uint8_t vcb_cb5df64f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -6033,7 +6027,7 @@ static const uint8_t fvs_cb5df64f[] = { 0x00,0xa8,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_6b88bd52[] = { +static const uint8_t vcb_6b88bd52[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -6153,7 +6147,7 @@ static const uint8_t fvs_6b88bd52[] = { 0x92,0x12,0x93,0x13,0x94,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x80,0x0f,0x00,0x80,0x24,0x05,0x88,0x88,0x88,0x66,0x8e,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0xa4, 0xc4,0xe4,0x04,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, }; -static const uint8_t fvs_dddcadec[] = { +static const uint8_t vcb_dddcadec[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x26,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -6264,7 +6258,7 @@ static const uint8_t fvs_dddcadec[] = { 0x44,0x34,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_571c7954[] = { +static const uint8_t vcb_571c7954[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -6385,7 +6379,7 @@ static const uint8_t fvs_571c7954[] = { 0x4a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x07,0x00,0x40,0x92,0x02,0x44,0x44,0x44,0x33,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x62,0x72,0x82,0x12, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_ad11d38d[] = { +static const uint8_t vcb_ad11d38d[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -6496,7 +6490,7 @@ static const uint8_t fvs_ad11d38d[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_961f2e55[] = { +static const uint8_t vcb_961f2e55[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -6628,7 +6622,7 @@ static const uint8_t fvs_961f2e55[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_8da25e57[] = { +static const uint8_t vcb_8da25e57[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x11,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -6711,7 +6705,7 @@ static const uint8_t fvs_8da25e57[] = { 0x21,0x20,0x46,0x40,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xe0,0x03,0x00,0x20,0x29,0x00,0x02,0x22,0xa2,0x99,0x33,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80, 0x88,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40, }; -static const uint8_t fvs_b370dc94[] = { +static const uint8_t vcb_b370dc94[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -6819,7 +6813,7 @@ static const uint8_t fvs_b370dc94[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_988e56d5[] = { +static const uint8_t vcb_988e56d5[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -6930,7 +6924,7 @@ static const uint8_t fvs_988e56d5[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x80,0x0b,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_434d925c[] = { +static const uint8_t vcb_434d925c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -7115,7 +7109,7 @@ static const uint8_t fvs_434d925c[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_76c75260[] = { +static const uint8_t vcb_76c75260[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -7235,7 +7229,7 @@ static const uint8_t fvs_76c75260[] = { 0x00,0xb4,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_796c4262[] = { +static const uint8_t vcb_796c4262[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -7357,7 +7351,7 @@ static const uint8_t fvs_796c4262[] = { 0x00,0x00,0x00,0x00,0x80,0x18,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_3f2e053b[] = { +static const uint8_t vcb_3f2e053b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -7465,7 +7459,7 @@ static const uint8_t fvs_3f2e053b[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_9650d164[] = { +static const uint8_t vcb_9650d164[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -7600,7 +7594,7 @@ static const uint8_t fvs_9650d164[] = { 0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x02,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08, 0x08, }; -static const uint8_t fvs_b7946790[] = { +static const uint8_t vcb_b7946790[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -7720,7 +7714,7 @@ static const uint8_t fvs_b7946790[] = { 0x00,0x9c,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_0f2f7d68[] = { +static const uint8_t vcb_0f2f7d68[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -7887,7 +7881,7 @@ static const uint8_t fvs_0f2f7d68[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_a68da568[] = { +static const uint8_t vcb_a68da568[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -8019,7 +8013,7 @@ static const uint8_t fvs_a68da568[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_f13ee569[] = { +static const uint8_t vcb_f13ee569[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -8139,7 +8133,7 @@ static const uint8_t fvs_f13ee569[] = { 0x00,0xb8,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_ad60cd6a[] = { +static const uint8_t vcb_ad60cd6a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -8247,7 +8241,7 @@ static const uint8_t fvs_ad60cd6a[] = { 0x80,0x88,0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_84ca616c[] = { +static const uint8_t vcb_84ca616c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -8346,7 +8340,7 @@ static const uint8_t fvs_84ca616c[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_4dec603d[] = { +static const uint8_t vcb_4dec603d[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x24,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -8466,7 +8460,7 @@ static const uint8_t fvs_4dec603d[] = { 0x22,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0xf0,0x01,0x00,0x90,0x90,0x00,0x01,0x11,0xd1,0xcc,0x61,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x04,0x00, 0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x10, }; -static const uint8_t fvs_35a86f68[] = { +static const uint8_t vcb_35a86f68[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -8565,7 +8559,7 @@ static const uint8_t fvs_35a86f68[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_f20a3571[] = { +static const uint8_t vcb_f20a3571[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -8664,7 +8658,7 @@ static const uint8_t fvs_f20a3571[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_68dc8475[] = { +static const uint8_t vcb_68dc8475[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -8849,7 +8843,7 @@ static const uint8_t fvs_68dc8475[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_7bab8576[] = { +static const uint8_t vcb_7bab8576[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -8960,7 +8954,7 @@ static const uint8_t fvs_7bab8576[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x40,0x0d,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_89803b76[] = { +static const uint8_t vcb_89803b76[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -9071,7 +9065,7 @@ static const uint8_t fvs_89803b76[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_3f4f6b79[] = { +static const uint8_t vcb_3f4f6b79[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -9191,7 +9185,7 @@ static const uint8_t fvs_3f4f6b79[] = { 0x00,0xa4,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_20591e7a[] = { +static const uint8_t vcb_20591e7a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -9326,7 +9320,7 @@ static const uint8_t fvs_20591e7a[] = { 0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x02,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08, 0x08, }; -static const uint8_t fvs_7d6d597b[] = { +static const uint8_t vcb_7d6d597b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -9458,7 +9452,7 @@ static const uint8_t fvs_7d6d597b[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_64d54a7c[] = { +static const uint8_t vcb_64d54a7c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x11,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -9541,7 +9535,7 @@ static const uint8_t fvs_64d54a7c[] = { 0x21,0x20,0x46,0x40,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0xe0,0x03,0x00,0x20,0x29,0x00,0x02,0x22,0xa2,0x99,0x33,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80, 0x88,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40, }; -static const uint8_t fvs_bf3afb7c[] = { +static const uint8_t vcb_bf3afb7c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -9708,7 +9702,7 @@ static const uint8_t fvs_bf3afb7c[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_4218067e[] = { +static const uint8_t vcb_4218067e[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -9828,7 +9822,7 @@ static const uint8_t fvs_4218067e[] = { 0x00,0xa0,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_7913ed7f[] = { +static const uint8_t vcb_7913ed7f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -9995,7 +9989,7 @@ static const uint8_t fvs_7913ed7f[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_c2ea917f[] = { +static const uint8_t vcb_c2ea917f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -10127,7 +10121,7 @@ static const uint8_t fvs_c2ea917f[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_f2781a42[] = { +static const uint8_t vcb_f2781a42[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -10259,7 +10253,7 @@ static const uint8_t fvs_f2781a42[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_64bd4583[] = { +static const uint8_t vcb_64bd4583[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -10379,7 +10373,7 @@ static const uint8_t fvs_64bd4583[] = { 0x00,0xa8,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_19ea2884[] = { +static const uint8_t vcb_19ea2884[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -10499,7 +10493,7 @@ static const uint8_t fvs_19ea2884[] = { 0x00,0xac,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_9e8a1a84[] = { +static const uint8_t vcb_9e8a1a84[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -10607,7 +10601,7 @@ static const uint8_t fvs_9e8a1a84[] = { 0x80,0x88,0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_28f00387[] = { +static const uint8_t vcb_28f00387[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -10718,7 +10712,7 @@ static const uint8_t fvs_28f00387[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_84d3ac87[] = { +static const uint8_t vcb_84d3ac87[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -10820,7 +10814,7 @@ static const uint8_t fvs_84d3ac87[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_82d3098a[] = { +static const uint8_t vcb_82d3098a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -10941,7 +10935,7 @@ static const uint8_t fvs_82d3098a[] = { 0x80,0x18,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_b6b3868b[] = { +static const uint8_t vcb_b6b3868b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -11063,7 +11057,7 @@ static const uint8_t fvs_b6b3868b[] = { 0x00,0x00,0x00,0x00,0x80,0x1a,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_704fb87e[] = { +static const uint8_t vcb_704fb87e[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -11159,7 +11153,7 @@ static const uint8_t fvs_704fb87e[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x80,0x06,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_8d00698d[] = { +static const uint8_t vcb_8d00698d[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -11287,7 +11281,7 @@ static const uint8_t fvs_8d00698d[] = { 0x00,0x40,0x00,0xf0,0x01,0x00,0x90,0xac,0x00,0x11,0xd1,0xcc,0xcc,0x71,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c,0xa0,0xa4,0xa8,0x04,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_55780f8f[] = { +static const uint8_t vcb_55780f8f[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -11408,7 +11402,7 @@ static const uint8_t fvs_55780f8f[] = { 0x80,0x1c,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_6d1cdf90[] = { +static const uint8_t vcb_6d1cdf90[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -11540,7 +11534,7 @@ static const uint8_t fvs_6d1cdf90[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_7c8d7518[] = { +static const uint8_t vcb_7c8d7518[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -11662,7 +11656,7 @@ static const uint8_t fvs_7c8d7518[] = { 0x00,0x00,0x00,0x00,0x80,0x1b,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_5949b893[] = { +static const uint8_t vcb_5949b893[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x11,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -11747,7 +11741,7 @@ static const uint8_t fvs_5949b893[] = { 0x17,0x42,0x40,0x8c,0x80,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xc0,0x07,0x00,0x40,0x52,0x00,0x04,0x44,0x44,0x33,0x67,0x70,0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0, 0x00,0x11,0x01,0x00,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, }; -static const uint8_t fvs_84199294[] = { +static const uint8_t vcb_84199294[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -11843,7 +11837,7 @@ static const uint8_t fvs_84199294[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0xc0,0x05,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_61f44196[] = { +static const uint8_t vcb_61f44196[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x26,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -11954,7 +11948,7 @@ static const uint8_t fvs_61f44196[] = { 0x44,0x34,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_cac30a97[] = { +static const uint8_t vcb_cac30a97[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -12074,7 +12068,7 @@ static const uint8_t fvs_cac30a97[] = { 0x00,0x98,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_3f0c8399[] = { +static const uint8_t vcb_3f0c8399[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -12259,7 +12253,7 @@ static const uint8_t fvs_3f0c8399[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_39e4f39a[] = { +static const uint8_t vcb_39e4f39a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x12,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -12339,7 +12333,7 @@ static const uint8_t fvs_39e4f39a[] = { 0x00,0x00,0x00,0x00,0x02,0x00,0x7c,0x00,0x00,0x24,0x05,0x40,0x44,0x44,0x34,0x73,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, }; -static const uint8_t fvs_90021eee[] = { +static const uint8_t vcb_90021eee[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -12471,7 +12465,7 @@ static const uint8_t fvs_90021eee[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_e3a83899[] = { +static const uint8_t vcb_e3a83899[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x24,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -12591,7 +12585,7 @@ static const uint8_t fvs_e3a83899[] = { 0x22,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0xf0,0x01,0x00,0x90,0x90,0x00,0x01,0x11,0xd1,0xcc,0x61,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x04,0x00, 0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x10, }; -static const uint8_t fvs_4d3abd9e[] = { +static const uint8_t vcb_4d3abd9e[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -12711,7 +12705,7 @@ static const uint8_t fvs_4d3abd9e[] = { 0x00,0x94,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_41e240a0[] = { +static const uint8_t vcb_41e240a0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -12813,7 +12807,7 @@ static const uint8_t fvs_41e240a0[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xd8,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_203c9fa1[] = { +static const uint8_t vcb_203c9fa1[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -12924,7 +12918,7 @@ static const uint8_t fvs_203c9fa1[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0xc0,0x0b,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_6e53e4a3[] = { +static const uint8_t vcb_6e53e4a3[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -13045,7 +13039,7 @@ static const uint8_t fvs_6e53e4a3[] = { 0x80,0x16,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_910d8ea5[] = { +static const uint8_t vcb_910d8ea5[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -13141,7 +13135,7 @@ static const uint8_t fvs_910d8ea5[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x40,0x05,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_29d547a7[] = { +static const uint8_t vcb_29d547a7[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -13261,7 +13255,7 @@ static const uint8_t fvs_29d547a7[] = { 0x92,0x12,0x93,0x13,0x94,0x00,0x00,0x00,0x00,0x00,0xb0,0x01,0x80,0x0f,0x00,0x80,0x24,0x05,0x88,0x88,0x88,0x66,0x8e,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0xa4, 0xc4,0xe4,0x04,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, }; -static const uint8_t fvs_b6f8f21b[] = { +static const uint8_t vcb_b6f8f21b[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -13381,7 +13375,7 @@ static const uint8_t fvs_b6f8f21b[] = { 0x00,0xcc,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_690dd8ab[] = { +static const uint8_t vcb_690dd8ab[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -13492,7 +13486,7 @@ static const uint8_t fvs_690dd8ab[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x80,0x0d,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_632b1fac[] = { +static const uint8_t vcb_632b1fac[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -13588,7 +13582,7 @@ static const uint8_t fvs_632b1fac[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x80,0x05,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_f42a8ff1[] = { +static const uint8_t vcb_f42a8ff1[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -13710,7 +13704,7 @@ static const uint8_t fvs_f42a8ff1[] = { 0x00,0x00,0x00,0x00,0x00,0x1b,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_c77c8bad[] = { +static const uint8_t vcb_c77c8bad[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -13895,7 +13889,7 @@ static const uint8_t fvs_c77c8bad[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_cbaf9f1c[] = { +static const uint8_t vcb_cbaf9f1c[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -14015,7 +14009,7 @@ static const uint8_t fvs_cbaf9f1c[] = { 0x00,0xc8,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_be82e3b1[] = { +static const uint8_t vcb_be82e3b1[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -14133,7 +14127,7 @@ static const uint8_t fvs_be82e3b1[] = { 0x91,0x11,0x92,0x12,0x93,0x13,0x94,0x14,0x95,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, 0x00,0x02,0x02, }; -static const uint8_t fvs_977d3546[] = { +static const uint8_t vcb_977d3546[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -14229,7 +14223,7 @@ static const uint8_t fvs_977d3546[] = { 0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0xc0,0x06,0x00,0x3e,0x00,0x00,0x8e,0x0f,0x20,0x22,0xa2,0xb9,0x0a,0x8b,0x0b, 0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_329e91b4[] = { +static const uint8_t vcb_329e91b4[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -14396,7 +14390,7 @@ static const uint8_t fvs_329e91b4[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_a1a5b6cd[] = { +static const uint8_t vcb_a1a5b6cd[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -14581,7 +14575,7 @@ static const uint8_t fvs_a1a5b6cd[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_070ba3b6[] = { +static const uint8_t vcb_070ba3b6[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -14680,7 +14674,7 @@ static const uint8_t fvs_070ba3b6[] = { 0x80,0x88,0x88,0xe6,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_d7913109[] = { +static const uint8_t vcb_d7913109[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x24,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -14800,7 +14794,7 @@ static const uint8_t fvs_d7913109[] = { 0x22,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xf0,0x01,0x00,0x90,0x90,0x00,0x01,0x11,0xd1,0xcc,0x61,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x04,0x00, 0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x10, }; -static const uint8_t fvs_7de548bb[] = { +static const uint8_t vcb_7de548bb[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -14921,7 +14915,7 @@ static const uint8_t fvs_7de548bb[] = { 0x80,0x16,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_6aad13bc[] = { +static const uint8_t vcb_6aad13bc[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x26,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -15032,7 +15026,7 @@ static const uint8_t fvs_6aad13bc[] = { 0x44,0x34,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_6a5436bf[] = { +static const uint8_t vcb_6a5436bf[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -15145,7 +15139,7 @@ static const uint8_t fvs_6a5436bf[] = { 0x88,0x88,0x66,0x0e,0x23,0x43,0x63,0x83,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00, 0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, }; -static const uint8_t fvs_4c64f0c0[] = { +static const uint8_t vcb_4c64f0c0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -15267,7 +15261,7 @@ static const uint8_t fvs_4c64f0c0[] = { 0x00,0x00,0x00,0x00,0x80,0x17,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_3f7c41c1[] = { +static const uint8_t vcb_3f7c41c1[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -15388,7 +15382,7 @@ static const uint8_t fvs_3f7c41c1[] = { 0x00,0x17,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_e6f41e4a[] = { +static const uint8_t vcb_e6f41e4a[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -15509,7 +15503,7 @@ static const uint8_t fvs_e6f41e4a[] = { 0x00,0x16,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_2a685fc6[] = { +static const uint8_t vcb_2a685fc6[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -15617,7 +15611,7 @@ static const uint8_t fvs_2a685fc6[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_828b17a0[] = { +static const uint8_t vcb_828b17a0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -15784,7 +15778,7 @@ static const uint8_t fvs_828b17a0[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_355295ca[] = { +static const uint8_t vcb_355295ca[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -15886,7 +15880,7 @@ static const uint8_t fvs_355295ca[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xb8,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_682eafcb[] = { +static const uint8_t vcb_682eafcb[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -16071,7 +16065,7 @@ static const uint8_t fvs_682eafcb[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_9835fd20[] = { +static const uint8_t vcb_9835fd20[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -16173,7 +16167,7 @@ static const uint8_t fvs_9835fd20[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_38aa59ce[] = { +static const uint8_t vcb_38aa59ce[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -16295,7 +16289,7 @@ static const uint8_t fvs_38aa59ce[] = { 0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_4bb2e8cf[] = { +static const uint8_t vcb_4bb2e8cf[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -16416,7 +16410,7 @@ static const uint8_t fvs_4bb2e8cf[] = { 0x80,0x18,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_7244a8d0[] = { +static const uint8_t vcb_7244a8d0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -16601,7 +16595,7 @@ static const uint8_t fvs_7244a8d0[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_b03f2dd0[] = { +static const uint8_t vcb_b03f2dd0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -16721,7 +16715,7 @@ static const uint8_t fvs_b03f2dd0[] = { 0x00,0xb0,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_8c957fd1[] = { +static const uint8_t vcb_8c957fd1[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -16839,7 +16833,7 @@ static const uint8_t fvs_8c957fd1[] = { 0x00,0x00,0x20,0x00,0x7c,0x00,0x00,0x24,0x2b,0x40,0x44,0x34,0x33,0x73,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x01,0x00,0x80, 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_e0f25222[] = { +static const uint8_t vcb_e0f25222[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -16947,7 +16941,7 @@ static const uint8_t fvs_e0f25222[] = { 0x80,0x88,0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_1751f4d5[] = { +static const uint8_t vcb_1751f4d5[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -17049,7 +17043,7 @@ static const uint8_t fvs_1751f4d5[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_87c121d5[] = { +static const uint8_t vcb_87c121d5[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -17181,7 +17175,7 @@ static const uint8_t fvs_87c121d5[] = { 0x10,0x11,0x11,0xcd,0x1c,0x47,0x87,0xc7,0x07,0x48,0x88,0xc8,0x08,0x49,0x89,0xc9,0x09,0x4a,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x01, }; -static const uint8_t fvs_d6e0bbd4[] = { +static const uint8_t vcb_d6e0bbd4[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -17301,7 +17295,7 @@ static const uint8_t fvs_d6e0bbd4[] = { 0x92,0x12,0x93,0x13,0x94,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x0f,0x00,0x80,0x24,0x05,0x88,0x88,0x88,0x66,0x8e,0xa3,0xc3,0xe3,0x03,0x24,0x44,0x64,0x84,0xa4, 0xc4,0xe4,0x04,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, }; -static const uint8_t fvs_84e079ce[] = { +static const uint8_t vcb_84e079ce[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -17421,7 +17415,7 @@ static const uint8_t fvs_84e079ce[] = { 0x00,0xa4,0x00,0xe0,0x03,0x00,0x00,0x09,0x01,0x22,0x22,0x9a,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x0f,0x90,0x00,0x00,0x40,0x00,0x01,0x00,0x00, 0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_d84ececf[] = { +static const uint8_t vcb_d84ececf[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -17529,7 +17523,7 @@ static const uint8_t fvs_d84ececf[] = { 0x22,0xa2,0xb9,0x0a,0x8b,0x0b,0x8c,0x0c,0x8d,0x0d,0x8e,0x0e,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00, 0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_9f62e5dd[] = { +static const uint8_t vcb_9f62e5dd[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x0f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -17600,7 +17594,7 @@ static const uint8_t fvs_9f62e5dd[] = { 0x00,0x00,0x00,0x00,0x30,0x00,0x80,0x0f,0x00,0x80,0xa3,0x00,0x88,0x88,0x68,0xce,0xe0,0x00,0x21,0x41,0x61,0x81,0xa1,0xc1,0xe1,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x40, }; -static const uint8_t fvs_95f09cdf[] = { +static const uint8_t vcb_95f09cdf[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x21,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -17711,7 +17705,7 @@ static const uint8_t fvs_95f09cdf[] = { 0x38,0x3a,0x3c,0x3e,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x3e,0x00,0x00,0x90,0x10,0x20,0x22,0xa2,0x99,0xab,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0, 0xf8,0x00,0x09,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x20, }; -static const uint8_t fvs_744ca4d0[] = { +static const uint8_t vcb_744ca4d0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2c,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -17878,7 +17872,7 @@ static const uint8_t fvs_744ca4d0[] = { 0x88,0x88,0x68,0xe6,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_3747f5e3[] = { +static const uint8_t vcb_3747f5e3[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x26,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4c,0x18,0xc4,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0xa0,0xac, 0x37,0x96,0x7b,0xc8,0xbd,0xf7,0xde,0x7b,0x81,0xa8,0x47,0x14,0x7b,0x88,0xbd,0xf7,0xde,0x7b,0xe3,0xac,0x47,0xd0,0x7a,0x88,0xb9,0xf7,0xde,0x7b,0xee,0xbd,0xa7,0x1a, 0x7b,0xcb,0xbd,0xf7,0xde,0x73,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x29,0x08,0x9a,0x72,0xe0,0x42,0xea,0xbd,0xf7,0x1e,0x19,0xe6,0x11,0x51,0x1a,0x2a,0xc7, @@ -17989,7 +17983,7 @@ static const uint8_t fvs_3747f5e3[] = { 0x44,0x34,0xc7,0xd1,0xe1,0xf1,0x01,0x12,0x22,0x32,0x42,0x52,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00, 0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_8a34a0e4[] = { +static const uint8_t vcb_8a34a0e4[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -18174,7 +18168,7 @@ static const uint8_t fvs_8a34a0e4[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_696c5fe9[] = { +static const uint8_t vcb_696c5fe9[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -18296,7 +18290,7 @@ static const uint8_t fvs_696c5fe9[] = { 0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_c3151226[] = { +static const uint8_t vcb_c3151226[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -18417,7 +18411,7 @@ static const uint8_t fvs_c3151226[] = { 0x00,0x18,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_bec759ec[] = { +static const uint8_t vcb_bec759ec[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -18539,7 +18533,7 @@ static const uint8_t fvs_bec759ec[] = { 0x00,0x00,0x00,0x00,0x00,0x1a,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_782ee3ee[] = { +static const uint8_t vcb_782ee3ee[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -18641,7 +18635,7 @@ static const uint8_t fvs_782ee3ee[] = { 0x07,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0xc0,0x07,0x00,0xc0,0x21,0x02,0x44,0x44,0x34,0x87,0x91,0xa1,0xb1,0xc1,0xd1,0xe1,0xf1,0x01,0x12,0x12,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_7fc2bbef[] = { +static const uint8_t vcb_7fc2bbef[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -18776,7 +18770,7 @@ static const uint8_t fvs_7fc2bbef[] = { 0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x02,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08, 0x08, }; -static const uint8_t fvs_c04a00f0[] = { +static const uint8_t vcb_c04a00f0[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -18897,7 +18891,7 @@ static const uint8_t fvs_c04a00f0[] = { 0x00,0x19,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_b352b1f1[] = { +static const uint8_t vcb_b352b1f1[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -19019,7 +19013,7 @@ static const uint8_t fvs_b352b1f1[] = { 0x00,0x00,0x00,0x00,0x80,0x19,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_17e106f5[] = { +static const uint8_t vcb_17e106f5[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -19140,7 +19134,7 @@ static const uint8_t fvs_17e106f5[] = { 0x00,0x1d,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00,0x80,0x00,0x02,0x00, 0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_cada6a40[] = { +static const uint8_t vcb_cada6a40[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x1f,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -19248,7 +19242,7 @@ static const uint8_t fvs_cada6a40[] = { 0x80,0x88,0x88,0xe6,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40, 0x00,0x00,0x00,0x80,0x80, }; -static const uint8_t fvs_59d5bef9[] = { +static const uint8_t vcb_59d5bef9[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2d,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x18,0x63,0x54,0x29,0x46,0x99,0x52,0xd2,0x4a,0x89,0x19,0x73,0x94,0x31,0x46,0x99, 0x62,0x92,0x4a,0x89,0xa5,0x84,0x16,0x42,0x48,0x9d,0x73,0x14,0x53,0xa9,0x39,0xd7,0x9c,0x6b,0xac,0xb9,0xb5,0x20,0x84,0x10,0x1a,0x53,0x50,0x29,0x05,0x99,0x52,0x8e, 0x52,0x69,0x19,0x63,0x90,0x29,0x05,0x99,0x52,0x10,0x4b,0x49,0x25,0x74,0x12,0x3a,0x27,0x9d,0x63,0x10,0x5b,0x49,0xc1,0xd6,0x98,0x6b,0x8b,0x41,0xb6,0x1c,0x84,0x0d, @@ -19433,7 +19427,7 @@ static const uint8_t fvs_59d5bef9[] = { 0x94,0x14,0x95,0x15,0x96,0x96,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x02, }; -static const uint8_t fvs_af2e687e[] = { +static const uint8_t vcb_af2e687e[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x25,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -19555,7 +19549,7 @@ static const uint8_t fvs_af2e687e[] = { 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x7c,0x00,0x00,0x24,0x25,0x40,0x44,0x44,0x34,0x73,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x01,0x00, 0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, }; -static const uint8_t fvs_a4f666fc[] = { +static const uint8_t vcb_a4f666fc[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x2b,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x31,0x4c,0x20,0xc5,0x80,0xd0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x24, 0x29,0x0e,0x93,0x66,0x49,0x29,0xa5,0x94,0xa1,0x28,0x79,0x98,0x94,0x48,0x49,0x29,0xa5,0x94,0xc5,0x30,0x89,0x98,0x94,0x89,0xc5,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63, 0x8c,0x31,0xc6,0x18,0x63,0x8c,0x20,0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x80,0x28,0x09,0x8e,0xa3,0xe6,0x49,0x6a,0xce,0x39,0x67,0x18,0x27,0x8e,0x72,0xa0,0x39,0x69, @@ -19673,7 +19667,7 @@ static const uint8_t fvs_a4f666fc[] = { 0x91,0x11,0x92,0x12,0x93,0x13,0x94,0x14,0x95,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, 0x00,0x02,0x02, }; -static const uint8_t fvs_1c08a6ff[] = { +static const uint8_t vcb_1c08a6ff[] = { 0x05,0x76,0x6f,0x72,0x62,0x69,0x73,0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x18,0x2a,0x46,0xa5,0x73,0x16,0x84,0x10,0x1a,0x42,0x50,0x19,0xe3,0x1c, 0x42,0xce,0x6b,0xec,0x19,0x42,0x4c,0x11,0x82,0x1c,0x32,0x4c,0x5b,0xcb,0x25,0x73,0x90,0x21,0xa4,0xa0,0x42,0x88,0x5b,0x28,0x81,0xd0,0x90,0x55,0x00,0x00,0x40,0x00, 0x00,0x87,0x41,0x78,0x14,0x84,0x8a,0x41,0x08,0x21,0x84,0x25,0x3d,0x58,0x92,0x83,0x27,0x3d,0x08,0x21,0x84,0x88,0x39,0x78,0x14,0x84,0x69,0x41,0x08,0x21,0x84,0x10, @@ -19777,168 +19771,170 @@ static const uint8_t fvs_1c08a6ff[] = { }; -static const fvs_info fvs_list[] = { - {0xa72297ff,0x16c0,fvs_a72297ff}, - {0x69ef6302,0x0f15,fvs_69ef6302}, - {0x3660a305,0x0ef8,fvs_3660a305}, - {0x1bbad506,0x102c,fvs_1bbad506}, - {0x5d041107,0x0c75,fvs_5d041107}, - {0x56e8ad09,0x0f50,fvs_56e8ad09}, - {0x1f80570a,0x0c05,fvs_1f80570a}, - {0x49fd480c,0x1488,fvs_49fd480c}, - {0x92d31401,0x0ed4,fvs_92d31401}, - {0xaee2590e,0x0c05,fvs_aee2590e}, - {0x7973eb10,0x0c05,fvs_7973eb10}, - {0xb720b682,0x0c05,fvs_b720b682}, - {0xd8220d13,0x0c05,fvs_d8220d13}, - {0x0e05b915,0x16c0,fvs_0e05b915}, - {0xc55efa16,0x0ddb,fvs_c55efa16}, - {0x3bf54b18,0x0ef8,fvs_3bf54b18}, - {0x6288f31b,0x0eb3,fvs_6288f31b}, - {0x1fdf9e1c,0x0eb3,fvs_1fdf9e1c}, - {0x9f46fc1c,0x0ed4,fvs_9f46fc1c}, - {0x273faa21,0x0eb3,fvs_273faa21}, - {0xf675b121,0x16c0,fvs_f675b121}, - {0x14be1423,0x0ed4,fvs_14be1423}, - {0xd1bf11df,0x0d9c,fvs_d1bf11df}, - {0x3ffea827,0x16c0,fvs_3ffea827}, - {0xb00da327,0x0ef8,fvs_b00da327}, - {0xc4c30a29,0x0ef8,fvs_c4c30a29}, - {0x6b01ef2b,0x102c,fvs_6b01ef2b}, - {0x4f739c2d,0x0bbe,fvs_4f739c2d}, - {0x6c87a72f,0x1081,fvs_6c87a72f}, - {0xf337612f,0x0ebb,fvs_f337612f}, - {0x7d121031,0x0d84,fvs_7d121031}, - {0xcd089432,0x0d24,fvs_cd089432}, - {0x2f8dd637,0x0d25,fvs_2f8dd637}, - {0x6760a9b4,0x0886,fvs_6760a9b4}, - {0xd73c3039,0x0dc8,fvs_d73c3039}, - {0x08474b3b,0x0bbe,fvs_08474b3b}, - {0x2594af3c,0x16c0,fvs_2594af3c}, - {0x2a3a190a,0x0d24,fvs_2a3a190a}, - {0x6d39bf3e,0x0f44,fvs_6d39bf3e}, - {0xb62ad8df,0x0fc6,fvs_b62ad8df}, - {0x90ac8c41,0x16c0,fvs_90ac8c41}, - {0x30efa143,0x0d9c,fvs_30efa143}, - {0x2ba1a444,0x0d84,fvs_2ba1a444}, - {0x4ca44146,0x0eb3,fvs_4ca44146}, - {0x8e53ea46,0x0c75,fvs_8e53ea46}, - {0x3f65b737,0x0a0f,fvs_3f65b737}, - {0xf234b061,0x0d24,fvs_f234b061}, - {0x1f2df74f,0x0eb3,fvs_1f2df74f}, - {0xcb5df64f,0x0eb3,fvs_cb5df64f}, - {0x6b88bd52,0x0ebb,fvs_6b88bd52}, - {0xdddcadec,0x0d84,fvs_dddcadec}, - {0x571c7954,0x0ed7,fvs_571c7954}, - {0xad11d38d,0x0d9c,fvs_ad11d38d}, - {0x961f2e55,0x102c,fvs_961f2e55}, - {0x8da25e57,0x0a0f,fvs_8da25e57}, - {0xb370dc94,0x0d24,fvs_b370dc94}, - {0x988e56d5,0x0d9c,fvs_988e56d5}, - {0x434d925c,0x16c0,fvs_434d925c}, - {0x76c75260,0x0eb3,fvs_76c75260}, - {0x796c4262,0x0ef8,fvs_796c4262}, - {0x3f2e053b,0x0d24,fvs_3f2e053b}, - {0x9650d164,0x1081,fvs_9650d164}, - {0xb7946790,0x0eb3,fvs_b7946790}, - {0x0f2f7d68,0x1488,fvs_0f2f7d68}, - {0xa68da568,0x102c,fvs_a68da568}, - {0xf13ee569,0x0eb3,fvs_f13ee569}, - {0xad60cd6a,0x0d25,fvs_ad60cd6a}, - {0x84ca616c,0x0c05,fvs_84ca616c}, - {0x4dec603d,0x0eb8,fvs_4dec603d}, - {0x35a86f68,0x0c05,fvs_35a86f68}, - {0xf20a3571,0x0c05,fvs_f20a3571}, - {0x68dc8475,0x16c0,fvs_68dc8475}, - {0x7bab8576,0x0d9c,fvs_7bab8576}, - {0x89803b76,0x0d9c,fvs_89803b76}, - {0x3f4f6b79,0x0eb3,fvs_3f4f6b79}, - {0x20591e7a,0x1081,fvs_20591e7a}, - {0x7d6d597b,0x102c,fvs_7d6d597b}, - {0x64d54a7c,0x0a0f,fvs_64d54a7c}, - {0xbf3afb7c,0x1488,fvs_bf3afb7c}, - {0x4218067e,0x0eb3,fvs_4218067e}, - {0x7913ed7f,0x1488,fvs_7913ed7f}, - {0xc2ea917f,0x102c,fvs_c2ea917f}, - {0xf2781a42,0x102c,fvs_f2781a42}, - {0x64bd4583,0x0eb3,fvs_64bd4583}, - {0x19ea2884,0x0eb3,fvs_19ea2884}, - {0x9e8a1a84,0x0d25,fvs_9e8a1a84}, - {0x28f00387,0x0d9c,fvs_28f00387}, - {0x84d3ac87,0x0c75,fvs_84d3ac87}, - {0x82d3098a,0x0ed4,fvs_82d3098a}, - {0xb6b3868b,0x0ef8,fvs_b6b3868b}, - {0x704fb87e,0x0bbe,fvs_704fb87e}, - {0x8d00698d,0x0fb4,fvs_8d00698d}, - {0x55780f8f,0x0ed4,fvs_55780f8f}, - {0x6d1cdf90,0x102c,fvs_6d1cdf90}, - {0x7c8d7518,0x0ef8,fvs_7c8d7518}, - {0x5949b893,0x0a50,fvs_5949b893}, - {0x84199294,0x0bbe,fvs_84199294}, - {0x61f44196,0x0d84,fvs_61f44196}, - {0xcac30a97,0x0eb3,fvs_cac30a97}, - {0x3f0c8399,0x16c0,fvs_3f0c8399}, - {0x39e4f39a,0x09aa,fvs_39e4f39a}, - {0x90021eee,0x102c,fvs_90021eee}, - {0xe3a83899,0x0eb8,fvs_e3a83899}, - {0x4d3abd9e,0x0eb3,fvs_4d3abd9e}, - {0x41e240a0,0x0c75,fvs_41e240a0}, - {0x203c9fa1,0x0d9c,fvs_203c9fa1}, - {0x6e53e4a3,0x0ed4,fvs_6e53e4a3}, - {0x910d8ea5,0x0bbe,fvs_910d8ea5}, - {0x29d547a7,0x0ebb,fvs_29d547a7}, - {0xb6f8f21b,0x0eb3,fvs_b6f8f21b}, - {0x690dd8ab,0x0d9c,fvs_690dd8ab}, - {0x632b1fac,0x0bbe,fvs_632b1fac}, - {0xf42a8ff1,0x0ef8,fvs_f42a8ff1}, - {0xc77c8bad,0x16c0,fvs_c77c8bad}, - {0xcbaf9f1c,0x0eb3,fvs_cbaf9f1c}, - {0xbe82e3b1,0x0e63,fvs_be82e3b1}, - {0x977d3546,0x0bbe,fvs_977d3546}, - {0x329e91b4,0x1488,fvs_329e91b4}, - {0xa1a5b6cd,0x16c0,fvs_a1a5b6cd}, - {0x070ba3b6,0x0c05,fvs_070ba3b6}, - {0xd7913109,0x0eb8,fvs_d7913109}, - {0x7de548bb,0x0ed4,fvs_7de548bb}, - {0x6aad13bc,0x0d84,fvs_6aad13bc}, - {0x6a5436bf,0x0dc8,fvs_6a5436bf}, - {0x4c64f0c0,0x0ef8,fvs_4c64f0c0}, - {0x3f7c41c1,0x0ed4,fvs_3f7c41c1}, - {0xe6f41e4a,0x0ed4,fvs_e6f41e4a}, - {0x2a685fc6,0x0d24,fvs_2a685fc6}, - {0x828b17a0,0x1488,fvs_828b17a0}, - {0x355295ca,0x0c75,fvs_355295ca}, - {0x682eafcb,0x16c0,fvs_682eafcb}, - {0x9835fd20,0x0c75,fvs_9835fd20}, - {0x38aa59ce,0x0ef8,fvs_38aa59ce}, - {0x4bb2e8cf,0x0ed4,fvs_4bb2e8cf}, - {0x7244a8d0,0x16c0,fvs_7244a8d0}, - {0xb03f2dd0,0x0eb3,fvs_b03f2dd0}, - {0x8c957fd1,0x0e77,fvs_8c957fd1}, - {0xe0f25222,0x0d25,fvs_e0f25222}, - {0x1751f4d5,0x0c75,fvs_1751f4d5}, - {0x87c121d5,0x102c,fvs_87c121d5}, - {0xd6e0bbd4,0x0ebb,fvs_d6e0bbd4}, - {0x84e079ce,0x0eb3,fvs_84e079ce}, - {0xd84ececf,0x0d24,fvs_d84ececf}, - {0x9f62e5dd,0x0886,fvs_9f62e5dd}, - {0x95f09cdf,0x0d9c,fvs_95f09cdf}, - {0x744ca4d0,0x1488,fvs_744ca4d0}, - {0x3747f5e3,0x0d84,fvs_3747f5e3}, - {0x8a34a0e4,0x16c0,fvs_8a34a0e4}, - {0x696c5fe9,0x0ef8,fvs_696c5fe9}, - {0xc3151226,0x0ed4,fvs_c3151226}, - {0xbec759ec,0x0ef8,fvs_bec759ec}, - {0x782ee3ee,0x0c75,fvs_782ee3ee}, - {0x7fc2bbef,0x1081,fvs_7fc2bbef}, - {0xc04a00f0,0x0ed4,fvs_c04a00f0}, - {0xb352b1f1,0x0ef8,fvs_b352b1f1}, - {0x17e106f5,0x0ed4,fvs_17e106f5}, - {0xcada6a40,0x0d25,fvs_cada6a40}, - {0x59d5bef9,0x16c0,fvs_59d5bef9}, - {0xaf2e687e,0x0ef8,fvs_af2e687e}, - {0xa4f666fc,0x0e63,fvs_a4f666fc}, - {0x1c08a6ff,0x0c75,fvs_1c08a6ff}, +static const vcb_info_t vcb_list[] = { + {0xa72297ff,0x16c0,vcb_a72297ff}, + {0x69ef6302,0x0f15,vcb_69ef6302}, + {0x3660a305,0x0ef8,vcb_3660a305}, + {0x1bbad506,0x102c,vcb_1bbad506}, + {0x5d041107,0x0c75,vcb_5d041107}, + {0x56e8ad09,0x0f50,vcb_56e8ad09}, + {0x1f80570a,0x0c05,vcb_1f80570a}, + {0x49fd480c,0x1488,vcb_49fd480c}, + {0x92d31401,0x0ed4,vcb_92d31401}, + {0xaee2590e,0x0c05,vcb_aee2590e}, + {0x7973eb10,0x0c05,vcb_7973eb10}, + {0xb720b682,0x0c05,vcb_b720b682}, + {0xd8220d13,0x0c05,vcb_d8220d13}, + {0x0e05b915,0x16c0,vcb_0e05b915}, + {0xc55efa16,0x0ddb,vcb_c55efa16}, + {0x3bf54b18,0x0ef8,vcb_3bf54b18}, + {0x6288f31b,0x0eb3,vcb_6288f31b}, + {0x1fdf9e1c,0x0eb3,vcb_1fdf9e1c}, + {0x9f46fc1c,0x0ed4,vcb_9f46fc1c}, + {0x273faa21,0x0eb3,vcb_273faa21}, + {0xf675b121,0x16c0,vcb_f675b121}, + {0x14be1423,0x0ed4,vcb_14be1423}, + {0xd1bf11df,0x0d9c,vcb_d1bf11df}, + {0x3ffea827,0x16c0,vcb_3ffea827}, + {0xb00da327,0x0ef8,vcb_b00da327}, + {0xc4c30a29,0x0ef8,vcb_c4c30a29}, + {0x6b01ef2b,0x102c,vcb_6b01ef2b}, + {0x4f739c2d,0x0bbe,vcb_4f739c2d}, + {0x6c87a72f,0x1081,vcb_6c87a72f}, + {0xf337612f,0x0ebb,vcb_f337612f}, + {0x7d121031,0x0d84,vcb_7d121031}, + {0xcd089432,0x0d24,vcb_cd089432}, + {0x2f8dd637,0x0d25,vcb_2f8dd637}, + {0x6760a9b4,0x0886,vcb_6760a9b4}, + {0xd73c3039,0x0dc8,vcb_d73c3039}, + {0x08474b3b,0x0bbe,vcb_08474b3b}, + {0x2594af3c,0x16c0,vcb_2594af3c}, + {0x2a3a190a,0x0d24,vcb_2a3a190a}, + {0x6d39bf3e,0x0f44,vcb_6d39bf3e}, + {0xb62ad8df,0x0fc6,vcb_b62ad8df}, + {0x90ac8c41,0x16c0,vcb_90ac8c41}, + {0x30efa143,0x0d9c,vcb_30efa143}, + {0x2ba1a444,0x0d84,vcb_2ba1a444}, + {0x4ca44146,0x0eb3,vcb_4ca44146}, + {0x8e53ea46,0x0c75,vcb_8e53ea46}, + {0x3f65b737,0x0a0f,vcb_3f65b737}, + {0xf234b061,0x0d24,vcb_f234b061}, + {0x1f2df74f,0x0eb3,vcb_1f2df74f}, + {0xcb5df64f,0x0eb3,vcb_cb5df64f}, + {0x6b88bd52,0x0ebb,vcb_6b88bd52}, + {0xdddcadec,0x0d84,vcb_dddcadec}, + {0x571c7954,0x0ed7,vcb_571c7954}, + {0xad11d38d,0x0d9c,vcb_ad11d38d}, + {0x961f2e55,0x102c,vcb_961f2e55}, + {0x8da25e57,0x0a0f,vcb_8da25e57}, + {0xb370dc94,0x0d24,vcb_b370dc94}, + {0x988e56d5,0x0d9c,vcb_988e56d5}, + {0x434d925c,0x16c0,vcb_434d925c}, + {0x76c75260,0x0eb3,vcb_76c75260}, + {0x796c4262,0x0ef8,vcb_796c4262}, + {0x3f2e053b,0x0d24,vcb_3f2e053b}, + {0x9650d164,0x1081,vcb_9650d164}, + {0xb7946790,0x0eb3,vcb_b7946790}, + {0x0f2f7d68,0x1488,vcb_0f2f7d68}, + {0xa68da568,0x102c,vcb_a68da568}, + {0xf13ee569,0x0eb3,vcb_f13ee569}, + {0xad60cd6a,0x0d25,vcb_ad60cd6a}, + {0x84ca616c,0x0c05,vcb_84ca616c}, + {0x4dec603d,0x0eb8,vcb_4dec603d}, + {0x35a86f68,0x0c05,vcb_35a86f68}, + {0xf20a3571,0x0c05,vcb_f20a3571}, + {0x68dc8475,0x16c0,vcb_68dc8475}, + {0x7bab8576,0x0d9c,vcb_7bab8576}, + {0x89803b76,0x0d9c,vcb_89803b76}, + {0x3f4f6b79,0x0eb3,vcb_3f4f6b79}, + {0x20591e7a,0x1081,vcb_20591e7a}, + {0x7d6d597b,0x102c,vcb_7d6d597b}, + {0x64d54a7c,0x0a0f,vcb_64d54a7c}, + {0xbf3afb7c,0x1488,vcb_bf3afb7c}, + {0x4218067e,0x0eb3,vcb_4218067e}, + {0x7913ed7f,0x1488,vcb_7913ed7f}, + {0xc2ea917f,0x102c,vcb_c2ea917f}, + {0xf2781a42,0x102c,vcb_f2781a42}, + {0x64bd4583,0x0eb3,vcb_64bd4583}, + {0x19ea2884,0x0eb3,vcb_19ea2884}, + {0x9e8a1a84,0x0d25,vcb_9e8a1a84}, + {0x28f00387,0x0d9c,vcb_28f00387}, + {0x84d3ac87,0x0c75,vcb_84d3ac87}, + {0x82d3098a,0x0ed4,vcb_82d3098a}, + {0xb6b3868b,0x0ef8,vcb_b6b3868b}, + {0x704fb87e,0x0bbe,vcb_704fb87e}, + {0x8d00698d,0x0fb4,vcb_8d00698d}, + {0x55780f8f,0x0ed4,vcb_55780f8f}, + {0x6d1cdf90,0x102c,vcb_6d1cdf90}, + {0x7c8d7518,0x0ef8,vcb_7c8d7518}, + {0x5949b893,0x0a50,vcb_5949b893}, + {0x84199294,0x0bbe,vcb_84199294}, + {0x61f44196,0x0d84,vcb_61f44196}, + {0xcac30a97,0x0eb3,vcb_cac30a97}, + {0x3f0c8399,0x16c0,vcb_3f0c8399}, + {0x39e4f39a,0x09aa,vcb_39e4f39a}, + {0x90021eee,0x102c,vcb_90021eee}, + {0xe3a83899,0x0eb8,vcb_e3a83899}, + {0x4d3abd9e,0x0eb3,vcb_4d3abd9e}, + {0x41e240a0,0x0c75,vcb_41e240a0}, + {0x203c9fa1,0x0d9c,vcb_203c9fa1}, + {0x6e53e4a3,0x0ed4,vcb_6e53e4a3}, + {0x910d8ea5,0x0bbe,vcb_910d8ea5}, + {0x29d547a7,0x0ebb,vcb_29d547a7}, + {0xb6f8f21b,0x0eb3,vcb_b6f8f21b}, + {0x690dd8ab,0x0d9c,vcb_690dd8ab}, + {0x632b1fac,0x0bbe,vcb_632b1fac}, + {0xf42a8ff1,0x0ef8,vcb_f42a8ff1}, + {0xc77c8bad,0x16c0,vcb_c77c8bad}, + {0xcbaf9f1c,0x0eb3,vcb_cbaf9f1c}, + {0xbe82e3b1,0x0e63,vcb_be82e3b1}, + {0x977d3546,0x0bbe,vcb_977d3546}, + {0x329e91b4,0x1488,vcb_329e91b4}, + {0xa1a5b6cd,0x16c0,vcb_a1a5b6cd}, + {0x070ba3b6,0x0c05,vcb_070ba3b6}, + {0xd7913109,0x0eb8,vcb_d7913109}, + {0x7de548bb,0x0ed4,vcb_7de548bb}, + {0x6aad13bc,0x0d84,vcb_6aad13bc}, + {0x6a5436bf,0x0dc8,vcb_6a5436bf}, + {0x4c64f0c0,0x0ef8,vcb_4c64f0c0}, + {0x3f7c41c1,0x0ed4,vcb_3f7c41c1}, + {0xe6f41e4a,0x0ed4,vcb_e6f41e4a}, + {0x2a685fc6,0x0d24,vcb_2a685fc6}, + {0x828b17a0,0x1488,vcb_828b17a0}, + {0x355295ca,0x0c75,vcb_355295ca}, + {0x682eafcb,0x16c0,vcb_682eafcb}, + {0x9835fd20,0x0c75,vcb_9835fd20}, + {0x38aa59ce,0x0ef8,vcb_38aa59ce}, + {0x4bb2e8cf,0x0ed4,vcb_4bb2e8cf}, + {0x7244a8d0,0x16c0,vcb_7244a8d0}, + {0xb03f2dd0,0x0eb3,vcb_b03f2dd0}, + {0x8c957fd1,0x0e77,vcb_8c957fd1}, + {0xe0f25222,0x0d25,vcb_e0f25222}, + {0x1751f4d5,0x0c75,vcb_1751f4d5}, + {0x87c121d5,0x102c,vcb_87c121d5}, + {0xd6e0bbd4,0x0ebb,vcb_d6e0bbd4}, + {0x84e079ce,0x0eb3,vcb_84e079ce}, + {0xd84ececf,0x0d24,vcb_d84ececf}, + {0x9f62e5dd,0x0886,vcb_9f62e5dd}, + {0x95f09cdf,0x0d9c,vcb_95f09cdf}, + {0x744ca4d0,0x1488,vcb_744ca4d0}, + {0x3747f5e3,0x0d84,vcb_3747f5e3}, + {0x8a34a0e4,0x16c0,vcb_8a34a0e4}, + {0x696c5fe9,0x0ef8,vcb_696c5fe9}, + {0xc3151226,0x0ed4,vcb_c3151226}, + {0xbec759ec,0x0ef8,vcb_bec759ec}, + {0x782ee3ee,0x0c75,vcb_782ee3ee}, + {0x7fc2bbef,0x1081,vcb_7fc2bbef}, + {0xc04a00f0,0x0ed4,vcb_c04a00f0}, + {0xb352b1f1,0x0ef8,vcb_b352b1f1}, + {0x17e106f5,0x0ed4,vcb_17e106f5}, + {0xcada6a40,0x0d25,vcb_cada6a40}, + {0x59d5bef9,0x16c0,vcb_59d5bef9}, + {0xaf2e687e,0x0ef8,vcb_af2e687e}, + {0xa4f666fc,0x0e63,vcb_a4f666fc}, + {0x1c08a6ff,0x0c75,vcb_1c08a6ff}, }; -#endif/*_FSB_VORBIS_DATA_H_ */ +static const int vcb_list_count = sizeof(vcb_list) / sizeof(vcb_list[0]); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_oor.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_oor.h new file mode 100644 index 000000000..b85614f6a --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_oor.h @@ -0,0 +1,777 @@ +#ifndef _VORBIS_CODEBOOKS_OOR_H_ +#define _VORBIS_CODEBOOKS_OOR_H_ +#include "../../util/vorbis_codebooks.h" + +/** + * Codebooks can be found like this packed in executables or riooor lib + * (with a table of size + offset to binary, ID is just an index to entry N though). + * Bigger .oor use codebooks in file so there aren't many setups. + */ + +/* ******************************************** */ +/* autogenerated */ +/* ******************************************** */ + +static const uint8_t vcb_1[] = { + 0x1F,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x9C,0x73,0x9A,0x31,0x87,0x99,0x62,0x94,0x52,0x89,0x21,0x94,0xDE,0x39,0x68,0x19,0x63,0x94,0x52,0x69,0x29,0xA5,0x5A, + 0x4A,0xA9,0xA1,0x83,0x16,0x6B,0xAB,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xEF,0x1D,0x73,0x94,0x31,0x46,0x95,0x52,0x52,0x4A,0xA9,0x9D,0x73,0x96,0x31,0x47, + 0x15,0x63,0x52,0x4A,0x89,0xA5,0x94,0x56,0x42,0x68,0x21,0x84,0xD6,0x62,0xAB,0xBD,0xF7,0xDE,0x6B,0xEF,0xB5,0xF6,0xDE,0x7B,0xEF,0x99,0x42,0x4C,0x29,0xA4,0x14,0x42, + 0x08,0x4A,0x28,0x1D,0x53,0x8C,0x29,0xA4,0x94,0x42,0x4A,0x4A,0x08,0x25,0x64,0x0E,0x3A,0xC6,0x1C,0x53,0x8C,0x52,0x09,0x3D,0xD6,0x5E,0x6B,0xCC,0xBD,0xB6,0xD8,0x7B, + 0xED,0xA1,0x63,0xCE,0x39,0xE6,0x1C,0x53,0x4C,0x4A,0x68,0x21,0x74,0x0E,0x3A,0xE6,0x9C,0x53,0x4C,0x4A,0x68,0xA9,0x84,0x52,0x42,0x06,0xA1,0x53,0xD0,0x52,0x89,0xAD, + 0xF7,0xDE,0x62,0xEB,0xB9,0xA5,0xDA,0x7B,0xEF,0x81,0xD0,0x90,0x55,0x00,0x00,0x01,0x00,0xC0,0x40,0x10,0x1A,0xB2,0x0A,0x00,0x50,0x00,0x00,0x10,0x8A,0xA1,0x18,0x8A, + 0x02,0x84,0x86,0xAC,0x02,0x00,0x32,0x00,0x00,0x04,0xE0,0x28,0x8E,0xE3,0x38,0x8E,0xE2,0x38,0x92,0x62,0x39,0x16,0x10,0x1A,0xB2,0x0A,0x00,0x00,0x02,0x00,0x10,0x00, + 0x00,0xC0,0x90,0x0C,0x4B,0xB1,0x14,0xCD,0xD1,0x24,0x4D,0xD2,0x2C,0xCF,0x13,0x4D,0xD3,0x37,0x7D,0xD3,0x36,0x6D,0x55,0xD7,0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x75,0x20, + 0x34,0x64,0x15,0x00,0x00,0x01,0x00,0x40,0x40,0xA7,0x19,0xA6,0x1A,0x20,0xC2,0x8C,0x64,0x16,0x08,0x0D,0x59,0x05,0x00,0x20,0x00,0x00,0x00,0x44,0x20,0xC3,0x14,0x03, + 0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x00,0x52,0x24,0x39,0x49,0xA2,0xE4,0xA4,0x94,0x52,0x0E,0x83,0x64,0x31,0x49,0x2A,0xE5,0xA4,0x94,0x52,0x1E,0xC5,0xE4,0x51, + 0x4D,0x32,0x06,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x0A,0x83,0x64,0x39,0x4A,0x2A,0xE5,0xA4,0x94,0x52,0x12,0xA3,0x64,0x31,0x4A,0xAA, + 0xD4,0xA4,0x94,0x52,0x1E,0xE5,0xE4,0x49,0x4D,0x32,0xF6,0xA4,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x16,0xA4,0xE4,0x49,0x4B,0xBA,0x06,0xA5, + 0x94,0x52,0x92,0xA3,0xA4,0x41,0x4B,0x36,0xF5,0xA4,0x94,0x52,0xA2,0x14,0x25,0x4A,0x4E,0xB6,0x27,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x3E,0x28,0xE5,0x83,0x50,0x4A,0x29,0xA5,0x94,0x52,0xAE,0xF6,0xE4,0x5A,0x4F,0x4A,0x29,0xA5,0x94,0x52,0xC6,0x28,0x25,0x7C,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x32,0x82,0xD0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x9C,0x35,0xCA,0xA1,0xE8,0x24,0x3A,0x5F,0x9C,0xA1,0x9C,0x69,0x0A,0x92, + 0x0A,0xA5,0x09,0xDD,0x9B,0xE4,0x28,0x79,0x4E,0x72,0x2B,0x2D,0x37,0xA7,0x9B,0x70,0xCE,0xE9,0xE6,0x94,0x73,0x3E,0x39,0xE7,0x9C,0x20,0x34,0x64,0x15,0x00,0x00,0x08, + 0x00,0x00,0x21,0x84,0x14,0x52,0x48,0x21,0x85,0x14,0x52,0x48,0x21,0x85,0x14,0x62,0x88,0x21,0x86,0x1C,0x72,0xCA,0x29,0xA8,0xA0,0x82,0x4A,0x2A,0xA9,0xA8,0xA2,0x8A, + 0x2A,0xAB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x3A,0xEB,0xA8,0xA3,0xCE,0x42,0x0A,0xA1,0xA4,0xD0,0x42,0x6B,0x35,0xC6,0x1A,0x63,0x6C, + 0xB5,0x37,0x27,0x6D,0xCD,0x51,0x4A,0x27,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x73,0xCE,0x39,0x27,0x08,0x0D,0x59,0x05,0x00,0x80,0x00,0x00,0x10,0x08,0x19,0x64,0x90,0x41, + 0x46,0x19,0x85,0x14,0x62,0x88,0x29,0xA7,0x9C,0x72,0x0A,0x2A,0xA9,0xA4,0x02,0x42,0x43,0x56,0x01,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x44,0xC9,0x74,0x4C,0x47, + 0x74,0x44,0x45,0x74,0x44,0x47,0x74,0x44,0x47,0x74,0x44,0xC7,0x73,0x3C,0xC7,0x93,0x44,0x49,0xB4,0x3C,0x4B,0xD4,0x4C,0xCF,0x14,0x4D,0xD3,0x74,0x55,0xD9,0x95,0x65, + 0x5D,0xB6,0x65,0xDB,0xD5,0x65,0xDD,0xD6,0x65,0xDF,0xF6,0x6D,0xDD,0xB6,0x6D,0x5F,0x37,0x76,0xE3,0x37,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38, + 0x8E,0xE3,0x18,0x82,0xD0,0x90,0x55,0x00,0x00,0x08,0x00,0x00,0x80,0x10,0x42,0x08,0x21,0x85,0x14,0x52,0x48,0x21,0xA5,0x98,0x62,0xCC,0x39,0xE8,0x20,0x84,0x50,0x4A, + 0x20,0x34,0x64,0x15,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x40,0x51,0x1C,0xC5,0x71,0x24,0x47,0x92,0x24,0xC9,0x92,0x2C,0x4B,0xB3,0x34,0x4D,0xD3,0x34,0xCD,0x13, + 0x3D,0xD1,0x33,0x3D,0xD5,0x73,0x45,0x59,0xB4,0x45,0xDB,0x73,0x3D,0x5B,0xB4,0x3D,0xD7,0x53,0x3D,0xD5,0x53,0x45,0xD5,0x54,0x4D,0xD7,0x74,0x55,0xD7,0x75,0x5D,0x57, + 0x75,0x55,0x59,0x95,0x5D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0x19,0x08,0x0D,0x59,0x05,0x00,0x48,0x00,0x00,0xE8,0x48,0x8E, + 0xA4,0x48,0x8A,0xA4,0x48,0x8E,0xE3,0x48,0x8E,0x24,0x01,0xA1,0x21,0xAB,0x00,0x00,0x19,0x00,0x00,0x01,0x00,0x28,0x8A,0xA2,0x38,0x8E,0x23,0x39,0x96,0x64,0x49,0x9A, + 0x24,0x4A,0xA6,0xA5,0x5A,0xAE,0x26,0x7B,0xBA,0xA7,0x8B,0xBA,0xA8,0x03,0xA1,0x21,0xAB,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x18,0xA2,0x21,0x1A, + 0xA2,0x23,0x5A,0xA2,0x26,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28, + 0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0xE7,0x79,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x1E,0x10,0x1A,0xB2,0x0A,0x00,0x90,0x00,0x00,0xD0, + 0x91,0x1C,0xC9,0xB1,0x14,0x4B,0x91,0x14,0x49,0xB1,0x1C,0xCB,0x01,0x42,0x43,0x56,0x01,0x00,0x32,0x00,0x00,0x02,0x00,0x70,0x0C,0xC7,0x90,0x14,0xC9,0xB1,0x2C,0xCB, + 0xD2,0x34,0xCD,0xF3,0x3C,0xCF,0x13,0x3D,0x51,0x14,0x45,0xD1,0x34,0x55,0x53,0x05,0x42,0x43,0x56,0x01,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x50,0x14, + 0xC5,0x72,0x2C,0x47,0x92,0x34,0xC7,0x93,0x44,0x47,0x94,0x44,0x49,0xB4,0x44,0x49,0xD4,0x44,0x4D,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14, + 0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x20,0x34,0x64,0x25,0x00,0x00,0x04, + 0x00,0x40,0x49,0x6A,0xB1,0xB5,0xD6,0x28,0x05,0xA1,0xA4,0x98,0x18,0xC2,0x94,0x93,0x1C,0x31,0x06,0x1D,0xA4,0x5E,0x31,0xE4,0x10,0x93,0x9E,0x39,0x06,0x15,0x93,0x5E, + 0x2A,0x82,0x0C,0x62,0x1E,0x3B,0xC4,0x14,0x93,0x1C,0x08,0x0D,0x59,0x11,0x00,0x44,0x01,0x00,0x00,0xC6,0x20,0xC7,0x10,0x73,0xC8,0x39,0x47,0xA9,0x93,0x14,0x39,0xE7, + 0xA4,0x74,0x94,0x1A,0xE7,0x1C,0xA5,0x8E,0x52,0x47,0x29,0xC5,0x9A,0x62,0xCD,0x28,0x95,0xDA,0x52,0xAC,0x8D,0x73,0x8E,0x52,0x47,0xA9,0xA3,0x94,0x6A,0x2C,0x2D,0x76, + 0xD4,0x52,0xAD,0xA9,0xC6,0x02,0x00,0x00,0x02,0x1C,0x00,0x00,0x02,0x2C,0x84,0x42,0x43,0x56,0x04,0x00,0x51,0x00,0x00,0x84,0x31,0x48,0x29,0xA4,0x14,0x62,0x8A,0x39, + 0xA7,0x98,0x43,0x8A,0x29,0xC7,0x98,0x73,0x88,0x31,0xE6,0x1C,0x73,0x8E,0x39,0xE7,0xA0,0x74,0x52,0x2A,0xE7,0x98,0x74,0x4E,0x4A,0xC4,0x18,0x73,0x8E,0x39,0xA7,0x9C, + 0x73,0x52,0x32,0x27,0x95,0x73,0x4E,0x4A,0x27,0xA1,0x00,0x00,0x80,0x00,0x07,0x00,0x80,0x00,0x0B,0xA1,0xD0,0x90,0x15,0x01,0x40,0x9C,0x00,0x80,0x41,0x92,0x3C,0x4F, + 0xD2,0x34,0x51,0x94,0x34,0x4F,0x14,0x3D,0x53,0x74,0x55,0x4F,0x34,0x55,0xD7,0xF2,0x3C,0xD3,0xF4,0x4C,0x53,0x55,0x3D,0xD1,0x54,0x55,0xD3,0x55,0x65,0xD9,0x54,0x55, + 0x59,0xB6,0x3C,0xCF,0x34,0x3D,0x53,0x54,0x55,0xCF,0x34,0x55,0xD5,0x54,0x55,0x59,0x36,0x55,0x55,0x96,0x45,0x55,0xD5,0x6D,0xD3,0x55,0x75,0xDB,0x74,0x55,0xDD,0x76, + 0x6D,0xD9,0xD7,0x5D,0x59,0x16,0x76,0x51,0x55,0x6D,0xDB,0x54,0x5D,0x5B,0x37,0x55,0xD7,0x16,0x5E,0xD9,0xD6,0x7D,0x59,0xB6,0x75,0x61,0xF2,0x3C,0x55,0xF5,0x4C,0xD3, + 0x75,0x3D,0xD3,0x74,0x5D,0xD5,0x75,0x75,0x5B,0x75,0x5D,0x5B,0xF7,0x4C,0x53,0x76,0x4D,0xD7,0x95,0x65,0xD3,0x75,0x6D,0xDB,0x95,0x65,0x5D,0x57,0x65,0x59,0xF7,0x35, + 0xD3,0x74,0x5D,0xD1,0x55,0x6D,0xD9,0x74,0x5D,0xD9,0x76,0x65,0x57,0xD7,0x5D,0x59,0xF6,0x85,0xD3,0x75,0x75,0xDF,0x95,0x65,0x61,0x57,0x65,0x59,0xF8,0x75,0x5D,0x17, + 0x86,0x59,0xF7,0x8D,0x63,0x74,0x5D,0x5D,0x58,0x65,0xD7,0xF7,0x55,0x59,0xF6,0x8D,0x5B,0xB7,0x7D,0x5F,0xD6,0x75,0xE1,0x98,0x3C,0x4F,0x55,0x3D,0xD3,0x74,0x5D,0xCF, + 0x34,0x5D,0xD7,0x74,0x5D,0x5D,0x57,0x5D,0xD7,0xD6,0x35,0xD3,0x74,0x5D,0xD3,0x75,0x6D,0x5B,0x54,0x5D,0x59,0x76,0x65,0xD9,0xF7,0x5D,0x57,0xD6,0x75,0xCF,0x34,0x5D, + 0xD9,0x74,0x5D,0xD9,0x36,0x5D,0x57,0x96,0x5D,0x59,0xF6,0x7D,0x57,0x96,0x75,0xDD,0x74,0x5D,0xDD,0x57,0x65,0x59,0xF8,0x55,0x57,0x16,0x7E,0x59,0xD7,0x8D,0xE5,0xB6, + 0x6D,0xE1,0x37,0x5D,0x57,0xD7,0x55,0x59,0xD6,0x7D,0x55,0x96,0x75,0x61,0xD6,0x75,0xE3,0xB9,0x75,0x5D,0x18,0x3E,0x55,0xD5,0x7D,0x53,0x76,0x85,0xDF,0x74,0x65,0x5F, + 0xD8,0x7D,0xDD,0x59,0x6E,0xDD,0x37,0x96,0xD1,0x75,0x75,0x61,0x95,0x6D,0xE3,0x58,0x65,0x5B,0x18,0x7E,0xE1,0x58,0x96,0xDD,0x37,0x96,0x67,0x74,0x5D,0xDF,0x57,0x6D, + 0x57,0x18,0x56,0x59,0xF6,0x95,0xDD,0xD7,0x9D,0x65,0xD7,0x75,0x65,0x78,0x6D,0xDB,0x58,0x6E,0x5D,0x57,0x8E,0x59,0xD7,0x8D,0x61,0x38,0x96,0xA7,0xEE,0x0B,0x4F,0x57, + 0xB7,0x85,0x63,0xF6,0x6D,0xE7,0x99,0x7D,0x5D,0x39,0x7E,0x67,0x78,0x96,0x5F,0xF8,0x29,0x9F,0xAA,0xEA,0xBA,0xE9,0xBA,0xC2,0x70,0xBA,0xB2,0xEF,0xCB,0xB6,0x2E,0x0C, + 0xBB,0x2F,0x2C,0xCB,0xE8,0xBA,0xBE,0xB0,0xCA,0xB2,0xF1,0xAB,0xB2,0xEC,0x0B,0xB7,0xEE,0x2B,0xC7,0xEE,0x0B,0xC3,0x31,0xBA,0xAE,0xF0,0xAB,0xB6,0xEC,0xFB,0xAE,0x2D, + 0x0B,0xC7,0xED,0xEB,0xC6,0x32,0x0C,0xC3,0x72,0xBC,0xB6,0xAD,0x0C,0xB3,0xAE,0x0B,0x65,0xDB,0x47,0xF7,0x7D,0xA5,0xEF,0x2B,0x4B,0x57,0xB7,0x95,0x63,0xD6,0x75,0xA5, + 0xED,0xEB,0x94,0x5D,0x18,0x2A,0xC3,0x31,0x54,0x06,0x00,0x00,0x0C,0x38,0x00,0x00,0x04,0x98,0x50,0x06,0x0A,0x0D,0x59,0x11,0x00,0xC4,0x09,0x00,0x30,0x08,0x39,0x87, + 0x98,0x82,0x10,0x29,0x06,0x21,0x84,0x90,0x52,0x08,0x21,0xA5,0x88,0x31,0x08,0x99,0x73,0x52,0x2A,0xE6,0xA0,0x94,0x52,0x52,0x0B,0xA5,0xA4,0x16,0x31,0x06,0xA1,0x72, + 0x4C,0x4A,0xE6,0x9C,0x94,0x50,0x4A,0x4B,0xA5,0x94,0x96,0x42,0x29,0xAD,0x95,0x54,0x62,0x0C,0xA5,0xC4,0xD8,0x5A,0xAB,0x35,0xB5,0x56,0x6B,0x28,0xA5,0xB5,0x50,0x4A, + 0x8C,0xA5,0x94,0x16,0x53,0x6B,0xB5,0xB6,0xD8,0x6A,0x8D,0x18,0x93,0x92,0x39,0x27,0x25,0x73,0x4E,0x4A,0x29,0x25,0xB6,0x52,0x4A,0x6B,0x99,0x73,0x54,0x3A,0x07,0x25, + 0x75,0x10,0x52,0x2A,0x25,0xB5,0x58,0x52,0x8A,0xB5,0x72,0x4E,0x4A,0x06,0x1D,0x95,0x0E,0x42,0x4A,0x25,0x95,0x98,0x4A,0x4A,0x31,0x96,0x54,0x62,0x2C,0x25,0xC5,0x5A, + 0x52,0xAA,0xB1,0xA5,0xD8,0x6A,0x8B,0x31,0xE7,0x50,0x4A,0x8C,0x25,0x95,0x18,0x4B,0x4A,0xB1,0xB6,0x98,0x72,0x6B,0x31,0xD6,0x1C,0x31,0x26,0x21,0x73,0x4E,0x4A,0xE6, + 0x9C,0x94,0x52,0x4A,0x6B,0xA5,0x94,0x16,0x2B,0xE7,0xA4,0x74,0x10,0x52,0xCA,0x1C,0x94,0x54,0x52,0x8A,0xB1,0x94,0x94,0x6A,0xE6,0x9C,0x94,0x0E,0x42,0x4A,0x1D,0x74, + 0x54,0x4A,0x4A,0x31,0x96,0x54,0x62,0x0A,0xA5,0xC4,0x58,0x52,0xAA,0xB1,0x94,0xD4,0x62,0x8C,0x31,0xD7,0x96,0x62,0xCB,0xA1,0xA4,0x18,0x4B,0x4A,0xB1,0x96,0x54,0x62, + 0x6C,0x31,0xE6,0xDC,0x62,0xCA,0xAD,0x93,0x12,0x5B,0x49,0x29,0xC6,0x50,0x52,0x8C,0x31,0xC6,0x9C,0x5B,0x8C,0x39,0x87,0x52,0x62,0x2C,0x29,0xC5,0x5A,0x52,0xAA,0x31, + 0xC6,0x5A,0x73,0x8C,0xB1,0xE6,0x50,0x4A,0x8C,0x25,0x95,0x1A,0x4B,0x4A,0xB1,0xC6,0x1A,0x73,0x6D,0x31,0xD6,0x9C,0x62,0xCC,0x35,0xA5,0x58,0x73,0xAB,0x31,0xE7,0xD8, + 0x72,0xEB,0xB5,0xE6,0xE0,0x53,0x6B,0x35,0xA7,0x98,0x72,0x6D,0x31,0xE6,0x5C,0x6B,0x0B,0xB2,0xE6,0x5C,0x7C,0x27,0x25,0xB6,0x50,0x4A,0x8C,0xA5,0xA4,0x18,0x5B,0x8C, + 0xB5,0xB6,0x18,0x73,0x0E,0xA5,0xC4,0x58,0x52,0xAA,0xB1,0x94,0x14,0x6B,0x8B,0x31,0xE8,0xD6,0x62,0xED,0xA1,0x94,0x18,0x4B,0x4A,0x31,0x96,0x54,0x6A,0x8C,0x31,0xD6, + 0x1C,0x6B,0xCC,0x39,0xC5,0x56,0x6B,0x8B,0xB1,0xD7,0xD4,0x62,0xCE,0x35,0xF7,0x60,0x6C,0xCB,0xB5,0xA7,0x16,0x6B,0x6E,0x31,0xE6,0x9E,0x62,0xCA,0xB5,0xF6,0xDA,0x83, + 0xCD,0xAD,0xB7,0x02,0x00,0x00,0x06,0x1C,0x00,0x00,0x02,0x4C,0x28,0x03,0x85,0x86,0xAC,0x04,0x00,0xA2,0x00,0x00,0x00,0x63,0x18,0x73,0x0E,0x42,0xA3,0x90,0x73,0xCE, + 0x49,0x69,0x90,0x72,0xCE,0x39,0x29,0x99,0x73,0x10,0x42,0x48,0x29,0x73,0x0E,0x42,0x08,0x29,0x75,0xCE,0x49,0x28,0xA9,0xB5,0xCE,0x39,0x08,0x29,0xB5,0x16,0x4A,0x49, + 0xA9,0xB5,0x18,0x43,0x29,0x29,0xB5,0x16,0x63,0x01,0x00,0x00,0x05,0x0E,0x00,0x00,0x01,0x36,0x68,0x4A,0x2C,0x0E,0x50,0x68,0xC8,0x4A,0x00,0x20,0x15,0x00,0xC0,0xE0, + 0x38,0x96,0xE5,0x79,0xA6,0x68,0x9A,0xB6,0xED,0x58,0x92,0xE7,0x89,0xA2,0x69,0xAA,0xAA,0x6D,0x3B,0x92,0xE5,0x79,0xA2,0x68,0x9A,0xAA,0x6A,0xDB,0x9A,0xE7,0x89,0xA2, + 0x69,0xAA,0xAA,0xEB,0xEA,0xBA,0xE6,0x79,0xA2,0x68,0x9A,0xAA,0xEA,0xBA,0xB6,0x2E,0x8A,0xA2,0x69,0xAA,0xAA,0xAB,0xBA,0xAE,0xEE,0x8B,0xA2,0x68,0x9A,0xAA,0xAA,0xAA, + 0xAE,0xAB,0xEB,0xA6,0x69,0xAA,0xAA,0xAB,0xBA,0xAE,0x2C,0xFB,0xBE,0x69,0x9A,0xAA,0xEA,0xBA,0xAE,0x2B,0xCB,0xBE,0xB0,0xAA,0xAE,0xEB,0xCA,0xB2,0x2D,0xDB,0xB6,0x31, + 0xAC,0xAA,0xEA,0xBA,0xAE,0x2B,0xDB,0xB6,0x6D,0x1C,0xB7,0x6D,0xEB,0xBA,0xEE,0xFB,0xBE,0x30,0x54,0x6E,0xDB,0xD6,0x75,0x5F,0xF8,0x85,0x61,0x58,0x0A,0x00,0x00,0x4F, + 0x70,0x00,0x00,0x2A,0xB0,0x61,0x75,0x84,0x93,0xA2,0xB1,0xC0,0x42,0x43,0x56,0x02,0x00,0x19,0x00,0x00,0x84,0x31,0x08,0x19,0x84,0x10,0x32,0x08,0x21,0x84,0x94,0x52, + 0x0A,0x29,0xA5,0x94,0x00,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xCA,0x40,0xA1,0x21,0x2B,0x02,0x80,0x38,0x01,0x00,0x00,0x21,0x4A,0x21,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0xD4,0x51,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x42,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A, + 0x29,0xA5,0x94,0x52,0x4A,0x1D,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x4A,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x2A, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A, + 0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x00,0x80, + 0x54,0x84,0x03,0x80,0xD4,0x83,0x09,0x65,0xA0,0xD0,0x90,0x95,0x00,0x40,0x2A,0x00,0x00,0x60,0x8C,0x52,0x8C,0x39,0x07,0xA1,0x94,0x86,0x31,0xE7,0x9C,0x83,0x90,0x4A, + 0x4B,0x8D,0x62,0xCE,0x31,0x07,0xA1,0xA4,0x96,0x32,0xE7,0x20,0x94,0x92,0x52,0x4B,0x31,0x66,0xCE,0x41,0x29,0x25,0xA5,0xD6,0x5A,0xCC,0x9C,0x93,0xD2,0x5A,0x6C,0x3D, + 0xC6,0x9A,0x39,0x27,0xA9,0xB5,0xD8,0x62,0xAC,0xB5,0x83,0xD2,0x5A,0x8D,0x3D,0xF7,0xDE,0x73,0x27,0xA5,0xB5,0x1A,0x6B,0xEE,0x3D,0xF7,0x92,0x5A,0xAD,0xB5,0xF6,0xD8, + 0x73,0xEF,0x25,0xB5,0x18,0x73,0xAD,0xB9,0xF7,0x5A,0x63,0x8D,0xB9,0xF7,0x9E,0x73,0xEF,0xBD,0xA7,0x5C,0x7B,0xAF,0xB5,0xE7,0x5E,0x7B,0x2E,0x00,0x00,0xA7,0xC1,0x01, + 0x00,0xF4,0xC0,0x86,0xD5,0x11,0x4E,0x8A,0xC6,0x02,0x0B,0x0D,0x59,0x09,0x00,0xA4,0x02,0x00,0x10,0x08,0x29,0xC5,0x98,0x73,0xCE,0x39,0x87,0x90,0x62,0xCC,0x39,0xE7, + 0x20,0x84,0x10,0x21,0xC4,0x98,0x73,0xCE,0x41,0x08,0xA1,0x62,0x8C,0x39,0xE7,0x20,0x84,0x10,0x42,0xC5,0x98,0x63,0xCE,0x41,0x08,0x21,0x84,0xCE,0x39,0xE7,0x9C,0x83, + 0x10,0x42,0x08,0x9D,0x73,0xCE,0x39,0x07,0x21,0x84,0x10,0x3A,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x74,0x0E,0x42,0x08,0x1D,0x84,0x10,0x42,0xE8,0x20,0x84,0x10,0x42, + 0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0xA1,0x83,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x02,0x00,0x00,0x0B, + 0x1C,0x00,0x00,0x02,0x6C,0x58,0x1D,0xE1,0xA4,0x68,0x2C,0xB0,0xD0,0x90,0x95,0x00,0x00,0x10,0x00,0x00,0xC2,0xAC,0xE4,0x12,0x8A,0x24,0x90,0x72,0x0C,0x9A,0x69,0x8C, + 0x52,0x8E,0x9A,0x88,0x14,0x62,0x0A,0x9A,0xCA,0x10,0x43,0x4C,0x9A,0xA9,0x98,0x52,0xCA,0x81,0xE8,0x24,0x63,0x08,0x81,0x2A,0xCA,0xC6,0xD0,0x91,0x00,0x00,0x00,0x04, + 0x01,0x00,0x01,0x26,0x80,0xC0,0x00,0x41,0xC1,0x17,0x42,0x40,0x8C,0x01,0x00,0x08,0x42,0x64,0x86,0x48,0x28,0xAC,0x82,0x05,0x06,0x65,0xD0,0xE0,0x30,0x0F,0x00,0x1E, + 0x20,0x22,0x24,0x02,0x80,0xC4,0x04,0x45,0xDA,0xC5,0x05,0x74,0x19,0xE0,0x82,0x2E,0xEE,0x3A,0x10,0x42,0x10,0x82,0x10,0xC4,0xE2,0x00,0x0A,0x48,0xC0,0xC1,0x09,0x37, + 0x3C,0xF1,0x86,0x27,0xDC,0xE0,0x04,0x9D,0xA2,0x52,0x07,0x01,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x0F,0x00,0x00,0x07,0x05,0x10,0x11,0xD1,0x5C,0x85,0xC5,0x05,0x46, + 0x86,0xC6,0x06,0x47,0x87,0x47,0x00,0x00,0x00,0x00,0x00,0xB8,0x00,0xC0,0x07,0x00,0xC0,0xF1,0x01,0x44,0x44,0x34,0x57,0x61,0x71,0x81,0x91,0xA1,0xB1,0xC1,0xD1,0xE1, + 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, +}; +static const uint8_t vcb_2[] = { + 0x1F,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x9C,0x73,0x9A,0x31,0x87,0x99,0x62,0x94,0x52,0x89,0x21,0x94,0xDE,0x39,0x68,0x19,0x63,0x94,0x52,0x69,0x29,0xA5,0x5A, + 0x4A,0xA9,0xA1,0x83,0x16,0x6B,0xAB,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xEF,0x1D,0x73,0x94,0x31,0x46,0x95,0x52,0x52,0x4A,0xA9,0x9D,0x73,0x96,0x31,0x47, + 0x15,0x63,0x52,0x4A,0x89,0xA5,0x94,0x56,0x42,0x68,0x21,0x84,0xD6,0x62,0xAB,0xBD,0xF7,0xDE,0x6B,0xEF,0xB5,0xF6,0xDE,0x7B,0xEF,0x99,0x42,0x4C,0x29,0xA4,0x14,0x42, + 0x08,0x4A,0x28,0x1D,0x53,0x8C,0x29,0xA4,0x94,0x42,0x4A,0x4A,0x08,0x25,0x64,0x0E,0x3A,0xC6,0x1C,0x53,0x8C,0x52,0x09,0x3D,0xD6,0x5E,0x6B,0xCC,0xBD,0xB6,0xD8,0x7B, + 0xED,0xA1,0x63,0xCE,0x39,0xE6,0x1C,0x53,0x4C,0x4A,0x68,0x21,0x74,0x0E,0x3A,0xE6,0x9C,0x53,0x4C,0x4A,0x68,0xA9,0x84,0x52,0x42,0x06,0xA1,0x53,0xD0,0x52,0x89,0xAD, + 0xF7,0xDE,0x62,0xEB,0xB9,0xA5,0xDA,0x7B,0xEF,0x81,0xD0,0x90,0x55,0x00,0x00,0x01,0x00,0xC0,0x40,0x10,0x1A,0xB2,0x0A,0x00,0x50,0x00,0x00,0x10,0x8A,0xA1,0x18,0x8A, + 0x02,0x84,0x86,0xAC,0x02,0x00,0x32,0x00,0x00,0x04,0xE0,0x28,0x8E,0xE3,0x38,0x8E,0xE2,0x38,0x92,0x62,0x39,0x16,0x10,0x1A,0xB2,0x0A,0x00,0x00,0x02,0x00,0x10,0x00, + 0x00,0xC0,0x90,0x0C,0x4B,0xB1,0x14,0xCD,0xD1,0x24,0x4D,0xD2,0x2C,0xCF,0x13,0x4D,0xD3,0x37,0x7D,0xD3,0x36,0x6D,0x55,0xD7,0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x75,0x20, + 0x34,0x64,0x15,0x00,0x00,0x01,0x00,0x40,0x40,0xA7,0x19,0xA6,0x1A,0x20,0xC2,0x8C,0x64,0x16,0x08,0x0D,0x59,0x05,0x00,0x20,0x00,0x00,0x00,0x44,0x20,0xC3,0x14,0x03, + 0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x00,0x52,0x24,0x39,0x49,0xA2,0xE4,0xA4,0x94,0x52,0x0E,0x83,0x64,0x31,0x49,0x2A,0xE5,0xA4,0x94,0x52,0x1E,0xC5,0xE4,0x51, + 0x4D,0x32,0x06,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x0A,0x83,0x64,0x39,0x4A,0x2A,0xE5,0xA4,0x94,0x52,0x12,0xA3,0x64,0x31,0x4A,0xAA, + 0xD4,0xA4,0x94,0x52,0x1E,0xE5,0xE4,0x49,0x4D,0x32,0xF6,0xA4,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x16,0xA4,0xE4,0x49,0x4B,0xBA,0x06,0xA5, + 0x94,0x52,0x92,0xA3,0xA4,0x41,0x4B,0x36,0xF5,0xA4,0x94,0x52,0xA2,0x14,0x25,0x4A,0x4E,0xB6,0x27,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x3E,0x28,0xE5,0x83,0x50,0x4A,0x29,0xA5,0x94,0x52,0xAE,0xF6,0xE4,0x5A,0x4F,0x4A,0x29,0xA5,0x94,0x52,0xC6,0x28,0x25,0x7C,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x32,0x82,0xD0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x9C,0x35,0xCA,0xA1,0xE8,0x24,0x3A,0x5F,0x9C,0xA1,0x9C,0x69,0x0A,0x92, + 0x0A,0xA5,0x09,0xDD,0x9B,0xE4,0x28,0x79,0x4E,0x72,0x2B,0x2D,0x37,0xA7,0x9B,0x70,0xCE,0xE9,0xE6,0x94,0x73,0x3E,0x39,0xE7,0x9C,0x20,0x34,0x64,0x15,0x00,0x00,0x08, + 0x00,0x00,0x21,0x84,0x14,0x52,0x48,0x21,0x85,0x14,0x52,0x48,0x21,0x85,0x14,0x62,0x88,0x21,0x86,0x1C,0x72,0xCA,0x29,0xA8,0xA0,0x82,0x4A,0x2A,0xA9,0xA8,0xA2,0x8A, + 0x2A,0xAB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x3A,0xEB,0xA8,0xA3,0xCE,0x42,0x0A,0xA1,0xA4,0xD0,0x42,0x6B,0x35,0xC6,0x1A,0x63,0x6C, + 0xB5,0x37,0x27,0x6D,0xCD,0x51,0x4A,0x27,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x73,0xCE,0x39,0x27,0x08,0x0D,0x59,0x05,0x00,0x80,0x00,0x00,0x10,0x08,0x19,0x64,0x90,0x41, + 0x46,0x19,0x85,0x14,0x62,0x88,0x29,0xA7,0x9C,0x72,0x0A,0x2A,0xA9,0xA4,0x02,0x42,0x43,0x56,0x01,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x44,0xC9,0x74,0x4C,0x47, + 0x74,0x44,0x45,0x74,0x44,0x47,0x74,0x44,0x47,0x74,0x44,0xC7,0x73,0x3C,0xC7,0x93,0x44,0x49,0xB4,0x3C,0x4B,0xD4,0x4C,0xCF,0x14,0x4D,0xD3,0x74,0x55,0xD9,0x95,0x65, + 0x5D,0xB6,0x65,0xDB,0xD5,0x65,0xDD,0xD6,0x65,0xDF,0xF6,0x6D,0xDD,0xB6,0x6D,0x5F,0x37,0x76,0xE3,0x37,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38, + 0x8E,0xE3,0x18,0x82,0xD0,0x90,0x55,0x00,0x00,0x08,0x00,0x00,0x80,0x10,0x42,0x08,0x21,0x85,0x14,0x52,0x48,0x21,0xA5,0x98,0x62,0xCC,0x39,0xE8,0x20,0x84,0x50,0x4A, + 0x20,0x34,0x64,0x15,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x40,0x51,0x1C,0xC5,0x71,0x24,0x47,0x92,0x24,0xC9,0x92,0x2C,0x4B,0xB3,0x34,0x4D,0xD3,0x34,0xCD,0x13, + 0x3D,0xD1,0x33,0x3D,0xD5,0x73,0x45,0x59,0xB4,0x45,0xDB,0x73,0x3D,0x5B,0xB4,0x3D,0xD7,0x53,0x3D,0xD5,0x53,0x45,0xD5,0x54,0x4D,0xD7,0x74,0x55,0xD7,0x75,0x5D,0x57, + 0x75,0x55,0x59,0x95,0x5D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0x19,0x08,0x0D,0x59,0x05,0x00,0x48,0x00,0x00,0xE8,0x48,0x8E, + 0xA4,0x48,0x8A,0xA4,0x48,0x8E,0xE3,0x48,0x8E,0x24,0x01,0xA1,0x21,0xAB,0x00,0x00,0x19,0x00,0x00,0x01,0x00,0x28,0x8A,0xA2,0x38,0x8E,0x23,0x39,0x96,0x64,0x49,0x9A, + 0x24,0x4A,0xA6,0xA5,0x5A,0xAE,0x26,0x7B,0xBA,0xA7,0x8B,0xBA,0xA8,0x03,0xA1,0x21,0xAB,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x18,0xA2,0x21,0x1A, + 0xA2,0x23,0x5A,0xA2,0x26,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28, + 0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0xE7,0x79,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x1E,0x10,0x1A,0xB2,0x0A,0x00,0x90,0x00,0x00,0xD0, + 0x91,0x1C,0xC9,0xB1,0x14,0x4B,0x91,0x14,0x49,0xB1,0x1C,0xCB,0x01,0x42,0x43,0x56,0x01,0x00,0x32,0x00,0x00,0x02,0x00,0x70,0x0C,0xC7,0x90,0x14,0xC9,0xB1,0x2C,0xCB, + 0xD2,0x34,0xCD,0xF3,0x3C,0xCF,0x13,0x3D,0x51,0x14,0x45,0xD1,0x34,0x55,0x53,0x05,0x42,0x43,0x56,0x01,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x50,0x14, + 0xC5,0x72,0x2C,0x47,0x92,0x34,0xC7,0x93,0x44,0x47,0x94,0x44,0x49,0xB4,0x44,0x49,0xD4,0x44,0x4D,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14, + 0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x20,0x34,0x64,0x25,0x00,0x00,0x04, + 0x00,0x80,0x59,0xAB,0x3D,0xB6,0x5C,0x41,0x89,0x29,0xB5,0xD6,0x20,0xE4,0x10,0x83,0x56,0x31,0x27,0x1D,0xA4,0x1E,0x21,0xC3,0x0C,0x62,0x5C,0x21,0xE4,0x10,0x52,0xDC, + 0x31,0xC3,0x88,0x41,0x9E,0x53,0xE5,0x90,0x72,0x1E,0x08,0x0D,0x59,0x11,0x00,0x44,0x01,0x00,0x00,0xC6,0x20,0xC7,0x10,0x73,0xC8,0x39,0x47,0xA9,0x93,0x14,0x39,0xE7, + 0xA8,0x74,0x94,0x1A,0xE7,0x1C,0xA5,0x8E,0x52,0x47,0x29,0xC5,0x9A,0x62,0xED,0x28,0x95,0x9A,0x52,0xAC,0x8D,0x73,0x8E,0x52,0x47,0x29,0xA3,0x94,0x6A,0x2C,0x2D,0x76, + 0x94,0x52,0xAD,0xA9,0xC6,0x02,0x00,0x00,0x02,0x1C,0x00,0x00,0x02,0x2C,0x84,0x42,0x43,0x56,0x04,0x00,0x51,0x00,0x00,0x04,0x42,0x48,0x29,0xA4,0x14,0x52,0x8A,0x39, + 0xA7,0x98,0x43,0x4A,0x29,0xC7,0x98,0x73,0x48,0x29,0xE6,0x9C,0x72,0x8E,0x39,0xE7,0xA0,0x74,0x10,0x2A,0xE7,0x18,0x74,0x0E,0x4A,0xA4,0x94,0x72,0x8E,0x39,0xA7,0x9C, + 0x73,0x12,0x32,0x07,0x99,0x73,0x0E,0x42,0x27,0xA1,0x00,0x00,0x80,0x00,0x07,0x00,0x80,0x00,0x0B,0xA1,0xD0,0x90,0x15,0x01,0x40,0x9C,0x00,0x80,0x43,0x72,0x34,0x4D, + 0xD2,0x34,0xD1,0x93,0x34,0xCD,0x13,0x3D,0x51,0x54,0x55,0x4F,0x14,0x55,0x55,0xD2,0x34,0xD3,0xD4,0x44,0x51,0x35,0x35,0x51,0x34,0x4D,0x51,0x35,0x65,0x57,0x34,0x4D, + 0x57,0x96,0x34,0xCD,0x14,0x35,0x51,0x54,0x4D,0x4D,0x14,0x4D,0x55,0x34,0x4D,0xD7,0x35,0x4D,0xD5,0x95,0x3D,0xD3,0xB4,0x65,0x51,0x55,0x75,0x59,0x54,0x55,0x5D,0x76, + 0x6D,0xD7,0xB7,0x5D,0xD9,0xD5,0x6D,0xCF,0x34,0x65,0x5B,0x54,0x55,0xD9,0x36,0x55,0x55,0xD6,0x5D,0x57,0xB6,0x75,0x57,0xB6,0x6D,0x5F,0xD2,0x34,0xD3,0xD4,0x44,0x51, + 0x55,0x35,0x51,0x54,0x5D,0x53,0x55,0x6D,0xDB,0x54,0x55,0xDB,0xD6,0x44,0xD1,0x75,0x45,0x55,0x95,0x5D,0x51,0x55,0x65,0xD9,0x75,0x5D,0xDB,0x56,0x5D,0x59,0xD7,0x35, + 0x51,0x74,0x55,0x51,0x35,0x5D,0x57,0x54,0x55,0x57,0x56,0x5D,0xD5,0xB6,0x55,0xD7,0xD5,0x7D,0x51,0x55,0x75,0x5D,0x75,0x5D,0x5F,0x37,0x5D,0xD7,0xD7,0x6D,0x5D,0x17, + 0x7E,0xD9,0xB6,0x85,0x61,0x54,0x55,0x5B,0x37,0x5D,0x55,0xD7,0x4D,0xD7,0xD5,0x85,0xD9,0x96,0x7D,0x5D,0xB6,0x75,0x61,0x98,0x34,0xCD,0x34,0x35,0x51,0x74,0x55,0x4D, + 0x14,0x55,0xD7,0x54,0x55,0xDB,0x36,0x55,0x55,0xB6,0x35,0x51,0x54,0x5D,0x51,0x55,0x65,0x59,0x34,0x55,0xD7,0x55,0x5D,0x57,0xD7,0x55,0xD7,0x95,0x6D,0xCD,0x14,0x5D, + 0x57,0x54,0x55,0x59,0x16,0x55,0xD5,0x75,0x55,0xD7,0xF5,0x75,0xD5,0x75,0x6D,0x5B,0x54,0x55,0xDD,0x36,0x5D,0xD7,0xD7,0x4D,0xD5,0xD5,0x75,0xD9,0xB6,0x85,0x63,0x96, + 0x6D,0xDD,0x17,0x55,0x55,0xF7,0x4D,0xD7,0xD5,0x75,0xD5,0x75,0x6D,0x61,0xB6,0x6D,0x61,0xB8,0x6D,0xDB,0x37,0x36,0xD3,0xB4,0x75,0xD3,0x75,0x7D,0xDD,0x54,0x5D,0xDF, + 0xB7,0x7D,0xDD,0x18,0x66,0xDD,0x16,0x96,0x51,0x75,0x7D,0x5D,0x95,0x65,0xE1,0x37,0x65,0xD9,0xF7,0x75,0xDF,0x17,0x96,0x59,0xD7,0x85,0xE1,0x53,0x55,0x5D,0x37,0x65, + 0xD5,0xF7,0x4D,0x59,0xF6,0x85,0xDB,0xD7,0x8D,0x65,0xD6,0x75,0x61,0x78,0x6D,0xDB,0x38,0x66,0x5B,0x37,0x96,0xD7,0xD6,0x85,0xE3,0x37,0x8E,0xA5,0xAD,0xFB,0xC6,0xB1, + 0xDA,0xB2,0x70,0xBC,0xBE,0xAD,0x2C,0xAF,0x6E,0x33,0x76,0xE1,0x37,0x86,0x5B,0xF8,0x8D,0x63,0x33,0x4D,0xDD,0x36,0x5D,0xD5,0xF7,0x4D,0xD5,0xF5,0x7D,0x59,0xB7,0x95, + 0xE3,0xD6,0x7D,0xE3,0xF8,0x54,0x55,0xD7,0x4D,0xD9,0x15,0x7E,0xD3,0x95,0x7D,0xE1,0xB6,0x75,0xE5,0xB8,0x75,0xDF,0x28,0xAA,0xAA,0xAF,0xAB,0xB2,0xAB,0xFB,0xAA,0x2C, + 0xFB,0xBE,0xAD,0xDB,0x84,0xDD,0xF7,0x95,0x63,0xB5,0x6D,0x63,0x78,0x6D,0x5D,0x18,0x5E,0x59,0x27,0xDC,0xBA,0x6F,0x0C,0xBF,0x70,0x0C,0xCB,0x6A,0xCB,0xC2,0xF2,0xEA, + 0xB6,0xB1,0xCC,0xBE,0x4D,0xB9,0x85,0x9D,0xB1,0x1B,0x3F,0x02,0x00,0x00,0x06,0x1C,0x00,0x00,0x02,0x4C,0x28,0x03,0x85,0x86,0xAC,0x08,0x00,0xE2,0x04,0x00,0x18,0x84, + 0x9C,0x53,0x4C,0x41,0xA8,0x14,0x83,0x10,0x42,0x48,0x29,0x84,0x90,0x52,0xC5,0x18,0x84,0xCC,0x39,0x29,0x15,0x73,0x50,0x4A,0x29,0xA9,0x85,0x50,0x52,0xAB,0x18,0x83, + 0x50,0x39,0x26,0x21,0x73,0x4E,0x4A,0x28,0xA1,0xA5,0x52,0x4A,0x4B,0xA1,0x94,0xD6,0x4A,0x29,0xB1,0x85,0x52,0x5A,0x6B,0xAD,0xD5,0x9A,0x5A,0x8B,0x35,0x94,0xD2,0x5A, + 0x28,0x25,0xB6,0x52,0x4A,0x8B,0xAD,0xB5,0x1A,0x5B,0x6B,0xB5,0x46,0x8C,0x41,0xC8,0x1C,0x93,0x92,0x31,0x27,0xA5,0x94,0xD2,0x5A,0x29,0xA5,0xB5,0xCC,0x39,0x29,0x9D, + 0x83,0x92,0x3A,0xE7,0x28,0x95,0x92,0x52,0x2C,0x29,0xB5,0x58,0x31,0x26,0x25,0x73,0x8E,0x4A,0xE7,0x20,0xA5,0x92,0x4A,0x4C,0x25,0xA5,0xD8,0x4A,0x2A,0xB1,0x95,0x92, + 0x62,0x2C,0x29,0xC5,0xD8,0x52,0x6C,0xB5,0xC5,0x98,0x73,0x28,0xA5,0xC5,0x92,0x4A,0x8C,0x25,0xA5,0x58,0x5B,0x4C,0xB5,0xB5,0x18,0x6B,0x8E,0x18,0x83,0x92,0x39,0x26, + 0x25,0x63,0x4E,0x4A,0x29,0xA5,0xB5,0x52,0x4A,0x6B,0x15,0x63,0x52,0x3A,0xE8,0x28,0x65,0xCE,0x49,0x2A,0x29,0xB5,0x58,0x4A,0x4A,0x31,0x73,0x4E,0x4A,0xE7,0x1C,0xA5, + 0x0E,0x3A,0x2A,0x25,0x95,0xD8,0x4A,0x2A,0xB1,0x85,0x52,0x62,0x2B,0x29,0xC5,0x18,0x4A,0x69,0x31,0xC6,0x98,0x6B,0x4B,0xB1,0xE5,0x52,0x52,0x8B,0x25,0xA5,0x18,0x4B, + 0x2A,0x31,0xB6,0x18,0x73,0x6E,0x31,0xD5,0xD6,0x49,0x68,0x2D,0x94,0x12,0x63,0x28,0x25,0xC6,0x18,0x63,0xCD,0xAD,0xB5,0x5A,0x43,0x29,0xB1,0x95,0x94,0x62,0x2C,0x29, + 0xC5,0x16,0x63,0xAD,0xBD,0xC5,0x98,0x6B,0x28,0x25,0xC6,0x92,0x4A,0x8C,0x25,0xA5,0x18,0x63,0x6D,0xB9,0xB6,0x18,0x6B,0x6E,0xAD,0xD5,0x9A,0x5A,0xAB,0xB9,0xC5,0x98, + 0x6B,0x6D,0xB9,0xF5,0x5A,0x73,0xF0,0xA9,0xB5,0x5A,0x53,0x4B,0xB9,0xB6,0x18,0x73,0x8E,0xB5,0xF5,0x58,0x6B,0x0E,0xBE,0x93,0xD2,0x5A,0x28,0x25,0xB6,0x52,0x4A,0x8C, + 0x2D,0xB6,0x5A,0x5B,0x8C,0xB9,0x86,0x52,0x62,0x2C,0x29,0xC5,0x58,0x4A,0x6A,0x31,0xC6,0x98,0x73,0x6B,0xB1,0xE6,0x50,0x4A,0x8B,0x25,0xA5,0x16,0x4B,0x2A,0x31,0xB6, + 0x18,0x6B,0x8E,0x35,0xE6,0x9A,0x5A,0xCB,0xB5,0xC5,0x98,0x6B,0x6A,0xAD,0xE6,0x5A,0x6B,0xD0,0xB1,0xE5,0xD8,0x5B,0x6B,0x35,0xB7,0x18,0x6B,0x4E,0xAD,0xE5,0x5A,0x73, + 0xED,0x41,0xE6,0xD6,0x5B,0x01,0x00,0x00,0x03,0x0E,0x00,0x00,0x01,0x26,0x94,0x81,0x42,0x43,0x56,0x02,0x00,0x51,0x00,0x00,0x80,0x31,0x8C,0x39,0x27,0xA5,0x51,0xC8, + 0x39,0xE7,0xA4,0x34,0x48,0x39,0xE7,0x9C,0x94,0xCC,0x31,0x08,0x21,0xA4,0x94,0x39,0x07,0x21,0x84,0x94,0x3A,0xE7,0x20,0x94,0xD4,0x5A,0xE7,0x20,0x84,0x52,0x5A,0x2B, + 0xA5,0xA4,0xD4,0x5A,0x8C,0xA5,0x94,0x94,0x5A,0x8B,0xB1,0x00,0x00,0x80,0x02,0x07,0x00,0x80,0x00,0x1B,0x34,0x25,0x16,0x07,0x28,0x34,0x64,0x25,0x00,0x90,0x0A,0x00, + 0x60,0x70,0x1C,0x4D,0x13,0x3D,0x53,0x54,0x4D,0x5B,0x76,0x24,0xC9,0xF3,0x44,0x51,0x55,0x55,0xD5,0xB6,0x1D,0x49,0xF2,0x3C,0x51,0x34,0x55,0x55,0xB5,0x6D,0xCD,0xF3, + 0x44,0x51,0x35,0x55,0xD5,0x75,0x7D,0x5D,0xF3,0x3C,0x51,0x34,0x55,0x55,0x75,0x5D,0x5D,0x17,0x4D,0x53,0x55,0x55,0xD5,0x75,0x65,0xD9,0xF7,0x45,0xD3,0x54,0x55,0x55, + 0x75,0x5D,0x57,0xF6,0x75,0x53,0x55,0x55,0xD5,0x75,0x65,0x59,0x96,0x7D,0xE1,0x54,0x55,0x55,0x75,0x5D,0xD7,0x95,0x6D,0xDF,0x57,0x5D,0xD7,0x75,0x65,0xD9,0xB6,0x6D, + 0xDD,0x18,0x56,0xD7,0x75,0x5D,0x59,0x96,0x6D,0x5B,0x37,0x8E,0xDD,0xD6,0x75,0xDD,0xF7,0x85,0xE1,0x18,0x9E,0xE7,0xD6,0x75,0x5D,0xF7,0x85,0xE1,0x37,0x2A,0x05,0x00, + 0x80,0x27,0x38,0x00,0x00,0x15,0xD8,0xB0,0x3A,0xC2,0x49,0xD1,0x58,0x60,0xA1,0x21,0x2B,0x01,0x80,0x0C,0x00,0x00,0xC2,0x18,0x84,0x0C,0x42,0x0A,0x19,0x84,0x90,0x42, + 0x0A,0x29,0x85,0x90,0x52,0x4A,0x00,0x00,0xC0,0x80,0x03,0x00,0x40,0x80,0x09,0x65,0xA0,0xD0,0x90,0x95,0x00,0x40,0x0C,0x00,0x00,0x40,0x08,0x84,0x10,0x22,0xC6,0x20, + 0x84,0x10,0x29,0xE5,0x9C,0x73,0xCE,0x39,0xE7,0x9C,0x73,0xCE,0x39,0xE7,0x9C,0x73,0xCE,0x39,0xE7,0x9C,0x73,0xCE,0x39,0x27,0x00,0x60,0x3F,0xC2,0x01,0x40,0xEA,0xC1, + 0xC4,0xC4,0x14,0x16,0x1A,0xB2,0x12,0x00,0x48,0x05,0x00,0x00,0x8C,0x51,0x4A,0x31,0xE7,0x20,0xA4,0xD2,0x30,0xE6,0x9C,0x73,0x10,0x52,0x69,0xA9,0x51,0xCC,0x39,0xE7, + 0xA4,0x94,0xD4,0x52,0xE6,0x1C,0x84,0x52,0x52,0x6A,0x2D,0xC6,0xCC,0x39,0x08,0xA5,0xA4,0xD4,0x5A,0x8C,0x99,0x73,0x52,0x62,0x8B,0xB1,0xC7,0x58,0x33,0xE7,0x24,0xB5, + 0x16,0x63,0xAD,0xB5,0x76,0x52,0x62,0x8B,0xB1,0xD7,0x9C,0x7B,0xEE,0x24,0xB5,0x18,0x63,0xEC,0xB9,0xF7,0x5A,0x5A,0xAC,0x39,0xD7,0x5A,0x73,0xCF,0xBD,0xA4,0x16,0x63, + 0xCE,0xBD,0xF7,0xDA,0x7B,0x8B,0x31,0xD7,0x5C,0x73,0xAE,0xB9,0xF7,0x54,0x6B,0xAE,0x3D,0xF7,0x9A,0x7B,0xCD,0x05,0x00,0xE0,0x34,0x38,0x00,0x80,0x1E,0xD8,0xB0,0x3A, + 0xC2,0x49,0xD1,0x58,0x60,0xA1,0x21,0x2B,0x01,0x80,0x54,0x00,0x00,0x02,0x21,0xA5,0x18,0x73,0xCE,0x39,0xE7,0x90,0x52,0x8A,0x39,0xE6,0x9C,0x83,0x10,0x22,0xA5,0x18, + 0x73,0xCE,0x39,0xE7,0x1C,0x54,0x8C,0x31,0xE6,0x9C,0x83,0x10,0x42,0xA8,0x18,0x63,0xCC,0x39,0x08,0x21,0x84,0x90,0x39,0xE7,0x9C,0x73,0xD0,0x41,0x08,0x21,0x73,0xCE, + 0x39,0xE7,0x20,0x84,0x10,0x42,0xE7,0x20,0x84,0x0E,0x42,0x08,0x21,0x84,0xCE,0x39,0x08,0xA1,0x83,0x10,0x42,0x08,0x1D,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x3A,0x08, + 0x21,0x84,0x10,0x42,0x08,0x21,0x74,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x50,0x00,0x00,0x60,0x81,0x03,0x00,0x40,0x80,0x0D, + 0xAB,0x23,0x9C,0x14,0x8D,0x05,0x16,0x1A,0xB2,0x12,0x00,0x00,0x02,0x00,0x60,0x1C,0xA6,0x9A,0x4A,0xAD,0x08,0x52,0x8E,0x41,0x6D,0x0D,0x51,0x88,0x49,0x51,0x95,0x52, + 0x4A,0x39,0x8F,0x99,0x51,0x46,0x41,0x52,0x95,0x42,0x08,0x31,0x2F,0x1D,0x64,0x50,0x19,0x4B,0xBD,0x28,0x63,0x32,0x0A,0x00,0x00,0x80,0x20,0x00,0x20,0xC0,0x04,0x10, + 0x18,0x20,0x28,0xF8,0x42,0x08,0x88,0x31,0x00,0x00,0x41,0x88,0xCC,0x10,0x09,0x85,0x55,0xB0,0xC0,0xA0,0x0C,0x1A,0x1C,0xE6,0x01,0xC0,0x03,0x44,0x84,0x44,0x00,0x90, + 0x98,0xA0,0x48,0xBB,0xB8,0x80,0x2E,0x03,0x5C,0xD0,0xC5,0x5D,0x07,0x42,0x08,0x42,0x10,0x82,0x58,0x1C,0x40,0x01,0x09,0x38,0x38,0xE1,0x86,0x27,0xDE,0xF0,0x84,0x1B, + 0x9C,0xA0,0x53,0x54,0xEA,0x20,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0xE0,0x01,0x00,0xE0,0xA0,0x00,0x22,0x22,0x9A,0xAB,0xB0,0xB8,0xC0,0xC8,0xD0,0xD8,0xE0,0xE8,0xF0, + 0x08,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0xF8,0x00,0x00,0x38,0x3E,0x80,0x88,0x88,0xE6,0x2A,0x2C,0x2E,0x30,0x32,0x34,0x36,0x38,0x3A,0x3C,0x02,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x80, +}; +static const uint8_t vcb_3[] = { + 0x24,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x18,0x42,0x10,0x2A,0x05,0xAD,0x63,0x8E,0x3A,0xC8,0x15,0x21,0x8C,0x19,0xA2,0xA0,0x42,0xCA,0x29,0xC7,0x1D,0x42,0xD0, + 0x21,0xA3,0x24,0x43,0x88,0x3A,0xC6,0x35,0xC7,0x18,0x63,0x47,0xB9,0x64,0x8A,0x42,0xC9,0x81,0xD0,0x90,0x55,0x00,0x00,0x40,0x00,0x00,0xA4,0x1C,0x57,0x50,0x72,0x49, + 0x2D,0xE7,0x9C,0x73,0xA3,0x18,0x57,0xCC,0x71,0xE8,0x20,0xE7,0x9C,0x73,0xE5,0x20,0x67,0xCC,0x71,0x09,0x25,0xE7,0x9C,0x73,0x8E,0x39,0xE7,0x92,0x72,0x8E,0x31,0xE7, + 0x9C,0x73,0xA3,0x18,0x57,0x0E,0x72,0x29,0x2D,0xE7,0x9C,0x73,0x81,0x14,0x47,0x8A,0x71,0xA7,0x18,0xE7,0x9C,0x73,0xA4,0x1C,0x47,0x8A,0x71,0xA8,0x18,0xE7,0x9C,0x73, + 0x6D,0x31,0xB7,0x92,0x72,0xCE,0x39,0xE7,0x9C,0x73,0xE6,0x20,0x87,0x52,0x72,0xAE,0x35,0xE7,0x9C,0x73,0xA4,0x18,0x67,0x0E,0x72,0x0B,0x25,0xE7,0x9C,0x73,0xC6,0x20, + 0x67,0xCC,0x71,0xEB,0x20,0xE7,0x9C,0x73,0x8C,0x35,0xB7,0xD4,0x72,0xCE,0x39,0xE7,0x9C,0x73,0xCE,0x39,0xE7,0x9C,0x73,0xCE,0x39,0xE7,0x9C,0x73,0x8C,0x31,0xE7,0x9C, + 0x73,0xCE,0x39,0xE7,0x9C,0x73,0x6E,0x31,0xE7,0x16,0x73,0xAE,0x39,0xE7,0x9C,0x73,0xCE,0x39,0xE7,0x1C,0x73,0xCE,0x39,0xE7,0x9C,0x73,0x20,0x34,0x64,0x15,0x00,0x90, + 0x00,0x00,0xA0,0xA1,0x28,0x8A,0xE2,0x28,0x0E,0x10,0x1A,0xB2,0x0A,0x00,0xC8,0x00,0x00,0x10,0x40,0x71,0x14,0x47,0x91,0x14,0x4B,0xB1,0x1C,0xCB,0xD1,0x24,0x0D,0x08, + 0x0D,0x59,0x05,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0xA0,0x48,0x86,0xA4,0x48,0x8A,0xA5,0x58,0x8E,0x66,0x69,0x9E,0x26,0x7A,0xA2,0x28,0x9A,0xA2,0x2A,0xAB,0xB2,0x69, + 0xCA,0xB2,0x2C,0xCB,0xB2,0xEB,0xBA,0x2E,0x10,0x1A,0xB2,0x0A,0x00,0x48,0x00,0x00,0x50,0x51,0x14,0xC5,0x70,0x14,0x07,0x08,0x0D,0x59,0x05,0x00,0x64,0x00,0x00,0x08, + 0x60,0x28,0x8A,0xA3,0x38,0x8E,0xE4,0x58,0x92,0xA5,0x59,0x9E,0x07,0x84,0x86,0xAC,0x02,0x00,0x80,0x00,0x00,0x04,0x00,0x00,0x50,0x0C,0x47,0xB1,0x14,0x4D,0xF1,0x24, + 0xCF,0xF2,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0x0D,0x08,0x0D,0x59,0x05,0x00,0x20,0x00,0x00,0x00,0x82, + 0x28,0x64,0x18,0x03,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x08,0x21,0x1A,0x19,0x43,0x9D,0x52,0x12,0x5C,0x0A,0x16,0x42,0x1C,0x11,0x43,0x1D,0x42,0xCE,0x43,0xA9, + 0xA5,0x83,0xE0,0x29,0x85,0x25,0x63,0xD2,0x53,0xAC,0x41,0x08,0x21,0x7C,0xEF,0x3D,0xF7,0xDE,0x7B,0xEF,0x81,0xD0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x61,0x14,0x38, + 0x88,0x81,0xC7,0x24,0x08,0x21,0x84,0x62,0x14,0x27,0x44,0x71,0xA6,0x20,0x08,0x21,0x84,0xE5,0x24,0x58,0xCA,0x79,0xE8,0x24,0x08,0xDD,0x83,0x10,0x42,0xB8,0x9C,0x7B, + 0xCB,0xB9,0xF7,0xDE,0x7B,0x20,0x34,0x64,0x15,0x00,0x00,0x08,0x00,0xC0,0x20,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x29,0xA4,0x94,0x52,0x48,0x29,0xA6,0x98, + 0x62,0x8A,0x29,0xC7,0x1C,0x73,0xCC,0x31,0xC7,0x20,0x83,0x0C,0x32,0xE8,0xA0,0x93,0x4E,0x3A,0xC9,0xA4,0x92,0x4E,0x3A,0xCA,0x24,0xA3,0x8E,0x52,0x6B,0x29,0xB5,0x14, + 0x53,0x4C,0xB1,0xE5,0x16,0x63,0xAD,0xB5,0xD6,0x9C,0x73,0xAF,0x41,0x29,0x63,0x8C,0x31,0xC6,0x18,0x63,0x8C,0x31,0xC6,0x18,0x63,0x8C,0x31,0xC6,0x18,0x23,0x08,0x0D, + 0x59,0x05,0x00,0x80,0x00,0x00,0x10,0x06,0x19,0x64,0x90,0x41,0x08,0x21,0x84,0x14,0x52,0x48,0x29,0xA6,0x98,0x72,0xCC,0x31,0xC7,0x1C,0x03,0x42,0x43,0x56,0x01,0x00, + 0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x1C,0x45,0x52,0x24,0x47,0x72,0x24,0x47,0x92,0x24,0xC9,0x92,0x2C,0x49,0x93,0x3C,0xCB,0xB3,0x3C,0xCB,0xB3,0x3C,0x4D,0xD4,0x44, + 0x4D,0x15,0x55,0xD5,0x55,0x6D,0xD7,0xF6,0x6D,0x5F,0xF6,0x6D,0xDF,0xD5,0x65,0xDF,0xF6,0x65,0xDB,0xD5,0x65,0x5D,0x96,0x65,0xDD,0xB5,0x6D,0x5D,0xD6,0x5D,0x5D,0xD7, + 0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x81,0xD0,0x90,0x55,0x00,0x80,0x04,0x00,0x80,0x8E,0xE4,0x38,0x8E,0xE4,0x38,0x8E,0xE4, + 0x48,0x8E,0xA4,0x48,0x0A,0x10,0x1A,0xB2,0x0A,0x00,0x90,0x01,0x00,0x10,0x00,0x80,0xA3,0x38,0x8A,0xE3,0x48,0x8E,0xE4,0x58,0x8E,0x25,0x59,0x92,0x26,0x69,0x96,0x67, + 0x79,0x96,0xA7,0x79,0x9A,0xA8,0x89,0x1E,0x10,0x1A,0xB2,0x0A,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x80,0xA2,0x28,0x8A,0xA3,0x38,0x8E,0x24,0x59,0x96, + 0xA6,0x69,0x9E,0xA7,0x7A,0xA2,0x28,0x9A,0xAA,0xAA,0x8A,0xA6,0xA9,0xAA,0xAA,0x6A,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A, + 0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x02,0xA1,0x21,0xAB,0x00,0x00,0x09,0x00,0x00,0x1D,0xC7,0x71,0x1C,0x47,0x71, + 0x1C,0xC7,0x71,0x24,0x47,0x92,0x24,0x20,0x34,0x64,0x15,0x00,0x20,0x03,0x00,0x20,0x00,0x00,0x43,0x51,0x1C,0x45,0x72,0x2C,0xC7,0x92,0x34,0x4B,0xB3,0x3C,0xCB,0xD3, + 0x44,0xCF,0xF4,0x5C,0x51,0x36,0x75,0x53,0x57,0x6D,0x20,0x34,0x64,0x15,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0x73,0x3C,0xC7,0x73,0x3C,0xC9, + 0x93,0x3C,0xCB,0x73,0x3C,0xC7,0x93,0x3C,0x49,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34, + 0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0xD3,0x34,0x4D,0x03,0x42,0x43,0x56,0x02,0x00,0x64,0x00,0x00,0x1C,0xB5,0x56,0x73, + 0xEF,0xBD,0x87,0x8C,0x39,0x48,0xB1,0xF6,0x1E,0x33,0xA5,0x18,0xB4,0x98,0x7B,0xCE,0x14,0x32,0x4A,0x52,0xED,0xAD,0x63,0x46,0x18,0x26,0xB5,0xA7,0x90,0x21,0x62,0x14, + 0xD4,0x9E,0x4A,0xC8,0x10,0x52,0xD0,0x7B,0x29,0xA1,0x53,0x8A,0x49,0xEF,0x29,0xA5,0x52,0x4A,0xAA,0xBD,0xF7,0x5A,0x63,0xED,0xBD,0xF7,0x1E,0x08,0x0D,0x59,0x11,0x00, + 0x44,0x01,0x00,0x00,0x08,0x21,0xC6,0x10,0x63,0x88,0x31,0x06,0x21,0x83,0x10,0x31,0xC6,0x20,0x64,0x10,0x22,0xC6,0x1C,0x84,0x0C,0x42,0x06,0x21,0x94,0x12,0x4A,0xC9, + 0x20,0x84,0x52,0x42,0x49,0x11,0x73,0x0E,0x42,0x07,0x21,0x83,0x10,0x4A,0x09,0xA1,0x64,0x10,0x42,0x29,0x21,0x95,0x02,0x00,0x00,0x02,0x1C,0x00,0x00,0x02,0x2C,0x84, + 0x42,0x43,0x56,0x04,0x00,0x71,0x02,0x00,0x08,0x42,0xCE,0x21,0xC6,0x20,0x44,0x8C,0x41,0x08,0x25,0xA4,0x14,0x42,0x48,0x29,0x62,0x0C,0x42,0xE6,0x9C,0x94,0xCC,0x39, + 0x29,0xA5,0x94,0xD6,0x42,0x29,0xA9,0x45,0x8C,0x41,0xC8,0x9C,0x93,0x92,0x39,0x27,0x25,0x94,0xD2,0x52,0x29,0xA5,0xB5,0x50,0x4A,0x6B,0x25,0x95,0xD8,0x42,0x29,0xAD, + 0xB5,0xD6,0x6A,0x4D,0xAD,0xC5,0x1A,0x4A,0x69,0x2D,0x94,0xD2,0x5A,0x29,0xA5,0xB5,0xD4,0x5A,0x8D,0x2D,0xB6,0x5A,0x23,0xC6,0x20,0x64,0xCE,0x49,0xC9,0x9C,0x93,0x52, + 0x52,0x69,0xAD,0x94,0xD4,0x5A,0xE6,0x9C,0x94,0x0E,0x42,0x4A,0x1D,0x84,0x94,0x52,0x4A,0x2D,0x96,0x94,0x5A,0xCC,0x9C,0x93,0xD2,0x41,0x47,0xA5,0x83,0x90,0x52,0x49, + 0x25,0xB6,0x92,0x52,0x8C,0x21,0x95,0x18,0x4B,0x4A,0x31,0x96,0x94,0x62,0x6C,0x2D,0xC6,0xDC,0x5A,0xAC,0x39,0x94,0xD2,0x5A,0x49,0x25,0xB6,0x92,0x52,0x8C,0x29,0xA6, + 0x1A,0x5B,0x8C,0x39,0x47,0x8C,0x41,0xC8,0x9C,0x93,0x92,0x39,0x27,0xA5,0x94,0xD2,0x5A,0x29,0xA9,0xB5,0xCC,0x39,0x29,0x1D,0x84,0x94,0x3A,0x07,0x25,0x95,0x94,0x62, + 0x2C,0x25,0xB5,0x98,0x39,0x27,0xA9,0x83,0x90,0x52,0x07,0x21,0xA5,0x92,0x52,0x6C,0x29,0xA5,0xD8,0x42,0x29,0xAD,0x95,0x94,0x62,0x2C,0x25,0xB5,0xD8,0x62,0xCC,0x35, + 0xA5,0xD8,0x6A,0x29,0x29,0xC6,0x92,0x52,0x8C,0x25,0xA5,0x18,0x5B,0x8C,0xB5,0xB6,0xD8,0x6A,0xEC,0x24,0xB4,0x16,0x52,0x89,0x31,0x94,0xD2,0x62,0x8B,0xB1,0xD6,0xD6, + 0x62,0xAD,0x21,0x95,0x18,0x4B,0x4A,0x31,0x96,0x94,0x62,0x6C,0x31,0xE6,0x1C,0x63,0xAC,0x39,0x94,0xD2,0x62,0x49,0x25,0xB6,0x92,0x52,0x8C,0x2D,0xB6,0x5C,0x63,0x8C, + 0x35,0xA7,0xD6,0x72,0x6D,0x2D,0xE6,0xDC,0x62,0xCC,0xB5,0xC6,0x5C,0x7B,0xAC,0xB9,0xF7,0xD4,0x5A,0xAD,0xA9,0xB5,0x5C,0x5B,0x8C,0x39,0xC7,0x1A,0x7B,0xAD,0xB5,0xF6, + 0xDE,0x41,0x68,0x2D,0x94,0x12,0x5B,0x28,0x25,0xC6,0xD6,0x5A,0xAD,0xAD,0xC5,0x9C,0x43,0x29,0xB1,0x95,0x94,0x62,0x2C,0x25,0xC5,0xDA,0x62,0xCC,0xB9,0xB5,0x58,0x73, + 0x28,0x25,0xC6,0x92,0x52,0x8C,0x25,0xA5,0x18,0x5B,0x8C,0xB5,0xC6,0x1A,0x73,0x4D,0xAD,0xD5,0xDA,0x62,0xCC,0x35,0xB5,0x56,0x73,0xAD,0xB5,0xE7,0xD8,0x6A,0xED,0xA9, + 0xC5,0x9A,0x5B,0x8C,0xB5,0xB7,0xD8,0x72,0x8D,0xB9,0xF6,0x5E,0x73,0xEC,0xB1,0x00,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xCA,0x40,0xA1,0x21,0x2B,0x01,0x80,0x28, + 0x00,0x00,0xC2,0x18,0xA5,0x18,0x83,0xD0,0x20,0xA4,0x94,0x63,0x10,0x1A,0x84,0x94,0x62,0x0E,0x42,0xA5,0x14,0x63,0xCE,0x49,0xA9,0x94,0x62,0xCC,0x39,0x28,0x99,0x63, + 0xCE,0x41,0x28,0x25,0x73,0xCE,0x39,0x08,0xA5,0x84,0x10,0x4A,0x28,0x25,0xA5,0x10,0x42,0x29,0xA5,0xA4,0x54,0x00,0x00,0x40,0x81,0x03,0x00,0x40,0x80,0x0D,0x9A,0x12, + 0x8B,0x03,0x14,0x1A,0xB2,0x12,0x00,0x08,0x09,0x00,0x20,0x8C,0x51,0x8A,0x31,0xE7,0x20,0x94,0x92,0x52,0x4A,0x11,0x42,0x8C,0x39,0x07,0x21,0x84,0x52,0x52,0x6A,0x29, + 0x42,0x88,0x31,0xE7,0x20,0x84,0x50,0x4A,0x4A,0xAD,0x55,0x8C,0x31,0xE6,0x1C,0x84,0x10,0x4A,0x49,0xA9,0xB5,0x8A,0x31,0xC6,0x9C,0x83,0x10,0x42,0x29,0x29,0xB5,0x96, + 0x39,0xE7,0x1C,0x84,0x10,0x4A,0x49,0xA9,0xB5,0xD6,0x32,0xE7,0x9C,0x83,0x10,0x42,0x29,0x29,0xA5,0xD6,0x5A,0x08,0x21,0x84,0x50,0x4A,0x29,0x25,0xA5,0xD6,0x62,0xEC, + 0x20,0x84,0x50,0x42,0x29,0xA5,0xA4,0xD4,0x5A,0x8C,0x21,0x84,0x10,0x4A,0x29,0x25,0xA5,0xD4,0x5A,0x8B,0x31,0x84,0x10,0x42,0x29,0xA5,0xA4,0xD4,0x52,0x6B,0x31,0x96, + 0x52,0x4A,0x49,0x29,0xA5,0xD4,0x5A,0x6B,0x31,0xD6,0x52,0x4A,0x29,0x29,0xA5,0xD4,0x52,0x6B,0xB1,0xC5,0x98,0x52,0x4A,0xA9,0xB5,0xD6,0x5A,0x8B,0x31,0xC6,0x5A,0x53, + 0x4A,0x29,0xB5,0xD6,0x5A,0x6B,0xB1,0xC5,0x58,0x6B,0x6A,0xAD,0xB5,0xD6,0x62,0x8C,0x31,0xC6,0x5A,0x6B,0x4D,0xAD,0xB5,0xD6,0x5A,0x8C,0x31,0xD6,0x58,0x6B,0xAD,0x05, + 0x00,0x00,0x1C,0x38,0x00,0x00,0x04,0x18,0x41,0x27,0x19,0x55,0x16,0x61,0xA3,0x09,0x17,0x1E,0x80,0x42,0x43,0x56,0x04,0x00,0x51,0x00,0x00,0x80,0x31,0x88,0x31,0xC4, + 0x18,0x82,0x8E,0x49,0xC8,0x24,0x44,0x0E,0x32,0x28,0x19,0x94,0x06,0x42,0x48,0xA9,0xA3,0x94,0x51,0x2A,0x25,0x96,0x1A,0x33,0x4A,0x25,0xA6,0x12,0x6B,0x04,0xA1,0xA3, + 0x14,0x52,0xCA,0x28,0x95,0x1A,0x4B,0xAB,0x19,0xA5,0x12,0x63,0x89,0xA5,0x00,0x00,0xB0,0x03,0x07,0x00,0xB0,0x03,0x0B,0xA1,0xD0,0x90,0x95,0x00,0x40,0x1E,0x00,0x00, + 0x81,0x90,0x52,0x8C,0x39,0xE7,0x1C,0x42,0x88,0x31,0xC6,0x9C,0x73,0x0E,0x21,0xC5,0x18,0x63,0xCE,0x39,0xA7,0x18,0x63,0xCC,0x39,0xE7,0x9C,0x53,0x8C,0x31,0xE6,0x9C, + 0x73,0xCE,0x31,0xC6,0x9C,0x73,0x0E,0x42,0x08,0x19,0x63,0xCE,0x39,0x07,0x21,0x84,0xCE,0x39,0xE7,0x20,0x84,0x10,0x42,0xE7,0x9C,0x73,0x10,0x42,0x08,0xA1,0x73,0xCE, + 0x39,0x08,0x21,0x84,0xD0,0x39,0xE7,0x1C,0x84,0x10,0x42,0x28,0x00,0x00,0xA8,0xC0,0x01,0x00,0x20,0xC0,0x46,0x91,0xCD,0x09,0x46,0x82,0x0A,0x0D,0x59,0x09,0x00,0xA4, + 0x02,0x00,0x00,0xC6,0x30,0xE6,0x9C,0x73,0x10,0x4A,0x69,0x94,0x72,0x0E,0x42,0x08,0xA5,0xB4,0xD4,0x28,0xE5,0x1C,0x84,0x10,0x4A,0x49,0x2D,0x73,0x0E,0x42,0x29,0xA5, + 0xB4,0x16,0x5B,0xE6,0x1C,0x84,0x52,0x4A,0x49,0xAD,0xB5,0x0E,0x42,0x29,0x29,0xA5,0xD4,0x5A,0x8C,0x1D,0x84,0x52,0x52,0x4A,0xA9,0xC5,0x18,0x3B,0x08,0xA5,0xA4,0xD4, + 0x5A,0x8C,0xB5,0x76,0x10,0x4A,0x49,0xA9,0xB5,0x18,0x6B,0x0D,0xA5,0xA4,0x16,0x5B,0xAC,0xB5,0xD6,0x1A,0x4A,0x49,0xAD,0xC5,0x18,0x6B,0xAD,0xB5,0xA4,0xD4,0x5A,0x8C, + 0xB5,0xE6,0x9C,0x73,0x49,0xA9,0xB5,0x18,0x6B,0xAD,0x35,0xE7,0x02,0x00,0xC0,0x13,0x1C,0x00,0x80,0x0A,0x6C,0x58,0x1D,0xE1,0xA4,0x68,0x2C,0xB0,0xD0,0x90,0x95,0x00, + 0x40,0x06,0x00,0x00,0x61,0x0C,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x94,0x42,0x08,0x29,0x25,0x00,0x00,0x60,0xC0,0x01,0x00,0x20,0xC0,0x84,0x32,0x50,0x68, + 0xC8,0x4A,0x00,0x20,0x15,0x00,0x00,0x30,0x86,0x31,0xC6,0x9C,0x83,0x50,0x4A,0xA3,0x14,0x84,0x10,0x42,0x28,0x25,0xA5,0x46,0x29,0x07,0x21,0x84,0x50,0x52,0x4B,0x99, + 0x83,0x52,0x4A,0x49,0x25,0xB5,0x16,0x33,0x08,0xA5,0x94,0x52,0x4A,0x6A,0x31,0x66,0xD0,0x49,0x49,0x29,0xB5,0x16,0x63,0xCD,0x20,0x94,0x92,0x52,0x6A,0x31,0xC6,0xD8, + 0x41,0x28,0x29,0xB5,0xD6,0x62,0x8C,0xB1,0x83,0x50,0x52,0x4A,0xAD,0xC5,0x58,0x6B,0x28,0xA5,0xA5,0x16,0x63,0xAC,0x31,0xC6,0x50,0x4A,0x4A,0xAD,0xC5,0x1A,0x63,0x8D, + 0x25,0xA5,0x16,0x6B,0xAD,0xB9,0xD6,0x5A,0x4B,0x4A,0xAD,0xC5,0x18,0x6B,0xAD,0xB9,0x16,0x00,0x80,0xD0,0xE0,0x00,0x00,0x76,0x60,0xC3,0xEA,0x08,0x27,0x45,0x63,0x81, + 0x85,0x86,0xAC,0x04,0x00,0xF2,0x00,0x00,0x10,0x84,0x94,0x62,0x8C,0x31,0xC6,0x90,0x52,0x8C,0x31,0xC6,0x98,0x73,0x48,0x29,0xA5,0x18,0x63,0xCC,0x39,0xA5,0x18,0x63, + 0x8E,0x39,0xE7,0x9C,0x62,0x8C,0x31,0xC6,0x9C,0x73,0x8E,0x31,0xC6,0x98,0x73,0xCE,0x39,0xC7,0x18,0x63,0xCE,0x39,0xE7,0x9C,0x63,0x8C,0x39,0xE7,0x9C,0x73,0xCE,0x31, + 0xC6,0x9C,0x73,0xCE,0x39,0xE7,0x98,0x73,0xCE,0x39,0xE7,0x9C,0x73,0xCC,0x39,0xE7,0x9C,0x73,0xCE,0x39,0x01,0x00,0x40,0x05,0x0E,0x00,0x00,0x01,0x36,0x8A,0x6C,0x4E, + 0x30,0x12,0x54,0x68,0xC8,0x4A,0x00,0x20,0x1C,0x00,0x00,0x40,0x88,0x31,0xE7,0x18,0x73,0x4E,0x42,0x4A,0x8D,0x52,0xCE,0x49,0x08,0x1D,0x84,0x52,0x5A,0x6D,0x14,0x73, + 0x10,0x4A,0xE8,0x20,0x94,0xD6,0x52,0xE6,0x9C,0x94,0x52,0x42,0x28,0x25,0xC5,0xD8,0x32,0xE7,0x20,0xA5,0x12,0x42,0x2A,0x2D,0xA5,0xDA,0x41,0x48,0x25,0xA5,0x52,0x52, + 0x8A,0xAD,0xB6,0x0E,0x42,0x6A,0x29,0x95,0xD2,0x52,0x6B,0xAD,0x66,0xCE,0x41,0x28,0xA5,0xA4,0x96,0x62,0xAC,0x2D,0x73,0x10,0x42,0x29,0x29,0xA5,0xD6,0x6A,0xAD,0x9D, + 0x84,0x92,0x52,0x4A,0xB5,0xB5,0x58,0x6B,0x0C,0x21,0x94,0x94,0x52,0x6B,0xAD,0xB6,0x1A,0x6B,0x29,0xA5,0xA5,0x96,0x6A,0xAC,0xB1,0xD6,0x58,0x43,0x29,0xA9,0xA5,0xD8, + 0x62,0xAC,0xB5,0xC6,0x5A,0x62,0x6C,0x2D,0xB5,0x1A,0x6B,0xAC,0xAD,0xC6,0x92,0x52,0x4B,0xAD,0xD5,0x5A,0x63,0xAD,0xB5,0x16,0x00,0x60,0xF2,0xE0,0x00,0x00,0x95,0x60, + 0xE3,0x0C,0x2B,0x49,0x67,0x85,0xA3,0xC1,0x85,0x86,0xAC,0x04,0x00,0x72,0x03,0x00,0x08,0x84,0x18,0x73,0xCE,0x39,0x08,0x25,0x94,0x10,0x42,0x29,0xA5,0x44,0x4A,0x31, + 0xE6,0x1C,0x84,0x10,0x4A,0x28,0xA5,0x94,0x52,0x52,0x89,0x94,0x62,0xCC,0x39,0x07,0xA1,0x94,0x52,0x4A,0x29,0xA5,0x94,0x92,0x31,0xE6,0x1C,0x74,0x10,0x4A,0x28,0xA5, + 0x94,0x52,0x52,0x49,0x25,0x63,0xCC,0x39,0x07,0x21,0x94,0x50,0x4A,0x29,0xA5,0x94,0x52,0x4A,0xE7,0x1C,0x84,0x10,0x4A,0x28,0xA5,0x94,0x52,0x4A,0x2A,0x25,0x95,0xCE, + 0x39,0x07,0x21,0x84,0x52,0x4A,0x29,0xA5,0x94,0x92,0x52,0x29,0x1D,0x84,0x10,0x42,0x28,0xA5,0x94,0x52,0x52,0x49,0x25,0x95,0x54,0x3A,0x08,0x21,0x84,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x52,0x2A,0xA5,0x84,0x12,0x42,0x29,0x25,0x95,0x52,0x4A,0x29,0xA5,0xA4,0x94,0x52,0x0A,0x21,0x94,0x50,0x4A,0x29,0xA5,0xA4,0x92,0x4A,0x4A,0x29,0x95, + 0x12,0x4A,0x28,0xA5,0x94,0x54,0x4A,0x29,0x25,0x95,0x54,0x52,0x29,0x29,0x94,0x52,0x4A,0x29,0xA5,0x94,0x54,0x4A,0x4A,0x25,0xA5,0x94,0x52,0x08,0xA5,0x94,0x52,0x52, + 0x29,0xA9,0x94,0x54,0x4A,0x4A,0x29,0xA5,0x50,0x4A,0x29,0xA5,0x94,0x54,0x52,0x49,0x25,0xA5,0x94,0x52,0x49,0xA5,0x94,0x52,0x4A,0x29,0x25,0xA5,0x94,0x52,0x4A,0x29, + 0x95,0x94,0x4A,0x29,0xA5,0xA4,0x52,0x4A,0x2A,0x29,0xA5,0x54,0x5A,0x4A,0xA9,0x94,0x52,0x4A,0x49,0xA5,0x94,0x94,0x5A,0x4A,0x29,0xA5,0x94,0x52,0x2A,0xA5,0xA4,0x92, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x54,0x4A,0x49,0x25,0x95,0x92,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0xA5,0x94,0x52,0x4A,0x49,0xA9,0xA4,0x54,0x52,0x2A, + 0x29,0xA5,0x92,0x52,0x01,0x00,0x40,0x07,0x0E,0x00,0x00,0x01,0x46,0x54,0x5A,0x88,0x9D,0x66,0x5C,0x79,0x04,0x8E,0x28,0x64,0x98,0x80,0x0A,0x0D,0x59,0x09,0x00,0x84, + 0x03,0x00,0x00,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x89,0x8C,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x1A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x54,0x0A,0x49,0x29,0x25,0x84,0x10,0x42,0x08,0x21,0x42,0x02,0x40,0xBA,0x32,0x1C,0x00,0x00,0x02,0xAC,0x49,0x57,0x2F,0x52,0x5D,0xC6,0xE8,0x60, + 0x74,0xE9,0xCA,0x2E,0x68,0x74,0x78,0x91,0xA3,0x43,0x00,0x0A,0x00,0x90,0xAE,0x91,0xD5,0x84,0x25,0x34,0x64,0x25,0x00,0x90,0x16,0x00,0x00,0x58,0x69,0xA5,0x95,0x96, + 0x5A,0x6B,0xAD,0xB5,0xD6,0x22,0x04,0xA5,0xA5,0xD4,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0x25,0x84,0x14,0x52,0x6A,0xA9,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xCE,0x49,0x0A, + 0x2D,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0xE8,0x24,0xB5,0xD4,0x52,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0x83,0x94,0x4A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5, + 0x16,0x4A,0x6A,0xA9,0xA5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x0B,0x21,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A, + 0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0xAD, + 0xB5,0xD6,0x5A,0x6B,0xAD,0xB5,0xD6,0x5A,0x6B,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A, + 0x29,0xA5,0x94,0x52,0x8A,0x1C,0x84,0x8E,0x42,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x11,0x32,0xCE,0x39,0x27,0xA1,0x94,0x94,0x52,0x4A,0x29,0xA5,0xC8,0x08,0x00,0x40,0x8C, + 0x70,0x00,0x00,0x08,0xB0,0x84,0xD8,0x55,0xB9,0x99,0xA4,0x5E,0x3D,0x1B,0x12,0xC3,0xE4,0x24,0x7D,0x8A,0xE1,0x6A,0x0C,0xDF,0x02,0x00,0x31,0x61,0x8C,0x09,0x0D,0x59, + 0x05,0x00,0xC4,0x00,0x00,0x00,0x84,0x18,0xC6,0x98,0x63,0x8C,0x31,0xE7,0x9C,0x63,0xCE,0x39,0xE7,0x9C,0x73,0x8E,0x41,0xE8,0x20,0x84,0xCE,0x39,0xE7,0x9C,0x73,0xCE, + 0x39,0x67,0xAD,0xA4,0x02,0x00,0x00,0x13,0x1C,0x00,0x00,0x02,0xAC,0x60,0x57,0x66,0x69,0xD5,0x46,0x71,0x53,0x27,0x79,0xD1,0x07,0x81,0x4F,0xE8,0x88,0xCD,0xC8,0x90, + 0x4B,0xA9,0x98,0xC9,0x89,0xA0,0x47,0x6A,0xA8,0xC5,0x4A,0xB0,0x43,0x2B,0xB8,0xC1,0x0B,0xC0,0x42,0x43,0x56,0x02,0x00,0x64,0x00,0x00,0x10,0x93,0x52,0x52,0x8A,0x45, + 0x59,0x08,0x29,0xE6,0xA0,0x25,0xE5,0x21,0x63,0x14,0x83,0x98,0x94,0x87,0x8C,0x41,0xCA,0x59,0x50,0x1A,0x42,0xC6,0x20,0x66,0xC5,0x78,0x8C,0x29,0x84,0x94,0x14,0x23, + 0x42,0xE8,0x14,0x52,0x50,0x8C,0x8A,0x31,0x76,0x8C,0x41,0x2F,0x32,0x18,0x9F,0x42,0x08,0xC1,0xE8,0x62,0x8C,0x8E,0xB1,0x16,0x23,0x00,0x00,0x00,0x41,0x00,0x80,0x80, + 0x90,0x00,0x00,0x03,0x04,0x05,0x33,0x00,0xC0,0xE0,0x00,0x61,0xE4,0x40,0xA0,0x23,0x80,0xC0,0xA1,0x0D,0x00,0x30,0x10,0x21,0x33,0x81,0x41,0x21,0x34,0x38,0xC8,0x04, + 0x80,0x07,0x88,0x08,0xA9,0x00,0x20,0x31,0x41,0x51,0xBA,0xD0,0x05,0x21,0x44,0x90,0x2E,0x82,0x2C,0x1E,0xB8,0x70,0xE2,0xC6,0x13,0x37,0x9C,0xD0,0xA1,0x0D,0x02,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x3E,0x00,0x00,0x12,0x0A,0x20,0x22,0x9A,0x99,0xB9,0x0A,0x8B,0x0B,0x8C,0x0C,0x8D,0x0D,0x8E,0x0E,0x8F,0x0F,0x90,0x10,0x91,0x91,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x0F,0x00,0x80,0x84,0x04,0x88,0x88,0x66,0x66,0xAE,0xC2,0xE2,0x02,0x23,0x43,0x63,0x83,0xA3,0xC3,0xE3,0x03,0x24,0x44,0x64,0x24, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x08, +}; +static const uint8_t vcb_4[] = { + 0x29,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x80,0x22,0x4C,0x20,0xC3,0x80,0xD0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x80,0xA8,0x36,0x14,0x6B,0xA9,0xB1,0xD6,0x1A, + 0x63,0xA1,0x28,0x46,0xD4,0x62,0x6A,0x31,0xC6,0x18,0x63,0xE3,0x2C,0x46,0x90,0x62,0x8B,0x31,0xC6,0x18,0x63,0x8C,0x31,0xC6,0x18,0x63,0x8C,0x31,0xC6,0x18,0x63,0x20, + 0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x40,0x31,0xEA,0x15,0x93,0x9E,0x42,0xCC,0x39,0xE7,0xDC,0x18,0xA6,0x8D,0x51,0xDA,0x29,0xC7,0x39,0xE7,0xDC,0x18,0xC5,0x89,0x30, + 0x58,0x21,0xA5,0xB9,0xA5,0x9A,0x52,0xCC,0xA1,0x93,0x9C,0x4A,0xCA,0x39,0xE7,0x1C,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x40,0x48,0x21,0x85,0x14,0x52,0x48,0x21, + 0x85,0x14,0x52,0x48,0x21,0x85,0x14,0x52,0x4A,0x29,0xA5,0x94,0x62,0x8A,0x29,0xA6,0x98,0x62,0x8A,0x29,0xA6,0x98,0x72,0xCC,0x31,0xC7,0x1C,0x83,0x0C,0x32,0xE8,0xA4, + 0x93,0x4E,0x3A,0xE9,0x24,0xA4,0x90,0x42,0x09,0xA5,0xA4,0x92,0x52,0x4A,0xAD,0xC5,0x1A,0x6B,0xEF,0xBD,0xF7,0x9E,0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7,0xDE, + 0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xCF,0x39,0x07,0x42,0x43,0x56,0x01,0x00,0x20,0x00,0x00,0x04,0x42,0x06,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x14,0x52,0x48,0x21,0xA6, + 0x98,0x62,0xCA,0x29,0xA7,0x80,0xD0,0x90,0x55,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x4B,0xB1,0x14,0x4D,0xD1,0x1C,0xCF,0xF1,0x1C,0xCF,0x11,0x1D,0x53,0x12, + 0x25,0x53,0x32,0x25,0x53,0x72,0x2D,0xD7,0x32,0x2D,0x53,0x33,0x3D,0xD3,0x33,0x45,0x55,0x74,0x55,0x53,0x55,0x65,0xD7,0x75,0x65,0x53,0x36,0x65,0x53,0x36,0x65,0x55, + 0x36,0x65,0x53,0x36,0x65,0x53,0x36,0x65,0xD5,0x95,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x20,0x34,0x64,0x15,0x00,0x20, + 0x01,0x00,0xA0,0x23,0x39,0x92,0x23,0x29,0x8E,0xE2,0x38,0x8E,0xE3,0x48,0x92,0x04,0x84,0x86,0xAC,0x02,0x00,0x64,0x00,0x00,0x04,0x00,0x60,0x28,0x8A,0xA3,0x48,0x8E, + 0x24,0x59,0x92,0x65,0x59,0x96,0x67,0x99,0x9A,0xE9,0x99,0x9E,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x09,0x84,0x86,0xAC,0x02,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0xA0,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0xA6,0x69,0x9A,0x66,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65, + 0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x96,0x65,0x59,0x40,0x68,0xC8,0x2A, + 0x00,0x40,0x02,0x00,0x40,0xC7,0x71,0x1C,0xC7,0x71,0x1C,0xC7,0x71,0x1C,0x47,0x72,0x24,0x07,0x08,0x0D,0x59,0x05,0x00,0xC8,0x00,0x00,0x08,0x00,0x40,0x52,0x24,0xC5, + 0x72,0x34,0x47,0x73,0x34,0xC7,0x73,0x3C,0x47,0x74,0x44,0x47,0x94,0x4C,0x49,0x95,0x5C,0x4B,0xB6,0x64,0x0D,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x08,0x00,0x00, + 0x00,0x00,0x00,0x40,0x33,0x2C,0x43,0x53,0x3C,0x47,0xB3,0x44,0x4D,0xD4,0x44,0x51,0xF4,0x44,0x4F,0x14,0x45,0xD1,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3, + 0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x3C,0xCF,0xF3,0x80,0xD0, + 0x90,0x55,0x00,0x00,0x04,0x00,0x00,0x01,0x9D,0x66,0x98,0x6A,0x80,0x08,0x33,0x92,0x59,0x20,0x34,0x64,0x15,0x00,0x80,0x00,0x00,0x00,0x10,0x81,0x0C,0x53,0x0C,0x08, + 0x0D,0x59,0x05,0x00,0x00,0x04,0x00,0x00,0x48,0x91,0xE4,0x24,0x89,0x92,0x93,0x52,0x4A,0x39,0x0C,0x92,0xC5,0x24,0xA9,0x94,0x93,0x52,0x4A,0x79,0x14,0x93,0x47,0x35, + 0xC9,0x18,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0x0C,0x92,0xE5,0x28,0xA9,0x94,0x93,0x52,0x4A,0x49,0x8C,0x92,0xC5,0x28,0xA9,0x52, + 0x93,0x52,0x4A,0x79,0x94,0x93,0x27,0x35,0xC9,0xD8,0x93,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x59,0x90,0x92,0x27,0x2D,0xE9,0x1A,0x94,0x52, + 0x4A,0x49,0x8E,0x92,0x06,0x2D,0xD9,0xD4,0x93,0x52,0x4A,0x89,0x52,0x94,0x28,0x39,0xD9,0x9E,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0xF9, + 0xA0,0x94,0x0F,0x42,0x29,0xA5,0x94,0x52,0x4A,0xB9,0xDA,0x93,0x6B,0x3D,0x29,0xA5,0x94,0x52,0x4A,0x19,0xA3,0x94,0xF0,0x49,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0xCA,0x08,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x80,0x71,0xD6,0x28,0x87,0xA2,0x93,0xE8,0x7C,0x71,0x86,0x72,0xA6,0x29,0x48,0x2A, + 0x94,0x26,0x74,0x6F,0x92,0xA3,0xE4,0x39,0xC9,0xAD,0xB4,0xDC,0x9C,0x6E,0xC2,0x39,0xA7,0x9B,0x53,0xCE,0xF9,0xE4,0x9C,0x73,0x82,0xD0,0x90,0x55,0x00,0x00,0x20,0x00, + 0x00,0x84,0x10,0x52,0x48,0x21,0x85,0x14,0x52,0x48,0x21,0x85,0x14,0x52,0x88,0x21,0x86,0x18,0x72,0xC8,0x29,0xA7,0xA0,0x82,0x0A,0x2A,0xA9,0xA4,0xA2,0x8A,0x2A,0xAA, + 0xAC,0xB2,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x32,0xEB,0xAC,0xA3,0x8E,0x3A,0x0B,0x29,0x84,0x92,0x42,0x0B,0xAD,0xD5,0x18,0x6B,0x8C,0xB1,0xD5, + 0xDE,0x9C,0xB4,0x35,0x47,0x29,0x9D,0x94,0x52,0x4A,0x29,0xA5,0x94,0xCE,0x39,0xE7,0x9C,0x20,0x34,0x64,0x15,0x00,0x00,0x02,0x00,0x40,0x20,0x64,0x90,0x41,0x06,0x19, + 0x65,0x14,0x52,0x88,0x21,0xA6,0x9C,0x72,0xCA,0x29,0xA8,0xA4,0x92,0x0A,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x10,0x25,0xD3,0x31,0x1D,0xD1, + 0x11,0x15,0xD1,0x11,0x1D,0xD1,0x11,0x1D,0xD1,0x11,0x1D,0xCF,0xF1,0x1C,0x4F,0x12,0x25,0xD1,0xF2,0x2C,0x51,0x33,0x3D,0x53,0x34,0x4D,0xD3,0x55,0x65,0x57,0x96,0x75, + 0xD9,0x96,0x6D,0x57,0x97,0x75,0x5B,0x97,0x7D,0xDB,0xB7,0x75,0xDB,0xB6,0x7D,0xDD,0xD8,0x8D,0xDF,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38, + 0x8E,0x63,0x08,0x42,0x43,0x56,0x01,0x00,0x20,0x00,0x00,0x00,0x42,0x08,0x21,0x84,0x14,0x52,0x48,0x21,0x85,0x94,0x62,0x8A,0x31,0xE7,0xA0,0x83,0x10,0x42,0x29,0x81, + 0xD0,0x90,0x55,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x45,0x71,0x14,0xC7,0x91,0x1C,0x49,0x92,0x24,0x4B,0xB2,0x2C,0xCD,0xD2,0x34,0x4D,0xD3,0x34,0x4F,0xF4, + 0x44,0xCF,0xF4,0x54,0xCF,0x15,0x65,0xD1,0x16,0x6D,0xCF,0xF5,0x6C,0xD1,0xF6,0x5C,0x4F,0xF5,0x54,0x4F,0x15,0x55,0x53,0x35,0x5D,0xD3,0x55,0x5D,0xD7,0x75,0x5D,0xD5, + 0x55,0x65,0x55,0x76,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x65,0x20,0x34,0x64,0x15,0x00,0x20,0x01,0x00,0xA0,0x23,0x39,0x92, + 0x22,0x29,0x92,0x22,0x39,0x8E,0x23,0x39,0x92,0x04,0x84,0x86,0xAC,0x02,0x00,0x64,0x00,0x00,0x04,0x00,0xA0,0x28,0x8A,0xE2,0x38,0x8E,0xE4,0x58,0x92,0x25,0x69,0x92, + 0x28,0x99,0x96,0x6A,0xB9,0x9A,0xEC,0xE9,0x9E,0x2E,0xEA,0xA2,0x0E,0x84,0x86,0xAC,0x02,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x60,0x88,0x86,0x68,0x88, + 0x8E,0x68,0x89,0x9A,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28, + 0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x40,0x68,0xC8,0x2A,0x00,0x40,0x02,0x00,0x40,0x47, + 0x72,0x24,0xC7,0x52,0x2C,0x45,0x52,0x24,0xC5,0x72,0x2C,0x07,0x08,0x0D,0x59,0x05,0x00,0xC8,0x00,0x00,0x08,0x00,0xC0,0x31,0x1C,0x43,0x52,0x24,0xC7,0xB2,0x2C,0x4B, + 0xD3,0x34,0xCF,0xF3,0x3C,0x4F,0xF4,0x44,0x51,0x14,0x45,0xD3,0x54,0x4D,0x15,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x51,0x14, + 0xCB,0xB1,0x1C,0x49,0xD2,0x1C,0x4F,0x12,0x1D,0x51,0x12,0x25,0xD1,0x12,0x25,0x51,0x13,0x35,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14, + 0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x81,0xD0,0x90,0x95,0x00,0x00,0x19,0x00, + 0x00,0x03,0xB1,0xF5,0xD4,0x72,0xEE,0x8D,0xA0,0x48,0x2A,0x47,0xB5,0xC6,0xD4,0x51,0xE6,0x24,0x06,0x61,0x1A,0x8A,0xA0,0x82,0x18,0x84,0x0C,0x15,0x44,0x88,0x51,0x0E, + 0x26,0x62,0x0A,0x19,0x26,0x39,0x97,0x0C,0x3A,0xA6,0x98,0xD4,0x18,0x4B,0x2A,0x1D,0x73,0x52,0x6B,0x4B,0x25,0x54,0x48,0x41,0x0C,0x36,0xA6,0x52,0x29,0xE5,0xA8,0x07, + 0x42,0x43,0x56,0x08,0x00,0xA1,0x19,0x00,0x0E,0xC7,0x01,0x24,0xCD,0x02,0x24,0x4B,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0xD3,0x00,0xCD,0xF3,0x00,0xCD,0xF3, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xD2,0x34,0xC0,0xF2,0x3C,0x40,0xF3,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x4D,0x03,0x34,0xD1,0x03,0x34,0xCF,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x4D,0xF4,0x00,0x4F,0x34,0x01,0x4F,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF2,0x3C,0xC0,0x33,0x3D,0xC0,0x13,0x4D,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x1C,0x4D,0x03,0x34,0xCF,0x03,0x34,0xCF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCB,0xF3,0x00,0xCF,0x14,0x01,0xCF,0x33,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x40, + 0xF3,0x44,0xC0,0x13,0x45,0xC0,0x33,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x0E,0x00,0x00,0x01,0x16,0x42,0xA1,0x21,0x2B,0x02,0x80,0x38,0x01, + 0x00,0x87,0x24,0x41,0x92,0x20,0x49,0xD0,0x34,0x80,0x64,0x59,0xF0,0x34,0x68,0x1A,0x4C,0x13,0x20,0x59,0x16,0x34,0x0D,0x9A,0x06,0xD3,0x04,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0xD2,0x34,0x68,0x1A,0x34,0x0D,0xA2,0x08,0x90,0x34,0x0D,0x9A,0x06,0x4D,0x83,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20, + 0x79,0x1A,0x34,0x0D,0x9A,0x06,0x51,0x04,0x48,0x9A,0x07,0x4D,0x83,0xA6,0x41,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x4C,0x13,0xA2,0x08,0x51, + 0x84,0x69,0x02,0x34,0xD3,0x84,0x28,0x42,0x14,0x61,0x9A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x00,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xCA,0x40,0xA1,0x21,0x2B,0x02,0x80,0x38,0x01,0x00,0x87,0xE2,0x58,0x16,0x00,0x00,0x38,0x92,0x63,0x59,0x00, + 0x00,0xE0,0x38,0x8E,0x65,0x01,0x00,0x80,0x65,0x59,0x9A,0x06,0x00,0x00,0x96,0x65,0x69,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xCA,0x40,0xA1,0x21, + 0x2B,0x01,0x80,0x28,0x00,0x00,0x87,0xA2,0x58,0x16,0x70,0x1C,0xCB,0x02,0x8E,0x63,0x59,0x40,0x92,0x2C,0x0B,0x60,0x59,0x00,0xCD,0x03,0x68,0x1A,0x40,0x14,0x01,0x80, + 0x00,0x00,0x80,0x02,0x07,0x00,0x80,0x00,0x1B,0x34,0x25,0x16,0x07,0x28,0x34,0x64,0x25,0x00,0x10,0x05,0x00,0xE0,0x50,0x14,0xCB,0xD2,0x34,0x51,0xE4,0x38,0x9A,0xA6, + 0x69,0xA2,0xC8,0x71,0x34,0x4D,0xD3,0x44,0x91,0x65,0x69,0x9A,0xE7,0x99,0x26,0x34,0xCD,0xF3,0x4C,0x13,0x9E,0xE7,0x79,0xA6,0x09,0xCF,0xF3,0x3C,0xD3,0x84,0x69,0x8A, + 0xA2,0xAA,0x02,0x51,0x54,0x55,0x01,0x00,0x00,0x05,0x0E,0x00,0x00,0x01,0x36,0x68,0x4A,0x2C,0x0E,0x50,0x68,0xC8,0x4A,0x00,0x20,0x24,0x00,0xC0,0xE1,0x38,0x96,0xE5, + 0x79,0x9E,0x27,0x8A,0xA6,0x68,0x9A,0xAA,0xCA,0x71,0x34,0xCD,0xF3,0x44,0x51,0x14,0x4D,0x53,0x55,0x55,0x95,0xE3,0x58,0x96,0xE7,0x89,0xA2,0x28,0x9A,0xA6,0xAA,0xBA, + 0x2E,0xCB,0xD2,0x34,0xCF,0x13,0x45,0x51,0x34,0x4D,0x55,0x75,0x5D,0x68,0x9A,0xE7,0x89,0xA2,0x28,0x9A,0xA6,0xAA,0xBA,0x2E,0x3C,0xCF,0xF3,0x44,0xD1,0x14,0x4D,0x55, + 0x55,0x5D,0x17,0x9E,0xE7,0x79,0xA2,0x68,0x9A,0xAA,0xA9,0xAA,0xAE,0x0B,0x51,0x14,0x45,0xD3,0x34,0x4D,0x55,0x55,0x55,0xD7,0x05,0xA2,0x68,0x9A,0xA6,0xA9,0xAA,0xAE, + 0xEA,0xBA,0xC0,0xF3,0x44,0xD1,0x34,0x55,0xD5,0x75,0x5D,0x17,0x78,0x9E,0x28,0x9A,0xA6,0xAA,0xBA,0xAE,0xEB,0x02,0x51,0x34,0x4D,0xD5,0x54,0x55,0xD7,0x75,0x5D,0x80, + 0x69,0x9A,0xA6,0xAA,0xBA,0xAE,0xEC,0x02,0x54,0x55,0x55,0x55,0xD7,0x75,0x65,0x17,0xA0,0xAA,0xAA,0xAA,0xAA,0xAE,0x2B,0xCB,0x00,0x55,0x75,0x5D,0xD7,0x75,0x5D,0x59, + 0x06,0xA0,0xAA,0xAE,0xEB,0xBA,0xB2,0x2C,0x00,0x00,0xE0,0xC0,0x01,0x00,0x20,0xC0,0x08,0x3A,0xC9,0xA8,0xB2,0x08,0x1B,0x4D,0xB8,0xF0,0x00,0x14,0x1A,0xB2,0x22,0x00, + 0x88,0x02,0x00,0x00,0x8C,0x51,0x4A,0x31,0xA5,0x0C,0x63,0x12,0x42,0x09,0x21,0x62,0x4C,0x42,0x28,0x21,0x54,0x52,0x4A,0x29,0xA9,0x94,0x0A,0x42,0x29,0xA5,0x94,0x50, + 0x41,0x28,0xA1,0xA4,0x10,0x32,0x29,0x29,0xA5,0x54,0x4A,0x05,0xA1,0x84,0x50,0x4A,0xA8,0x20,0x94,0x52,0x4A,0x29,0x05,0x00,0x80,0x1D,0x38,0x00,0x80,0x1D,0x58,0x08, + 0x85,0x86,0xAC,0x04,0x00,0xF2,0x00,0x00,0x08,0x63,0x94,0x62,0xCC,0x39,0xE7,0x24,0x42,0x4A,0x31,0xE6,0x9C,0x73,0x12,0x21,0xA5,0x18,0x73,0xCE,0x39,0xA9,0x14,0x63, + 0xCE,0x39,0xE7,0x9C,0x94,0x92,0x31,0xE7,0x9C,0x73,0x4E,0x4A,0xC9,0x98,0x73,0xCE,0x39,0x27,0xA5,0x64,0xCC,0x39,0xE7,0x9C,0x93,0x52,0x3A,0xE7,0x9C,0x73,0xCE,0x49, + 0x29,0xA5,0x74,0xCE,0x39,0xE7,0xA4,0x94,0x52,0x42,0xE8,0x9C,0x83,0x52,0x4A,0x29,0x9D,0x73,0xCE,0x39,0x01,0x00,0x40,0x05,0x0E,0x00,0x00,0x01,0x36,0x8A,0x6C,0x4E, + 0x30,0x12,0x54,0x68,0xC8,0x4A,0x00,0x20,0x15,0x00,0xC0,0xE0,0x38,0x96,0xE5,0x79,0x9E,0x27,0x8A,0xA6,0x69,0x49,0x92,0xA6,0x79,0x9E,0x28,0x9A,0xA6,0xAA,0x6A,0x92, + 0xA4,0x69,0x9E,0x27,0x8A,0xA6,0xA9,0xAA,0x3C,0xCF,0xF3,0x44,0x51,0x14,0x4D,0x53,0x55,0x79,0x9E,0xE7,0x89,0xA2,0x28,0x9A,0xA6,0xAA,0x72,0x5D,0x51,0x14,0x45,0xD3, + 0x34,0x4D,0x55,0xE5,0xBA,0xA2,0x27,0x8A,0xA6,0xA9,0xAA,0xAE,0x0A,0xD1,0x14,0x45,0xD3,0x54,0x55,0xD7,0x85,0x69,0x8A,0xA2,0x69,0xAA,0xAA,0xEB,0x42,0x96,0x4D,0xD3, + 0x54,0x5D,0xD7,0x75,0x61,0xDB,0xA6,0xA9,0xAA,0xAA,0xEA,0xBA,0x40,0x75,0x55,0xD5,0x75,0x5D,0x19,0xB8,0xAE,0xAA,0xBA,0xAE,0x2C,0x0B,0x00,0x00,0x4F,0x70,0x00,0x00, + 0x2A,0xB0,0x61,0x75,0x84,0x93,0xA2,0xB1,0xC0,0x42,0x43,0x56,0x02,0x00,0x19,0x00,0x00,0x84,0x31,0x08,0x29,0x84,0x10,0x52,0x06,0x21,0xA4,0x10,0x42,0x48,0x29,0x85, + 0x90,0x00,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xCA,0x40,0xA1,0x21,0x2B,0x01,0x80,0x54,0x00,0x00,0x80,0x10,0x29,0xA5,0x94,0x52,0x4A,0x29,0x11,0x63,0x52,0x4A, + 0x29,0xA5,0x94,0x52,0x22,0xE6,0xA4,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0x21,0x84,0x50,0x00,0x20, + 0x76,0x85,0x03,0xC0,0x4E,0x84,0x0D,0xAB,0x23,0x9C,0x14,0x8D,0x05,0x16,0x1A,0xB2,0x12,0x00,0x08,0x07,0x00,0x00,0x8C,0x41,0x8A,0x31,0x08,0x29,0xB5,0xD6,0x62,0x85, + 0x90,0x62,0xCE,0x49,0x49,0x29,0xC6,0x18,0x2B,0x84,0x18,0x73,0x8E,0x4A,0x4A,0x2D,0xB6,0x18,0x34,0xE6,0x1C,0x84,0x94,0x5A,0x6B,0x31,0xD7,0xA0,0x31,0xE7,0x20,0xA4, + 0xD2,0x5A,0x8C,0x35,0x06,0xD5,0x42,0x28,0xA5,0xB5,0x18,0x6B,0xAD,0x35,0xB8,0x14,0x3A,0x2A,0xA9,0xC5,0x18,0x6B,0xAD,0x41,0x08,0x95,0x52,0x8A,0x31,0xC6,0x1A,0x73, + 0x0D,0x42,0xA8,0x92,0x42,0x6C,0xB1,0xE6,0x9A,0x6B,0x10,0xC2,0xD6,0xD4,0x5A,0xAC,0xB5,0xE7,0x9C,0x83,0x10,0x3A,0xB7,0x14,0x53,0x8C,0x31,0xF7,0x1A,0x84,0x10,0x42, + 0xC6,0x1A,0x6B,0xCD,0xB9,0xE7,0x20,0x84,0x10,0xB6,0xD6,0x56,0x5B,0xAF,0xB9,0x06,0x21,0x84,0xF0,0x41,0xD6,0x9A,0x73,0x0E,0x3A,0x08,0x21,0x84,0x0F,0xB2,0xD6,0x9A, + 0x83,0xCE,0x05,0x00,0x98,0x3C,0x38,0x00,0x40,0x25,0xD8,0x38,0xC3,0x4A,0xD2,0x59,0xE1,0x68,0x70,0xA1,0x21,0x2B,0x01,0x80,0xDC,0x00,0x00,0x04,0x21,0xA5,0x18,0x73, + 0xCE,0x39,0x07,0x21,0x84,0x10,0x42,0x08,0x29,0x42,0x8C,0x31,0xE6,0x9C,0x73,0x10,0x42,0x08,0x21,0x84,0x52,0x52,0x84,0x18,0x63,0xCC,0x39,0xE7,0x20,0x84,0x10,0x42, + 0x08,0x21,0xA4,0x8C,0x31,0xE6,0x9C,0x73,0x10,0x42,0x08,0xA1,0x94,0x52,0x4A,0x49,0x29,0x65,0xCC,0x39,0xE7,0x20,0x84,0x10,0x42,0x29,0xA5,0x94,0x92,0x52,0xEA,0x9C, + 0x73,0x10,0x42,0x08,0xA1,0x94,0x52,0x4A,0x29,0x25,0xA5,0xD4,0x39,0xE7,0x20,0x84,0x10,0x42,0x09,0xA5,0x94,0x52,0x4A,0x4A,0xA9,0x73,0x0E,0x42,0x08,0x21,0x84,0x52, + 0x4A,0x29,0xA5,0x94,0x94,0x52,0x4A,0x9D,0x83,0x10,0x42,0x28,0xA5,0x94,0x52,0x4A,0x29,0x29,0xA5,0x94,0x42,0x08,0x21,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x52,0x4A, + 0x29,0x85,0x10,0x42,0x28,0xA5,0x94,0x52,0x4A,0x29,0xA5,0xA4,0x94,0x52,0x0A,0x21,0x84,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x49,0x29,0xA5,0x94,0x52,0x08,0xA1,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x92,0x52,0x4A,0x29,0xA5,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0x25,0xA5,0x94,0x52,0x4A,0xA5,0x84,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A, + 0x4A,0x29,0xA5,0x94,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x94,0x52,0x4A,0x29,0xA5,0x54,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0x29,0xA5,0x94,0x52,0x4A,0xA9, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x52,0x4A,0x29,0xA5,0x96,0x52,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0xB4,0xD4,0x5A,0x4A,0x29,0xA5,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x49,0x29,0xA5,0x94,0x52,0x4A,0x29,0x95,0x52,0x4A,0x29,0xA5,0x94,0x52,0x00,0x00,0xD0,0x81,0x03,0x00,0x40,0x80,0x11,0x95,0x16,0x62,0xA7,0x19,0x57,0x1E,0x81, + 0x23,0x0A,0x19,0x26,0xA0,0x42,0x43,0x56,0x02,0x00,0x64,0x00,0x00,0x08,0xA2,0x14,0x53,0x4A,0xAD,0x45,0x82,0x2A,0xC9,0x9C,0xC4,0x5E,0x42,0x25,0x15,0x73,0x90,0x5A, + 0x8A,0x28,0x93,0x4E,0x5A,0x0E,0xAE,0x43,0xD0,0x20,0xE6,0xA4,0x95,0x8A,0x39,0x84,0x94,0x93,0x54,0x3A,0x07,0x95,0x52,0x0C,0x4A,0x2A,0x21,0x75,0x4C,0x29,0x06,0x29, + 0x96,0x1C,0x42,0xC6,0x98,0x93,0x9C,0x82,0x4A,0xA1,0x63,0x0E,0x00,0x00,0x00,0x41,0x00,0x00,0x81,0x90,0x09,0x04,0x0A,0xA0,0xC0,0x40,0x06,0x00,0x1C,0x20,0x24,0x48, + 0x01,0x00,0x85,0x05,0x86,0x0E,0x11,0x22,0x40,0x8C,0x02,0x03,0xE3,0xE2,0xD2,0x06,0x00,0x20,0x08,0x91,0x19,0x22,0x11,0xB1,0x18,0x24,0x26,0x54,0x03,0x45,0xC5,0x74, + 0x00,0xB0,0xB8,0xC0,0x90,0x0F,0x00,0x19,0x1A,0x1B,0x69,0x17,0x17,0xD0,0x65,0x80,0x0B,0xBA,0xB8,0xEB,0x40,0x08,0x41,0x08,0x42,0x10,0x8B,0x03,0x28,0x20,0x01,0x07, + 0x27,0xDC,0xF0,0xC4,0x1B,0x9E,0x70,0x83,0x13,0x74,0x8A,0x4A,0x1D,0x08,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x3C,0x00,0x00,0x24,0x1B,0x40,0x44,0x44,0x34,0x73,0x1C, + 0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x02,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x1F,0x00,0x00,0x49,0x0A,0x10,0x11,0x11,0xCD,0x1C,0x47,0x87, + 0xC7,0x07,0x48,0x88,0xC8,0x08,0x49,0x89,0xC9,0x09,0x4A,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x80,0x00, + 0x00,0x00,0x00,0x01,0x01, +}; +static const uint8_t vcb_5[] = { + 0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x5A,0x32,0x66,0xA9,0x73,0xD8,0x7B,0xEF,0x1D,0x42,0x92,0x19,0xE3,0x1C,0x42,0xD0,0x7B,0xEF,0x99,0x41,0x4C, + 0x11,0xA2,0x1C,0x42,0xCC,0x6B,0xEC,0x21,0x63,0x92,0x19,0xC3,0xA0,0x42,0x8A,0x63,0xAA,0x81,0xD0,0x90,0x55,0x00,0x00,0x40,0x00,0x00,0x67,0xBD,0x97,0xDA,0x7B,0xCB, + 0xBD,0xF7,0xDE,0x7B,0x46,0xB9,0x67,0xD4,0x7B,0x69,0xBD,0xF7,0xDE,0x7B,0xC8,0xBD,0x87,0xD6,0x7B,0xCA,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7, + 0xDE,0x7B,0x25,0xB1,0x67,0x92,0x7B,0x48,0xBD,0xF7,0xDE,0x7B,0xE3,0xB0,0x47,0x8E,0x7B,0x06,0xB9,0xF7,0xDE,0x7B,0x65,0xBD,0x57,0x92,0x7B,0x28,0xB5,0xF7,0xDE,0x7B, + 0xED,0xBD,0xB7,0xDA,0x7B,0xEE,0xBD,0xF7,0xDE,0x7B,0x03,0xA9,0x47,0x10,0x7B,0x06,0xB9,0xF7,0xDE,0x7B,0xC1,0xA8,0x27,0x8A,0x7A,0xC4,0xAC,0xF7,0xDE,0x7B,0x03,0xB5, + 0x37,0x0C,0x7B,0xE5,0xB0,0xF7,0xDE,0x7B,0xAA,0xBD,0x97,0x5E,0x7B,0xEA,0xBD,0xF7,0xDE,0x7B,0x86,0xBD,0x87,0x98,0x7B,0x8A,0xBD,0xF7,0xDE,0x7B,0x24,0xB5,0x57,0x92, + 0x7B,0x28,0xBD,0xF7,0xDE,0x7B,0x86,0xBD,0x57,0xD2,0x7B,0x68,0xBD,0xF7,0xDE,0x7B,0xEA,0xBD,0x97,0xDE,0x7B,0xEC,0xBD,0xF7,0xDE,0x7B,0x20,0x34,0x64,0x15,0x00,0x90, + 0x00,0x00,0xA0,0xA2,0x28,0x8A,0xA2,0x28,0x0A,0x10,0x1A,0xB2,0x0A,0x00,0xC8,0x00,0x00,0x10,0x40,0x51,0x1C,0xC5,0x71,0x1C,0xC9,0x91,0x1C,0xC9,0xB1,0x1C,0x0B,0x08, + 0x0D,0x59,0x05,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0xA0,0x48,0x8A,0xA4,0x58,0x8E,0xE5,0x58,0x8E,0x25,0x59,0x92,0x25,0x59,0x92,0x25,0x49,0x92,0xA5,0x79,0xA6,0xEB, + 0xBA,0xAE,0xEB,0xBA,0xAE,0xEB,0xBA,0x2E,0x10,0x1A,0xB2,0x0A,0x00,0x48,0x00,0x00,0x50,0x51,0x14,0xC5,0x70,0x14,0x07,0x08,0x0D,0x59,0x05,0x00,0x64,0x00,0x00,0x08, + 0xA0,0x48,0x8A,0xA5,0x68,0x8A,0xA7,0x88,0x8A,0xA9,0xA8,0x8E,0x0A,0x84,0x86,0xAC,0x02,0x00,0x80,0x00,0x00,0x04,0x00,0x00,0x10,0x5C,0x43,0x54,0x4C,0xC7,0x95,0x5C, + 0xCB,0x35,0x5D,0xD5,0x75,0x5D,0xD7,0x75,0x5D,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x08,0x0D,0x59,0x05,0x00,0x40,0x00,0x00,0x10,0xD0, + 0x69,0x86,0xA9,0x06,0x88,0x30,0x23,0x99,0x05,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x11,0xC8,0x30,0xC5,0x80,0xD0,0x90,0x55,0x00,0x00,0x40,0x00,0x00,0x80, + 0x14,0x49,0x4E,0x92,0x28,0x39,0x29,0xA5,0x94,0xC3,0x20,0x59,0x4C,0x92,0x4A,0x39,0x29,0xA5,0x94,0x47,0x31,0x79,0x54,0x93,0x8C,0x41,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0xC2,0x20,0x59,0x8E,0x92,0x4A,0x39,0x29,0xA5,0x94,0xC4,0x28,0x59,0x8C,0x92,0x2A,0x35,0x29,0xA5,0x94,0x47,0x39,0x79,0x52,0x93, + 0x8C,0x3D,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x05,0x29,0x79,0xD2,0x92,0xAE,0x41,0x29,0xA5,0x94,0xE4,0x28,0x69,0xD0,0x92,0x4D,0x3D, + 0x29,0xA5,0x94,0x28,0x45,0x89,0x92,0x93,0xED,0x49,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x0F,0x4A,0xF9,0x20,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0xAB,0x3D,0xB9,0xD6,0x93,0x52,0x4A,0x29,0xA5,0x94,0x31,0x4A,0x09,0x9F,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x8C,0x20, + 0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x00,0x18,0x67,0x8D,0x72,0x28,0x3A,0x89,0xCE,0x17,0x67,0x28,0x67,0x9A,0x82,0xA4,0x42,0x69,0x42,0xF7,0x26,0x39,0x4A,0x9E,0x93, + 0xDC,0x4A,0xCB,0xCD,0xE9,0x26,0x9C,0x73,0xBA,0x39,0xE5,0x9C,0x4F,0xCE,0x39,0x27,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x40,0x08,0x21,0x85,0x14,0x52,0x48,0x21, + 0x85,0x14,0x52,0x48,0x21,0x85,0x18,0x62,0x88,0x21,0x87,0x9C,0x72,0x0A,0x2A,0xA8,0xA0,0x92,0x4A,0x2A,0xAA,0xA8,0xA2,0xCA,0x2A,0xCB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C, + 0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCE,0x3A,0xEA,0xA8,0xB3,0x90,0x42,0x28,0x29,0xB4,0xD0,0x5A,0x8D,0xB1,0xC6,0x18,0x5B,0xED,0xCD,0x49,0x5B,0x73,0x94,0xD2,0x49,0x29, + 0xA5,0x94,0x52,0x4A,0xE9,0x9C,0x73,0xCE,0x09,0x42,0x43,0x56,0x01,0x00,0x20,0x00,0x00,0x04,0x42,0x06,0x19,0x64,0x90,0x51,0x46,0x21,0x85,0x18,0x62,0xCA,0x29,0xA7, + 0x9C,0x82,0x4A,0x2A,0xA9,0x80,0xD0,0x90,0x55,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x51,0x32,0x1D,0xD3,0x11,0x1D,0x51,0x11,0x1D,0xD1,0x11,0x1D,0xD1,0x11, + 0x1D,0xD1,0xF1,0x1C,0xCF,0xF1,0x24,0x51,0x12,0x2D,0xCF,0x12,0x35,0xD3,0x33,0x45,0xD3,0x34,0x5D,0x55,0x76,0x65,0x59,0x97,0x6D,0xD9,0x76,0x75,0x59,0xB7,0x75,0xD9, + 0xB7,0x7D,0x5B,0xB7,0x6D,0xDB,0xD7,0x8D,0xDD,0xF8,0x8D,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x86,0x20,0x34,0x64,0x15,0x00,0x00, + 0x02,0x00,0x00,0x20,0x84,0x10,0x42,0x48,0x21,0x85,0x14,0x52,0x48,0x29,0xA6,0x18,0x73,0x0E,0x3A,0x08,0x21,0x94,0x12,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x08, + 0x00,0x00,0x00,0x50,0x14,0x47,0x71,0x1C,0xC9,0x91,0x24,0x49,0xB2,0x24,0xCB,0xD2,0x2C,0x4D,0xD3,0x34,0x4D,0xF3,0x44,0x4F,0xF4,0x4C,0x4F,0xF5,0x5C,0x51,0x16,0x6D, + 0xD1,0xF6,0x5C,0xCF,0x16,0x6D,0xCF,0xF5,0x54,0x4F,0xF5,0x54,0x51,0x35,0x55,0xD3,0x35,0x5D,0xD5,0x75,0x5D,0xD7,0x55,0x5D,0x55,0x56,0x65,0xD7,0xB6,0x6D,0xDB,0xB6, + 0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0x5B,0x06,0x42,0x43,0x56,0x01,0x00,0x12,0x00,0x00,0x3A,0x92,0x23,0x29,0x92,0x22,0x29,0x92,0xE3,0x38,0x92,0x23, + 0x49,0x40,0x68,0xC8,0x2A,0x00,0x40,0x06,0x00,0x40,0x00,0x00,0x8A,0xA2,0x28,0x8E,0xE3,0x48,0x8E,0x25,0x59,0x92,0x26,0x89,0x92,0x69,0xA9,0x96,0xAB,0xC9,0x9E,0xEE, + 0xE9,0xA2,0x2E,0xEA,0x40,0x68,0xC8,0x2A,0x00,0x00,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x68,0x88,0x86,0xE8,0x88,0x96,0xA8,0x89,0xA2,0x28,0x8A,0xA2, + 0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A, + 0xA2,0x28,0x8A,0xA2,0xE8,0x79,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x9E,0x07,0x84,0x86,0xAC,0x02,0x00,0x24,0x00,0x00,0x74,0x24,0x47,0x72,0x2C,0xC5,0x52,0x24,0x45,0x52, + 0x2C,0xC7,0x72,0x80,0xD0,0x90,0x55,0x00,0x80,0x0C,0x00,0x80,0x00,0x00,0x1C,0xC3,0x31,0x24,0x45,0x72,0x2C,0xCB,0xB2,0x34,0x4D,0xF3,0x3C,0xCF,0xF3,0x44,0x4F,0x14, + 0x45,0x51,0x34,0x4D,0xD5,0x54,0x81,0xD0,0x90,0x55,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x45,0xB1,0x1C,0xCB,0x91,0x24,0xCD,0xF1,0x24,0xD1, + 0x11,0x25,0x51,0x12,0x2D,0x51,0x12,0x35,0x51,0x13,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45, + 0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x11,0x08,0x0D,0x59,0x09,0x00,0x00,0x01,0x00,0xF0,0x9C,0x7B,0xED,0xBD,0xF7,0xD0,0x51, + 0x29,0x25,0xF7,0x8A,0x30,0xC4,0xA0,0xF7,0x94,0x51,0x28,0xAD,0xF7,0xD0,0x38,0x82,0x9C,0xF7,0x54,0x41,0x63,0x98,0xF7,0x14,0x41,0x42,0x90,0xF5,0x5C,0x51,0x84,0x94, + 0x06,0x42,0x43,0x56,0x04,0x00,0x51,0x00,0x00,0x80,0x31,0xC8,0x31,0xC4,0x1C,0x72,0xCE,0x51,0xEA,0x24,0x45,0xCE,0x39,0x2A,0x1D,0xA5,0xC6,0x39,0x47,0xA9,0xA3,0xD4, + 0x51,0x4A,0xB1,0xA6,0x18,0x3B,0x4A,0x25,0xB6,0x14,0x6B,0xE3,0x9C,0xA3,0xD4,0x51,0xCA,0x28,0xA5,0x1A,0x4B,0x8B,0x1D,0xA5,0x54,0x63,0x8A,0xB1,0x00,0x00,0x80,0x00, + 0x07,0x00,0x80,0x00,0x0B,0xA1,0xD0,0x90,0x15,0x01,0x40,0x14,0x00,0x00,0x62,0x0C,0x52,0x0A,0x29,0x85,0x94,0x52,0xCE,0x29,0xE6,0x90,0x52,0xCA,0x31,0xE5,0x1C,0x52, + 0x4A,0x39,0xA6,0x98,0x53,0xCE,0x39,0x08,0x1D,0x84,0xCA,0x39,0x06,0x9D,0x83,0x10,0x29,0xA5,0x9C,0x53,0xCC,0x29,0xE7,0x1C,0x84,0xCC,0x41,0xE5,0x9C,0x83,0xD0,0x41, + 0x28,0x00,0x00,0x20,0xC0,0x01,0x00,0x20,0xC0,0x42,0x28,0x34,0x64,0x45,0x00,0x10,0x27,0x00,0xE0,0x70,0x1C,0xCF,0x93,0x34,0x4D,0x14,0x25,0x4D,0x13,0x45,0x4F,0x14, + 0x5D,0xD7,0x13,0x4D,0xD5,0x95,0x34,0xCD,0x34,0x35,0x51,0x54,0x4D,0xCD,0x13,0x4D,0xD5,0x54,0x4D,0x5B,0x16,0x4D,0xD3,0x95,0x25,0x4D,0x33,0x4D,0x4D,0xF4,0x54,0x53, + 0x13,0x45,0x55,0x15,0x4D,0x53,0x76,0x4D,0x53,0x95,0x65,0xCF,0x34,0x75,0xD9,0x54,0x55,0x5D,0x16,0x55,0xD5,0x96,0x65,0x5B,0x16,0x76,0x57,0x96,0x75,0xDD,0x33,0x4D, + 0xD9,0x16,0x55,0x55,0xB6,0x4D,0xD5,0x95,0x7D,0x57,0x96,0x75,0x5D,0x96,0x6D,0x5D,0x98,0x34,0xCD,0x34,0x35,0x51,0x54,0x55,0x4D,0x14,0x55,0xD7,0x54,0x55,0xDB,0x36, + 0x55,0xD7,0xB6,0x35,0x51,0x74,0x5D,0x51,0x55,0x65,0x57,0x54,0x55,0x59,0x76,0x65,0xD7,0xB6,0x55,0xD7,0xD5,0x6D,0x4D,0x14,0x5D,0x55,0x54,0x4D,0x59,0x15,0x55,0xD5, + 0x95,0x55,0x57,0xB5,0x65,0xD5,0x75,0x75,0xDD,0x74,0x5D,0x5F,0x57,0x65,0xD9,0xF7,0x4D,0xD7,0xF5,0x7D,0xDB,0xB6,0x85,0x5F,0xB6,0x6D,0xE1,0x18,0x55,0xD5,0xD6,0x4D, + 0x57,0xD5,0x75,0xD3,0x75,0x75,0x61,0xD6,0x65,0xE1,0x97,0x6D,0x5D,0x58,0x26,0x4D,0x33,0x4D,0x4D,0x14,0x5D,0x55,0x13,0x45,0x55,0x35,0x55,0x55,0xB7,0x4D,0xD5,0x95, + 0x6D,0x4D,0x14,0x5D,0x57,0x54,0x55,0xD9,0xF5,0x4C,0xD5,0x75,0x55,0xD7,0xD5,0x75,0x55,0x75,0x6D,0x5B,0x13,0x45,0xD7,0x15,0x55,0x55,0x96,0x45,0x55,0x75,0x5D,0xD5, + 0x75,0x7D,0x5D,0x75,0x65,0xDB,0x16,0x55,0xD5,0xD7,0x4D,0xD7,0xF5,0x75,0x53,0x75,0x6D,0x5B,0xB6,0x75,0x63,0x98,0x65,0xDB,0xF7,0x4D,0xD7,0xD5,0x75,0x53,0x76,0x75, + 0x61,0x95,0x5D,0xDD,0x97,0x75,0x5B,0x38,0x6E,0xDD,0xD6,0x85,0xCF,0x34,0x75,0xDD,0x74,0x5D,0x61,0x37,0x5D,0x57,0xF8,0x6D,0x5F,0x17,0x86,0xD9,0xD6,0x7D,0x5F,0x54, + 0x5D,0xDF,0x57,0x65,0xD9,0x17,0x56,0x59,0xF6,0x7D,0xDD,0xF7,0xB1,0x75,0x5D,0x19,0x46,0x55,0x15,0x7E,0x53,0x56,0x7D,0x5F,0x75,0x5D,0x5F,0xD8,0x7D,0x5D,0x59,0x6E, + 0x5F,0x67,0xBC,0xB6,0x8E,0xAD,0xFB,0xC6,0x31,0xDB,0xBA,0x30,0xFC,0xC6,0x91,0xEE,0xFB,0xCA,0xB1,0xDA,0x32,0x63,0xF6,0x65,0x61,0x98,0x75,0x1B,0x61,0xD8,0x95,0xE3, + 0xF6,0x7D,0xA5,0x67,0x9A,0xBA,0x6E,0xBA,0xAA,0xEF,0x9B,0xAA,0x2B,0xFC,0xB6,0xAE,0x0B,0xC7,0xAE,0xFB,0x88,0xAA,0xAA,0xEB,0xAA,0xEC,0xFA,0xC6,0xE9,0xCA,0xC2,0x30, + 0xEB,0xBA,0xB0,0xEC,0xBA,0xAF,0x1C,0xA3,0xAB,0xF2,0x55,0xD9,0xF5,0x7D,0x55,0x96,0x7D,0xE1,0xF6,0x75,0x65,0xD9,0x75,0xDF,0x38,0x5E,0xDB,0x16,0x8E,0xD9,0xD6,0x8D, + 0xB2,0xAD,0x1B,0xCB,0x2E,0xFC,0x94,0x5F,0x37,0x86,0xE5,0xB5,0x6D,0x65,0x99,0x75,0x9D,0x31,0x0B,0xBB,0x71,0xEC,0xBE,0x50,0x19,0x96,0xE3,0x28,0x00,0x00,0x60,0xC0, + 0x01,0x00,0x20,0xC0,0x84,0x32,0x50,0x68,0xC8,0x8A,0x00,0x20,0x4E,0x00,0x80,0x41,0x08,0x42,0xC5,0x14,0x84,0x4A,0x31,0x08,0xA1,0x84,0x96,0x42,0x28,0xA9,0x55,0x8C, + 0x49,0xC9,0x1C,0x93,0x92,0x31,0x27,0xA5,0x94,0xD2,0x5A,0x28,0x25,0xB5,0x8A,0x31,0x29,0x99,0x63,0x52,0x32,0xC6,0xA4,0x84,0x52,0x5A,0x2A,0xA5,0xB4,0x16,0x4A,0x89, + 0xAD,0x94,0x12,0x63,0x29,0x25,0xB6,0xD6,0x5A,0xAD,0xAD,0xB5,0x5A,0x43,0x29,0x2D,0x86,0x52,0x62,0x2C,0xA5,0xC4,0xD8,0x5A,0xCB,0xB5,0xC5,0x56,0x6B,0xC4,0x98,0x94, + 0xCC,0x31,0x29,0x19,0x73,0x52,0x4A,0x29,0xAD,0x95,0x52,0x5A,0xCB,0x9C,0x93,0xD2,0x39,0x27,0xA9,0x73,0x8E,0x4A,0x29,0x29,0xC5,0x52,0x52,0x8B,0x15,0x63,0x52,0x32, + 0xC7,0xA8,0x74,0xCE,0x49,0x2A,0xA9,0xC4,0x54,0x4A,0x89,0xAD,0xA4,0x12,0x63,0x29,0xA5,0xC5,0x92,0x52,0x8C,0x2D,0xC5,0x54,0x5B,0x8C,0xB5,0x86,0x52,0x5A,0x2C,0xA5, + 0xC4,0x56,0x4A,0x8A,0xB1,0xC5,0x54,0x5B,0x8C,0x31,0xD7,0x88,0x31,0x29,0x19,0x63,0x52,0x32,0xE6,0xA4,0x94,0x52,0x5A,0x2B,0xA5,0xB4,0x58,0x31,0x26,0xA5,0x73,0x8E, + 0x4A,0xC6,0x9C,0xA4,0x52,0x4A,0x6B,0xA5,0xA4,0x14,0x33,0xE7,0xA4,0x64,0xCE,0x49,0xEA,0x9C,0xA3,0x52,0x52,0x89,0xAD,0xA4,0x12,0x53,0x28,0x25,0xC6,0x92,0x52,0x8C, + 0xA5,0x94,0x16,0x63,0x8C,0xB5,0xB6,0x14,0x5B,0x2D,0x25,0xC5,0x58,0x52,0x8A,0xB1,0x94,0x12,0x5B,0x8B,0xB1,0xD6,0x16,0x53,0x6E,0xA1,0x94,0x18,0x4B,0x29,0x31,0x96, + 0x52,0x62,0x8C,0x31,0xE6,0xDC,0x62,0xAC,0x35,0x94,0x12,0x63,0x29,0x29,0xC6,0x92,0x4A,0x6C,0xB1,0xC5,0x9A,0x63,0x8C,0xB9,0x86,0x52,0x62,0x2C,0xA5,0xC4,0x56,0x4A, + 0x6A,0x31,0xC6,0x96,0x6B,0x8C,0xB1,0xD6,0x16,0x5B,0xAE,0x2D,0xB5,0x5A,0x5B,0x6C,0xB9,0xD6,0x96,0x5B,0xAF,0x35,0xF7,0xDE,0x5A,0xAB,0x39,0xB5,0x94,0x6B,0x8B,0xB1, + 0xE6,0x5A,0x5B,0x8F,0xB5,0xE6,0xDE,0x43,0x29,0x31,0x96,0x52,0x62,0x2C,0xA5,0xC4,0xD8,0x62,0xAB,0x35,0xC6,0x98,0x73,0x28,0x25,0xC6,0x92,0x4A,0x6C,0xA5,0x94,0x16, + 0x63,0x8C,0xB5,0xB6,0x16,0x6B,0x0E,0xA5,0xC4,0x58,0x4A,0x6A,0xB1,0xA4,0x12,0x63,0x8C,0xB1,0xE6,0x18,0x63,0xAE,0xAD,0xB5,0x5C,0x5B,0x6C,0xB9,0xA6,0xD4,0x6A,0xAE, + 0xB5,0x06,0x5F,0x5B,0x8D,0xC1,0xB5,0x58,0x7B,0x8C,0x31,0xE6,0xD6,0x52,0xAD,0x35,0xD7,0xDE,0x6B,0x6D,0xBD,0x15,0x00,0x00,0x30,0xE0,0x00,0x00,0x10,0x60,0x42,0x19, + 0x28,0x34,0x64,0x25,0x00,0x10,0x05,0x00,0x40,0x18,0xA3,0x14,0x63,0x10,0x1A,0x64,0x18,0x73,0x0C,0x42,0x63,0x0C,0x63,0xCC,0x41,0xA8,0x18,0x73,0xCE,0x41,0x29,0x15, + 0x63,0xCE,0x41,0x27,0x25,0x73,0xCC,0x41,0x28,0x29,0x65,0xCC,0x41,0x28,0x25,0xA5,0x10,0x42,0x29,0x29,0xB5,0x16,0x42,0x28,0x25,0xA5,0xD6,0x0A,0x00,0x00,0x28,0x70, + 0x00,0x00,0x08,0xB0,0x41,0x53,0x62,0x71,0x80,0x42,0x43,0x56,0x02,0x00,0xA9,0x00,0x00,0x06,0xC7,0xB1,0x2C,0xCF,0x13,0x4D,0x55,0xB5,0x6D,0xC7,0x92,0x3C,0x4F,0x14, + 0x55,0x55,0x55,0x6D,0xDB,0x91,0x24,0xCF,0x13,0x45,0x53,0x55,0x5D,0xDB,0xD6,0x3C,0x4F,0x14,0x55,0x53,0x55,0x5D,0x57,0xD7,0x35,0xCF,0x13,0x45,0x55,0x55,0x55,0xD7, + 0xD5,0x6D,0xD1,0x34,0x55,0x55,0x55,0x5D,0x57,0x76,0x7D,0x5F,0x34,0x4D,0x55,0x55,0x55,0xD7,0x95,0x65,0xDD,0x37,0x55,0x55,0x55,0x5D,0x57,0x96,0x65,0x59,0xF8,0x4D, + 0x55,0x75,0x5D,0xD7,0x75,0x65,0xDB,0xF6,0x7D,0xD5,0x75,0x5D,0x57,0x96,0x6D,0xDB,0xB6,0x85,0x61,0x75,0x5D,0xD7,0x95,0x65,0xDB,0xD6,0x6D,0x63,0xD8,0x6D,0x5D,0xD7, + 0x7D,0x5F,0x38,0x96,0x61,0xA9,0xEB,0xBA,0xAE,0xFB,0xC2,0xEF,0x1B,0x43,0x02,0x00,0xC0,0x13,0x1C,0x00,0x80,0x0A,0x6C,0x58,0x1D,0xE1,0xA4,0x68,0x2C,0xB0,0xD0,0x90, + 0x95,0x00,0x40,0x06,0x00,0x00,0x61,0x0C,0x42,0x06,0x21,0x85,0x0C,0x42,0x08,0x21,0xA5,0x94,0x42,0x48,0x29,0x25,0x00,0x00,0x60,0xC0,0x01,0x00,0x20,0xC0,0x84,0x32, + 0x50,0x68,0xC8,0x4A,0x00,0x20,0x0A,0x00,0x00,0x20,0x44,0x4A,0x29,0xA5,0x34,0x52,0x4A,0x29,0xA5,0x94,0x46,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x08,0x21,0x84,0x10,0x42, + 0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x14,0x00,0x20,0x35,0xE1, + 0x00,0x20,0xF5,0x60,0x83,0xA6,0xC4,0xE2,0x00,0x85,0x86,0xAC,0x04,0x00,0x52,0x01,0x00,0x00,0x63,0x94,0x62,0xCC,0x31,0x08,0xA5,0x34,0x4C,0x39,0xE7,0x9C,0x84,0x54, + 0x5A,0x6B,0x14,0x73,0xCE,0x39,0x29,0x29,0xB5,0x96,0x39,0x27,0xA1,0x94,0x96,0x62,0x8B,0x31,0x73,0x0E,0x42,0x29,0x29,0xC5,0x58,0x73,0xE6,0xA0,0x94,0x96,0x6A,0x8C, + 0xB5,0xE6,0xCC,0x41,0x29,0xA9,0xC5,0x98,0x6B,0xCD,0x9D,0x94,0x96,0x62,0xCC,0x39,0x07,0x9D,0x3B,0x29,0xA9,0xD5,0x58,0x73,0xD0,0x39,0x97,0x94,0x6A,0xAC,0x35,0xE7, + 0x20,0x7C,0x30,0xA9,0xC5,0x58,0x6B,0xCD,0x3D,0xE7,0xA0,0x5A,0xAC,0xB1,0xF7,0x5E,0x83,0x0F,0x42,0xB5,0x98,0x73,0xCE,0x3D,0xE7,0x9C,0x83,0x01,0x00,0x38,0x0D,0x0E, + 0x00,0xA0,0x07,0x36,0xAC,0x8E,0x70,0x52,0x34,0x16,0x58,0x68,0xC8,0x4A,0x00,0x20,0x15,0x00,0x80,0x40,0x48,0x29,0xC6,0x9C,0x73,0xCE,0x39,0xA4,0x14,0x63,0xCE,0x39, + 0xE7,0x1C,0x84,0x48,0x29,0xC6,0x1C,0x73,0xCE,0x39,0xE7,0x14,0x63,0x8C,0x39,0xE7,0x1C,0x84,0x10,0x2A,0xC6,0x18,0x73,0xCE,0x39,0x08,0x21,0x64,0xCE,0x39,0xE7,0x9C, + 0x83,0x10,0x42,0xC8,0x9C,0x73,0xCE,0x39,0x08,0x21,0x84,0xD0,0x39,0x07,0x1D,0x84,0x10,0x42,0x08,0xA1,0x73,0x0E,0x42,0x08,0x21,0x84,0x10,0x42,0x07,0x21,0x84,0x10, + 0x42,0x08,0x21,0x84,0x0E,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x14,0x00,0x00,0x58, + 0xE0,0x00,0x00,0x10,0x60,0xC3,0xEA,0x08,0x27,0x45,0x63,0x81,0x85,0x86,0xAC,0x04,0x00,0x80,0x00,0x00,0x38,0xCD,0x39,0xE8,0x16,0x63,0x62,0x98,0x63,0x8E,0x9A,0x43, + 0x14,0x62,0xD0,0x73,0x85,0x94,0x52,0x8E,0x9B,0x66,0x94,0x41,0x4E,0x7C,0xA6,0x14,0x42,0x4A,0x53,0xE6,0x18,0x43,0x46,0x4A,0xCC,0x3D,0x99,0x4A,0x02,0x00,0x00,0x20, + 0x08,0x00,0x10,0x10,0x12,0x00,0x60,0x80,0xA0,0x60,0x06,0x00,0x18,0x1C,0x20,0x7C,0x0E,0x82,0x4E,0x80,0xE0,0x68,0x03,0x00,0x10,0x84,0xC8,0x0C,0x91,0x68,0x58,0x08, + 0x0E,0x0F,0x2A,0x01,0x22,0x62,0x2A,0x00,0x48,0x4C,0x50,0xC8,0x05,0x80,0x0A,0x8B,0x8B,0xB4,0x8B,0x0B,0xE8,0x32,0xC0,0x05,0x5D,0xDC,0x75,0x20,0x84,0x20,0x04,0x21, + 0x88,0xC5,0x01,0x14,0x90,0x80,0x83,0x13,0x6E,0x78,0xE2,0x0D,0x4F,0xB8,0xC1,0x09,0x3A,0x45,0xA5,0x0E,0x02,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x1E,0x00,0x00,0x8E, + 0x0B,0x20,0x22,0xA2,0x39,0x8C,0x0C,0x8D,0x0D,0x8E,0x0E,0x8F,0x0F,0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x90,0x01,0x80,0x0F,0x00,0x80,0x43,0x04,0x88,0x88,0x68,0x0E, + 0x23,0x43,0x63,0x83,0xA3,0xC3,0xE3,0x03,0x24,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08, + 0x08, +}; +static const uint8_t vcb_6[] = { + 0x22,0x42,0x43,0x56,0x01,0x00,0x40,0x00,0x00,0x24,0x73,0x5A,0x32,0x66,0xA9,0x73,0xD8,0x7B,0xEF,0x1D,0x42,0x92,0x19,0xE3,0x1C,0x42,0xD0,0x7B,0xEF,0x99,0x41,0x4C, + 0x11,0xA2,0x1C,0x42,0xCC,0x6B,0xEC,0x21,0x63,0x92,0x19,0xC3,0xA0,0x42,0x8A,0x63,0xAA,0x81,0xD0,0x90,0x55,0x00,0x00,0x40,0x00,0x00,0x67,0xBD,0x97,0xDA,0x7B,0xCB, + 0xBD,0xF7,0xDE,0x7B,0x46,0xB9,0x67,0xD4,0x7B,0x69,0xBD,0xF7,0xDE,0x7B,0xC8,0xBD,0x87,0xD6,0x7B,0xCA,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7, + 0xDE,0x7B,0x25,0xB1,0x67,0x92,0x7B,0x48,0xBD,0xF7,0xDE,0x7B,0xE3,0xB0,0x47,0x8E,0x7B,0x06,0xB9,0xF7,0xDE,0x7B,0x65,0xBD,0x57,0x92,0x7B,0x28,0xB5,0xF7,0xDE,0x7B, + 0xED,0xBD,0xB7,0xDA,0x7B,0xEE,0xBD,0xF7,0xDE,0x7B,0x03,0xA9,0x47,0x10,0x7B,0x06,0xB9,0xF7,0xDE,0x7B,0xC1,0xA8,0x27,0x8A,0x7A,0xC4,0xAC,0xF7,0xDE,0x7B,0x03,0xB5, + 0x37,0x0C,0x7B,0xE5,0xB0,0xF7,0xDE,0x7B,0xAA,0xBD,0x97,0x5E,0x7B,0xEA,0xBD,0xF7,0xDE,0x7B,0x86,0xBD,0x87,0x98,0x7B,0x8A,0xBD,0xF7,0xDE,0x7B,0x24,0xB5,0x57,0x92, + 0x7B,0x28,0xBD,0xF7,0xDE,0x7B,0x86,0xBD,0x57,0xD2,0x7B,0x68,0xBD,0xF7,0xDE,0x7B,0xEA,0xBD,0x97,0xDE,0x7B,0xEC,0xBD,0xF7,0xDE,0x7B,0x20,0x34,0x64,0x15,0x00,0x90, + 0x00,0x00,0xA0,0xA2,0x28,0x8A,0xA2,0x28,0x0A,0x10,0x1A,0xB2,0x0A,0x00,0xC8,0x00,0x00,0x10,0x40,0x51,0x1C,0xC5,0x71,0x1C,0xC9,0x91,0x1C,0xC9,0xB1,0x1C,0x0B,0x08, + 0x0D,0x59,0x05,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0xA0,0x48,0x8A,0xA4,0x58,0x8E,0xE5,0x58,0x8E,0x25,0x59,0x92,0x25,0x59,0x92,0x25,0x49,0x92,0xA5,0x79,0xA6,0xEB, + 0xBA,0xAE,0xEB,0xBA,0xAE,0xEB,0xBA,0x2E,0x10,0x1A,0xB2,0x0A,0x00,0x48,0x00,0x00,0x50,0x51,0x14,0xC5,0x70,0x14,0x07,0x08,0x0D,0x59,0x05,0x00,0x64,0x00,0x00,0x08, + 0xA0,0x48,0x8A,0xA5,0x68,0x8A,0xA7,0x88,0x8A,0xA9,0xA8,0x8E,0x0A,0x84,0x86,0xAC,0x02,0x00,0x80,0x00,0x00,0x04,0x00,0x00,0x10,0x5C,0x43,0x54,0x4C,0xC7,0x95,0x5C, + 0xCB,0x35,0x5D,0xD5,0x75,0x5D,0xD7,0x75,0x5D,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x08,0x0D,0x59,0x05,0x00,0x40,0x00,0x00,0x10,0xD0, + 0x69,0x86,0xA9,0x06,0x88,0x30,0x23,0x99,0x05,0x42,0x43,0x56,0x01,0x00,0x08,0x00,0x00,0x00,0x11,0xC8,0x30,0xC5,0x80,0xD0,0x90,0x55,0x00,0x00,0x40,0x00,0x00,0x80, + 0x14,0x49,0x4E,0x92,0x28,0x39,0x29,0xA5,0x94,0xC3,0x20,0x59,0x4C,0x92,0x4A,0x39,0x29,0xA5,0x94,0x47,0x31,0x79,0x54,0x93,0x8C,0x41,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0xC2,0x20,0x59,0x8E,0x92,0x4A,0x39,0x29,0xA5,0x94,0xC4,0x28,0x59,0x8C,0x92,0x2A,0x35,0x29,0xA5,0x94,0x47,0x39,0x79,0x52,0x93, + 0x8C,0x3D,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x05,0x29,0x79,0xD2,0x92,0xAE,0x41,0x29,0xA5,0x94,0xE4,0x28,0x69,0xD0,0x92,0x4D,0x3D, + 0x29,0xA5,0x94,0x28,0x45,0x89,0x92,0x93,0xED,0x49,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x0F,0x4A,0xF9,0x20,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0xAB,0x3D,0xB9,0xD6,0x93,0x52,0x4A,0x29,0xA5,0x94,0x31,0x4A,0x09,0x9F,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x8C,0x20, + 0x34,0x64,0x15,0x00,0x00,0x04,0x00,0x00,0x18,0x67,0x8D,0x72,0x28,0x3A,0x89,0xCE,0x17,0x67,0x28,0x67,0x9A,0x82,0xA4,0x42,0x69,0x42,0xF7,0x26,0x39,0x4A,0x9E,0x93, + 0xDC,0x4A,0xCB,0xCD,0xE9,0x26,0x9C,0x73,0xBA,0x39,0xE5,0x9C,0x4F,0xCE,0x39,0x27,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x40,0x08,0x21,0x85,0x14,0x52,0x48,0x21, + 0x85,0x14,0x52,0x48,0x21,0x85,0x18,0x62,0x88,0x21,0x87,0x9C,0x72,0x0A,0x2A,0xA8,0xA0,0x92,0x4A,0x2A,0xAA,0xA8,0xA2,0xCA,0x2A,0xCB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C, + 0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCE,0x3A,0xEA,0xA8,0xB3,0x90,0x42,0x28,0x29,0xB4,0xD0,0x5A,0x8D,0xB1,0xC6,0x18,0x5B,0xED,0xCD,0x49,0x5B,0x73,0x94,0xD2,0x49,0x29, + 0xA5,0x94,0x52,0x4A,0xE9,0x9C,0x73,0xCE,0x09,0x42,0x43,0x56,0x01,0x00,0x20,0x00,0x00,0x04,0x42,0x06,0x19,0x64,0x90,0x51,0x46,0x21,0x85,0x18,0x62,0xCA,0x29,0xA7, + 0x9C,0x82,0x4A,0x2A,0xA9,0x80,0xD0,0x90,0x55,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x51,0x32,0x1D,0xD3,0x11,0x1D,0x51,0x11,0x1D,0xD1,0x11,0x1D,0xD1,0x11, + 0x1D,0xD1,0xF1,0x1C,0xCF,0xF1,0x24,0x51,0x12,0x2D,0xCF,0x12,0x35,0xD3,0x33,0x45,0xD3,0x34,0x5D,0x55,0x76,0x65,0x59,0x97,0x6D,0xD9,0x76,0x75,0x59,0xB7,0x75,0xD9, + 0xB7,0x7D,0x5B,0xB7,0x6D,0xDB,0xD7,0x8D,0xDD,0xF8,0x8D,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x86,0x20,0x34,0x64,0x15,0x00,0x00, + 0x02,0x00,0x00,0x20,0x84,0x10,0x42,0x48,0x21,0x85,0x14,0x52,0x48,0x29,0xA6,0x18,0x73,0x0E,0x3A,0x08,0x21,0x94,0x12,0x08,0x0D,0x59,0x05,0x00,0x00,0x02,0x00,0x08, + 0x00,0x00,0x00,0x50,0x14,0x47,0x71,0x1C,0xC9,0x91,0x24,0x49,0xB2,0x24,0xCB,0xD2,0x2C,0x4D,0xD3,0x34,0x4D,0xF3,0x44,0x4F,0xF4,0x4C,0x4F,0xF5,0x5C,0x51,0x16,0x6D, + 0xD1,0xF6,0x5C,0xCF,0x16,0x6D,0xCF,0xF5,0x54,0x4F,0xF5,0x54,0x51,0x35,0x55,0xD3,0x35,0x5D,0xD5,0x75,0x5D,0xD7,0x55,0x5D,0x55,0x56,0x65,0xD7,0xB6,0x6D,0xDB,0xB6, + 0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0x5B,0x06,0x42,0x43,0x56,0x01,0x00,0x12,0x00,0x00,0x3A,0x92,0x23,0x29,0x92,0x22,0x29,0x92,0xE3,0x38,0x92,0x23, + 0x49,0x40,0x68,0xC8,0x2A,0x00,0x40,0x06,0x00,0x40,0x00,0x00,0x8A,0xA2,0x28,0x8E,0xE3,0x48,0x8E,0x25,0x59,0x92,0x26,0x89,0x92,0x69,0xA9,0x96,0xAB,0xC9,0x9E,0xEE, + 0xE9,0xA2,0x2E,0xEA,0x40,0x68,0xC8,0x2A,0x00,0x00,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x68,0x88,0x86,0xE8,0x88,0x96,0xA8,0x89,0xA2,0x28,0x8A,0xA2, + 0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A, + 0xA2,0x28,0x8A,0xA2,0xE8,0x79,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x9E,0x07,0x84,0x86,0xAC,0x02,0x00,0x24,0x00,0x00,0x74,0x24,0x47,0x72,0x2C,0xC5,0x52,0x24,0x45,0x52, + 0x2C,0xC7,0x72,0x80,0xD0,0x90,0x55,0x00,0x80,0x0C,0x00,0x80,0x00,0x00,0x1C,0xC3,0x31,0x24,0x45,0x72,0x2C,0xCB,0xB2,0x34,0x4D,0xF3,0x3C,0xCF,0xF3,0x44,0x4F,0x14, + 0x45,0x51,0x34,0x4D,0xD5,0x54,0x81,0xD0,0x90,0x55,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x45,0xB1,0x1C,0xCB,0x91,0x24,0xCD,0xF1,0x24,0xD1, + 0x11,0x25,0x51,0x12,0x2D,0x51,0x12,0x35,0x51,0x13,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45, + 0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x11,0x08,0x0D,0x59,0x09,0x00,0x00,0x01,0x00,0xF0,0x9C,0x7B,0xED,0xBD,0xF7,0xD0,0x51, + 0x29,0x25,0xF7,0x8A,0x30,0xC4,0xA0,0xF7,0x94,0x51,0x28,0xAD,0xF7,0xD0,0x38,0x82,0x9C,0xF7,0x54,0x41,0x63,0x98,0xF7,0x14,0x41,0x42,0x90,0xF5,0x5C,0x51,0x84,0x94, + 0x06,0x42,0x43,0x56,0x04,0x00,0x51,0x00,0x00,0x80,0x31,0xC8,0x31,0xC4,0x1C,0x72,0xCE,0x51,0xEA,0x24,0x45,0xCE,0x39,0x2A,0x1D,0xA5,0xC6,0x39,0x47,0xA9,0xA3,0xD4, + 0x51,0x4A,0xB1,0xA6,0x18,0x3B,0x4A,0x25,0xB6,0x14,0x6B,0xE3,0x9C,0xA3,0xD4,0x51,0xCA,0x28,0xA5,0x1A,0x4B,0x8B,0x1D,0xA5,0x54,0x63,0x8A,0xB1,0x00,0x00,0x80,0x00, + 0x07,0x00,0x80,0x00,0x0B,0xA1,0xD0,0x90,0x15,0x01,0x40,0x14,0x00,0x00,0x62,0x0C,0x52,0x0A,0x29,0x85,0x94,0x52,0xCE,0x29,0xE6,0x90,0x52,0xCA,0x31,0xE5,0x1C,0x52, + 0x4A,0x39,0xA6,0x98,0x53,0xCE,0x39,0x08,0x1D,0x84,0xCA,0x39,0x06,0x9D,0x83,0x10,0x29,0xA5,0x9C,0x53,0xCC,0x29,0xE7,0x1C,0x84,0xCC,0x41,0xE5,0x9C,0x83,0xD0,0x41, + 0x28,0x00,0x00,0x20,0xC0,0x01,0x00,0x20,0xC0,0x42,0x28,0x34,0x64,0x45,0x00,0x10,0x27,0x00,0xE0,0x70,0x1C,0xCF,0x93,0x34,0x4D,0x14,0x25,0x4D,0x13,0x45,0x4F,0x14, + 0x5D,0xD7,0x13,0x4D,0xD5,0x95,0x34,0xCD,0x34,0x35,0x51,0x54,0x4D,0xCD,0x13,0x4D,0xD5,0x54,0x4D,0x5B,0x16,0x4D,0xD3,0x95,0x25,0x4D,0x33,0x4D,0x4D,0xF4,0x54,0x53, + 0x13,0x45,0x55,0x15,0x4D,0x53,0x76,0x4D,0x53,0x95,0x65,0xCF,0x34,0x75,0xD9,0x54,0x55,0x5D,0x16,0x55,0xD5,0x96,0x65,0x5B,0x16,0x76,0x57,0x96,0x75,0xDD,0x33,0x4D, + 0xD9,0x16,0x55,0x55,0xB6,0x4D,0xD5,0x95,0x7D,0x57,0x96,0x75,0x5D,0x96,0x6D,0x5D,0x98,0x34,0xCD,0x34,0x35,0x51,0x54,0x55,0x4D,0x14,0x55,0xD7,0x54,0x55,0xDB,0x36, + 0x55,0xD7,0xB6,0x35,0x51,0x74,0x5D,0x51,0x55,0x65,0x57,0x54,0x55,0x59,0x76,0x65,0xD7,0xB6,0x55,0xD7,0xD5,0x6D,0x4D,0x14,0x5D,0x55,0x54,0x4D,0x59,0x15,0x55,0xD5, + 0x95,0x55,0x57,0xB5,0x65,0xD5,0x75,0x75,0xDD,0x74,0x5D,0x5F,0x57,0x65,0xD9,0xF7,0x4D,0xD7,0xF5,0x7D,0xDB,0xB6,0x85,0x5F,0xB6,0x6D,0xE1,0x18,0x55,0xD5,0xD6,0x4D, + 0x57,0xD5,0x75,0xD3,0x75,0x75,0x61,0xD6,0x65,0xE1,0x97,0x6D,0x5D,0x58,0x26,0x4D,0x33,0x4D,0x4D,0x14,0x5D,0x55,0x13,0x45,0x55,0x35,0x55,0x55,0xB7,0x4D,0xD5,0x95, + 0x6D,0x4D,0x14,0x5D,0x57,0x54,0x55,0xD9,0xF5,0x4C,0xD5,0x75,0x55,0xD7,0xD5,0x75,0x55,0x75,0x6D,0x5B,0x13,0x45,0xD7,0x15,0x55,0x55,0x96,0x45,0x55,0x75,0x5D,0xD5, + 0x75,0x7D,0x5D,0x75,0x65,0xDB,0x16,0x55,0xD5,0xD7,0x4D,0xD7,0xF5,0x75,0x53,0x75,0x6D,0x5B,0xB6,0x75,0x63,0x98,0x65,0xDB,0xF7,0x4D,0xD7,0xD5,0x75,0x53,0x76,0x75, + 0x61,0x95,0x5D,0xDD,0x97,0x75,0x5B,0x38,0x6E,0xDD,0xD6,0x85,0xCF,0x34,0x75,0xDD,0x74,0x5D,0x61,0x37,0x5D,0x57,0xF8,0x6D,0x5F,0x17,0x86,0xD9,0xD6,0x7D,0x5F,0x54, + 0x5D,0xDF,0x57,0x65,0xD9,0x17,0x56,0x59,0xF6,0x7D,0xDD,0xF7,0xB1,0x75,0x5D,0x19,0x46,0x55,0x15,0x7E,0x53,0x56,0x7D,0x5F,0x75,0x5D,0x5F,0xD8,0x7D,0x5D,0x59,0x6E, + 0x5F,0x67,0xBC,0xB6,0x8E,0xAD,0xFB,0xC6,0x31,0xDB,0xBA,0x30,0xFC,0xC6,0x91,0xEE,0xFB,0xCA,0xB1,0xDA,0x32,0x63,0xF6,0x65,0x61,0x98,0x75,0x1B,0x61,0xD8,0x95,0xE3, + 0xF6,0x7D,0xA5,0x67,0x9A,0xBA,0x6E,0xBA,0xAA,0xEF,0x9B,0xAA,0x2B,0xFC,0xB6,0xAE,0x0B,0xC7,0xAE,0xFB,0x88,0xAA,0xAA,0xEB,0xAA,0xEC,0xFA,0xC6,0xE9,0xCA,0xC2,0x30, + 0xEB,0xBA,0xB0,0xEC,0xBA,0xAF,0x1C,0xA3,0xAB,0xF2,0x55,0xD9,0xF5,0x7D,0x55,0x96,0x7D,0xE1,0xF6,0x75,0x65,0xD9,0x75,0xDF,0x38,0x5E,0xDB,0x16,0x8E,0xD9,0xD6,0x8D, + 0xB2,0xAD,0x1B,0xCB,0x2E,0xFC,0x94,0x5F,0x37,0x86,0xE5,0xB5,0x6D,0x65,0x99,0x75,0x9D,0x31,0x0B,0xBB,0x71,0xEC,0xBE,0x50,0x19,0x96,0xE3,0x28,0x00,0x00,0x60,0xC0, + 0x01,0x00,0x20,0xC0,0x84,0x32,0x50,0x68,0xC8,0x8A,0x00,0x20,0x4E,0x00,0x80,0x41,0x08,0x42,0xC5,0x14,0x84,0x4A,0x31,0x08,0xA1,0x84,0x96,0x42,0x28,0xA9,0x55,0x8C, + 0x49,0xC9,0x1C,0x93,0x92,0x31,0x27,0xA5,0x94,0xD2,0x5A,0x28,0x25,0xB5,0x8A,0x31,0x29,0x99,0x63,0x52,0x32,0xC6,0xA4,0x84,0x52,0x5A,0x2A,0xA5,0xB4,0x16,0x4A,0x89, + 0xAD,0x94,0x12,0x63,0x29,0x25,0xB6,0xD6,0x5A,0xAD,0xAD,0xB5,0x5A,0x43,0x29,0x2D,0x86,0x52,0x62,0x2C,0xA5,0xC4,0xD8,0x5A,0xCB,0xB5,0xC5,0x56,0x6B,0xC4,0x98,0x94, + 0xCC,0x31,0x29,0x19,0x73,0x52,0x4A,0x29,0xAD,0x95,0x52,0x5A,0xCB,0x9C,0x93,0xD2,0x39,0x27,0xA9,0x73,0x8E,0x4A,0x29,0x29,0xC5,0x52,0x52,0x8B,0x15,0x63,0x52,0x32, + 0xC7,0xA8,0x74,0xCE,0x49,0x2A,0xA9,0xC4,0x54,0x4A,0x89,0xAD,0xA4,0x12,0x63,0x29,0xA5,0xC5,0x92,0x52,0x8C,0x2D,0xC5,0x54,0x5B,0x8C,0xB5,0x86,0x52,0x5A,0x2C,0xA5, + 0xC4,0x56,0x4A,0x8A,0xB1,0xC5,0x54,0x5B,0x8C,0x31,0xD7,0x88,0x31,0x29,0x19,0x63,0x52,0x32,0xE6,0xA4,0x94,0x52,0x5A,0x2B,0xA5,0xB4,0x58,0x31,0x26,0xA5,0x73,0x8E, + 0x4A,0xC6,0x9C,0xA4,0x52,0x4A,0x6B,0xA5,0xA4,0x14,0x33,0xE7,0xA4,0x64,0xCE,0x49,0xEA,0x9C,0xA3,0x52,0x52,0x89,0xAD,0xA4,0x12,0x53,0x28,0x25,0xC6,0x92,0x52,0x8C, + 0xA5,0x94,0x16,0x63,0x8C,0xB5,0xB6,0x14,0x5B,0x2D,0x25,0xC5,0x58,0x52,0x8A,0xB1,0x94,0x12,0x5B,0x8B,0xB1,0xD6,0x16,0x53,0x6E,0xA1,0x94,0x18,0x4B,0x29,0x31,0x96, + 0x52,0x62,0x8C,0x31,0xE6,0xDC,0x62,0xAC,0x35,0x94,0x12,0x63,0x29,0x29,0xC6,0x92,0x4A,0x6C,0xB1,0xC5,0x9A,0x63,0x8C,0xB9,0x86,0x52,0x62,0x2C,0xA5,0xC4,0x56,0x4A, + 0x6A,0x31,0xC6,0x96,0x6B,0x8C,0xB1,0xD6,0x16,0x5B,0xAE,0x2D,0xB5,0x5A,0x5B,0x6C,0xB9,0xD6,0x96,0x5B,0xAF,0x35,0xF7,0xDE,0x5A,0xAB,0x39,0xB5,0x94,0x6B,0x8B,0xB1, + 0xE6,0x5A,0x5B,0x8F,0xB5,0xE6,0xDE,0x43,0x29,0x31,0x96,0x52,0x62,0x2C,0xA5,0xC4,0xD8,0x62,0xAB,0x35,0xC6,0x98,0x73,0x28,0x25,0xC6,0x92,0x4A,0x6C,0xA5,0x94,0x16, + 0x63,0x8C,0xB5,0xB6,0x16,0x6B,0x0E,0xA5,0xC4,0x58,0x4A,0x6A,0xB1,0xA4,0x12,0x63,0x8C,0xB1,0xE6,0x18,0x63,0xAE,0xAD,0xB5,0x5C,0x5B,0x6C,0xB9,0xA6,0xD4,0x6A,0xAE, + 0xB5,0x06,0x5F,0x5B,0x8D,0xC1,0xB5,0x58,0x7B,0x8C,0x31,0xE6,0xD6,0x52,0xAD,0x35,0xD7,0xDE,0x6B,0x6D,0xBD,0x15,0x00,0x00,0x30,0xE0,0x00,0x00,0x10,0x60,0x42,0x19, + 0x28,0x34,0x64,0x25,0x00,0x10,0x05,0x00,0x40,0x18,0xA3,0x14,0x63,0x10,0x1A,0x64,0x18,0x73,0x0C,0x42,0x63,0x0C,0x63,0xCC,0x41,0xA8,0x18,0x73,0xCE,0x41,0x29,0x15, + 0x63,0xCE,0x41,0x27,0x25,0x73,0xCC,0x41,0x28,0x29,0x65,0xCC,0x41,0x28,0x25,0xA5,0x10,0x42,0x29,0x29,0xB5,0x16,0x42,0x28,0x25,0xA5,0xD6,0x0A,0x00,0x00,0x28,0x70, + 0x00,0x00,0x08,0xB0,0x41,0x53,0x62,0x71,0x80,0x42,0x43,0x56,0x02,0x00,0xA9,0x00,0x00,0x06,0xC7,0xB1,0x2C,0xCF,0x13,0x4D,0x55,0xB5,0x6D,0xC7,0x92,0x3C,0x4F,0x14, + 0x55,0x55,0x55,0x6D,0xDB,0x91,0x24,0xCF,0x13,0x45,0x53,0x55,0x5D,0xDB,0xD6,0x3C,0x4F,0x14,0x55,0x53,0x55,0x5D,0x57,0xD7,0x35,0xCF,0x13,0x45,0x55,0x55,0x55,0xD7, + 0xD5,0x6D,0xD1,0x34,0x55,0x55,0x55,0x5D,0x57,0x76,0x7D,0x5F,0x34,0x4D,0x55,0x55,0x55,0xD7,0x95,0x65,0xDD,0x37,0x55,0x55,0x55,0x5D,0x57,0x96,0x65,0x59,0xF8,0x4D, + 0x55,0x75,0x5D,0xD7,0x75,0x65,0xDB,0xF6,0x7D,0xD5,0x75,0x5D,0x57,0x96,0x6D,0xDB,0xB6,0x85,0x61,0x75,0x5D,0xD7,0x95,0x65,0xDB,0xD6,0x6D,0x63,0xD8,0x6D,0x5D,0xD7, + 0x7D,0x5F,0x38,0x96,0x61,0xA9,0xEB,0xBA,0xAE,0xFB,0xC2,0xEF,0x1B,0x43,0x02,0x00,0xC0,0x13,0x1C,0x00,0x80,0x0A,0x6C,0x58,0x1D,0xE1,0xA4,0x68,0x2C,0xB0,0xD0,0x90, + 0x95,0x00,0x40,0x06,0x00,0x00,0x61,0x0C,0x42,0x06,0x21,0x85,0x0C,0x42,0x08,0x21,0xA5,0x94,0x42,0x48,0x29,0x25,0x00,0x00,0x60,0xC0,0x01,0x00,0x20,0xC0,0x84,0x32, + 0x50,0x68,0xC8,0x4A,0x00,0x20,0x0A,0x00,0x00,0x20,0x44,0x4A,0x29,0xA5,0x34,0x52,0x4A,0x29,0xA5,0x94,0x46,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x08,0x21,0x84,0x10,0x42, + 0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x14,0x00,0x20,0x35,0xE1, + 0x00,0x20,0xF5,0x60,0x83,0xA6,0xC4,0xE2,0x00,0x85,0x86,0xAC,0x04,0x00,0x52,0x01,0x00,0x00,0x63,0x94,0x62,0xCC,0x31,0x08,0xA5,0x34,0x4C,0x39,0xE7,0x9C,0x84,0x54, + 0x5A,0x6B,0x14,0x73,0xCE,0x39,0x29,0x29,0xB5,0x96,0x39,0x27,0xA1,0x94,0x96,0x62,0x8B,0x31,0x73,0x0E,0x42,0x29,0x29,0xC5,0x58,0x73,0xE6,0xA0,0x94,0x96,0x6A,0x8C, + 0xB5,0xE6,0xCC,0x41,0x29,0xA9,0xC5,0x98,0x6B,0xCD,0x9D,0x94,0x96,0x62,0xCC,0x39,0x07,0x9D,0x3B,0x29,0xA9,0xD5,0x58,0x73,0xD0,0x39,0x97,0x94,0x6A,0xAC,0x35,0xE7, + 0x20,0x7C,0x30,0xA9,0xC5,0x58,0x6B,0xCD,0x3D,0xE7,0xA0,0x5A,0xAC,0xB1,0xF7,0x5E,0x83,0x0F,0x42,0xB5,0x98,0x73,0xCE,0x3D,0xE7,0x9C,0x83,0x01,0x00,0x38,0x0D,0x0E, + 0x00,0xA0,0x07,0x36,0xAC,0x8E,0x70,0x52,0x34,0x16,0x58,0x68,0xC8,0x4A,0x00,0x20,0x15,0x00,0x80,0x40,0x48,0x29,0xC6,0x9C,0x73,0xCE,0x39,0xA4,0x14,0x63,0xCE,0x39, + 0xE7,0x1C,0x84,0x48,0x29,0xC6,0x1C,0x73,0xCE,0x39,0xE7,0x14,0x63,0x8C,0x39,0xE7,0x1C,0x84,0x10,0x2A,0xC6,0x18,0x73,0xCE,0x39,0x08,0x21,0x64,0xCE,0x39,0xE7,0x9C, + 0x83,0x10,0x42,0xC8,0x9C,0x73,0xCE,0x39,0x08,0x21,0x84,0xD0,0x39,0x07,0x1D,0x84,0x10,0x42,0x08,0xA1,0x73,0x0E,0x42,0x08,0x21,0x84,0x10,0x42,0x07,0x21,0x84,0x10, + 0x42,0x08,0x21,0x84,0x0E,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x14,0x00,0x00,0x58, + 0xE0,0x00,0x00,0x10,0x60,0xC3,0xEA,0x08,0x27,0x45,0x63,0x81,0x85,0x86,0xAC,0x04,0x00,0x80,0x00,0x00,0x38,0xCD,0x39,0xE8,0x16,0x63,0x62,0x98,0x63,0x8E,0x9A,0x43, + 0x14,0x62,0xD0,0x73,0x85,0x94,0x52,0x8E,0x9B,0x66,0x94,0x41,0x4E,0x7C,0xA6,0x14,0x42,0x4A,0x53,0xE6,0x18,0x43,0x46,0x4A,0xCC,0x3D,0x99,0x4A,0x02,0x00,0x00,0x20, + 0x08,0x00,0x10,0x10,0x12,0x00,0x60,0x80,0xA0,0x60,0x06,0x00,0x18,0x1C,0x20,0x7C,0x0E,0x82,0x4E,0x80,0xE0,0x68,0x03,0x00,0x10,0x84,0xC8,0x0C,0x91,0x68,0x58,0x08, + 0x0E,0x0F,0x2A,0x01,0x22,0x62,0x2A,0x00,0x48,0x4C,0x50,0xC8,0x05,0x80,0x0A,0x8B,0x8B,0xB4,0x8B,0x0B,0xE8,0x32,0xC0,0x05,0x5D,0xDC,0x75,0x20,0x84,0x20,0x04,0x21, + 0x88,0xC5,0x01,0x14,0x90,0x80,0x83,0x13,0x6E,0x78,0xE2,0x0D,0x4F,0xB8,0xC1,0x09,0x3A,0x45,0xA5,0x0E,0x02,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x1E,0x00,0x00,0x8E, + 0x0B,0x20,0x22,0xA2,0x39,0x8C,0x0C,0x8D,0x0D,0x8E,0x0E,0x8F,0x0F,0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x70,0x01,0x80,0x0F,0x00,0x80,0x43,0x04,0x88,0x88,0x68,0x0E, + 0x23,0x43,0x63,0x83,0xA3,0xC3,0xE3,0x03,0x24,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08, + 0x08, +}; +static const uint8_t vcb_7[] = { + 0x1F,0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x9C,0x73,0x9A,0x31,0x87,0x99,0x62,0x94,0x52,0x89,0x21,0x94,0xDE,0x39,0x68,0x19,0x63,0x94,0x52,0x69,0x29,0xA5,0x5A, + 0x4A,0xA9,0xA1,0x83,0x16,0x6B,0xAB,0xBD,0xF7,0xDE,0x7B,0xEF,0xBD,0xF7,0xDE,0x7B,0xEF,0x1D,0x73,0x94,0x31,0x46,0x95,0x52,0x52,0x4A,0xA9,0x9D,0x73,0x96,0x31,0x47, + 0x15,0x63,0x52,0x4A,0x89,0xA5,0x94,0x56,0x42,0x68,0x21,0x84,0xD6,0x62,0xAB,0xBD,0xF7,0xDE,0x6B,0xEF,0xB5,0xF6,0xDE,0x7B,0xEF,0x99,0x42,0x4C,0x29,0xA4,0x14,0x42, + 0x08,0x4A,0x28,0x1D,0x53,0x8C,0x29,0xA4,0x94,0x42,0x4A,0x4A,0x08,0x25,0x64,0x0E,0x3A,0xC6,0x1C,0x53,0x8C,0x52,0x09,0x3D,0xD6,0x5E,0x6B,0xCC,0xBD,0xB6,0xD8,0x7B, + 0xED,0xA1,0x63,0xCE,0x39,0xE6,0x1C,0x53,0x4C,0x4A,0x68,0x21,0x74,0x0E,0x3A,0xE6,0x9C,0x53,0x4C,0x4A,0x68,0xA9,0x84,0x52,0x42,0x06,0xA1,0x53,0xD0,0x52,0x89,0xAD, + 0xF7,0xDE,0x62,0xEB,0xB9,0xA5,0xDA,0x7B,0xEF,0x81,0xD0,0x90,0x55,0x00,0x00,0x01,0x00,0xC0,0x40,0x10,0x1A,0xB2,0x0A,0x00,0x50,0x00,0x00,0x10,0x8A,0xA1,0x18,0x8A, + 0x02,0x84,0x86,0xAC,0x02,0x00,0x32,0x00,0x00,0x04,0xE0,0x28,0x8E,0xE3,0x38,0x8E,0xE2,0x38,0x92,0x62,0x39,0x16,0x10,0x1A,0xB2,0x0A,0x00,0x00,0x02,0x00,0x10,0x00, + 0x00,0xC0,0x90,0x0C,0x4B,0xB1,0x14,0xCD,0xD1,0x24,0x4D,0xD2,0x2C,0xCF,0x13,0x4D,0xD3,0x37,0x7D,0xD3,0x36,0x6D,0x55,0xD7,0x75,0x5D,0xD7,0x75,0x5D,0xD7,0x75,0x20, + 0x34,0x64,0x15,0x00,0x00,0x01,0x00,0x40,0x40,0xA7,0x19,0xA6,0x1A,0x20,0xC2,0x8C,0x64,0x16,0x08,0x0D,0x59,0x05,0x00,0x20,0x00,0x00,0x00,0x44,0x20,0xC3,0x14,0x03, + 0x42,0x43,0x56,0x01,0x00,0x00,0x01,0x00,0x00,0x52,0x24,0x39,0x49,0xA2,0xE4,0xA4,0x94,0x52,0x0E,0x83,0x64,0x31,0x49,0x2A,0xE5,0xA4,0x94,0x52,0x1E,0xC5,0xE4,0x51, + 0x4D,0x32,0x06,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x0A,0x83,0x64,0x39,0x4A,0x2A,0xE5,0xA4,0x94,0x52,0x12,0xA3,0x64,0x31,0x4A,0xAA, + 0xD4,0xA4,0x94,0x52,0x1E,0xE5,0xE4,0x49,0x4D,0x32,0xF6,0xA4,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x16,0xA4,0xE4,0x49,0x4B,0xBA,0x06,0xA5, + 0x94,0x52,0x92,0xA3,0xA4,0x41,0x4B,0x36,0xF5,0xA4,0x94,0x52,0xA2,0x14,0x25,0x4A,0x4E,0xB6,0x27,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x3E,0x28,0xE5,0x83,0x50,0x4A,0x29,0xA5,0x94,0x52,0xAE,0xF6,0xE4,0x5A,0x4F,0x4A,0x29,0xA5,0x94,0x52,0xC6,0x28,0x25,0x7C,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x32,0x82,0xD0,0x90,0x55,0x00,0x00,0x10,0x00,0x00,0x60,0x9C,0x35,0xCA,0xA1,0xE8,0x24,0x3A,0x5F,0x9C,0xA1,0x9C,0x69,0x0A,0x92, + 0x0A,0xA5,0x09,0xDD,0x9B,0xE4,0x28,0x79,0x4E,0x72,0x2B,0x2D,0x37,0xA7,0x9B,0x70,0xCE,0xE9,0xE6,0x94,0x73,0x3E,0x39,0xE7,0x9C,0x20,0x34,0x64,0x15,0x00,0x00,0x08, + 0x00,0x00,0x21,0x84,0x14,0x52,0x48,0x21,0x85,0x14,0x52,0x48,0x21,0x85,0x14,0x62,0x88,0x21,0x86,0x1C,0x72,0xCA,0x29,0xA8,0xA0,0x82,0x4A,0x2A,0xA9,0xA8,0xA2,0x8A, + 0x2A,0xAB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x32,0xCB,0x2C,0xB3,0xCC,0x3A,0xEB,0xA8,0xA3,0xCE,0x42,0x0A,0xA1,0xA4,0xD0,0x42,0x6B,0x35,0xC6,0x1A,0x63,0x6C, + 0xB5,0x37,0x27,0x6D,0xCD,0x51,0x4A,0x27,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x73,0xCE,0x39,0x27,0x08,0x0D,0x59,0x05,0x00,0x80,0x00,0x00,0x10,0x08,0x19,0x64,0x90,0x41, + 0x46,0x19,0x85,0x14,0x62,0x88,0x29,0xA7,0x9C,0x72,0x0A,0x2A,0xA9,0xA4,0x02,0x42,0x43,0x56,0x01,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x44,0xC9,0x74,0x4C,0x47, + 0x74,0x44,0x45,0x74,0x44,0x47,0x74,0x44,0x47,0x74,0x44,0xC7,0x73,0x3C,0xC7,0x93,0x44,0x49,0xB4,0x3C,0x4B,0xD4,0x4C,0xCF,0x14,0x4D,0xD3,0x74,0x55,0xD9,0x95,0x65, + 0x5D,0xB6,0x65,0xDB,0xD5,0x65,0xDD,0xD6,0x65,0xDF,0xF6,0x6D,0xDD,0xB6,0x6D,0x5F,0x37,0x76,0xE3,0x37,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38,0x8E,0xE3,0x38, + 0x8E,0xE3,0x18,0x82,0xD0,0x90,0x55,0x00,0x00,0x08,0x00,0x00,0x80,0x10,0x42,0x08,0x21,0x85,0x14,0x52,0x48,0x21,0xA5,0x98,0x62,0xCC,0x39,0xE8,0x20,0x84,0x50,0x4A, + 0x20,0x34,0x64,0x15,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x40,0x51,0x1C,0xC5,0x71,0x24,0x47,0x92,0x24,0xC9,0x92,0x2C,0x4B,0xB3,0x34,0x4D,0xD3,0x34,0xCD,0x13, + 0x3D,0xD1,0x33,0x3D,0xD5,0x73,0x45,0x59,0xB4,0x45,0xDB,0x73,0x3D,0x5B,0xB4,0x3D,0xD7,0x53,0x3D,0xD5,0x53,0x45,0xD5,0x54,0x4D,0xD7,0x74,0x55,0xD7,0x75,0x5D,0x57, + 0x75,0x55,0x59,0x95,0x5D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0x19,0x08,0x0D,0x59,0x05,0x00,0x48,0x00,0x00,0xE8,0x48,0x8E, + 0xA4,0x48,0x8A,0xA4,0x48,0x8E,0xE3,0x48,0x8E,0x24,0x01,0xA1,0x21,0xAB,0x00,0x00,0x19,0x00,0x00,0x01,0x00,0x28,0x8A,0xA2,0x38,0x8E,0x23,0x39,0x96,0x64,0x49,0x9A, + 0x24,0x4A,0xA6,0xA5,0x5A,0xAE,0x26,0x7B,0xBA,0xA7,0x8B,0xBA,0xA8,0x03,0xA1,0x21,0xAB,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x18,0xA2,0x21,0x1A, + 0xA2,0x23,0x5A,0xA2,0x26,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28, + 0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0x28,0x8A,0xA2,0xE7,0x79,0x9E,0xE7,0x79,0x9E,0xE7,0x79,0x1E,0x10,0x1A,0xB2,0x0A,0x00,0x90,0x00,0x00,0xD0, + 0x91,0x1C,0xC9,0xB1,0x14,0x4B,0x91,0x14,0x49,0xB1,0x1C,0xCB,0x01,0x42,0x43,0x56,0x01,0x00,0x32,0x00,0x00,0x02,0x00,0x70,0x0C,0xC7,0x90,0x14,0xC9,0xB1,0x2C,0xCB, + 0xD2,0x34,0xCD,0xF3,0x3C,0xCF,0x13,0x3D,0x51,0x14,0x45,0xD1,0x34,0x55,0x53,0x05,0x42,0x43,0x56,0x01,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x50,0x14, + 0xC5,0x72,0x2C,0x47,0x92,0x34,0xC7,0x93,0x44,0x47,0x94,0x44,0x49,0xB4,0x44,0x49,0xD4,0x44,0x4D,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14, + 0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x51,0x14,0x45,0x20,0x34,0x64,0x25,0x00,0x00,0x04, + 0x00,0x40,0x49,0x6A,0xB1,0xB5,0xD6,0x28,0x05,0xA1,0xA4,0x98,0x18,0xC2,0x94,0x93,0x1C,0x31,0x06,0x1D,0xA4,0x5E,0x31,0xE4,0x10,0x93,0x9E,0x39,0x06,0x15,0x93,0x5E, + 0x2A,0x82,0x0C,0x62,0x1E,0x3B,0xC4,0x14,0x93,0x1C,0x08,0x0D,0x59,0x11,0x00,0x44,0x01,0x00,0x00,0xC6,0x20,0xC7,0x10,0x73,0xC8,0x39,0x47,0xA9,0x93,0x14,0x39,0xE7, + 0xA4,0x74,0x94,0x1A,0xE7,0x1C,0xA5,0x8E,0x52,0x47,0x29,0xC5,0x9A,0x62,0xCD,0x28,0x95,0xDA,0x52,0xAC,0x8D,0x73,0x8E,0x52,0x47,0xA9,0xA3,0x94,0x6A,0x2C,0x2D,0x76, + 0xD4,0x52,0xAD,0xA9,0xC6,0x02,0x00,0x00,0x02,0x1C,0x00,0x00,0x02,0x2C,0x84,0x42,0x43,0x56,0x04,0x00,0x51,0x00,0x00,0x84,0x31,0x48,0x29,0xA4,0x14,0x62,0x8A,0x39, + 0xA7,0x98,0x43,0x8A,0x29,0xC7,0x98,0x73,0x88,0x31,0xE6,0x1C,0x73,0x8E,0x39,0xE7,0xA0,0x74,0x52,0x2A,0xE7,0x98,0x74,0x4E,0x4A,0xC4,0x18,0x73,0x8E,0x39,0xA7,0x9C, + 0x73,0x52,0x32,0x27,0x95,0x73,0x4E,0x4A,0x27,0xA1,0x00,0x00,0x80,0x00,0x07,0x00,0x80,0x00,0x0B,0xA1,0xD0,0x90,0x15,0x01,0x40,0x9C,0x00,0x80,0x41,0x92,0x3C,0x4F, + 0xD2,0x34,0x51,0x94,0x34,0x4F,0x14,0x3D,0x53,0x74,0x55,0x4F,0x34,0x55,0xD7,0xF2,0x3C,0xD3,0xF4,0x4C,0x53,0x55,0x3D,0xD1,0x54,0x55,0xD3,0x55,0x65,0xD9,0x54,0x55, + 0x59,0xB6,0x3C,0xCF,0x34,0x3D,0x53,0x54,0x55,0xCF,0x34,0x55,0xD5,0x54,0x55,0x59,0x36,0x55,0x55,0x96,0x45,0x55,0xD5,0x6D,0xD3,0x55,0x75,0xDB,0x74,0x55,0xDD,0x76, + 0x6D,0xD9,0xD7,0x5D,0x59,0x16,0x76,0x51,0x55,0x6D,0xDB,0x54,0x5D,0x5B,0x37,0x55,0xD7,0x16,0x5E,0xD9,0xD6,0x7D,0x59,0xB6,0x75,0x61,0xF2,0x3C,0x55,0xF5,0x4C,0xD3, + 0x75,0x3D,0xD3,0x74,0x5D,0xD5,0x75,0x75,0x5B,0x75,0x5D,0x5B,0xF7,0x4C,0x53,0x76,0x4D,0xD7,0x95,0x65,0xD3,0x75,0x6D,0xDB,0x95,0x65,0x5D,0x57,0x65,0x59,0xF7,0x35, + 0xD3,0x74,0x5D,0xD1,0x55,0x6D,0xD9,0x74,0x5D,0xD9,0x76,0x65,0x57,0xD7,0x5D,0x59,0xF6,0x85,0xD3,0x75,0x75,0xDF,0x95,0x65,0x61,0x57,0x65,0x59,0xF8,0x75,0x5D,0x17, + 0x86,0x59,0xF7,0x8D,0x63,0x74,0x5D,0x5D,0x58,0x65,0xD7,0xF7,0x55,0x59,0xF6,0x8D,0x5B,0xB7,0x7D,0x5F,0xD6,0x75,0xE1,0x98,0x3C,0x4F,0x55,0x3D,0xD3,0x74,0x5D,0xCF, + 0x34,0x5D,0xD7,0x74,0x5D,0x5D,0x57,0x5D,0xD7,0xD6,0x35,0xD3,0x74,0x5D,0xD3,0x75,0x6D,0x5B,0x54,0x5D,0x59,0x76,0x65,0xD9,0xF7,0x5D,0x57,0xD6,0x75,0xCF,0x34,0x5D, + 0xD9,0x74,0x5D,0xD9,0x36,0x5D,0x57,0x96,0x5D,0x59,0xF6,0x7D,0x57,0x96,0x75,0xDD,0x74,0x5D,0xDD,0x57,0x65,0x59,0xF8,0x55,0x57,0x16,0x7E,0x59,0xD7,0x8D,0xE5,0xB6, + 0x6D,0xE1,0x37,0x5D,0x57,0xD7,0x55,0x59,0xD6,0x7D,0x55,0x96,0x75,0x61,0xD6,0x75,0xE3,0xB9,0x75,0x5D,0x18,0x3E,0x55,0xD5,0x7D,0x53,0x76,0x85,0xDF,0x74,0x65,0x5F, + 0xD8,0x7D,0xDD,0x59,0x6E,0xDD,0x37,0x96,0xD1,0x75,0x75,0x61,0x95,0x6D,0xE3,0x58,0x65,0x5B,0x18,0x7E,0xE1,0x58,0x96,0xDD,0x37,0x96,0x67,0x74,0x5D,0xDF,0x57,0x6D, + 0x57,0x18,0x56,0x59,0xF6,0x95,0xDD,0xD7,0x9D,0x65,0xD7,0x75,0x65,0x78,0x6D,0xDB,0x58,0x6E,0x5D,0x57,0x8E,0x59,0xD7,0x8D,0x61,0x38,0x96,0xA7,0xEE,0x0B,0x4F,0x57, + 0xB7,0x85,0x63,0xF6,0x6D,0xE7,0x99,0x7D,0x5D,0x39,0x7E,0x67,0x78,0x96,0x5F,0xF8,0x29,0x9F,0xAA,0xEA,0xBA,0xE9,0xBA,0xC2,0x70,0xBA,0xB2,0xEF,0xCB,0xB6,0x2E,0x0C, + 0xBB,0x2F,0x2C,0xCB,0xE8,0xBA,0xBE,0xB0,0xCA,0xB2,0xF1,0xAB,0xB2,0xEC,0x0B,0xB7,0xEE,0x2B,0xC7,0xEE,0x0B,0xC3,0x31,0xBA,0xAE,0xF0,0xAB,0xB6,0xEC,0xFB,0xAE,0x2D, + 0x0B,0xC7,0xED,0xEB,0xC6,0x32,0x0C,0xC3,0x72,0xBC,0xB6,0xAD,0x0C,0xB3,0xAE,0x0B,0x65,0xDB,0x47,0xF7,0x7D,0xA5,0xEF,0x2B,0x4B,0x57,0xB7,0x95,0x63,0xD6,0x75,0xA5, + 0xED,0xEB,0x94,0x5D,0x18,0x2A,0xC3,0x31,0x54,0x06,0x00,0x00,0x0C,0x38,0x00,0x00,0x04,0x98,0x50,0x06,0x0A,0x0D,0x59,0x11,0x00,0xC4,0x09,0x00,0x30,0x08,0x39,0x87, + 0x98,0x82,0x10,0x29,0x06,0x21,0x84,0x90,0x52,0x08,0x21,0xA5,0x88,0x31,0x08,0x99,0x73,0x52,0x2A,0xE6,0xA0,0x94,0x52,0x52,0x0B,0xA5,0xA4,0x16,0x31,0x06,0xA1,0x72, + 0x4C,0x4A,0xE6,0x9C,0x94,0x50,0x4A,0x4B,0xA5,0x94,0x96,0x42,0x29,0xAD,0x95,0x54,0x62,0x0C,0xA5,0xC4,0xD8,0x5A,0xAB,0x35,0xB5,0x56,0x6B,0x28,0xA5,0xB5,0x50,0x4A, + 0x8C,0xA5,0x94,0x16,0x53,0x6B,0xB5,0xB6,0xD8,0x6A,0x8D,0x18,0x93,0x92,0x39,0x27,0x25,0x73,0x4E,0x4A,0x29,0x25,0xB6,0x52,0x4A,0x6B,0x99,0x73,0x54,0x3A,0x07,0x25, + 0x75,0x10,0x52,0x2A,0x25,0xB5,0x58,0x52,0x8A,0xB5,0x72,0x4E,0x4A,0x06,0x1D,0x95,0x0E,0x42,0x4A,0x25,0x95,0x98,0x4A,0x4A,0x31,0x96,0x54,0x62,0x2C,0x25,0xC5,0x5A, + 0x52,0xAA,0xB1,0xA5,0xD8,0x6A,0x8B,0x31,0xE7,0x50,0x4A,0x8C,0x25,0x95,0x18,0x4B,0x4A,0xB1,0xB6,0x98,0x72,0x6B,0x31,0xD6,0x1C,0x31,0x26,0x21,0x73,0x4E,0x4A,0xE6, + 0x9C,0x94,0x52,0x4A,0x6B,0xA5,0x94,0x16,0x2B,0xE7,0xA4,0x74,0x10,0x52,0xCA,0x1C,0x94,0x54,0x52,0x8A,0xB1,0x94,0x94,0x6A,0xE6,0x9C,0x94,0x0E,0x42,0x4A,0x1D,0x74, + 0x54,0x4A,0x4A,0x31,0x96,0x54,0x62,0x0A,0xA5,0xC4,0x58,0x52,0xAA,0xB1,0x94,0xD4,0x62,0x8C,0x31,0xD7,0x96,0x62,0xCB,0xA1,0xA4,0x18,0x4B,0x4A,0xB1,0x96,0x54,0x62, + 0x6C,0x31,0xE6,0xDC,0x62,0xCA,0xAD,0x93,0x12,0x5B,0x49,0x29,0xC6,0x50,0x52,0x8C,0x31,0xC6,0x9C,0x5B,0x8C,0x39,0x87,0x52,0x62,0x2C,0x29,0xC5,0x5A,0x52,0xAA,0x31, + 0xC6,0x5A,0x73,0x8C,0xB1,0xE6,0x50,0x4A,0x8C,0x25,0x95,0x1A,0x4B,0x4A,0xB1,0xC6,0x1A,0x73,0x6D,0x31,0xD6,0x9C,0x62,0xCC,0x35,0xA5,0x58,0x73,0xAB,0x31,0xE7,0xD8, + 0x72,0xEB,0xB5,0xE6,0xE0,0x53,0x6B,0x35,0xA7,0x98,0x72,0x6D,0x31,0xE6,0x5C,0x6B,0x0B,0xB2,0xE6,0x5C,0x7C,0x27,0x25,0xB6,0x50,0x4A,0x8C,0xA5,0xA4,0x18,0x5B,0x8C, + 0xB5,0xB6,0x18,0x73,0x0E,0xA5,0xC4,0x58,0x52,0xAA,0xB1,0x94,0x14,0x6B,0x8B,0x31,0xE8,0xD6,0x62,0xED,0xA1,0x94,0x18,0x4B,0x4A,0x31,0x96,0x54,0x6A,0x8C,0x31,0xD6, + 0x1C,0x6B,0xCC,0x39,0xC5,0x56,0x6B,0x8B,0xB1,0xD7,0xD4,0x62,0xCE,0x35,0xF7,0x60,0x6C,0xCB,0xB5,0xA7,0x16,0x6B,0x6E,0x31,0xE6,0x9E,0x62,0xCA,0xB5,0xF6,0xDA,0x83, + 0xCD,0xAD,0xB7,0x02,0x00,0x00,0x06,0x1C,0x00,0x00,0x02,0x4C,0x28,0x03,0x85,0x86,0xAC,0x04,0x00,0xA2,0x00,0x00,0x00,0x63,0x18,0x73,0x0E,0x42,0xA3,0x90,0x73,0xCE, + 0x49,0x69,0x90,0x72,0xCE,0x39,0x29,0x99,0x73,0x10,0x42,0x48,0x29,0x73,0x0E,0x42,0x08,0x29,0x75,0xCE,0x49,0x28,0xA9,0xB5,0xCE,0x39,0x08,0x29,0xB5,0x16,0x4A,0x49, + 0xA9,0xB5,0x18,0x43,0x29,0x29,0xB5,0x16,0x63,0x01,0x00,0x00,0x05,0x0E,0x00,0x00,0x01,0x36,0x68,0x4A,0x2C,0x0E,0x50,0x68,0xC8,0x4A,0x00,0x20,0x15,0x00,0xC0,0xE0, + 0x38,0x96,0xE5,0x79,0xA6,0x68,0x9A,0xB6,0xED,0x58,0x92,0xE7,0x89,0xA2,0x69,0xAA,0xAA,0x6D,0x3B,0x92,0xE5,0x79,0xA2,0x68,0x9A,0xAA,0x6A,0xDB,0x9A,0xE7,0x89,0xA2, + 0x69,0xAA,0xAA,0xEB,0xEA,0xBA,0xE6,0x79,0xA2,0x68,0x9A,0xAA,0xEA,0xBA,0xB6,0x2E,0x8A,0xA2,0x69,0xAA,0xAA,0xAB,0xBA,0xAE,0xEE,0x8B,0xA2,0x68,0x9A,0xAA,0xAA,0xAA, + 0xAE,0xAB,0xEB,0xA6,0x69,0xAA,0xAA,0xAB,0xBA,0xAE,0x2C,0xFB,0xBE,0x69,0x9A,0xAA,0xEA,0xBA,0xAE,0x2B,0xCB,0xBE,0xB0,0xAA,0xAE,0xEB,0xCA,0xB2,0x2D,0xDB,0xB6,0x31, + 0xAC,0xAA,0xEA,0xBA,0xAE,0x2B,0xDB,0xB6,0x6D,0x1C,0xB7,0x6D,0xEB,0xBA,0xEE,0xFB,0xBE,0x30,0x54,0x6E,0xDB,0xD6,0x75,0x5F,0xF8,0x85,0x61,0x58,0x0A,0x00,0x00,0x4F, + 0x70,0x00,0x00,0x2A,0xB0,0x61,0x75,0x84,0x93,0xA2,0xB1,0xC0,0x42,0x43,0x56,0x02,0x00,0x19,0x00,0x00,0x84,0x31,0x08,0x19,0x84,0x10,0x32,0x08,0x21,0x84,0x94,0x52, + 0x0A,0x29,0xA5,0x94,0x00,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xCA,0x40,0xA1,0x21,0x2B,0x02,0x80,0x38,0x01,0x00,0x00,0x21,0x4A,0x21,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0xD4,0x51,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x42,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A, + 0x29,0xA5,0x94,0x52,0x4A,0x1D,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x4A,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x2A, + 0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94, + 0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A, + 0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5, + 0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52, + 0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x4A,0x29,0xA5,0x94,0x52,0x00,0x80, + 0x54,0x84,0x03,0x80,0xD4,0x83,0x09,0x65,0xA0,0xD0,0x90,0x95,0x00,0x40,0x2A,0x00,0x00,0x60,0x8C,0x52,0x8C,0x39,0x07,0xA1,0x94,0x86,0x31,0xE7,0x9C,0x83,0x90,0x4A, + 0x4B,0x8D,0x62,0xCE,0x31,0x07,0xA1,0xA4,0x96,0x32,0xE7,0x20,0x94,0x92,0x52,0x4B,0x31,0x66,0xCE,0x41,0x29,0x25,0xA5,0xD6,0x5A,0xCC,0x9C,0x93,0xD2,0x5A,0x6C,0x3D, + 0xC6,0x9A,0x39,0x27,0xA9,0xB5,0xD8,0x62,0xAC,0xB5,0x83,0xD2,0x5A,0x8D,0x3D,0xF7,0xDE,0x73,0x27,0xA5,0xB5,0x1A,0x6B,0xEE,0x3D,0xF7,0x92,0x5A,0xAD,0xB5,0xF6,0xD8, + 0x73,0xEF,0x25,0xB5,0x18,0x73,0xAD,0xB9,0xF7,0x5A,0x63,0x8D,0xB9,0xF7,0x9E,0x73,0xEF,0xBD,0xA7,0x5C,0x7B,0xAF,0xB5,0xE7,0x5E,0x7B,0x2E,0x00,0x00,0xA7,0xC1,0x01, + 0x00,0xF4,0xC0,0x86,0xD5,0x11,0x4E,0x8A,0xC6,0x02,0x0B,0x0D,0x59,0x09,0x00,0xA4,0x02,0x00,0x10,0x08,0x29,0xC5,0x98,0x73,0xCE,0x39,0x87,0x90,0x62,0xCC,0x39,0xE7, + 0x20,0x84,0x10,0x21,0xC4,0x98,0x73,0xCE,0x41,0x08,0xA1,0x62,0x8C,0x39,0xE7,0x20,0x84,0x10,0x42,0xC5,0x98,0x63,0xCE,0x41,0x08,0x21,0x84,0xCE,0x39,0xE7,0x9C,0x83, + 0x10,0x42,0x08,0x9D,0x73,0xCE,0x39,0x07,0x21,0x84,0x10,0x3A,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x74,0x0E,0x42,0x08,0x1D,0x84,0x10,0x42,0xE8,0x20,0x84,0x10,0x42, + 0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0xA1,0x83,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x02,0x00,0x00,0x0B, + 0x1C,0x00,0x00,0x02,0x6C,0x58,0x1D,0xE1,0xA4,0x68,0x2C,0xB0,0xD0,0x90,0x95,0x00,0x00,0x10,0x00,0x00,0xC2,0xAC,0xE4,0x12,0x8A,0x24,0x90,0x72,0x0C,0x9A,0x69,0x8C, + 0x52,0x8E,0x9A,0x88,0x14,0x62,0x0A,0x9A,0xCA,0x10,0x43,0x4C,0x9A,0xA9,0x98,0x52,0xCA,0x81,0xE8,0x24,0x63,0x08,0x81,0x2A,0xCA,0xC6,0xD0,0x91,0x00,0x00,0x00,0x04, + 0x01,0x00,0x01,0x26,0x80,0xC0,0x00,0x41,0xC1,0x17,0x42,0x40,0x8C,0x01,0x00,0x08,0x42,0x64,0x86,0x48,0x28,0xAC,0x82,0x05,0x06,0x65,0xD0,0xE0,0x30,0x0F,0x00,0x1E, + 0x20,0x22,0x24,0x02,0x80,0xC4,0x04,0x45,0xDA,0xC5,0x05,0x74,0x19,0xE0,0x82,0x2E,0xEE,0x3A,0x10,0x42,0x10,0x82,0x10,0xC4,0xE2,0x00,0x0A,0x48,0xC0,0xC1,0x09,0x37, + 0x3C,0xF1,0x86,0x27,0xDC,0xE0,0x04,0x9D,0xA2,0x52,0x07,0x01,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x0F,0x00,0x00,0x07,0x05,0x10,0x11,0xD1,0x5C,0x85,0xC5,0x05,0x46, + 0x86,0xC6,0x06,0x47,0x87,0x47,0x00,0x00,0x00,0x00,0x00,0xA8,0x00,0xC0,0x07,0x00,0xC0,0xF1,0x01,0x44,0x44,0x34,0x57,0x61,0x71,0x81,0x91,0xA1,0xB1,0xC1,0xD1,0xE1, + 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x04, +}; + + +static const vcb_info_t vcb_list[] = { + {0x01,0x0CD8,vcb_1}, + {0x02,0x0B72,vcb_2}, + {0x03,0x0DF7,vcb_3}, + {0x04,0x1025,vcb_4}, + {0x05,0x0C01,vcb_5}, + {0x06,0x0C01,vcb_6}, + {0x07,0x0CD8,vcb_7}, +}; + +static const int vcb_list_count = sizeof(vcb_list) / sizeof(vcb_list[0]); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_data_wwise.h b/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_wwise.h similarity index 84% rename from Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_data_wwise.h rename to Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_wwise.h index 630220bf3..8a8d4c761 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_data_wwise.h +++ b/Frameworks/vgmstream/vgmstream/src/coding/libs/vorbis_codebooks_wwise.h @@ -1,114 +1,108 @@ -#ifndef _WWISE_VORBIS_DATA_H_ -#define _WWISE_VORBIS_DATA_H_ +#ifndef _VORBIS_CODEBOOKS_WWISE_H_ +#define _VORBIS_CODEBOOKS_WWISE_H_ +#include "../../util/vorbis_codebooks.h" /** - * Codebook data for Wwise Vorbis. - * They are Wwise Vorbis codebook binaries converted to c-arrays. + * Codebook data for Wwise Vorbis converted to c-arrays. * Extracted from Wwise SDK by ww2ogg. The originals have all codebooks together with an index table at the end. * Here each codebook is an array instead, and the index is converted to a list. * * aoTuV_603 codebooks were introduced in later versions, very similar with reordered standard ones and - * a few new ones (reused here to save some kbs). + * a few new ones, so there are 2 lists (reused here to save some kbs). */ -typedef struct { - uint32_t id; /* 1: standard, 2: aoTuV_603 */ - uint32_t size; - const uint8_t* codebook; -} wvc_info; - /* ******************************************** */ /* autogenerated */ /* ******************************************** */ -static const uint8_t wvc_standard_0000[] = { +static const uint8_t vcb_standard_0000[] = { 0x92,0x07,0xa0,0x10,0xa9,0x32,0x33,0xbb,0xcb,0xcc,0x2a,0xb3,0xbb,0xbb,0xcc,0xac,0x32,0xbb,0xbb,0xcb,0x4c,0x33,0xb3,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0x4c, 0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0001[] = { +static const uint8_t vcb_standard_0001[] = { 0x14,0x05,0x20,0x19,0xa2,0x2a,0xaa,0x22,0xab,0xb2,0x2b,0x3b,0xaa,0xaa,0xb3,0x3a,0xa3,0x2a,0xbb,0x2b,0xb3,0x3a,0x33,0xc3,0x43,0x2c,0x3b,0x43,0x3b,0x44,0xaa,0x2a, 0x33,0xbb,0xab,0xb3,0x43,0x34,0xc3,0xb2,0x3b,0x44,0x43,0x0b,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0002[] = { +static const uint8_t vcb_standard_0002[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0xad,0xc5,0x68,0xad,0xd6,0xde,0x8b,0xd1,0x5a,0xad,0xbd,0x17,0xa3,0xd6,0xde,0x7b,0x6f,0x4e,0xbc,0xf7,0xde,0x9c,0x78,0x2f,0xc6,0x5a, 0x11,0x63,0x8c,0xb5,0x62,0xce,0x39,0x6b,0x05,0x31,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0003[] = { +static const uint8_t vcb_standard_0003[] = { 0x92,0x07,0x20,0x99,0xa9,0x32,0xbb,0xbb,0x1b,0xa2,0xaa,0xb3,0xbb,0xbb,0x21,0xaa,0xb2,0xbb,0xbb,0x2b,0x2b,0xb3,0x3b,0x44,0xc4,0x2a,0x33,0xbb,0x43,0x44,0xb4,0xb3, 0x3b,0x44,0x44,0x44,0xb3,0xbb,0x43,0x44,0x44,0xbc,0x3b,0x44,0xc4,0x44,0xc4,0xbb,0x43,0x44,0x44,0xc4,0xbc,0x3b,0x44,0xc4,0xc4,0xcc,0xbb,0x43,0x44,0xc4,0xcc,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0004[] = { +static const uint8_t vcb_standard_0004[] = { 0x12,0x0e,0x20,0x98,0x31,0xbb,0x3b,0x3b,0xc3,0x43,0x1c,0x2b,0xbc,0x4c,0x3c,0x44,0x44,0x3c,0xaa,0x3a,0xcc,0x44,0xc4,0xcc,0x4c,0xb5,0xbb,0x4c,0xd5,0x4c,0x55,0x5d, 0x55,0xbb,0xcb,0x54,0xcd,0x54,0x5d,0x55,0x3d,0x44,0xd5,0x5d,0xd5,0xd5,0xdd,0xdd,0xc3,0x54,0xdd,0x55,0xdd,0xdd,0xdd,0x3d,0xc4,0xcc,0xd5,0xdd,0xdd,0xdd,0xe5,0x43, 0x54,0x55,0xdd,0xdd,0xe5,0x65,0xc6,0x4c,0xd5,0xdd,0xe5,0x65,0xe6,0x66,0xcc,0x54,0xdd,0x5d,0xe6,0x65,0x6e,0x46,0xcd,0x55,0xde,0x65,0x66,0x66,0x6e,0xcc,0xdc,0xdd, 0x5d,0x66,0x66,0xee,0x4e,0xd5,0xdd,0x65,0xe6,0x6e,0xee,0xee,0x54,0xdd,0xdd,0xe5,0xe5,0xe6,0xee,0x0e,0x00,0xdc,0x0d,0x0e,0x00,0x10,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0005[] = { +static const uint8_t vcb_standard_0005[] = { 0x92,0x01,0x98,0x6c,0xe4,0x48,0x72,0x24,0xc9,0xb6,0x65,0xdb,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0006[] = { +static const uint8_t vcb_standard_0006[] = { 0x92,0x01,0x98,0x6c,0xe4,0x48,0x72,0x24,0xc9,0xb6,0x65,0xdb,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0007[] = { +static const uint8_t vcb_standard_0007[] = { 0xa1,0x00,0x50,0xe8,0xba,0x16, }; -static const uint8_t wvc_standard_0008[] = { +static const uint8_t vcb_standard_0008[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0x33,0xbb,0x4b,0xa2,0x2a,0xb3,0xbb,0xbb,0x24,0xaa,0x32,0xbb,0xbb,0x4b,0x33,0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0x4c, 0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0x3b,0xbc,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0009[] = { +static const uint8_t vcb_standard_0009[] = { 0x92,0x0a,0x20,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xbc,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b,0x80,0xd8,0x15,0x0e,0x00,0x3b,0x11,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_000a[] = { +static const uint8_t vcb_standard_000a[] = { 0x42,0x06,0xa8,0x61,0x10,0x42,0x07,0x25,0x27,0xc9,0x20,0xc5,0x98,0x83,0xda,0x2b,0x64,0x90,0x62,0x4e,0x5a,0xd2,0x14,0x32,0x48,0x31,0x48,0xc5,0x63,0x0a,0x21,0xc4, 0xa0,0x04,0x8f,0x31,0x84,0x90,0x62,0x56,0x3c,0xe7,0x18,0x43,0x88,0x59,0xf1,0xa0,0x84,0x90,0x29,0x66,0xc1,0x16,0xdf,0x73,0x4b,0xa5,0x15,0x1d,0x8c,0x31,0xba,0xd6, 0x5e,0x04, }; -static const uint8_t wvc_standard_000b[] = { +static const uint8_t vcb_standard_000b[] = { 0x92,0x07,0xa0,0x10,0xa9,0x32,0x33,0xbb,0x53,0xd5,0x2a,0xb3,0xbb,0x3b,0x55,0xad,0x32,0xbb,0xbb,0x53,0xd5,0xaa,0xbb,0x3b,0x44,0x55,0xad,0xba,0xbb,0x43,0x54,0x55, 0xb3,0xbb,0xbb,0x3b,0x55,0x35,0xbb,0xbb,0x3b,0x54,0xd5,0xbb,0xbb,0xbb,0x3b,0x55,0x55,0xbd,0xbb,0xbb,0x53,0x55,0xd5,0xbb,0xbb,0x3b,0x55,0x55,0x35,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_000c[] = { +static const uint8_t vcb_standard_000c[] = { 0x92,0x0a,0x20,0xa0,0xd9,0xdd,0xdd,0xdd,0xdd,0x1d,0x3c,0x55,0x55,0x55,0x55,0xd5,0x38,0x53,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xd5,0x54,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0x80,0x4b,0x15,0x0e,0x00,0xba,0x0f,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_000d[] = { +static const uint8_t vcb_standard_000d[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0xf6,0x5e,0x8c,0x2b,0xa5,0xf6,0x5e,0x7c,0x2f,0xc6,0x59,0x57,0x4a,0xef,0xc5,0xf8,0x5e,0x9c,0xb3,0x7a,0xef,0xc5,0x18,0x63, 0x9c,0xb3,0x56,0x31,0xc6,0x17,0x63,0x8c,0x73,0xd6,0x2a,0xe7,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xed,0x1c,0xe3,0x9c,0x73,0xd6,0x7a,0x2f,0xe6,0x8c,0xb1,0xd6,0x7b,0xf3, 0xc5,0x9c,0x31,0xce,0x79,0x6f,0xce,0xc8,0xbb,0xce,0x5a,0xef,0xcd,0x1b,0x7b,0xcf,0x59,0xeb,0xbd,0x39,0x83,0x7b,0xef,0xcd,0x79,0x77,0x70,0xef,0xbd,0x39,0xef,0x1e, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_000e[] = { +static const uint8_t vcb_standard_000e[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xca,0x38,0xe5,0x9c,0x93,0x4e,0x4b,0x2f,0xd5,0x35,0xd7,0x6d,0xb7,0xdd,0x77,0xdf,0x9d,0xf7,0xde,0x7b,0x6b,0xad,0xb5, 0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0x56,0x00, }; -static const uint8_t wvc_standard_000f[] = { +static const uint8_t vcb_standard_000f[] = { 0x42,0x06,0x28,0x81,0x58,0x6b,0xae,0x35,0xe7,0xc8,0x28,0x27,0xad,0xd5,0x9c,0x43,0x64,0x90,0x93,0x14,0x7b,0x2f,0x99,0x21,0x88,0x41,0x8a,0xb1,0x84,0xcc,0x18,0xe5, 0xa4,0xd5,0x98,0x42,0x85,0x90,0x72,0x56,0x63,0x2a,0x1d,0x53,0x8a,0x49,0x8d,0xa9,0x95,0x8e,0x29,0x05,0xb1,0xa5,0xda,0x52,0xe8,0x18,0xa4,0xd4,0x6a,0xac,0xa9,0x74, 0x0e,0x02, }; -static const uint8_t wvc_standard_0010[] = { +static const uint8_t vcb_standard_0010[] = { 0x11,0x03,0x0c,0x01,0x30,0x10,0x8f,0x0e,0x00,0x80,0x09,0x0e,0x00,0x00,0x01,0x56,0xb0,0x2b,0xb3,0xb4,0x6a,0xa3,0xb8,0xa9,0x93,0xbc,0xe8,0x83,0xc0,0x27,0x74,0xc4, 0x66,0x64,0xc8,0xa5,0x54,0xcc,0xe4,0x44,0xd0,0x23,0x35,0xd4,0x62,0x25,0xd8,0xa1,0x15,0xdc,0xe0,0x05,0x60, }; -static const uint8_t wvc_standard_0011[] = { +static const uint8_t vcb_standard_0011[] = { 0x02,0x04,0x28,0x41,0x8e,0x69,0x07,0x49,0x12,0x08,0x41,0x05,0xc9,0x33,0x88,0x39,0x88,0x49,0x33,0x0a,0x41,0x05,0xc9,0x75,0x0c,0x4a,0x8a,0xc9,0x43,0x4e,0x41,0xc5, 0xc8,0x73,0x92,0x31,0x83,0xc8,0x05,0xa5,0x8b,0x4c,0x45,0x00, }; -static const uint8_t wvc_standard_0012[] = { +static const uint8_t vcb_standard_0012[] = { 0x92,0x01,0x98,0x6c,0x5c,0x49,0xb2,0x24,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0013[] = { +static const uint8_t vcb_standard_0013[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc4,0x14,0x84,0x48,0x31,0x08,0x1d,0x84,0x94,0x3a,0x08,0x29,0x45,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x39,0x27,0x25,0x94,0xd2,0x5a,0x28, 0x25,0xb5,0x88,0x31,0x08,0x99,0x63,0x52,0x32,0xe7,0xa4,0x84,0x12,0x5a,0x0a,0xa5,0xb4,0xd6,0x41,0x68,0x29,0x94,0xd2,0x5a,0x28,0xa5,0xb5,0xd4,0x5a,0xad,0x29,0xb5, 0x58,0x3b,0x08,0x29,0x85,0x52,0x5a,0x0b,0xa5,0xb4,0x96,0x5a,0x8a,0x31,0xb5,0x56,0x6b,0xc4,0x18,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x42,0x29,0xad,0x85,0x52,0x52, @@ -123,7 +117,7 @@ static const uint8_t wvc_standard_0013[] = { 0xb1,0xa4,0x14,0x63,0x8b,0xb1,0xd6,0x16,0x63,0xae,0xa9,0xb5,0x1a,0x5b,0x8c,0xb9,0xa6,0xd6,0x62,0xad,0xb9,0xf6,0x1c,0x63,0x8d,0x3d,0xb5,0x56,0x6b,0x8b,0xb1,0xe6, 0x16,0x5b,0xae,0xb5,0xd6,0x9e,0x6b,0x8e,0xbd,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0014[] = { +static const uint8_t vcb_standard_0014[] = { 0x12,0x12,0xa0,0x20,0x32,0x33,0xbb,0xbb,0x43,0x44,0x44,0xa4,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0xaa,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44,0x34,0xb3,0xbb,0x3b, 0x44,0x44,0xc4,0xcc,0x4c,0x33,0xbb,0xbb,0x43,0x44,0x4c,0x4c,0xcc,0xb4,0xbb,0x3b,0x44,0x44,0xc4,0xcc,0xcc,0x4c,0xbb,0xbb,0x43,0x44,0x44,0xcc,0xcc,0xcc,0x3c,0x3c, 0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xbb,0x43,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -131,7 +125,7 @@ static const uint8_t wvc_standard_0014[] = { 0xcc,0xcc,0xc4,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xd4,0xcc,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0015[] = { +static const uint8_t vcb_standard_0015[] = { 0x92,0x16,0x20,0x18,0xd9,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x1d,0xaa,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xa9,0xda,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, 0xd5,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, @@ -140,40 +134,40 @@ static const uint8_t wvc_standard_0015[] = { 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0xd8,0x05,0x1b,0x0e,0x80,0xd1,0x13,0x46, 0x12,0x52,0x67,0x19,0x56,0x1a,0x71,0xe3,0x09,0x18,0x22,0x90,0x00, }; -static const uint8_t wvc_standard_0016[] = { +static const uint8_t vcb_standard_0016[] = { 0x12,0x05,0xe0,0x70,0xca,0x5a,0xad,0xc5,0x28,0xa5,0xd6,0x5e,0x8b,0x51,0x4a,0xad,0xbd,0x17,0xa3,0xd6,0xde,0x7b,0x6f,0x4e,0xbc,0xf7,0xde,0x9c,0x88,0x31,0xc6,0x39, 0x11,0x63,0x8c,0x73,0x62,0xce,0x39,0x6b,0x05,0x73,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0017[] = { +static const uint8_t vcb_standard_0017[] = { 0x12,0x05,0xa8,0x52,0x16,0x63,0xed,0x41,0x38,0x02,0x39,0x06,0x2d,0xe7,0xd0,0x20,0xc8,0xa0,0xf5,0xa2,0x2a,0x66,0x94,0xa3,0x5a,0x4c,0xa4,0x10,0x62,0x52,0x83,0x89, 0x18,0x53,0x4c,0x62,0x4f,0x11,0x63,0xcc,0x49,0xcb,0xb1,0x62,0x08,0x31,0x68,0xb1,0x77,0x50,0x29,0x06,0xa5,0x05, }; -static const uint8_t wvc_standard_0018[] = { +static const uint8_t vcb_standard_0018[] = { 0x01,0x08,0x68,0x00,0x00,0x00,0x80,0xa3,0x48,0x8a,0xe4,0x48,0x8e,0xe4,0x48,0x92,0x24,0x59,0x92,0x25,0x69,0x92,0x67,0x79,0x96,0x67,0x79,0x96,0xa7,0x89,0x9a,0xa8, 0xa9,0xa2,0xaa,0xba,0xaa,0xed,0xda,0xbe,0xed,0xcb,0xbe,0xed,0xbb,0xba,0xec,0xdb,0xbe,0x6c,0xbb,0xba,0xac,0xcb,0xb2,0xac,0xbb,0xb6,0xad,0xcb,0xba,0xab,0xeb,0xba, 0xae,0xeb,0xba,0xae,0xeb,0xba,0xae,0xeb,0xba,0xae,0xeb,0xba,0xae,0xeb,0x3a,0x00, }; -static const uint8_t wvc_standard_0019[] = { +static const uint8_t vcb_standard_0019[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0x6b,0xbd,0x87,0xb5,0x5a,0x8b,0x11,0x6b,0xb5,0x16,0x23,0x5a,0x7b,0x6f,0x4e,0xb4,0xf6,0xde,0x9c,0x88,0x31,0xc6,0x39,0x11,0x63,0x8c, 0x73,0x62,0xce,0x39,0x6b,0x05,0x73,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_001a[] = { +static const uint8_t vcb_standard_001a[] = { 0x14,0x27,0xe0,0x91,0x12,0x52,0x42,0x4a,0x68,0x0d,0x90,0xd6,0x42,0x6b,0x68,0x0d,0x73,0x02,0xd2,0x5a,0x68,0x0d,0xad,0x61,0x4e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xd2,0x6b,0x68,0x0d,0xad,0x21,0x46,0x40,0x6a,0x0f,0xad,0xa1,0x35,0xc4,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x6a,0x0d,0xad,0xa1, 0x35,0xc4,0x08,0x48,0xad,0xa1,0x35,0xb4,0x86,0x18,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x73,0x22,0x46,0xc4,0x88,0x39,0x01,0x6f,0x4e,0xc4,0x88, 0x18,0x31,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x06,0x1c,0x00,0x00, 0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_001b[] = { +static const uint8_t vcb_standard_001b[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0x33,0xbb,0x4b,0xa2,0x2a,0xb3,0xbb,0xbb,0x24,0xaa,0x32,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc, 0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0x3b,0xbc,0xcc,0xcc,0xbc,0xbb,0x43,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_001c[] = { +static const uint8_t vcb_standard_001c[] = { 0x14,0x05,0x20,0x99,0xa1,0x2a,0xaa,0xa2,0xaa,0xba,0x2b,0x3b,0xaa,0xaa,0xb3,0xba,0xa3,0xaa,0x3a,0xab,0xbb,0xba,0x3b,0xc4,0x43,0xac,0x33,0xc3,0x3b,0x44,0xaa,0xaa, 0xb3,0xba,0xab,0xbb,0x43,0xb4,0xc3,0xba,0x3b,0xc4,0x43,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_001d[] = { +static const uint8_t vcb_standard_001d[] = { 0x14,0x27,0xe8,0xe1,0x38,0x9a,0x26,0x69,0x9a,0x28,0x4a,0x9a,0x26,0x8a,0x9e,0x28,0xba,0xae,0x27,0x8a,0xaa,0x2b,0x69,0x9a,0x69,0x6a,0xa2,0xa8,0xaa,0x9a,0x28,0x9a, 0xaa,0xa9,0xaa,0xb2,0x2c,0x9a,0xaa,0x2c,0x4b,0x9a,0x66,0x9a,0x9a,0x28,0xaa,0xa6,0x26,0x8a,0xaa,0x2a,0xaa,0xa6,0x2c,0x9b,0xaa,0x6a,0xcb,0x9e,0x69,0xda,0xb2,0xa9, 0xaa,0xba,0x2d,0xaa,0xaa,0x6d,0xcb,0xb6,0xec,0xfb,0xae,0x2c,0xeb,0xba,0x67,0x9a,0xb2,0x2d,0xaa,0xaa,0x6d,0x9b,0xaa,0x6a,0xeb,0xae,0x2c,0xeb,0xba,0x6c,0xdb,0xba, @@ -190,7 +184,7 @@ static const uint8_t wvc_standard_001d[] = { 0xdd,0x17,0x2a,0xab,0x6c,0x0b,0xbf,0xad,0xeb,0xce,0x31,0xdb,0xba,0xb0,0xfc,0xc6,0xd1,0xf9,0x7d,0x65,0xe8,0xea,0xb6,0xd0,0xd6,0x75,0x63,0x99,0x7d,0x5d,0x79,0x76, 0xe3,0xe8,0x0c,0x7d,0x04,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_001e[] = { +static const uint8_t vcb_standard_001e[] = { 0x12,0x12,0xe0,0x70,0xca,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xce,0x89,0xd6,0xde,0x8b,0x31,0xc6,0x39,0xe7,0xac,0x15,0xad,0xbd,0x17,0x63,0x8c,0x73,0xce,0x59,0x2b, 0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x5e,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0x6b,0xad,0x78,0x2f,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xf1,0x5e,0x8c,0x31,0xce, 0x39,0x6b,0xad,0xf7,0x22,0xc6,0x19,0xe7,0x9c,0xb3,0xd6,0x5a,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xf7,0xde,0x0b,0x62,0x9c,0x73,0xd6,0x5a,0xef,0xcd,0x19,0xc4,0x38, @@ -198,17 +192,17 @@ static const uint8_t wvc_standard_001e[] = { 0x6f,0xce,0x79,0x03,0xee,0xbd,0x39,0xe7,0x9c,0xf7,0x06,0x70,0x6f,0xbe,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_001f[] = { +static const uint8_t vcb_standard_001f[] = { 0x42,0x06,0x28,0x93,0x94,0x52,0xcd,0x39,0xd8,0x4e,0x31,0xe6,0x20,0xa5,0x1a,0x44,0xa5,0x14,0x63,0x92,0x72,0x0f,0x95,0x32,0x06,0x39,0x68,0xbd,0x54,0xca,0x18,0xa3, 0x20,0xf6,0x92,0x29,0x64,0x08,0x62,0xd8,0x53,0xe8,0x98,0x42,0x48,0x59,0x2e,0xa5,0x84,0x4c,0x29,0x46,0x39,0xc6,0x18,0x53,0x29,0xa1,0xf5,0xde,0x7b,0xed,0x39,0xb7, 0x5a,0x03, }; -static const uint8_t wvc_standard_0020[] = { +static const uint8_t vcb_standard_0020[] = { 0x92,0x07,0xa0,0x21,0xaa,0x32,0x33,0x33,0x53,0xa2,0x2a,0x33,0xb3,0x3b,0x25,0xaa,0x32,0x33,0xbb,0x53,0xa2,0x2a,0xb3,0xbb,0x3b,0x55,0xad,0x32,0xb3,0xbb,0x53,0xd5, 0x2a,0x33,0xbb,0x3b,0x55,0xad,0x32,0x33,0xbb,0x53,0x55,0x33,0x33,0xb3,0x3b,0x55,0xcd,0x34,0x33,0xbb,0x53,0x55,0x55,0x33,0x33,0x33,0x55,0x55,0x35,0x33,0x33,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0021[] = { +static const uint8_t vcb_standard_0021[] = { 0x92,0x1b,0xa0,0x21,0x32,0x33,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4,0xac,0x32,0xbb,0xbb,0xbb,0x43,0x44,0x44, 0x44,0x44,0x4c,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0xcc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44, 0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0x4c,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0xcc,0x44,0x44,0x44,0x44,0x44,0x44,0x44, @@ -218,57 +212,57 @@ static const uint8_t wvc_standard_0021[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x44,0x4c,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0x44,0x4c,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0xcc,0xc4,0x44,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_0022[] = { +static const uint8_t vcb_standard_0022[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x80,0x95,0x5a,0x6a,0xa7,0x9d,0x77,0xde,0x79,0xe7,0x95,0x77,0xe2,0x89,0x27,0x9e,0x78,0x62,0x8a,0x29,0xae,0xd8,0xe2,0x8b,0x31,0xce, 0x58,0xe3,0x8e,0x7d,0xf6,0xd9,0x67,0x9f,0xbd,0xf6,0xb9,0xef,0xae,0x3b,0xef,0xdc,0x7b,0xbf,0xbd,0xf7,0xdc,0x73,0xcf,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b, 0xef,0xbd,0x6f,0x00, }; -static const uint8_t wvc_standard_0023[] = { +static const uint8_t vcb_standard_0023[] = { 0x12,0x05,0xe0,0x50,0x4a,0x6b,0x20,0x9d,0xd6,0x40,0x4a,0xad,0x81,0xd5,0xde,0x03,0xbc,0x07,0x88,0x13,0x10,0x23,0xa0,0x56,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0024[] = { +static const uint8_t vcb_standard_0024[] = { 0x92,0x01,0x98,0x6d,0x24,0x37,0x92,0x1b,0x49,0x92,0x24,0x49,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0025[] = { +static const uint8_t vcb_standard_0025[] = { 0x01,0x04,0xa8,0x30,0x0a,0x1c,0xc4,0xc0,0x63,0x12,0x84,0x10,0x42,0x31,0x8a,0x13,0xa2,0x38,0x53,0x10,0x84,0x10,0xc2,0x72,0x12,0x2c,0xe5,0x3c,0x74,0x12,0x84,0xee, 0x41,0x08,0x21,0x5c,0xce,0xbd,0xe5,0xdc,0x7b,0xef,0x3d,0x00, }; -static const uint8_t wvc_standard_0026[] = { +static const uint8_t vcb_standard_0026[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x96,0xe5,0x79,0xa6,0xa8,0x9a,0xb6,0xec,0x58,0x92,0xe7,0x89,0xa2,0x6a,0xaa,0xaa,0x6d,0x3b,0x92,0xe5,0x79,0xa2,0x68,0x9a,0xaa,0x6a,0xdb, 0x96,0xe7,0x89,0xa2,0x69,0xaa,0xaa,0xeb,0xfa,0xba,0xe6,0x79,0xa2,0x68,0x9a,0xaa,0xea,0xba,0xba,0x2e,0x9a,0xa6,0x69,0xaa,0xaa,0xeb,0xba,0xae,0xae,0x8b,0xa6,0x68, 0xaa,0xaa,0xea,0xba,0xae,0xac,0xeb,0xa6,0xa9,0xaa,0xaa,0xeb,0xca,0xae,0x2c,0xfb,0xba,0xa9,0xaa,0xaa,0xea,0xba,0xb2,0x2b,0xcb,0xbe,0xb0,0xaa,0xae,0xeb,0xca,0xb2, 0x6c,0xdb,0xba,0x30,0xac,0xaa,0xeb,0xba,0xb2,0x2c,0xdb,0xb6,0xed,0x1b,0xb7,0xae,0xeb,0xba,0xef,0xfb,0xbe,0x70,0x64,0xeb,0xba,0xae,0x0b,0xbf,0x70,0x0c,0xc3,0x51, 0x00,0x00,0x4f,0x70,0x00,0x00,0x2a,0xb0,0x61,0x75,0x84,0x93,0xa2,0xb1,0xc0,0x00, }; -static const uint8_t wvc_standard_0027[] = { +static const uint8_t vcb_standard_0027[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x96,0xe5,0x79,0xa6,0xa8,0x9a,0xb6,0xec,0x58,0x92,0xe7,0x89,0xa2,0x6a,0xaa,0xaa,0x6d,0x3b,0x92,0xe5,0x79,0xa2,0x68,0x9a,0xaa,0x6a,0xdb, 0x96,0xe7,0x89,0xa2,0x69,0xaa,0xaa,0xeb,0xfa,0xba,0xe6,0x79,0xa2,0x68,0x9a,0xaa,0xea,0xba,0xba,0x2e,0x9a,0xa6,0x69,0xaa,0xaa,0xeb,0xba,0xae,0xae,0x8b,0xa6,0x68, 0xaa,0xaa,0xea,0xba,0xae,0xac,0xeb,0xa6,0xa9,0xaa,0xaa,0xeb,0xca,0xae,0x2c,0xfb,0xba,0xa9,0xaa,0xaa,0xea,0xba,0xb2,0x2b,0xcb,0xbe,0xb0,0xaa,0xae,0xeb,0xca,0xb2, 0x6c,0xdb,0xba,0x30,0xac,0xaa,0xeb,0xba,0xb2,0x2c,0xdb,0xb6,0xed,0x1b,0xb7,0xae,0xeb,0xba,0xef,0xfb,0xbe,0x70,0x64,0xeb,0xba,0xae,0x0b,0xbf,0x70,0x0c,0xc3,0x51, 0x00,0x00,0x4f,0x70,0x00,0x00,0x2a,0xb0,0x61,0x75,0x84,0x93,0xa2,0xb1,0xc0,0x00, }; -static const uint8_t wvc_standard_0028[] = { +static const uint8_t vcb_standard_0028[] = { 0x21,0x03,0x60,0x00,0x00,0x52,0x48,0x25,0x95,0x74,0x5a,0x9a,0x6d,0xb6,0x3b,0xf7,0xdc,0x71,0xd7,0xbd,0x77,0xce,0x39,0xe7,0x9c,0x01, }; -static const uint8_t wvc_standard_0029[] = { +static const uint8_t vcb_standard_0029[] = { 0x12,0x05,0xe0,0x51,0xca,0x5a,0xe0,0x9c,0xb5,0xc0,0x39,0x6b,0x81,0x94,0xd6,0x02,0xac,0x05,0x68,0x0d,0xf0,0x1a,0x20,0x46,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_002a[] = { +static const uint8_t vcb_standard_002a[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0xa3,0xbb,0x43,0x34,0x44,0xba,0x33,0xc4,0x43,0xa4,0xbb,0xcb,0xbc,0x4c,0xcb,0xc4,0x5c,0x5c,0xb5,0x4c,0xd4,0x44,0x5d,0xba,0xbb, 0xcc,0xcb,0xb4,0x4c,0x54,0xc5,0x54,0xcb,0x44,0xd5,0xdc,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_002b[] = { +static const uint8_t vcb_standard_002b[] = { 0x42,0x06,0xa8,0x51,0xe2,0x51,0xe7,0x20,0x94,0xc6,0x88,0x04,0x91,0x62,0x4e,0x8a,0x31,0x46,0x08,0x21,0x84,0xd0,0x10,0x58,0x54,0x31,0x07,0xad,0x85,0xe0,0x3a,0x07, 0xa5,0xc4,0x0c,0x81,0xe5,0x0c,0x52,0x4e,0x2a,0x04,0x96,0x43,0x06,0x31,0xc8,0x18,0x78,0x50,0x21,0xa4,0x9c,0x73,0x20,0x52,0xa7,0x94,0x62,0x50,0x82,0x6b,0x25,0x64, 0xcc,0x01, }; -static const uint8_t wvc_standard_002c[] = { +static const uint8_t vcb_standard_002c[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0xad,0xbd,0x87,0xb5,0x5a,0x8b,0x11,0x6b,0xb5,0x16,0x23,0x5a,0x7b,0x6f,0x4e,0xb4,0xf6,0xde,0x9c,0x68,0x2d,0xc6,0x39,0xd1,0x5a,0x8c, 0x73,0x02,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_002d[] = { +static const uint8_t vcb_standard_002d[] = { 0x14,0x27,0xe8,0x22,0x49,0xa2,0x28,0x59,0x96,0x29,0x4a,0x96,0x25,0x9a,0xa6,0x69,0xba,0xaa,0x68,0x9a,0xae,0x2b,0x69,0x9a,0x69,0x6a,0x9a,0x67,0xaa,0x9a,0xe6,0x99, 0xaa,0x69,0xaa,0xaa,0x6c,0x9a,0xaa,0x2a,0x5b,0x9a,0x66,0x9a,0x9a,0xa7,0xa9,0xa6,0xe6,0x69,0xa6,0x69,0xaa,0xa2,0xac,0x9a,0xaa,0x29,0xab,0xa6,0x69,0xda,0xb2,0xa9, 0xaa,0xb6,0x6c,0x9a,0xaa,0x6c,0xbb,0xae,0xac,0xeb,0xae,0x2b,0xcb,0xb6,0x69,0x9a,0xae,0x6c,0xaa,0xa6,0x2c,0x9b,0xaa,0x2a,0xcb,0xae,0xec,0xda,0xb2,0x2b,0xcb,0xb6, @@ -286,7 +280,7 @@ static const uint8_t wvc_standard_002d[] = { 0xec,0xda,0xb2,0xf0,0xba,0xb6,0xad,0xcb,0xb2,0x6d,0xfb,0xaa,0xac,0xfa,0xba,0xed,0xfb,0x42,0x5b,0x56,0x7d,0x57,0x00,0x00,0x18,0x70,0x00,0x00,0x08,0x30,0xa1,0x0c, 0x04, }; -static const uint8_t wvc_standard_002e[] = { +static const uint8_t vcb_standard_002e[] = { 0x92,0x1b,0xa0,0x98,0xa9,0x32,0xbb,0xbb,0xc3,0x43,0x44,0x44,0x44,0x54,0x5d,0x33,0xb3,0x3b,0x44,0xc4,0xcc,0xcc,0xcc,0x4c,0x55,0x35,0x33,0xbb,0xc3,0x43,0x44,0x44, 0xcc,0xcc,0x54,0xdd,0xbb,0xbb,0x3b,0x44,0xc4,0xcc,0xcc,0xcc,0x4c,0x55,0x35,0xbb,0xbb,0x43,0x44,0xcc,0xcc,0xcc,0xcc,0x54,0xd5,0xbb,0x3b,0x44,0x44,0xc4,0xcc,0xcc, 0xcc,0x4c,0x55,0xbd,0xbb,0x43,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xd4,0x55,0xc4,0x43,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0x4c,0x55,0x55,0xbd,0x43,0x44,0xcc,0xcc,0xcc,0xcc, @@ -296,19 +290,19 @@ static const uint8_t wvc_standard_002e[] = { 0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xdc,0xd5,0x55,0xdd,0x5d,0xd5,0xcc,0xcc,0xcc,0xcc,0xd4,0x5d,0xdd,0xd5,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_002f[] = { +static const uint8_t vcb_standard_002f[] = { 0x01,0x04,0x28,0x51,0x12,0x1c,0x47,0xcd,0x93,0xd4,0x9c,0x73,0xce,0x30,0x4e,0x1c,0xe5,0x40,0x73,0xd2,0x9c,0x70,0x4e,0x41,0x0e,0x14,0xa3,0xc0,0x73,0x12,0x84,0xeb, 0x4d,0xc6,0xdc,0x4c,0x69,0x4d,0xd7,0xdc,0x9c,0x53,0x4a,0x00, }; -static const uint8_t wvc_standard_0030[] = { +static const uint8_t vcb_standard_0030[] = { 0x12,0x05,0xe0,0x50,0xca,0x49,0x6b,0xbd,0x87,0xf7,0x5a,0x8b,0x11,0xef,0xb5,0x16,0x23,0xe2,0x7c,0x2f,0x46,0xcc,0xf9,0x5e,0x8c,0xa8,0xf3,0xbd,0x39,0x51,0xeb,0x7b, 0x73,0xe2,0xde,0x18,0xe7,0x04,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0031[] = { +static const uint8_t vcb_standard_0031[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0xb2,0xa3,0xbb,0x4b,0xbd,0x54,0xba,0x3b,0xcd,0x53,0x9d,0xbb,0x53,0x3d,0xd5,0x53,0x55,0x6e,0xed,0x3e,0xd5,0xec,0xd5,0xee,0xb9,0x3b, 0xd5,0x53,0x35,0x55,0xed,0xce,0xed,0x53,0xd5,0x6e,0x6d,0x0e,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0032[] = { +static const uint8_t vcb_standard_0032[] = { 0x01,0x10,0xa8,0x41,0x8a,0x22,0xa4,0x24,0x63,0x4a,0x69,0x0c,0xa1,0x52,0x4a,0x2a,0xa5,0xa0,0x63,0x0c,0x6a,0xeb,0xa8,0x63,0x8c,0x3a,0xc7,0x28,0x84,0x0c,0x62,0x0a, 0x31,0x29,0xa3,0x74,0xef,0x49,0xa5,0x12,0x4b,0x09,0x39,0x42,0x0a,0x2b,0xa5,0xa8,0x63,0x8a,0x69,0x2a,0xa9,0x52,0xca,0x32,0xa5,0xa8,0x63,0x8c,0x62,0x0a,0x29,0x64, 0xca,0x3a,0xa6,0x2c,0x74,0x8e,0x62,0xc9,0x30,0x29,0xa1,0x84,0xad,0xc9,0x95,0xce,0x62,0x09,0x3d,0x73,0xcc,0x32,0xc6,0xa8,0x63,0xcc,0x59,0x4b,0xa9,0x73,0xcc,0x3a, @@ -316,7 +310,7 @@ static const uint8_t wvc_standard_0032[] = { 0xa5,0x50,0x71,0x4b,0xb1,0xf7,0x5a,0x63,0x6a,0xbd,0x85,0x10,0x63,0x29,0x2d,0x18,0x21,0x6c,0xae,0xbd,0xb6,0x9a,0x5b,0x49,0xad,0x18,0x63,0x8c,0x31,0xc6,0xb8,0x58, 0x7c,0x0a,0x45,0x00, }; -static const uint8_t wvc_standard_0033[] = { +static const uint8_t vcb_standard_0033[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc5,0x14,0x84,0x4a,0x31,0x08,0x1d,0x84,0x94,0x3a,0x08,0x29,0x55,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x31,0x07,0x25,0x94,0x92,0x52,0x08, 0x25,0xb5,0x8a,0x31,0x08,0x99,0x63,0x12,0x32,0xe7,0xa4,0x84,0x12,0x5a,0x0a,0xa5,0xb4,0xd4,0x41,0x48,0x29,0x94,0xd2,0x5a,0x28,0xa5,0xb5,0xd4,0x5a,0x8d,0x29,0xb5, 0x18,0x3b,0x08,0x29,0x85,0x52,0x5a,0x0b,0xa5,0xb4,0x96,0x5a,0x8a,0x2d,0xb5,0x16,0x63,0xc4,0x18,0x84,0xcc,0x31,0x29,0x19,0x73,0x52,0x42,0x29,0x2d,0x85,0x52,0x52, @@ -331,29 +325,29 @@ static const uint8_t wvc_standard_0033[] = { 0xb1,0xa4,0x14,0x63,0x8b,0xad,0xd6,0x16,0x63,0xad,0x29,0xa5,0x18,0x5b,0x6c,0xb5,0xa6,0xd4,0x62,0xad,0xb5,0xf6,0xdc,0x5a,0x6d,0x39,0xb5,0x16,0x6b,0x8b,0xb1,0xe6, 0xd4,0x5a,0xad,0xb1,0xd6,0xde,0x63,0x8d,0x3d,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0034[] = { +static const uint8_t vcb_standard_0034[] = { 0x14,0x27,0xe0,0x70,0xce,0x5a,0x00,0x00,0x70,0x52,0x6a,0x0d,0x00,0x00,0x4e,0x4a,0xad,0x01,0x00,0xc0,0x6a,0x2d,0x46,0x00,0x00,0x68,0xad,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0035[] = { +static const uint8_t vcb_standard_0035[] = { 0x14,0x27,0xe0,0x70,0xce,0x5a,0x00,0x00,0x70,0x52,0x6a,0x0d,0x00,0x00,0x4e,0x4a,0xad,0x01,0x00,0xc0,0x6a,0x2d,0x46,0x00,0x00,0x68,0xad,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0036[] = { +static const uint8_t vcb_standard_0036[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xef,0xbd,0x37,0xe3,0x9c,0x2b,0xa5,0xd6,0x62,0x8c,0x71,0xce,0x5a,0x57,0x4a,0xad,0xc5,0x38,0x63,0x9d,0xb5,0x5a,0xab,0xb5,0x18,0xe7, 0xac,0xf5,0x5e,0xad,0xb5,0x16,0xe3,0x9c,0xb5,0xde,0xab,0xd6,0xf7,0xe6,0xac,0xf5,0xde,0x7b,0xd5,0x1b,0xdf,0x9c,0xb5,0xde,0x9b,0x33,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0037[] = { +static const uint8_t vcb_standard_0037[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0xbb,0xbb,0x4b,0xa2,0x2a,0xb3,0xbb,0xbb,0x24,0xaa,0x32,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0x4c, 0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xc3,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0038[] = { +static const uint8_t vcb_standard_0038[] = { 0x12,0x12,0xa0,0x20,0xaa,0x32,0x33,0xbb,0xbb,0xbb,0xbb,0xcb,0x2a,0x33,0xb3,0x3b,0x44,0x44,0x44,0xc4,0xac,0x32,0x3b,0xbb,0x43,0x44,0x44,0x44,0x4c,0x33,0xb3,0xbb, 0x43,0x44,0x44,0x44,0xc4,0xcc,0x34,0xbb,0xc3,0x43,0x44,0x4c,0xc4,0xcc,0xd4,0xbb,0x3b,0x44,0x44,0x44,0x4c,0xcc,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0xcc,0xd4,0xcc, 0x3b,0x44,0x44,0x44,0x44,0xc4,0xcc,0xcc,0x54,0xbd,0x43,0x44,0x44,0x44,0xc4,0x54,0x55,0x55,0x44,0x44,0x44,0xc4,0xc4,0x44,0xd5,0x54,0x45,0x44,0x44,0x44,0x44,0x4c, @@ -361,15 +355,15 @@ static const uint8_t wvc_standard_0038[] = { 0x44,0x44,0x54,0x4d,0x55,0xcd,0x4c,0x44,0x44,0x44,0xc4,0xd4,0x54,0x55,0x55,0x45,0x44,0x44,0x44,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0039[] = { +static const uint8_t vcb_standard_0039[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x1a,0xab,0xac,0xd3,0x4e,0x4b,0x31,0xd5,0x55,0x57,0x6d,0x75,0xd5,0x55,0x63,0x7d,0xb5,0xd6,0x5a,0x6b,0xad,0xb5, 0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0xe7,0x9c,0x73,0x4e,0x00, }; -static const uint8_t wvc_standard_003a[] = { +static const uint8_t vcb_standard_003a[] = { 0x02,0x04,0xa0,0x42,0xde,0xd6,0xe4,0x1b,0xb2,0xb3,0x5b,0x1d,0x21,0x32,0x6c,0x2d,0xaa,0x2a,0x63,0x36,0xaa,0x21,0x6b,0xb5,0x2a,0xa2,0x62,0xb4,0x2b,0x23,0x41,0x5c, 0xde,0xce,0x32,0x00, }; -static const uint8_t wvc_standard_003b[] = { +static const uint8_t vcb_standard_003b[] = { 0x01,0x10,0xa8,0xc3,0x20,0x3c,0x0a,0x42,0xc5,0x20,0x84,0x10,0xc2,0x92,0x1e,0x2c,0xc9,0xc1,0x93,0x1e,0x84,0x10,0x42,0xc4,0x1c,0x3c,0x0a,0xc2,0xb4,0x20,0x84,0x10, 0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0xc2,0xa2,0x1c,0x34,0xc9,0xc1,0x93,0x20,0x84,0x0e,0xc2,0x71,0x18,0x1c,0x86,0xc1,0x72,0x1c,0x7c,0x0e,0xc2,0xa2, 0x1c,0x2c,0x88,0xc1,0x93,0x20,0x74,0x10,0xc2,0x07,0x21,0x5c,0xcd,0x41,0xd6,0x1c,0x84,0x10,0x42,0x92,0x1a,0x24,0xa8,0x41,0x83,0x1c,0x74,0x0e,0x42,0x61,0x16,0x14, @@ -377,70 +371,70 @@ static const uint8_t wvc_standard_003b[] = { 0xb4,0x20,0x84,0x10,0x42,0x92,0x20,0x24,0xc8,0x41,0x83,0x20,0x64,0x0c,0x42,0xa3,0x20,0x2c,0xc9,0x41,0x83,0x1c,0x5c,0x0a,0xc2,0xe5,0x20,0x54,0x0d,0x42,0x95,0x1c, 0x84,0x0f,0x42,0x00, }; -static const uint8_t wvc_standard_003c[] = { +static const uint8_t vcb_standard_003c[] = { 0x12,0x0e,0x20,0x10,0x51,0x55,0x55,0x55,0x55,0x55,0x9d,0x54,0x55,0x55,0x55,0x55,0x55,0xd5,0xc9,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x50,0x97,0x19,0x0e,0x80,0xd1,0x13,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_003d[] = { +static const uint8_t vcb_standard_003d[] = { 0x21,0x01,0x58,0x75,0x77,0x77,0x77,0x97,0x97,0x97,0x77,0x09, }; -static const uint8_t wvc_standard_003e[] = { +static const uint8_t vcb_standard_003e[] = { 0x92,0x07,0x28,0x30,0x46,0x29,0xe7,0xa4,0xa4,0xd4,0x28,0xc5,0x18,0x84,0x54,0x5a,0x8b,0x14,0x62,0x0c,0x42,0x49,0xad,0x55,0x8c,0x39,0x27,0x25,0xa5,0x18,0x2b,0xc6, 0x9c,0x93,0x92,0x5a,0x8c,0x1d,0x84,0x52,0x52,0x6a,0xad,0xd6,0x0e,0x42,0x29,0x29,0xb5,0x56,0x6b,0x29,0x25,0xa5,0xd8,0x6a,0xcd,0xb9,0x94,0xd2,0x5a,0x8c,0xb5,0xe6, 0x9c,0x5a,0x8b,0xb1,0xd6,0x5c,0x7b,0x4e,0xad,0xc5,0x58,0x6b,0xce,0xb9,0x17,0x00,0x70,0x17,0x1c,0x00,0xc0,0x0e,0x6c,0x14,0xd9,0x9c,0x60,0x24,0x28, }; -static const uint8_t wvc_standard_003f[] = { +static const uint8_t vcb_standard_003f[] = { 0x14,0x05,0xa0,0x98,0xa1,0x2a,0xaa,0x22,0xb3,0xb2,0x2b,0x3b,0x32,0xab,0x3b,0x43,0x23,0x33,0x43,0xb4,0xbb,0xc2,0x33,0xcb,0xcb,0xac,0xbb,0xcb,0xbb,0x4c,0x32,0xb3, 0x3b,0x3b,0xac,0xbb,0xcb,0xbc,0xcb,0x3a,0xbc,0x4c,0xcb,0x0b,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0040[] = { +static const uint8_t vcb_standard_0040[] = { 0xa1,0x00,0x50,0xd8,0xda,0x16, }; -static const uint8_t wvc_standard_0041[] = { +static const uint8_t vcb_standard_0041[] = { 0x14,0x05,0xa0,0x20,0xa2,0x2a,0xaa,0xa2,0x2a,0xbb,0xab,0x3b,0xaa,0xaa,0x33,0xbb,0xa3,0x2a,0xbb,0xab,0xbb,0xba,0x3b,0xcc,0xcb,0xac,0x3b,0xcb,0xbb,0x4c,0xaa,0xaa, 0x3b,0xbb,0xab,0xbb,0xcb,0xbc,0xcb,0xba,0xbb,0xcc,0x4b,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0042[] = { +static const uint8_t vcb_standard_0042[] = { 0x12,0x05,0x20,0x98,0x31,0xbb,0x43,0x9c,0xa2,0xbb,0xbb,0xcc,0xa1,0xba,0xbb,0xcb,0xb4,0x3b,0x44,0x44,0x55,0xbb,0x43,0x44,0x54,0xbd,0x3b,0xc4,0xd4,0xdd,0xbb,0x43, 0xcc,0xdc,0xcd,0x4c,0xd5,0x5d,0xe6,0xcc,0x54,0xdd,0x65,0x0e,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0043[] = { +static const uint8_t vcb_standard_0043[] = { 0x01,0x10,0x20,0xaa,0xf3,0xc2,0xf4,0xd4,0x75,0x77,0xf7,0x29,0xf3,0xb2,0x73,0x3c,0x74,0x77,0xf7,0x3a,0x74,0xb3,0xf3,0xc4,0x74,0x77,0x77,0x67,0x77,0x4f,0x75,0x67, 0x76,0x77,0xf7,0x29,0xf3,0x3a,0xf4,0xcc,0x75,0x77,0xf7,0xa0,0x72,0x2a,0xf3,0x2b,0x73,0x77,0x77,0xaa,0x73,0x2a,0x73,0x2c,0x73,0x77,0xf7,0x5e,0xf6,0x4d,0x75,0x77, 0x77,0x77,0x77,0x3b,0x74,0xcc,0x74,0xef,0x76,0x77,0x77,0x2a,0x73,0x3b,0xf4,0xc5,0x74,0x77,0x77,0x33,0x74,0xb3,0xf3,0x3d,0x74,0x77,0x77,0xe6,0xf6,0xd5,0x75,0x77, 0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x66,0x76,0x77,0x77,0x77,0x77,0x77,0x77,0x5f,0x76,0x5f,0x76,0x6f,0x77,0x77,0x77,0x77,0x77,0x77,0x76,0x77, 0x77,0x77,0x77,0x00, }; -static const uint8_t wvc_standard_0044[] = { +static const uint8_t vcb_standard_0044[] = { 0x01,0x08,0xa8,0x41,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x52,0x48,0x29,0xa5,0x90,0x52,0x4c,0x31,0xc5,0x14,0x53,0x8e,0x39,0xe6,0x98,0x63,0x8e,0x41,0x06, 0x19,0x64,0xd0,0x41,0x27,0x9d,0x74,0x92,0x49,0x25,0x9d,0x74,0x94,0x49,0x46,0x1d,0xa5,0xd6,0x52,0x6a,0x29,0xa6,0x98,0x62,0xcb,0x2d,0xc6,0x5a,0x6b,0xad,0x39,0xe7, 0x5e,0x83,0x52,0xc6,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63,0x8c,0x31,0x46,0x00, }; -static const uint8_t wvc_standard_0045[] = { +static const uint8_t vcb_standard_0045[] = { 0x42,0x06,0xa8,0x91,0x20,0x83,0x0c,0x42,0x08,0x45,0x39,0x48,0x21,0xb7,0x1e,0x2c,0x84,0x18,0x73,0x92,0x82,0xd0,0x1c,0x83,0x50,0x62,0x0c,0xc2,0x53,0x88,0x19,0x86, 0x9c,0x06,0x11,0x3a,0xc8,0xa0,0x93,0x1e,0x5c,0xc9,0x9c,0x61,0x86,0x79,0x70,0x29,0x94,0x0a,0x22,0xa6,0xc1,0xc6,0x92,0x1b,0x47,0x90,0x06,0x61,0x53,0xae,0xa4,0x72, 0x1c,0x04, }; -static const uint8_t wvc_standard_0046[] = { +static const uint8_t vcb_standard_0046[] = { 0x14,0x05,0xa0,0x98,0xa1,0x2a,0xaa,0x22,0x33,0x3b,0xb4,0x43,0x32,0x33,0x3c,0x43,0x1b,0x33,0x43,0xb4,0xbb,0xc2,0xb3,0x53,0xd4,0xac,0xc3,0xd3,0xc3,0xd4,0x31,0xb3, 0x3b,0x43,0x2c,0x3c,0xd4,0xbc,0xd3,0x3a,0xc4,0xd4,0xd3,0x0b,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0047[] = { +static const uint8_t vcb_standard_0047[] = { 0x92,0x01,0x98,0x6c,0x24,0x49,0x92,0x24,0x49,0xb2,0x25,0xd9,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0048[] = { +static const uint8_t vcb_standard_0048[] = { 0x92,0x07,0x20,0x98,0xa9,0xba,0x43,0xcc,0x9c,0x2a,0x33,0xc4,0x4c,0xd5,0xa9,0x32,0x43,0xcc,0x54,0xad,0x33,0xc4,0x4c,0x55,0xde,0xba,0x43,0xcc,0x54,0x5d,0x3e,0xc4, 0xcc,0x5d,0xde,0xe6,0x43,0xcc,0xdc,0x65,0xee,0x46,0xd5,0x5d,0xe6,0x6e,0x6f,0x54,0xdd,0x65,0xee,0xf6,0xd6,0x5d,0xe6,0x6e,0x6f,0x6f,0xd5,0x65,0xee,0xee,0x76,0x0f, 0x00,0xb8,0x0b,0x0e,0x00,0x60,0x07,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0049[] = { +static const uint8_t vcb_standard_0049[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x4a,0x2b,0xaf,0xcc,0xf2,0x4a,0x2c,0xef,0xc4,0x13,0x53,0x5c,0x73,0xc5,0x56,0xdb,0x8d,0x79,0xe6,0x7b,0xef,0xbd,0xf7, 0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0x5e,0x00, }; -static const uint8_t wvc_standard_004a[] = { +static const uint8_t vcb_standard_004a[] = { 0x12,0x12,0xa0,0x20,0xb2,0x32,0xbb,0xbb,0x43,0x44,0x44,0xa4,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0xc4,0x4c,0xaa,0x32,0xbb,0xbb,0xc3,0x43,0x44,0x4c,0x34,0xb3,0xbb,0x3b, 0x44,0x44,0xc4,0xcc,0x4c,0x33,0xbb,0xbb,0x43,0x44,0x4c,0xcc,0xcc,0xb4,0xbb,0x3b,0x44,0x44,0xc4,0xcc,0xcc,0x4c,0xbb,0xc3,0x43,0x44,0x4c,0xcc,0xcc,0xcc,0xbc,0x3b, 0x44,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xc3,0x43,0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -448,37 +442,37 @@ static const uint8_t wvc_standard_004a[] = { 0xcc,0x4c,0xc5,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x55,0x4d,0x0d,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_004b[] = { +static const uint8_t vcb_standard_004b[] = { 0x42,0x06,0x20,0xb9,0xe5,0xee,0xe6,0xee,0x1a,0xba,0x4c,0xd5,0x66,0xa4,0x21,0x3b,0x4c,0xe6,0x35,0x1a,0xaa,0xc3,0x65,0xc6,0x22,0x22,0x43,0xed,0x4d,0x2b,0x9a,0xb2, 0xd4,0x55,0x3c,0x23,0xaa,0x4c,0xde,0xc4,0xab,0xa2,0xcb,0xe6,0x5d,0x4d,0xb4,0xcb,0xe5,0x6e,0x5e,0x45,0x4c,0x00, }; -static const uint8_t wvc_standard_004c[] = { +static const uint8_t vcb_standard_004c[] = { 0x14,0x05,0xa0,0xa0,0xa1,0x2a,0xaa,0xa2,0x2a,0xbb,0xab,0x3b,0xaa,0xaa,0x3b,0xbb,0x23,0x2b,0xbb,0xab,0x3b,0xbb,0x3b,0xcc,0xcb,0xac,0xbb,0xcb,0xbb,0x4c,0xaa,0xaa, 0x3b,0xbb,0xab,0xbb,0xcb,0xbc,0x4b,0xbb,0xbb,0xcc,0x4b,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_004d[] = { +static const uint8_t vcb_standard_004d[] = { 0x12,0x05,0xa0,0x10,0xa9,0xba,0xcb,0x1c,0xa2,0xb3,0x3b,0x4d,0x21,0xb2,0xbb,0x4b,0xad,0xb3,0xc4,0x4c,0xd5,0xb2,0x43,0xc4,0xd4,0xbd,0xbb,0x4c,0x55,0xde,0x3b,0xc4, 0x54,0x5d,0x4e,0xcd,0x55,0xde,0xee,0x4c,0xd5,0x5d,0xee,0x0e,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_004e[] = { +static const uint8_t vcb_standard_004e[] = { 0x21,0x03,0x60,0x00,0x00,0x52,0x49,0x67,0x9d,0x75,0xda,0x69,0xe7,0x9d,0x77,0xe2,0x89,0x67,0x9e,0x99,0x66,0xaa,0xe9,0xae,0xbb,0x00, }; -static const uint8_t wvc_standard_004f[] = { +static const uint8_t vcb_standard_004f[] = { 0x91,0x01,0x60,0x00,0xe5,0x94,0x55,0x56,0x59,0xa5,0x95,0x77,0xe2,0x89,0x00, }; -static const uint8_t wvc_standard_0050[] = { +static const uint8_t vcb_standard_0050[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0xbb,0xbb,0x1b,0x22,0xb3,0x3b,0x44,0xc4,0x21,0x32,0xbb,0x43,0x44,0x2c,0xb3,0xbb,0x3b,0x44,0xc4,0x32,0xbb,0xbb,0x43,0x44,0xbc,0xbb, 0x3b,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0x3c,0x44,0x44,0xc4,0xcc,0xcc,0x43,0x44,0x44,0xcc,0xcc,0x3c,0x44,0x44,0xc4,0xcc,0xcc,0x43,0x44,0x44,0xcc,0xcc,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0051[] = { +static const uint8_t vcb_standard_0051[] = { 0x01,0x04,0xa8,0x64,0x0e,0x43,0xc5,0xa8,0x74,0xce,0x82,0x10,0x42,0x43,0x08,0x2a,0x63,0x9c,0x43,0xc8,0x79,0x8d,0x3d,0x43,0x88,0x29,0x42,0x90,0x43,0x86,0x69,0x6b, 0xb9,0x64,0x0e,0x32,0x84,0x14,0x54,0x08,0x71,0x0b,0x25,0x00, }; -static const uint8_t wvc_standard_0052[] = { +static const uint8_t vcb_standard_0052[] = { 0x01,0x01,0xa0,0xc8,0x6b,0x5b,0x6d,0x20,0xb1,0x41,0x63,0x00, }; -static const uint8_t wvc_standard_0053[] = { +static const uint8_t vcb_standard_0053[] = { 0x14,0x27,0x28,0x41,0xc8,0x39,0xc4,0x18,0x84,0x88,0x31,0x08,0xa1,0x84,0x94,0x42,0x08,0x29,0x45,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x39,0x27,0xa5,0x94,0xd2,0x5a,0x28, 0x25,0xb5,0x88,0x31,0x08,0x99,0x73,0x52,0x32,0xe7,0xa4,0x84,0x52,0x5a,0x2a,0xa5,0xb4,0x16,0x4a,0x69,0xad,0xa4,0x12,0x5b,0x28,0xa5,0xb5,0xd6,0x5a,0xad,0xa9,0xb5, 0x58,0x43,0x29,0xad,0x85,0x52,0x5a,0x2b,0xa5,0xb4,0x96,0x5a,0xab,0xb1,0xc5,0x56,0x6b,0xc4,0x18,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x4a,0x2a,0xad,0x95,0x92,0x5a, @@ -493,33 +487,33 @@ static const uint8_t wvc_standard_0053[] = { 0xb1,0xa4,0x14,0x63,0x8b,0xb1,0xd6,0x58,0x63,0xae,0xa9,0xb5,0x5a,0x5b,0x8c,0xb9,0xa6,0xd6,0x6a,0xae,0xb5,0xf6,0x1c,0x5b,0xad,0x3d,0xb5,0x58,0x73,0x8b,0xb1,0xf6, 0x16,0x5b,0xae,0x31,0xd7,0xde,0x6b,0x8e,0x3d,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0054[] = { +static const uint8_t vcb_standard_0054[] = { 0x91,0x01,0x58,0x00,0xaa,0xea,0xea,0xee,0xee,0x32,0x73,0x17, }; -static const uint8_t wvc_standard_0055[] = { +static const uint8_t vcb_standard_0055[] = { 0x42,0x06,0x28,0x81,0x94,0x62,0x4d,0x42,0x28,0xc9,0x20,0x27,0x25,0xf6,0xa2,0x34,0x63,0x90,0x83,0x56,0x83,0xf2,0x14,0x42,0x8c,0x49,0xec,0xc5,0x74,0x4c,0x21,0xe4, 0x28,0x28,0x15,0x32,0x86,0x0c,0x72,0xa0,0x64,0xea,0x18,0x43,0x88,0x79,0xb1,0xb1,0x53,0x0a,0x21,0xe6,0xc5,0xf8,0xd2,0x39,0xc6,0xa0,0x17,0x63,0x5c,0x29,0x21,0x94, 0x60,0x04, }; -static const uint8_t wvc_standard_0056[] = { +static const uint8_t vcb_standard_0056[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0xb2,0xa3,0xbb,0x53,0xbd,0x4c,0xba,0x3b,0xcd,0x53,0x9d,0xbb,0x53,0x3d,0xd5,0x5b,0x55,0x66,0xe5,0x36,0xd5,0xe4,0x55,0xee,0xb9,0x3b, 0xd5,0xd3,0x3d,0x55,0x65,0xce,0xe5,0x53,0xd5,0x66,0x6d,0x0e,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0057[] = { +static const uint8_t vcb_standard_0057[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0xb2,0xa3,0xbb,0x53,0xbd,0x4c,0xba,0x3b,0xcd,0x53,0x9d,0xbb,0x53,0x3d,0xd5,0x5b,0x55,0x66,0xe5,0x36,0xd5,0xe4,0x55,0xee,0xb9,0x3b, 0xd5,0xd3,0x3d,0x55,0x65,0xce,0xe5,0x53,0xd5,0x66,0x6d,0x0e,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0058[] = { +static const uint8_t vcb_standard_0058[] = { 0x92,0x07,0xa0,0x20,0xaa,0x32,0xbb,0xbb,0x23,0x22,0x33,0xb3,0xbb,0x3b,0xa2,0x32,0x33,0xbb,0xbb,0x2b,0x33,0xb3,0xbb,0xbb,0xbb,0x32,0x33,0xbb,0xbb,0xbb,0x33,0xb3, 0xbb,0x3b,0x44,0x44,0x33,0xbb,0xbb,0x43,0x44,0xbc,0xbb,0x3b,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0xbc,0xbb,0x3b,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0059[] = { +static const uint8_t vcb_standard_0059[] = { 0x01,0x08,0x28,0x42,0x08,0x21,0xa4,0x90,0x42,0x0a,0x29,0xa4,0x90,0x42,0x0a,0x29,0xa4,0x90,0x42,0x4a,0x29,0xc5,0x14,0x53,0x4c,0x31,0xc5,0x14,0x53,0x4e,0x39,0xe5, 0x98,0x63,0x8e,0x39,0x06,0x19,0x74,0xd0,0x41,0x27,0x9d,0x84,0x12,0x4a,0x48,0x21,0x85,0x52,0x52,0x49,0x25,0xa5,0x94,0x52,0x6a,0xb1,0xd6,0x9a,0x73,0xef,0x3d,0xe8, 0x9e,0x7b,0x0f,0xc2,0x07,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x00, }; -static const uint8_t wvc_standard_005a[] = { +static const uint8_t vcb_standard_005a[] = { 0x92,0x1b,0x20,0x21,0xb2,0x32,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4,0xac,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44, 0x44,0x44,0x4c,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0xcc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44, 0x44,0xc4,0xcc,0xbc,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0x4c,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xd4,0xcc,0x44,0x44,0x44,0x44,0x44,0x4c,0xc4, @@ -529,16 +523,16 @@ static const uint8_t wvc_standard_005a[] = { 0xcc,0xd4,0x54,0xcd,0xcc,0x44,0xcc,0x44,0x4c,0xcc,0xcc,0x54,0xcd,0xcc,0xcc,0x4c,0xc4,0xcc,0x44,0xcc,0xcc,0x4c,0x4d,0xcd,0xcc,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_005b[] = { +static const uint8_t vcb_standard_005b[] = { 0x92,0x07,0x28,0x30,0x06,0x21,0xe7,0xa4,0xb4,0xd6,0x30,0xe6,0x1c,0x84,0x96,0x6a,0x6c,0x18,0x63,0x0e,0x4a,0x4a,0xb1,0x45,0xce,0x41,0x48,0xa9,0xc5,0x5c,0x23,0xe6, 0x20,0xa4,0x14,0x63,0xd0,0x1d,0x94,0x94,0x5a,0x0c,0x36,0xf8,0x4e,0x42,0x4a,0xad,0xc5,0x9c,0x83,0x49,0xa9,0xc5,0x9a,0x73,0xef,0x41,0xa4,0xd4,0x5a,0xcd,0x41,0xe7, 0x9e,0x6a,0xab,0xb9,0xe7,0xde,0x7b,0x4e,0x31,0xd6,0x9a,0x73,0xef,0xb9,0x17,0x00,0x70,0x17,0x1c,0x00,0xc0,0x0e,0x6c,0x14,0xd9,0x9c,0x60,0x24,0x28, }; -static const uint8_t wvc_standard_005c[] = { +static const uint8_t vcb_standard_005c[] = { 0x12,0x05,0xa0,0x10,0xa9,0x32,0x43,0x1c,0x22,0xb3,0xbb,0xcc,0x21,0x32,0xbb,0xcb,0x2c,0xb3,0x3b,0x44,0xcd,0x32,0xbb,0x43,0xcc,0xb4,0x3b,0xc4,0x4c,0x55,0xbb,0x43, 0xcc,0x54,0xc5,0x4c,0x4d,0xd5,0x5d,0xcc,0xcc,0x54,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_005d[] = { +static const uint8_t vcb_standard_005d[] = { 0x12,0x12,0xe0,0x50,0xce,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0x8a,0xd6,0xde,0x8b,0x31,0xc6,0x39,0x67,0xad,0x15,0x6b,0xbd,0x17,0x63,0x8c,0x73,0xd6,0x5a,0x2b, 0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xf5,0x5e,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x78,0x2f,0xc6,0x39,0xe7,0xac,0xf5,0xde,0x7b,0xf1,0x5e,0x8c,0x73,0xce, 0x59,0xeb,0xbd,0x37,0x23,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0x73,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0xb3,0xd6,0x7b,0x73,0xce,0x19,0xc4,0x38, @@ -546,28 +540,28 @@ static const uint8_t wvc_standard_005d[] = { 0x73,0xde,0x7d,0x03,0xee,0xbd,0x37,0xe7,0xbc,0x77,0x07,0x70,0x6f,0xce,0x3b,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_005e[] = { +static const uint8_t vcb_standard_005e[] = { 0x12,0x05,0x20,0x98,0x31,0x33,0x43,0x9c,0xaa,0xbb,0x3b,0xc4,0xa9,0xba,0xbb,0x43,0xb4,0x3b,0x44,0x44,0x4d,0xbb,0x43,0x44,0xcc,0xb4,0x3b,0xc4,0x4c,0x55,0xbb,0x43, 0xcc,0x54,0x45,0xc4,0x4c,0xd5,0x5d,0x44,0x4c,0x55,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_005f[] = { +static const uint8_t vcb_standard_005f[] = { 0x12,0x05,0x20,0x98,0x31,0x33,0x43,0x9c,0xaa,0xbb,0x3b,0xc4,0xa9,0xba,0xbb,0x43,0xb4,0x3b,0x44,0x44,0x4d,0xbb,0x43,0x44,0xcc,0xb4,0x3b,0xc4,0x4c,0x55,0xbb,0x43, 0xcc,0x54,0x45,0xc4,0x4c,0xd5,0x5d,0x44,0x4c,0x55,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0060[] = { +static const uint8_t vcb_standard_0060[] = { 0xa1,0x00,0x50,0x58,0xd7,0x16, }; -static const uint8_t wvc_standard_0061[] = { +static const uint8_t vcb_standard_0061[] = { 0x91,0x01,0x58,0x00,0x55,0x75,0x77,0x97,0x97,0x97,0xb7,0xb7,0x00, }; -static const uint8_t wvc_standard_0062[] = { +static const uint8_t vcb_standard_0062[] = { 0x12,0x0e,0x20,0x98,0x21,0xca,0x53,0x55,0x55,0x55,0xad,0x2a,0x2b,0x4d,0x55,0x55,0x55,0x55,0xa3,0xaa,0x3a,0x53,0x55,0x55,0x55,0x55,0xbb,0x3b,0x44,0x55,0x55,0x55, 0x55,0xc5,0xb3,0x43,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0063[] = { +static const uint8_t vcb_standard_0063[] = { 0x12,0x0e,0x28,0x30,0x46,0x29,0xa6,0x1c,0x83,0x4e,0x42,0x4a,0x0d,0x63,0x8e,0x41,0x28,0x25,0xa5,0x94,0x5a,0x6b,0x18,0x63,0x0c,0x42,0x29,0x29,0xb5,0xd6,0x52,0xe5, 0x1c,0x84,0x52,0x52,0x6a,0x2d,0xb6,0x18,0x2b,0xe7,0x20,0x94,0x94,0x52,0x6b,0xb1,0xc6,0xd8,0x41,0x48,0xa9,0xb5,0x16,0x6b,0xac,0xb5,0xe6,0x0e,0x42,0x4a,0xa9,0xc5, 0x1a,0x6b,0x0e,0x36,0x87,0x52,0x5a,0x8b,0x31,0xd6,0x9c,0x73,0xef,0x3d,0xa4,0xd4,0x5a,0x8c,0xb5,0xd6,0xdc,0x7b,0xef,0xa5,0xb5,0x18,0x6b,0xcd,0x39,0xf7,0x20,0x84, @@ -575,7 +569,7 @@ static const uint8_t wvc_standard_0063[] = { 0xf7,0x20,0x7c,0x0f,0x42,0x08,0x17,0x63,0xce,0xb9,0x07,0x21,0x7c,0xf0,0x41,0x18,0x00,0xb8,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_0064[] = { +static const uint8_t vcb_standard_0064[] = { 0x18,0x9a,0xe1,0x71,0x0e,0x70,0x5a,0x03,0xce,0x6a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5a,0x03,0x5a,0x8c,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x4e,0x6b,0x40,0x8b,0x0f,0x68,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -605,15 +599,15 @@ static const uint8_t wvc_standard_0064[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0065[] = { +static const uint8_t vcb_standard_0065[] = { 0x12,0x05,0xe0,0x50,0x46,0x7b,0x80,0xb5,0x00,0x6b,0x01,0x5a,0x03,0xb4,0x06,0x78,0x0f,0xf0,0x1e,0x20,0x46,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0, 0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0066[] = { +static const uint8_t vcb_standard_0066[] = { 0x42,0x06,0x20,0x39,0xe4,0xdc,0xdd,0xdd,0x9a,0xba,0xba,0x4c,0xdd,0xa3,0xc9,0xb1,0xc3,0x54,0xbe,0x3c,0x44,0x5d,0xee,0xac,0x41,0xa1,0xba,0x54,0xbd,0x42,0xa2,0x32, 0xd4,0x45,0xd3,0xaa,0xb2,0xcb,0x55,0x5c,0xb3,0x2a,0x43,0xde,0x64,0x3c,0x33,0x3b,0x75,0x75,0x4d,0x3c,0x33,0x00, }; -static const uint8_t wvc_standard_0067[] = { +static const uint8_t vcb_standard_0067[] = { 0x14,0x27,0x20,0x98,0x51,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x4d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, @@ -626,44 +620,44 @@ static const uint8_t wvc_standard_0067[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x52,0x11,0x0e, 0x00,0x52,0x0f,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_0068[] = { +static const uint8_t vcb_standard_0068[] = { 0x91,0x00,0x58,0x55,0x53,0x75,0x75,0x00, }; -static const uint8_t wvc_standard_0069[] = { +static const uint8_t vcb_standard_0069[] = { 0x12,0x0e,0x20,0x98,0xb1,0x32,0xab,0xba,0x43,0xcc,0xac,0xaa,0x3b,0xbc,0x3b,0x44,0x4d,0x55,0xab,0xba,0xc3,0x33,0x43,0xcc,0x5c,0xed,0xbb,0x43,0x44,0xc4,0xc4,0x4c, 0xe5,0xbe,0xbb,0x43,0xbc,0x43,0xcc,0xd4,0x6d,0x56,0x44,0x44,0x44,0x4c,0x4d,0xde,0x56,0x3e,0x44,0x44,0xcc,0xd4,0xe4,0xed,0xee,0x43,0x44,0x55,0x55,0x5d,0xe6,0xee, 0xc6,0x43,0xcc,0xdc,0xd4,0xdd,0xee,0x6e,0xdd,0xcc,0xdd,0x5d,0xee,0xdd,0xee,0xde,0xc5,0x54,0xdd,0xde,0xee,0xee,0xee,0x6e,0xd5,0xd5,0xed,0xee,0xee,0xee,0xee,0x5e, 0x55,0xd5,0xee,0xee,0xee,0xee,0xee,0x6e,0xde,0xee,0xee,0xee,0xee,0xee,0xee,0xde,0x5d,0xee,0x66,0x0e,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_006a[] = { +static const uint8_t vcb_standard_006a[] = { 0x92,0x07,0x20,0x21,0xaa,0x32,0x33,0x33,0xa3,0x2a,0x33,0x33,0xb3,0x3b,0xaa,0xaa,0x32,0x33,0xbb,0xab,0x32,0xb3,0xb3,0xbb,0xbb,0x32,0x33,0x33,0xbb,0xbb,0x33,0x33, 0xb3,0xbb,0xbb,0x3b,0x33,0xb3,0xbb,0xbb,0xbb,0x33,0xb3,0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0xb3,0xbb,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_006b[] = { +static const uint8_t vcb_standard_006b[] = { 0x12,0x05,0x20,0x90,0xd8,0xdd,0xdd,0x9d,0xdd,0xdd,0xdd,0x5d,0xda,0xdd,0xdd,0xdd,0xdd,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0x00,0x52,0x13,0x0e,0x00,0x52,0x0f,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_006c[] = { +static const uint8_t vcb_standard_006c[] = { 0x42,0x06,0xa8,0xa1,0x56,0x73,0x0e,0xc2,0x18,0x49,0x29,0x07,0x25,0x06,0xa3,0x34,0x64,0x94,0x83,0x94,0x93,0xf2,0x14,0x42,0x8a,0x51,0xed,0x41,0x64,0x4c,0x31,0x26, 0x31,0x27,0xd3,0x31,0xc5,0x14,0x83,0xda,0x5b,0x09,0x19,0x53,0x06,0x49,0xae,0x31,0x65,0x4a,0x19,0xc1,0xb0,0xf7,0x1c,0x3a,0xe7,0x14,0xc4,0xa4,0x84,0x4b,0xa5,0x84, 0x54,0x03, }; -static const uint8_t wvc_standard_006d[] = { +static const uint8_t vcb_standard_006d[] = { 0x92,0x07,0x20,0xaa,0xaa,0x32,0x33,0x33,0xb3,0xaa,0x2a,0x33,0x33,0x33,0xab,0xaa,0x32,0x33,0x33,0xbb,0xaa,0x2a,0x33,0x33,0xb3,0xbb,0xab,0x32,0x33,0x33,0xbb,0x3b, 0x33,0x33,0x33,0xb3,0xbb,0x33,0x33,0x33,0x33,0xbb,0x3b,0x33,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0x33,0xbb,0xbb,0x3b,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0x33,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_006e[] = { +static const uint8_t vcb_standard_006e[] = { 0xb1,0x01,0x20,0x98,0x21,0xaa,0xaa,0x2a,0x33,0x33,0x33,0x33,0xb3,0xb3,0x33,0x9b,0x09,0x00,0xa0,0x07,0x0e,0x00,0x00,0x01,0x46,0x1a,0x73,0xeb,0x29,0x98,0x22,0x92, 0x67,0x1a,0x5a,0x2a,0xb1,0xe3,0x0a,0x1c,0x32,0xd0,0x00, }; -static const uint8_t wvc_standard_006f[] = { +static const uint8_t vcb_standard_006f[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0x6b,0xbd,0x87,0xd6,0x5a,0x8b,0x11,0xad,0xb5,0x16,0x23,0x5a,0x6b,0x2f,0x46,0xb4,0xd6,0x5a,0x8c,0x88,0xf1,0xbd,0x39,0xf1,0xe2,0x7b, 0x73,0x62,0xce,0x18,0xe7,0x04,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0070[] = { +static const uint8_t vcb_standard_0070[] = { 0x14,0x27,0xe8,0x20,0x49,0x9a,0x66,0x69,0x9a,0x28,0x5a,0x9a,0x26,0x8a,0x9e,0x29,0xaa,0xaa,0x27,0x8a,0xaa,0x6a,0x79,0x9e,0x69,0x7a,0xa6,0xa9,0xaa,0x9e,0x69,0xaa, 0xaa,0xa9,0xaa,0xae,0x6b,0xaa,0xaa,0x2b,0x5b,0x9e,0x67,0x9a,0x9e,0x69,0xaa,0xaa,0x67,0x9a,0xaa,0x2a,0x9a,0xaa,0xeb,0x9a,0xaa,0xea,0xba,0x9e,0xaa,0xda,0xb2,0xe9, 0xaa,0xba,0x6c,0xba,0xaa,0x6d,0xbb,0xb2,0xeb,0xdb,0xae,0xed,0xfa,0xba,0xa7,0xaa,0xb2,0x6d,0xaa,0xae,0xac,0x9b,0xaa,0x2b,0xeb,0xaa,0x2b,0xdb,0xba,0xeb,0xda,0xb6, @@ -680,42 +674,42 @@ static const uint8_t wvc_standard_0070[] = { 0xb2,0xac,0x0b,0xaf,0x2d,0x2b,0xbf,0xac,0xeb,0xc2,0xb2,0x0b,0xbf,0xb0,0xac,0xb6,0xad,0xfc,0xae,0xae,0x2b,0xc3,0x6c,0xeb,0xc2,0x72,0xfb,0xc2,0xb2,0xfc,0xba,0x2f, 0x2c,0xab,0x6e,0xfb,0xbe,0xab,0xeb,0x4a,0xd7,0xd6,0x95,0xe5,0xf6,0x7d,0xc6,0xae,0xdc,0xc6,0x2f,0x00,0x00,0x0c,0x38,0x00,0x00,0x04,0x98,0x50,0x06,0x02, }; -static const uint8_t wvc_standard_0071[] = { +static const uint8_t vcb_standard_0071[] = { 0x12,0x05,0xe0,0x30,0x4a,0x6b,0x80,0xb5,0x00,0x6b,0x01,0x5a,0x03,0xb4,0x06,0x88,0x0f,0xf0,0x1e,0x60,0x4e,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0, 0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0072[] = { +static const uint8_t vcb_standard_0072[] = { 0x02,0x04,0xa8,0xd6,0x9a,0x63,0x6e,0xbd,0x74,0x0c,0x42,0x67,0xbd,0x44,0x46,0x21,0x05,0xbd,0x76,0xca,0x31,0x27,0xbd,0x66,0x46,0x11,0xe4,0x3c,0x87,0x88,0x19,0xc3, 0x3c,0x96,0x8a,0x19,0x62,0x30,0xb6,0x0c,0x22,0xa4,0x2c,0x00, }; -static const uint8_t wvc_standard_0073[] = { +static const uint8_t vcb_standard_0073[] = { 0x01,0x08,0x68,0x00,0x00,0x00,0x80,0xa3,0x38,0x8a,0xe3,0x48,0x8e,0xe4,0x48,0x92,0x25,0x59,0x92,0x26,0x69,0x96,0x66,0x79,0x9a,0xa7,0x79,0x9a,0xe8,0x89,0xa2,0x28, 0x9a,0xa6,0xa9,0x8a,0xae,0xe8,0x8a,0xba,0x69,0x8b,0xb2,0x29,0x9b,0xae,0xe9,0x9a,0xb2,0xe9,0xaa,0xb2,0x6a,0xbb,0xb2,0x6c,0xdb,0xb2,0xad,0xdb,0xbe,0x2c,0xdb,0xbe, 0xef,0xfb,0xbe,0xef,0xfb,0xbe,0xef,0xfb,0xbe,0xef,0xfb,0xbe,0xef,0xeb,0x3a,0x00, }; -static const uint8_t wvc_standard_0074[] = { +static const uint8_t vcb_standard_0074[] = { 0x14,0x05,0xe0,0x90,0x92,0x94,0xa4,0x94,0x5a,0x13,0x9f,0xf8,0x56,0x6b,0x5e,0xf4,0x22,0x80,0x14,0x9f,0xf7,0xbc,0x97,0x5e,0xf4,0x9e,0xf7,0x00,0xa4,0xf8,0xbc,0xe7, 0xbd,0xf4,0xa2,0xf7,0xbc,0x17,0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0075[] = { +static const uint8_t vcb_standard_0075[] = { 0x12,0x05,0xa8,0x61,0x58,0x6b,0xee,0xc5,0x38,0x02,0x39,0x06,0x2d,0xe7,0xd2,0x20,0xa9,0x1c,0xe5,0xe0,0x22,0x86,0x94,0xa3,0x1a,0x54,0xa4,0x14,0x52,0x10,0x83,0xab, 0x98,0x42,0xca,0x59,0xad,0x99,0x53,0x8a,0x41,0xaa,0xb5,0x83,0x0a,0x29,0x48,0xb1,0x97,0x92,0x29,0xe6,0x24,0x05, }; -static const uint8_t wvc_standard_0076[] = { +static const uint8_t vcb_standard_0076[] = { 0x14,0x05,0xe0,0x90,0x92,0x94,0xa4,0x94,0x5e,0x13,0xa3,0xf8,0x52,0x7b,0x62,0xf4,0x22,0x80,0x14,0xa3,0xf7,0xbc,0x97,0x5e,0xf4,0x9e,0xf7,0x00,0xa4,0x18,0xbd,0xe7, 0xbd,0xf4,0xa2,0xf7,0xbc,0x17,0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0077[] = { +static const uint8_t vcb_standard_0077[] = { 0x92,0x0a,0x20,0x18,0xaa,0x32,0x3b,0xcc,0x54,0xa5,0x2a,0xb3,0x3b,0xc4,0x4c,0x55,0xaa,0x32,0xbb,0x43,0xcc,0x54,0x2d,0xb3,0x3b,0xc4,0x4c,0xd5,0xdd,0x32,0xbb,0x43, 0xcc,0x54,0xdd,0xbd,0x3b,0xc4,0x4c,0xd5,0x5d,0xe6,0xbb,0x43,0xcc,0x54,0xdd,0x65,0x46,0xc4,0x4c,0xd5,0x5d,0x66,0x66,0x44,0xcc,0x54,0xdd,0x65,0xee,0xce,0x4c,0xd5, 0x5d,0xe6,0x66,0xef,0xcc,0x54,0xdd,0x65,0xee,0xee,0x56,0xdd,0x5d,0xe6,0xee,0x6e,0x77,0xd5,0xdd,0x65,0xee,0x6e,0x77,0x0f,0x00,0x08,0x0d,0x0e,0x00,0x60,0x07,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0078[] = { +static const uint8_t vcb_standard_0078[] = { 0x02,0x04,0xa0,0xdd,0xde,0xee,0xee,0xad,0x3a,0x44,0xed,0x9d,0xa8,0x32,0x6d,0x2e,0xb2,0x43,0x6d,0x3e,0xba,0xba,0xed,0x35,0xbb,0xbb,0xec,0x2d,0x99,0x19,0x6b,0xb5, 0xa9,0xaa,0x6b,0x00, }; -static const uint8_t wvc_standard_0079[] = { +static const uint8_t vcb_standard_0079[] = { 0x92,0x1b,0xa0,0x20,0xaa,0x32,0x33,0xbb,0xbb,0xbb,0xbb,0x43,0x44,0xd4,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0xc4,0xcc,0x4c,0xad,0x32,0xbb,0xbb,0x43,0x44,0x44,0x4c, 0xcc,0xcc,0x54,0x33,0xb3,0x3b,0x44,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0x55,0x35,0xbb,0x43,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0x5c,0xdd,0xbb,0x3b,0x44,0x44,0xcc,0xcc,0xcc, 0xcc,0x4c,0x55,0xbd,0xbb,0x43,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0x54,0x5d,0x44,0x44,0xc4,0xc4,0xcc,0xcc,0xcc,0xcc,0x4c,0x55,0x55,0x45,0x44,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -725,7 +719,7 @@ static const uint8_t wvc_standard_0079[] = { 0xdd,0x55,0xd5,0x55,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0x5c,0xdd,0xdd,0x5d,0x5d,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0xdd,0x5d,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_007a[] = { +static const uint8_t vcb_standard_007a[] = { 0x12,0x12,0x20,0x18,0x51,0x55,0x55,0x55,0x55,0x55,0x55,0x1d,0x33,0x55,0x55,0x55,0x55,0x55,0x55,0xd5,0x39,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, @@ -733,15 +727,15 @@ static const uint8_t wvc_standard_007a[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x80,0xd1,0x19,0x0e,0x80,0xd1,0x13,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_007b[] = { +static const uint8_t vcb_standard_007b[] = { 0x02,0x04,0x28,0x72,0x58,0x82,0x4a,0x39,0x13,0x06,0x39,0x06,0x3d,0x36,0x04,0x29,0x47,0xcd,0x34,0x08,0x31,0xe5,0x44,0x67,0x8a,0x39,0xa9,0xcd,0x54,0x4c,0x41,0xe6, 0x40,0x74,0xd2,0x49,0x64,0xa8,0x05,0x65,0x7b,0xc9,0x2c,0x00, }; -static const uint8_t wvc_standard_007c[] = { +static const uint8_t vcb_standard_007c[] = { 0x02,0x04,0x28,0x72,0x58,0x82,0x4a,0x39,0x13,0x06,0x39,0x06,0x3d,0x36,0x04,0x29,0x47,0xcd,0x34,0x08,0x31,0xe5,0x44,0x67,0x8a,0x39,0xa9,0xcd,0x54,0x4c,0x41,0xe6, 0x40,0x74,0xd2,0x49,0x64,0xa8,0x05,0x65,0x7b,0xc9,0x2c,0x00, }; -static const uint8_t wvc_standard_007d[] = { +static const uint8_t vcb_standard_007d[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc4,0x14,0x84,0x48,0x31,0x08,0x21,0x84,0x94,0x3a,0x08,0x29,0x45,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x31,0x27,0x25,0x94,0x92,0x5a,0x28, 0x25,0xb5,0x88,0x31,0x08,0x99,0x63,0x52,0x32,0xe7,0xa4,0x84,0x52,0x5a,0x0a,0xa5,0xb4,0x14,0x4a,0x68,0x2d,0x94,0x12,0x5b,0x28,0xa5,0xb5,0xd6,0x5a,0xad,0xa9,0xb5, 0x58,0x43,0x28,0xad,0x85,0x52,0x62,0x0c,0xa5,0xb4,0x98,0x5a,0xab,0x31,0xb5,0x56,0x6b,0xc4,0x18,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x4a,0x29,0xad,0x85,0x52,0x5a, @@ -756,62 +750,62 @@ static const uint8_t wvc_standard_007d[] = { 0xb5,0xa4,0x54,0x6b,0x8c,0x31,0xe7,0x58,0x63,0xaf,0xa9,0xb5,0x5c,0x5b,0x8c,0x3d,0xa7,0x16,0x6b,0xae,0x39,0x07,0x1f,0x63,0x8e,0x3d,0xb5,0x58,0x73,0x8c,0x31,0xf7, 0x14,0x5b,0xae,0x35,0xe7,0xde,0x6b,0x6e,0x41,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_007e[] = { +static const uint8_t vcb_standard_007e[] = { 0x92,0x07,0xa0,0xa1,0xaa,0x32,0x33,0x33,0xbb,0xaa,0x32,0x33,0x33,0xb3,0xab,0xaa,0x32,0x33,0x33,0xbb,0x2a,0x33,0x33,0x33,0xb3,0xbb,0x33,0x33,0x33,0x33,0xbb,0x3b, 0x33,0x33,0x33,0xb3,0xbb,0x33,0x33,0x33,0x33,0xbb,0x3b,0x33,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0x33,0xbb,0xbb,0x3b,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0x33,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_007f[] = { +static const uint8_t vcb_standard_007f[] = { 0x92,0x01,0x98,0x48,0x64,0x5b,0xb2,0x2d,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0080[] = { +static const uint8_t vcb_standard_0080[] = { 0x92,0x01,0x98,0x48,0x64,0x5b,0xb2,0x2d,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0081[] = { +static const uint8_t vcb_standard_0081[] = { 0x92,0x01,0x98,0x48,0x64,0x5b,0xb2,0x2d,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0082[] = { +static const uint8_t vcb_standard_0082[] = { 0x92,0x01,0x98,0x48,0x64,0x5b,0xb2,0x2d,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0083[] = { +static const uint8_t vcb_standard_0083[] = { 0x92,0x01,0x98,0x48,0x64,0x5b,0xb2,0x2d,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0084[] = { +static const uint8_t vcb_standard_0084[] = { 0x92,0x01,0x98,0x48,0x64,0x5b,0xb2,0x2d,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0085[] = { +static const uint8_t vcb_standard_0085[] = { 0x92,0x0a,0x20,0x99,0xa9,0x32,0xbb,0x43,0xc4,0x1b,0xa2,0xaa,0x3b,0x3c,0x44,0xc4,0x21,0xb2,0xba,0xbb,0xc3,0xc3,0x2b,0x33,0xbb,0x3b,0x44,0x44,0xc4,0x32,0x33,0xbb, 0x43,0x44,0x44,0xb4,0xbb,0x3b,0x3c,0xc4,0x44,0x4c,0xbb,0xbb,0x43,0x44,0x44,0xcc,0x3c,0x44,0x44,0x44,0xc4,0x4c,0xcc,0x43,0x44,0x44,0x44,0x44,0xcc,0x44,0xc4,0x44, 0x4c,0xc4,0xcc,0x4c,0x44,0x44,0x44,0x4c,0xcc,0xcc,0x44,0xc4,0x44,0xcc,0xc4,0xcc,0x4c,0x44,0x4c,0x44,0xcc,0xcc,0xcc,0x0c,0x00,0x80,0x05,0x0e,0x00,0x00,0x01,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0086[] = { +static const uint8_t vcb_standard_0086[] = { 0x92,0x07,0xa0,0x10,0x21,0x32,0x33,0x33,0xcb,0x44,0x33,0xb3,0xbb,0x3b,0x44,0x34,0x33,0xbb,0xbb,0xcb,0x4c,0x33,0xb3,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0xcc, 0xbb,0xbb,0xbb,0xbb,0xcc,0xbc,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0xcc,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0087[] = { +static const uint8_t vcb_standard_0087[] = { 0x01,0x04,0x20,0x23,0x42,0xac,0xc2,0x3d,0x3b,0x3d,0xf4,0x12,0x31,0x1b,0x29,0x2c,0xaa,0xab,0xf3,0x23,0xc2,0xa3,0xa9,0x34,0x22,0x3d,0xf3,0x76,0x66,0xe6,0x53,0x4f, 0x2b,0xc5,0x74,0x00, }; -static const uint8_t wvc_standard_0088[] = { +static const uint8_t vcb_standard_0088[] = { 0x12,0x05,0x28,0x74,0x96,0x5a,0xac,0xb5,0x57,0x00,0x29,0x05,0xad,0x06,0xd1,0x20,0xc8,0x20,0xe6,0xde,0x21,0xa7,0x9c,0xc4,0x20,0x44,0xc5,0x98,0x83,0x98,0x83,0xea, 0x20,0x84,0xd2,0x7a,0x8f,0x99,0x63,0x0c,0x5a,0xcd,0xb1,0x62,0x08,0x31,0x89,0xb1,0x66,0x0e,0x29,0x06,0xa5,0x05, }; -static const uint8_t wvc_standard_0089[] = { +static const uint8_t vcb_standard_0089[] = { 0x92,0x01,0x18,0x8c,0xed,0xda,0x76,0x6d,0xdb,0xd6,0x6e,0x6b,0x07,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_008a[] = { +static const uint8_t vcb_standard_008a[] = { 0x14,0x05,0x20,0x98,0xa9,0x2a,0xab,0x1a,0xb3,0x44,0x4c,0x44,0x32,0x4b,0xc4,0x44,0xac,0xcc,0xcc,0xd4,0xcc,0x42,0x4c,0x4c,0xcd,0x2c,0xc4,0x44,0x54,0x4c,0xcb,0x54, 0x55,0xcd,0x2c,0xc4,0xcc,0x54,0xc4,0x42,0xcc,0xcc,0x44,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_008b[] = { +static const uint8_t vcb_standard_008b[] = { 0x92,0x0a,0xa0,0x98,0xa9,0x32,0xbb,0x43,0xcc,0x9c,0x22,0xb3,0xbb,0x3b,0xc4,0xcc,0xa1,0x32,0xbb,0xbb,0x43,0xcc,0x2c,0xb3,0xbb,0x3b,0xc4,0xcc,0xcc,0x32,0xbb,0xbb, 0x43,0xcc,0xcc,0xb4,0xbb,0x3b,0x44,0xc4,0x4c,0x55,0xbb,0xbb,0x43,0x44,0xcc,0x54,0xbd,0x3b,0x44,0x44,0xcc,0x4c,0xd5,0xbb,0x43,0x44,0x4c,0xcc,0x54,0x45,0xc4,0xcc, 0xcc,0x54,0x55,0x5d,0x44,0xcc,0xcc,0xcc,0xd4,0x5c,0xcd,0xcc,0x4c,0x55,0x55,0xdd,0xdd,0xcc,0xcc,0x54,0x55,0x5d,0xdd,0x0d,0x00,0xe0,0x09,0x0e,0x00,0x40,0x05,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_008c[] = { +static const uint8_t vcb_standard_008c[] = { 0x18,0x9a,0xe1,0x90,0x12,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5e,0x03,0x5a,0x8c,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x7b,0x40,0x8b,0x0f,0x68,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -841,30 +835,30 @@ static const uint8_t wvc_standard_008c[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_008d[] = { +static const uint8_t vcb_standard_008d[] = { 0x42,0x06,0xa8,0x84,0x98,0x6a,0x69,0x31,0xd6,0x4c,0x58,0x24,0x11,0x93,0x56,0x5b,0x05,0x1d,0x63,0x90,0x62,0x2f,0x8d,0x45,0x52,0x39,0xab,0xbd,0x55,0x8e,0x29,0xc4, 0xa8,0xf5,0xd2,0x38,0xa4,0x8c,0x82,0xd8,0x4b,0x25,0x19,0x53,0x0c,0x62,0x6e,0x21,0x85,0x4e,0x31,0x69,0xb5,0xa6,0x12,0x2a,0xa4,0x20,0xc5,0x1c,0x53,0xa9,0x90,0x72, 0x90,0x02, }; -static const uint8_t wvc_standard_008e[] = { +static const uint8_t vcb_standard_008e[] = { 0x01,0x02,0xa0,0x20,0x1a,0x1a,0x1a,0x9a,0xa2,0xa2,0xa2,0x22,0x23,0xab,0xab,0xab,0x2b,0x2c,0x2c,0x00, }; -static const uint8_t wvc_standard_008f[] = { +static const uint8_t vcb_standard_008f[] = { 0x01,0x08,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0xba,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77, 0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x01, }; -static const uint8_t wvc_standard_0090[] = { +static const uint8_t vcb_standard_0090[] = { 0x12,0x05,0x20,0x99,0x21,0x32,0x43,0x1c,0x9a,0x2a,0x33,0xc4,0x19,0xaa,0x32,0x43,0xa4,0x2a,0xb3,0xbb,0xcc,0xaa,0x32,0xbb,0xcb,0x34,0xb3,0x3b,0x44,0x4d,0x33,0xbb, 0x43,0x4c,0x45,0xc4,0x4c,0xcd,0x55,0x44,0xc4,0x54,0xd5,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0091[] = { +static const uint8_t vcb_standard_0091[] = { 0x12,0x0e,0x20,0x98,0x31,0x43,0x34,0xbb,0xcb,0x54,0x1d,0x33,0xc4,0xcc,0xbb,0xcc,0xd4,0xd4,0x31,0x43,0xcc,0xbc,0x4b,0x54,0x55,0x35,0xc4,0x5d,0xdd,0x4c,0xcd,0x55, 0x55,0x43,0x54,0xe5,0x45,0xd4,0x54,0x5d,0xc5,0xcc,0xdd,0xee,0x4c,0xdd,0x55,0x55,0x4c,0x55,0x6e,0x4e,0x55,0x5d,0xdd,0xb5,0xbb,0x44,0x4d,0xdd,0xd5,0xed,0x65,0xbb, 0xc3,0x4c,0xdd,0x5d,0xdd,0x5d,0x46,0x44,0x55,0xde,0xdd,0xd5,0x5d,0xde,0xcb,0xd4,0xd4,0xdd,0xdd,0xdd,0xde,0x45,0x55,0xdd,0xdd,0x65,0xde,0x65,0xde,0x54,0x5d,0xdd, 0x5d,0x5d,0xde,0x5d,0x56,0xdd,0x5d,0xde,0xd5,0x65,0xde,0xe5,0xd5,0x5d,0xe6,0xe5,0x65,0x66,0x6e,0x0e,0x00,0xdc,0x0d,0x0e,0x00,0x10,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0092[] = { +static const uint8_t vcb_standard_0092[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc5,0x14,0x84,0x4a,0x31,0x08,0x1d,0x84,0x94,0x3a,0x08,0x25,0x55,0x8c,0x41,0xc8,0x9c,0x93,0x52,0x31,0x07,0x25,0x94,0xd2,0x5a,0x08, 0x25,0xb5,0x8a,0x31,0x08,0x95,0x63,0x12,0x32,0xe7,0xa4,0x84,0x12,0x5a,0x0a,0xa5,0xb4,0xd4,0x41,0x48,0x29,0x94,0xd2,0x5a,0x28,0xa5,0xb5,0xd4,0x5a,0xac,0x29,0xb5, 0x18,0x3b,0x08,0x29,0x85,0x52,0x5a,0x0a,0xa5,0xb4,0x96,0x5a,0x8a,0x31,0xb5,0x16,0x63,0xc5,0x18,0x84,0xcc,0x31,0x29,0x19,0x73,0x52,0x42,0x29,0x2d,0x85,0x52,0x5a, @@ -879,12 +873,12 @@ static const uint8_t wvc_standard_0092[] = { 0xb1,0xa4,0x14,0x63,0x8b,0xad,0xd6,0x16,0x63,0xad,0xa9,0xb5,0x18,0x5b,0x6c,0xb5,0xa6,0xd4,0x62,0x8d,0xb9,0xf6,0x1c,0x5b,0x8d,0x3d,0xb5,0x16,0x63,0x8b,0xb1,0xd6, 0xd6,0x5a,0xad,0xb1,0xd6,0x9c,0x63,0x8d,0xbd,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0093[] = { +static const uint8_t vcb_standard_0093[] = { 0x92,0x07,0x20,0x21,0xaa,0x32,0x33,0x33,0xa3,0x22,0x2b,0xb3,0xbb,0x3b,0x22,0xaa,0x32,0xbb,0xbb,0x2b,0x2b,0xb3,0xbb,0xbb,0xbb,0x2a,0x33,0xbb,0xbb,0xbb,0x33,0xb3, 0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0xb3,0xbb,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0094[] = { +static const uint8_t vcb_standard_0094[] = { 0x12,0x12,0xa0,0x20,0x32,0xbb,0xbb,0xbb,0x43,0x44,0x44,0xa4,0x2a,0xb3,0x3b,0x3c,0x44,0x44,0x44,0x44,0xaa,0x32,0xbb,0xc3,0x43,0x44,0x44,0x44,0x34,0xb3,0x3b,0x3c, 0x44,0x44,0x44,0x44,0x44,0x33,0xbb,0xc3,0x43,0x44,0x44,0x44,0x44,0xbc,0xbb,0x43,0x44,0x44,0x44,0x4c,0xcc,0xcc,0xbb,0xc3,0x43,0x44,0x44,0xc4,0xc4,0xc4,0x3c,0x44, 0x44,0x44,0x44,0x4c,0xcc,0xcc,0xcc,0x43,0x44,0x44,0x4c,0x4c,0xcc,0xcc,0xcc,0x44,0x44,0xc4,0xc4,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x44,0x44,0x4c,0x4c,0xcc,0xcc,0xcc, @@ -892,30 +886,30 @@ static const uint8_t wvc_standard_0094[] = { 0xcc,0xcc,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0095[] = { +static const uint8_t vcb_standard_0095[] = { 0x92,0x01,0x18,0x68,0xa4,0xdb,0xd2,0x76,0x6b,0xbb,0xb5,0xdd,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0096[] = { +static const uint8_t vcb_standard_0096[] = { 0x92,0x0a,0x20,0x90,0xd8,0x64,0x66,0x66,0x66,0x1e,0x44,0x66,0x66,0x66,0x66,0x66,0x4a,0x64,0x66,0x66,0x66,0x66,0x5e,0x66,0x66,0x66,0x66,0x66,0x66,0x65,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xde,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x0d,0x80,0x7e,0x15,0x0e,0x00,0xfe,0x0f,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0097[] = { +static const uint8_t vcb_standard_0097[] = { 0x21,0x01,0x58,0x97,0x97,0x97,0x97,0x95,0x95,0x95,0x97,0x07, }; -static const uint8_t wvc_standard_0098[] = { +static const uint8_t vcb_standard_0098[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0x23,0xbc,0x43,0xb4,0x4c,0x3a,0x34,0xcc,0x43,0x1c,0x44,0xd4,0xbc,0x4c,0xd3,0xcc,0xdc,0xdc,0xb5,0xcc,0x5c,0xcd,0x5d,0x42,0xbc, 0x4c,0x54,0x35,0xcd,0xdc,0x4d,0x5d,0x4b,0xcd,0xdd,0xdc,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0099[] = { +static const uint8_t vcb_standard_0099[] = { 0x12,0x0e,0x20,0x10,0x61,0x66,0x66,0x66,0x66,0x66,0x1e,0x33,0x66,0x66,0x66,0x66,0x66,0x66,0xb9,0x62,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xde,0xdd,0xdd,0xdd,0x0d,0x60,0x38,0x17,0x0e,0x00,0x65,0x11,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_009a[] = { +static const uint8_t vcb_standard_009a[] = { 0x18,0x9a,0xe1,0x71,0x0e,0x90,0xda,0x02,0xd2,0x6a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5a,0x03,0xda,0x7b,0x40,0x7b,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0x40,0x7b,0x0f,0x68,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -945,7 +939,7 @@ static const uint8_t wvc_standard_009a[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_009b[] = { +static const uint8_t vcb_standard_009b[] = { 0x18,0x9a,0xe1,0x71,0x0e,0x90,0xd6,0x02,0xd2,0x6a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5a,0x03,0xda,0x7b,0xc0,0x7a,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0xc0,0x7a,0x0d,0x68,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -975,7 +969,7 @@ static const uint8_t wvc_standard_009b[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_009c[] = { +static const uint8_t vcb_standard_009c[] = { 0x18,0x9a,0xe1,0x71,0x0e,0x90,0xd6,0x02,0xd2,0x6a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5a,0x03,0xda,0x7b,0xc0,0x7a,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0xc0,0x7a,0x0d,0x68,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -1005,62 +999,62 @@ static const uint8_t wvc_standard_009c[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_009d[] = { +static const uint8_t vcb_standard_009d[] = { 0x12,0x05,0xa8,0x84,0x96,0x5b,0xec,0xb5,0x67,0x00,0x69,0x26,0xb1,0xf7,0xd0,0x28,0xef,0xa8,0xf7,0x5e,0x1b,0xe6,0xa1,0xd5,0xde,0x4b,0xc4,0x34,0xb4,0x9a,0x73,0xec, 0xa0,0x96,0x16,0x6b,0x8e,0x21,0x64,0xca,0x51,0x6b,0xb5,0x73,0xc8,0x20,0x47,0xad,0x97,0x52,0x21,0xe5,0xa0,0x04, }; -static const uint8_t wvc_standard_009e[] = { +static const uint8_t vcb_standard_009e[] = { 0x91,0x01,0x58,0x00,0xae,0xae,0xae,0xb2,0xf2,0xf2,0xf6,0x16, }; -static const uint8_t wvc_standard_009f[] = { +static const uint8_t vcb_standard_009f[] = { 0x92,0x07,0x20,0x21,0xaa,0x32,0x33,0x33,0xa3,0x22,0x33,0xb3,0xb3,0x3b,0xa2,0x2a,0x33,0x33,0xbb,0x2b,0x33,0xb3,0xb3,0xbb,0xbb,0x2a,0x33,0xb3,0xbb,0xbb,0x33,0xb3, 0xbb,0xbb,0xbb,0x3b,0x33,0xb3,0xbb,0xbb,0xbb,0x33,0xb3,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0xb3,0xbb,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00a0[] = { +static const uint8_t vcb_standard_00a0[] = { 0x41,0x00,0x0c,0x04, }; -static const uint8_t wvc_standard_00a1[] = { +static const uint8_t vcb_standard_00a1[] = { 0x41,0x00,0x0c,0x04, }; -static const uint8_t wvc_standard_00a2[] = { +static const uint8_t vcb_standard_00a2[] = { 0x12,0x0e,0x20,0x90,0xc0,0x73,0x77,0x77,0x77,0x77,0x9f,0x43,0xee,0xee,0xee,0xee,0xee,0x6e,0x3a,0xec,0xee,0xee,0xee,0xee,0xee,0xd6,0xee,0xee,0xee,0xee,0xee,0xee, 0x6e,0xed,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee, 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee, 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0x0e,0x40,0xbe,0x15,0x0e,0x00,0xfe,0x0f,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_00a3[] = { +static const uint8_t vcb_standard_00a3[] = { 0x11,0x03,0x98,0x4c,0x23,0xd9,0xb6,0x6d,0xdb,0xda,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0x07,0x00,0xc0,0x04,0x07,0x00,0x80,0x00,0x2b,0xd8,0x95, 0x59,0x5a,0xb5,0x51,0xdc,0xd4,0x49,0x5e,0xf4,0x41,0xe0,0x13,0x3a,0x62,0x33,0x32,0xe4,0x52,0x2a,0x66,0x72,0x22,0xe8,0x91,0x1a,0x6a,0xb1,0x12,0xec,0xd0,0x0a,0x6e, 0xf0,0x02,0x30, }; -static const uint8_t wvc_standard_00a4[] = { +static const uint8_t vcb_standard_00a4[] = { 0x11,0x03,0x98,0x4c,0x23,0xd9,0xb6,0x6d,0xdb,0xda,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0x07,0x00,0xc0,0x04,0x07,0x00,0x80,0x00,0x2b,0xd8,0x95, 0x59,0x5a,0xb5,0x51,0xdc,0xd4,0x49,0x5e,0xf4,0x41,0xe0,0x13,0x3a,0x62,0x33,0x32,0xe4,0x52,0x2a,0x66,0x72,0x22,0xe8,0x91,0x1a,0x6a,0xb1,0x12,0xec,0xd0,0x0a,0x6e, 0xf0,0x02,0x30, }; -static const uint8_t wvc_standard_00a5[] = { +static const uint8_t vcb_standard_00a5[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x96,0xe5,0x79,0xa2,0x68,0xaa,0xb2,0xed,0x58,0x92,0xe7,0x89,0xa2,0x69,0xaa,0xaa,0x6d,0x3b,0x96,0xe5,0x79,0xa2,0x68,0x9a,0xaa,0x6a,0xdb, 0x96,0xe7,0x89,0xa2,0x69,0xaa,0xaa,0xeb,0xea,0xba,0xe5,0x79,0xa2,0x68,0xaa,0xaa,0xea,0xba,0xba,0xee,0x89,0xa2,0x6a,0xaa,0xaa,0xeb,0xca,0xb2,0xee,0x7b,0xa2,0x68, 0xaa,0xaa,0xea,0xba,0xb2,0xec,0xfb,0xa6,0xa9,0xaa,0xaa,0xeb,0xca,0xb2,0x6c,0x0b,0xbf,0x68,0xaa,0xae,0xea,0xba,0xb2,0x2c,0xcb,0xbe,0xb1,0xba,0xaa,0xeb,0xca,0xb2, 0x6c,0xeb,0xb6,0x30,0xac,0xaa,0xeb,0xba,0xb2,0x2c,0xdb,0xb6,0x6e,0x0c,0xb7,0xae,0xeb,0xba,0xef,0x0b,0xc3,0x72,0x74,0x6e,0xdd,0xd6,0x75,0xdf,0xf7,0x85,0xe3,0x77, 0x8e,0x01,0x00,0x3c,0xc1,0x01,0x00,0xa8,0xc0,0x86,0xd5,0x11,0x4e,0x8a,0xc6,0x02,0x03, }; -static const uint8_t wvc_standard_00a6[] = { +static const uint8_t vcb_standard_00a6[] = { 0x91,0x01,0x58,0x00,0x75,0x75,0x95,0xb5,0xb5,0xb7,0xd7,0xd9,0x00, }; -static const uint8_t wvc_standard_00a7[] = { +static const uint8_t vcb_standard_00a7[] = { 0x12,0x05,0xa0,0x10,0xa9,0xb2,0xcb,0x1c,0xa2,0xb3,0x3b,0x55,0x21,0x32,0x3b,0x54,0xad,0x33,0xc4,0xcc,0xdd,0xb2,0xc3,0xcc,0xdc,0xbd,0xbb,0xcc,0x55,0xe6,0x3b,0xcc, 0x54,0x65,0x4e,0xd5,0x5d,0xe6,0xee,0x54,0xdd,0x65,0xee,0x0e,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_00a8[] = { +static const uint8_t vcb_standard_00a8[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xbd,0x17,0xe3,0x9c,0x2b,0xa5,0xd6,0xde,0x7b,0x2f,0xce,0x5a,0x5b,0x4a,0xad,0xbd,0x17,0xe3,0x9c,0xb5,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0x63,0x9c,0x73,0xce,0x5a,0xe5,0x1c,0xe3,0x8c,0x73,0xd6,0x5a,0x2f,0xe6,0x9c,0x73,0xce,0x5a,0xef, 0xc5,0x9c,0x73,0xce,0x59,0xeb,0xbd,0xd8,0xbb,0xd6,0x5a,0xef,0xbd,0x17,0x7b,0xd7,0x5a,0xeb,0xbd,0x37,0x83,0x7b,0xef,0xbd,0x37,0x67,0x90,0xef,0xbd,0xf7,0xe6,0x1c, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00a9[] = { +static const uint8_t vcb_standard_00a9[] = { 0x14,0x27,0xe0,0x92,0xd2,0x7b,0x52,0x7a,0x4f,0x4a,0xef,0x69,0x2d,0x46,0xc4,0x98,0x5a,0x8b,0xd1,0x7b,0x73,0x7a,0x6d,0x46,0x73,0xd6,0x8a,0x5a,0x53,0x6b,0x31,0x7a, 0x6f,0x4e,0xed,0xc5,0x69,0xce,0x5a,0x51,0xeb,0x8b,0xb1,0x4e,0xb5,0xde,0xab,0xce,0x7b,0xe5,0xbd,0x37,0x76,0x7e,0x31,0xce,0xaa,0xd6,0x7b,0xcd,0x7a,0xaf,0x9c,0xf7, 0x46,0xde,0x00,0x00,0x00,0xd2,0x6b,0x75,0x6a,0x6d,0x4e,0xad,0xcd,0x29,0xc6,0x3a,0x51,0x6b,0x6a,0x6f,0x56,0xad,0xcd,0xa9,0xb5,0x39,0xc5,0x38,0x2b,0x6a,0x7d,0x33, @@ -1071,19 +1065,19 @@ static const uint8_t wvc_standard_00a9[] = { 0x39,0x23,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc4,0x5a,0xf7,0x36,0x6b,0xce,0xea,0xcc,0xd9,0xbd,0x39,0x23,0xdf,0x58,0xeb,0xde,0xea,0xcc,0xd9,0xac, 0x39,0xbb,0x77,0x67,0xe4,0x1c,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_00aa[] = { +static const uint8_t vcb_standard_00aa[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xbd,0x17,0xe3,0x9c,0x2b,0xa5,0xd6,0xde,0x7b,0x71,0xce,0x39,0x5b,0x4a,0xad,0xbd,0x17,0xe3,0x9c,0x73,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe3,0x9c,0x73,0xce,0x5a,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x5a,0x2b,0xe6,0x9c,0x73,0xce,0x5a,0x6b, 0xc5,0x9c,0x73,0xce,0x59,0xeb,0xbd,0xd8,0xbb,0xd6,0x5a,0xef,0xbd,0x17,0x7b,0xd7,0x5a,0xeb,0xbd,0xf7,0x82,0x7b,0xef,0xbd,0x37,0x67,0x70,0xef,0xbd,0xf7,0xe6,0x1c, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00ab[] = { +static const uint8_t vcb_standard_00ab[] = { 0x92,0x0a,0xa8,0x30,0x46,0x29,0xc6,0x9c,0x93,0x92,0x52,0x65,0x8c,0x52,0xce,0x41,0x28,0xa5,0xb5,0xca,0x20,0xa5,0x9c,0x83,0x50,0x4a,0x6b,0xcd,0x52,0x4a,0x39,0x07, 0x25,0xa5,0xd6,0x9a,0xa5,0x94,0x72,0x4e,0x4a,0x4a,0xad,0x35,0x53,0x32,0x06,0xa1,0x94,0x94,0x5a,0x6b,0x2a,0x65,0x0c,0x42,0x29,0x29,0xb5,0xd6,0x9c,0x13,0x21,0x84, 0x94,0x5a,0x8b,0xb1,0x39,0x27,0x42,0x08,0x29,0xb5,0x16,0x63,0x73,0x4e,0xc6,0x52,0x52,0x6a,0x31,0xc6,0xe6,0x9c,0x8c,0xa5,0xa4,0xd4,0x62,0x8c,0xcd,0x39,0xa7,0x5c, 0x6b,0x2d,0xc6,0x9a,0x93,0x52,0x4a,0xb9,0xd6,0x5a,0x8c,0xb5,0x16,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00ac[] = { +static const uint8_t vcb_standard_00ac[] = { 0x14,0x27,0x20,0x20,0xca,0x2c,0xbc,0xcc,0x4a,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xbc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -1096,17 +1090,17 @@ static const uint8_t wvc_standard_00ac[] = { 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0x00,0xba,0x11,0x0e, 0x00,0xba,0x0f,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_00ad[] = { +static const uint8_t vcb_standard_00ad[] = { 0x14,0x27,0xe0,0x91,0x12,0x52,0x42,0x4a,0x68,0x0f,0x90,0xd6,0x42,0x6b,0x68,0x0d,0x73,0x02,0xd2,0x5a,0x68,0x0d,0xad,0x61,0x4e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x52,0x6b,0x68,0x0d,0xad,0x21,0x46,0x40,0x6a,0x0d,0xad,0xa1,0x35,0xc4,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x6a,0x0d,0xad,0xa1, 0x35,0xc4,0x08,0x48,0xad,0xa1,0x35,0xb4,0x86,0x18,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x73,0x22,0x46,0xc4,0x88,0x39,0x01,0x6f,0x4e,0xc4,0x88, 0x18,0x31,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x06,0x1c,0x00,0x00, 0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_00ae[] = { +static const uint8_t vcb_standard_00ae[] = { 0x01,0x02,0xa0,0x20,0x1a,0x1a,0x1a,0x22,0x22,0xa2,0xa2,0xa2,0x22,0x2b,0x2b,0xab,0x2b,0x34,0x34,0x00, }; -static const uint8_t wvc_standard_00af[] = { +static const uint8_t vcb_standard_00af[] = { 0x92,0x1b,0xa0,0xa9,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0xac,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4,0xaa,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44, 0x44,0x44,0x34,0xb3,0xbb,0x3b,0x3c,0x44,0x44,0x44,0x44,0x44,0x44,0x33,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xbc,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x4c, 0xcc,0xcc,0xbb,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0xbc,0x3b,0x44,0x44,0x44,0x44,0xc4,0xc4,0xc4,0xcc,0xcc,0xbb,0x43,0x44,0x44,0x44,0x44,0xcc,0xc4,0xcc, @@ -1116,40 +1110,40 @@ static const uint8_t wvc_standard_00af[] = { 0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_00b0[] = { +static const uint8_t vcb_standard_00b0[] = { 0x12,0x05,0xe0,0x50,0x4a,0x4a,0x6b,0xbd,0x87,0xd6,0x5a,0x8b,0x11,0xad,0xb5,0x16,0x23,0xde,0x7b,0x2f,0x46,0xbc,0xf7,0xde,0x9c,0x88,0xf1,0xbd,0x39,0x11,0xe3,0x7b, 0x73,0x62,0xce,0x18,0xe7,0x04,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_00b1[] = { +static const uint8_t vcb_standard_00b1[] = { 0x14,0x05,0x20,0x98,0x21,0xb3,0x32,0x9b,0xb2,0xcc,0xcc,0xc4,0xa9,0xca,0xcc,0xc4,0xa4,0x4c,0xd4,0x4d,0x5d,0xcb,0xd4,0xdd,0xdd,0xb5,0x4c,0xdd,0xdd,0xdd,0xca,0xcc, 0x5d,0xdd,0xb5,0xcc,0xdd,0x5d,0x5d,0xcb,0xd4,0xdd,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_00b2[] = { +static const uint8_t vcb_standard_00b2[] = { 0x42,0x06,0xa8,0xa3,0xd6,0x6a,0xee,0xbd,0xf7,0x90,0x31,0x07,0x29,0xd6,0xde,0x63,0xa6,0x14,0x83,0x16,0x73,0xcf,0x99,0x42,0x46,0x49,0xaa,0xbd,0x75,0xcc,0x08,0xc3, 0xa4,0xf6,0x14,0x32,0x44,0x8c,0x82,0xda,0x53,0x09,0x19,0x42,0x0a,0x7a,0x2f,0x25,0x74,0x4a,0x31,0xe9,0x3d,0xa5,0x54,0x4a,0x49,0xb5,0xf7,0x5e,0x6b,0xac,0xbd,0xf7, 0xde,0x03, }; -static const uint8_t wvc_standard_00b3[] = { +static const uint8_t vcb_standard_00b3[] = { 0x01,0x04,0x68,0x00,0x00,0x00,0xc3,0x51,0x24,0x45,0x52,0x24,0xc7,0x92,0x2c,0x49,0xb3,0x2c,0x4d,0x13,0x45,0x55,0xf5,0x55,0xdb,0x54,0x55,0xd9,0xd7,0x75,0x5d,0xd7, 0x75,0x5d,0xd7,0x01, }; -static const uint8_t wvc_standard_00b4[] = { +static const uint8_t vcb_standard_00b4[] = { 0x12,0x05,0xe0,0x30,0x4a,0x6b,0x80,0xb5,0x00,0x6b,0x01,0x5a,0x03,0xb4,0x06,0x78,0x0f,0xf0,0x22,0x60,0x4e,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0, 0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_00b5[] = { +static const uint8_t vcb_standard_00b5[] = { 0x14,0x05,0x20,0x98,0x99,0x33,0x32,0xa3,0xbb,0xcb,0x34,0x4c,0xba,0xb3,0xc4,0xcb,0xa4,0xbb,0xcb,0xbc,0xcc,0xcb,0xcc,0xe5,0x64,0xb6,0xcc,0x64,0x4d,0x66,0xba,0x3b, 0xcd,0xcb,0xb4,0xcc,0x64,0x4e,0xe5,0x4b,0x4d,0xe6,0xe4,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_00b6[] = { +static const uint8_t vcb_standard_00b6[] = { 0x12,0x05,0xe0,0x50,0xca,0x4a,0x6b,0xbd,0x87,0xd6,0x5a,0x8b,0x11,0xad,0xb5,0x16,0x23,0x5a,0x7b,0x6f,0x4e,0xb4,0xf6,0xde,0x9c,0x88,0xf1,0xbd,0x39,0xf1,0xde,0x7b, 0x73,0x62,0xce,0x18,0x6b,0x05,0x31,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_00b7[] = { +static const uint8_t vcb_standard_00b7[] = { 0x11,0x03,0x0c,0x01,0x20,0x14,0x93,0x0d,0x00,0x80,0x09,0x0e,0x00,0x00,0x01,0x56,0xb0,0x2b,0xb3,0xb4,0x6a,0xa3,0xb8,0xa9,0x93,0xbc,0xe8,0x83,0xc0,0x27,0x74,0xc4, 0x66,0x64,0xc8,0xa5,0x54,0xcc,0xe4,0x44,0xd0,0x23,0x35,0xd4,0x62,0x25,0xd8,0xa1,0x15,0xdc,0xe0,0x05,0x60, }; -static const uint8_t wvc_standard_00b8[] = { +static const uint8_t vcb_standard_00b8[] = { 0x12,0x12,0xe0,0x70,0xca,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0x8a,0xd6,0xde,0x8b,0x31,0xc6,0x39,0xe7,0xac,0x15,0xad,0xbd,0x17,0x63,0x8c,0x73,0xce,0x59,0x2b, 0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x56,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0xeb,0xad,0x78,0x2f,0xc6,0x38,0xe7,0x9c,0xb3,0xd6,0x7b,0xf1,0x5e,0x8c,0x33,0xce, 0x39,0x67,0xad,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xf7,0xde,0x0b,0x62,0x9c,0x73,0xd6,0x5a,0xef,0xcd,0x19,0xc4,0x38, @@ -1157,7 +1151,7 @@ static const uint8_t wvc_standard_00b8[] = { 0x6f,0xce,0x39,0x03,0xee,0xbd,0xf7,0xde,0x9c,0xf7,0x06,0x70,0xef,0xbd,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_00b9[] = { +static const uint8_t vcb_standard_00b9[] = { 0x12,0x12,0xe0,0x51,0xca,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0x29,0xa5,0xd6,0xde,0x8b,0x31,0xc6,0x39,0xe7,0xac,0x55,0x4a,0xad,0xbd,0x17,0x63,0x8c,0x73,0xce, 0x59,0xab,0xb5,0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x56,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0x6b,0xbd,0x78,0xef,0xbd,0x18,0x63,0x9c,0xb3,0xd6,0x7b,0xf1,0xde, 0x7b,0x31,0xc6,0x38,0x67,0xad,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xce,0x5a,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xb5,0xde,0x0b,0xe2,0x8b,0x71,0xce,0x5a,0xef,0xbd, @@ -1165,7 +1159,7 @@ static const uint8_t wvc_standard_00b9[] = { 0xb5,0xd6,0x7a,0xef,0xbd,0x39,0x03,0x6a,0xbd,0xf7,0xde,0x9c,0x73,0x06,0x70,0xef,0xbd,0x39,0xe7,0x1c,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_00ba[] = { +static const uint8_t vcb_standard_00ba[] = { 0x92,0x1b,0xa0,0xa9,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0xac,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0xaa,0x32,0xbb,0xc3,0x43,0x44,0x44,0x44, 0x44,0x44,0x34,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x33,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xbc,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4, 0x4c,0xcc,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x4c,0xcc,0xc4,0x3c,0x3c,0x44,0x44,0x44,0xc4,0xc4,0xcc,0xcc,0xcc,0xcc,0xc3,0x43,0x44,0x44,0x44,0x44,0xc4,0xcc,0x4c, @@ -1175,10 +1169,10 @@ static const uint8_t wvc_standard_00ba[] = { 0x44,0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x4c,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_00bb[] = { +static const uint8_t vcb_standard_00bb[] = { 0x81,0x00,0x18,0x68,0x0e,0x6b,0x00, }; -static const uint8_t wvc_standard_00bc[] = { +static const uint8_t vcb_standard_00bc[] = { 0x12,0x12,0x20,0x99,0xa9,0x32,0xbb,0xbb,0x43,0x44,0x44,0xcc,0xaa,0x2a,0xb3,0xbb,0x43,0x44,0x44,0xc4,0xac,0xaa,0x32,0xbb,0xbb,0x43,0x44,0x44,0x4c,0x33,0xb3,0xbb, 0x3b,0x44,0x44,0x44,0xc4,0xcc,0x34,0xb3,0xbb,0x43,0x44,0x44,0x44,0xcc,0xcc,0xbb,0xbb,0x3b,0x44,0x44,0x44,0xc4,0xcc,0xbc,0xbb,0xbb,0x43,0x44,0x44,0x44,0xd4,0xd4, 0xbb,0xbb,0x3b,0x44,0x44,0x44,0xc4,0xcc,0x54,0xbd,0xbb,0x43,0x44,0x44,0x44,0xd4,0x54,0x55,0x44,0x44,0x44,0x44,0x44,0xc4,0xd4,0x54,0x45,0x44,0x44,0x44,0x44,0xc4, @@ -1186,22 +1180,22 @@ static const uint8_t wvc_standard_00bc[] = { 0x44,0x44,0x54,0x55,0x55,0xd5,0x4c,0x44,0x44,0x44,0xc4,0x54,0x55,0x55,0x55,0x45,0x44,0x44,0x44,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_00bd[] = { +static const uint8_t vcb_standard_00bd[] = { 0x12,0x05,0x20,0x9a,0x4b,0xc4,0xd4,0x9d,0xa0,0xaa,0x4b,0xe5,0x9b,0x3a,0xc3,0xdd,0xce,0xba,0xa1,0x42,0x5d,0xa4,0x22,0x2a,0x54,0x45,0xc3,0x22,0xb2,0xcc,0x44,0x3d, 0x2b,0x43,0xd5,0xe5,0x4c,0x3c,0x54,0x75,0x5f,0x56,0x4c,0x05, }; -static const uint8_t wvc_standard_00be[] = { +static const uint8_t vcb_standard_00be[] = { 0x12,0x05,0x20,0x98,0x31,0x33,0x43,0x9c,0xaa,0xbb,0xbb,0xcc,0xa1,0xba,0xbb,0xcb,0xb4,0x3b,0x44,0x44,0x55,0xbb,0x43,0x44,0x54,0xb5,0xbb,0x44,0xd5,0x55,0xbb,0x43, 0x54,0xdd,0xc5,0x4c,0xd5,0x5d,0x5e,0xcc,0x54,0xdd,0x5d,0x0e,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_00bf[] = { +static const uint8_t vcb_standard_00bf[] = { 0x12,0x05,0xe0,0x51,0xce,0x5a,0xad,0xc5,0xe8,0x9c,0xb5,0x5a,0x8b,0xd3,0x39,0x6b,0xb5,0x36,0xa3,0x94,0x5a,0x7b,0x6f,0x4e,0xb4,0xf5,0xde,0x9c,0x68,0x2d,0xc6,0x5a, 0xd1,0x5a,0x8c,0xb5,0x02,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_00c0[] = { +static const uint8_t vcb_standard_00c0[] = { 0x21,0x01,0x58,0x77,0x77,0x77,0x97,0x95,0x95,0xb7,0xb7,0x07, }; -static const uint8_t wvc_standard_00c1[] = { +static const uint8_t vcb_standard_00c1[] = { 0x14,0x27,0xe8,0xe1,0x38,0x9e,0x27,0x69,0x9a,0x28,0x4a,0x9a,0x26,0x8a,0x9e,0x29,0xba,0xae,0x27,0x9a,0xae,0x2b,0x69,0x9a,0x69,0x6a,0xa2,0xa8,0xaa,0x9a,0x28,0xaa, 0xaa,0xe9,0xaa,0xb6,0x2d,0x9a,0xaa,0x6c,0x4b,0x9a,0x66,0x9a,0x9a,0x28,0xaa,0xaa,0x26,0x8a,0xaa,0x2a,0xaa,0xa6,0x2d,0x9b,0xaa,0x6a,0xdb,0x9e,0x69,0xda,0xb2,0xe9, 0xba,0xba,0x2d,0xaa,0xaa,0x6e,0xcb,0xb6,0x2d,0x0c,0xaf,0x6d,0xfb,0xbe,0x67,0x9a,0xb6,0x2d,0xaa,0xaa,0xad,0x9b,0xae,0x6b,0xeb,0xae,0x2d,0xfb,0xbe,0x6c,0xeb,0xba, @@ -1218,10 +1212,10 @@ static const uint8_t wvc_standard_00c1[] = { 0xb6,0x2c,0x0c,0xbb,0xef,0x1b,0xcf,0x2f,0x0c,0xcf,0xf3,0xda,0xb6,0x31,0xdc,0xbe,0x4f,0x99,0x6d,0xdd,0xe8,0x83,0xef,0x53,0x9e,0x59,0xb7,0xb1,0x7d,0xdf,0x58,0x6e, 0x5f,0xe7,0xfc,0xce,0xd1,0x19,0x9e,0x21,0x01,0x00,0x60,0xc0,0x01,0x00,0x20,0xc0,0x84,0x32,0x10, }; -static const uint8_t wvc_standard_00c2[] = { +static const uint8_t vcb_standard_00c2[] = { 0x91,0x00,0x58,0x53,0x55,0x75,0x75,0x00, }; -static const uint8_t wvc_standard_00c3[] = { +static const uint8_t vcb_standard_00c3[] = { 0x12,0x0e,0x28,0x30,0x86,0x31,0xe7,0x1c,0x83,0x4e,0x42,0x2a,0x8d,0x52,0xce,0x49,0x08,0xa1,0x94,0x54,0x5a,0x69,0x94,0x72,0x4e,0x4a,0x08,0xa5,0xa4,0x94,0x5a,0xe6, 0x9c,0x94,0x94,0x52,0x69,0xa9,0xb5,0x98,0x32,0xe7,0xa4,0xa4,0x54,0x4a,0x4a,0xad,0xc5,0xd8,0x49,0x49,0xa9,0xa5,0x96,0x62,0x8b,0xad,0xc6,0x4e,0x42,0x4a,0xad,0xb5, 0xd6,0x5a,0x8c,0x35,0x76,0x10,0x52,0x69,0x29,0xb6,0x18,0x6b,0xac,0xb1,0x83,0x50,0x52,0x6b,0xad,0xc5,0x58,0x73,0xad,0xa1,0x94,0x96,0x62,0x8b,0xb1,0xc6,0x5a,0x6b, @@ -1229,59 +1223,59 @@ static const uint8_t wvc_standard_00c3[] = { 0xd6,0x1a,0x73,0xcd,0x39,0x07,0xd5,0x5a,0x8c,0xb5,0xd6,0x9c,0x6b,0xce,0x35,0x18,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_00c4[] = { +static const uint8_t vcb_standard_00c4[] = { 0x42,0x06,0x28,0x85,0xd8,0x5a,0x6a,0x2d,0xe6,0x4e,0x50,0xe3,0x10,0x93,0x96,0x63,0x26,0xa1,0x73,0x12,0x83,0x50,0x8d,0x45,0x10,0x39,0xaa,0xbd,0x55,0x8e,0x29,0xe5, 0x28,0xf6,0xd4,0x40,0xa4,0x8c,0x92,0xd8,0x53,0x45,0x19,0x53,0x4c,0x62,0x8e,0xa1,0x85,0x4e,0x39,0x69,0xb5,0x96,0xd2,0x29,0xa4,0x20,0xc5,0x9c,0x52,0xa8,0x90,0x72, 0xd0,0x02, }; -static const uint8_t wvc_standard_00c5[] = { +static const uint8_t vcb_standard_00c5[] = { 0x01,0x08,0x28,0x42,0x08,0x29,0xa4,0x90,0x42,0x0a,0x29,0xa4,0x90,0x42,0x0a,0x29,0xa4,0x10,0x43,0x0c,0x31,0xc4,0x90,0x53,0x4e,0x39,0x05,0x15,0x54,0x52,0x49,0x45, 0x15,0x65,0x94,0x59,0x66,0x99,0x65,0x96,0x59,0x66,0x99,0x65,0xd6,0x61,0x67,0x9d,0x75,0xd8,0x61,0x88,0x21,0x86,0x18,0x5a,0x69,0x25,0x96,0x9a,0x6a,0xab,0xb1,0xc6, 0x5a,0x73,0xcf,0x39,0xd7,0x1c,0xa4,0xb5,0xd2,0x5a,0x6b,0xad,0x95,0x52,0x4a,0x29,0xa5,0x94,0x52,0x00, }; -static const uint8_t wvc_standard_00c6[] = { +static const uint8_t vcb_standard_00c6[] = { 0x42,0x06,0xa8,0xa1,0x58,0x73,0x2e,0x42,0x09,0x49,0x39,0x28,0xa5,0xe5,0xa4,0x2c,0xa5,0x94,0x73,0x54,0x8b,0xf2,0x14,0x32,0x8a,0x49,0xec,0x41,0x64,0x0a,0x29,0x06, 0x2d,0x27,0xd3,0x31,0xa5,0x14,0x83,0x98,0x5b,0x09,0x1d,0x53,0x06,0x49,0x8e,0x31,0x75,0x4a,0x19,0xc1,0x2c,0xe8,0x5e,0x3a,0xc7,0x14,0xb4,0x64,0x84,0x4c,0xa5,0x84, 0x54,0x03, }; -static const uint8_t wvc_standard_00c7[] = { +static const uint8_t vcb_standard_00c7[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0x23,0x3c,0x4b,0xb4,0x44,0x3a,0x34,0x4c,0xc3,0x1c,0x44,0x54,0x3d,0x55,0x53,0xcd,0xe4,0x6c,0x36,0xd5,0x64,0x4d,0x6e,0x42,0x3c, 0x55,0x54,0x35,0xd5,0x6c,0xce,0x6d,0x53,0x4d,0xe6,0xe4,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_00c8[] = { +static const uint8_t vcb_standard_00c8[] = { 0x11,0x03,0x0c,0x41,0x10,0x14,0x8b,0x0f,0x00,0x80,0x09,0x0e,0x00,0x00,0x01,0x56,0xb0,0x2b,0xb3,0xb4,0x6a,0xa3,0xb8,0xa9,0x93,0xbc,0xe8,0x83,0xc0,0x27,0x74,0xc4, 0x66,0x64,0xc8,0xa5,0x54,0xcc,0xe4,0x44,0xd0,0x23,0x35,0xd4,0x62,0x25,0xd8,0xa1,0x15,0xdc,0xe0,0x05,0x60, }; -static const uint8_t wvc_standard_00c9[] = { +static const uint8_t vcb_standard_00c9[] = { 0x14,0x05,0x28,0x30,0xc6,0x38,0x67,0x9c,0x43,0x14,0x3a,0x4b,0x9d,0xa5,0x48,0x52,0x47,0xad,0xa3,0xd6,0x50,0x4a,0x35,0x96,0x18,0x3b,0x8d,0xad,0xf6,0xd6,0x73,0xa7, 0x35,0xf6,0xda,0x72,0x6f,0x28,0x95,0x1a,0x53,0xad,0x1d,0xd7,0x96,0x73,0xab,0xbd,0xd3,0x9a,0x7a,0x6e,0x39,0x16,0x00,0xc0,0x0e,0x1c,0x00,0xc0,0x0e,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_00ca[] = { +static const uint8_t vcb_standard_00ca[] = { 0x01,0x08,0x28,0x42,0x0a,0x29,0xa4,0x90,0x42,0x0a,0x29,0xa4,0x10,0x43,0x0c,0x31,0xc4,0x10,0x43,0x0c,0x39,0xe4,0x90,0x43,0x0e,0x39,0xe5,0x94,0x53,0x50,0x41,0x05, 0x15,0x54,0x90,0x41,0x06,0x19,0x64,0x92,0x49,0x27,0x9d,0x74,0xd2,0x49,0x47,0x1d,0x75,0xd4,0x51,0x47,0xa1,0x85,0x16,0x5a,0x68,0xa1,0x95,0x56,0x62,0x8a,0xa9,0xb6, 0x1a,0x73,0xed,0x35,0xe8,0xe2,0x9b,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0x4e,0x00, }; -static const uint8_t wvc_standard_00cb[] = { +static const uint8_t vcb_standard_00cb[] = { 0x12,0x05,0x28,0x52,0x56,0x5b,0xed,0xc1,0x38,0x02,0x51,0x26,0xad,0xe6,0xd0,0x20,0xca,0x24,0xe6,0xa2,0x2b,0x86,0x94,0xa3,0xd8,0x53,0xa4,0x10,0x52,0x10,0x73,0x8b, 0x98,0x42,0x0a,0x5a,0x6d,0x15,0x73,0x8a,0x41,0x8b,0xb5,0x73,0x0c,0x21,0x27,0xad,0x87,0xd0,0x29,0xc5,0x20,0x04, }; -static const uint8_t wvc_standard_00cc[] = { +static const uint8_t vcb_standard_00cc[] = { 0x12,0x05,0x20,0x98,0x59,0x65,0xee,0x1e,0x33,0xe5,0xee,0x6e,0x39,0xe9,0xee,0xee,0xee,0xdc,0xee,0xee,0xee,0x6e,0xea,0xeb,0xee,0xee,0x6d,0xee,0xee,0xee,0x6e,0xee, 0xec,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0x0e,0x00,0xba,0x13,0x0e,0x00,0xba,0x0f,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_00cd[] = { +static const uint8_t vcb_standard_00cd[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0xf6,0x5e,0x8c,0x2d,0xa5,0xd6,0xde,0x7b,0x2f,0xc6,0x39,0x5b,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x75,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe7,0x9c,0xb3,0xd6,0x5a,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x7a,0x2f,0xe2,0x8c,0xb3,0xd6,0x5b,0xf3, 0xc5,0x9c,0x31,0xd6,0x7a,0x6f,0xbe,0xc8,0x79,0xce,0x5a,0xef,0xcd,0x19,0x7b,0xcf,0x59,0xeb,0xbd,0x39,0x83,0x7a,0x6b,0xbd,0x79,0x67,0x70,0x6f,0xad,0xf9,0xee,0x1c, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00ce[] = { +static const uint8_t vcb_standard_00ce[] = { 0x92,0x07,0xa0,0x21,0xaa,0x32,0x33,0x33,0xbb,0x2a,0x33,0x33,0x33,0xb3,0xab,0x2a,0x33,0x33,0x33,0xbb,0x2a,0x33,0x33,0x33,0xb3,0xbb,0x33,0x33,0x33,0x33,0xbb,0x3b, 0x33,0x33,0x33,0xb3,0xbb,0x33,0x33,0x33,0x33,0xbb,0x3b,0x33,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0x33,0xbb,0xbb,0x3b,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0x33,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00cf[] = { +static const uint8_t vcb_standard_00cf[] = { 0x92,0x1b,0xa0,0x98,0xa9,0x32,0x33,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0xd3,0x55,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x4c,0x44,0xd5,0x34,0xbb,0xbb,0xc3,0x43,0x44,0x44, 0x44,0x44,0x54,0xd5,0xb3,0x3b,0x44,0x44,0xc4,0x4c,0xcc,0xc4,0x4c,0xd5,0xbd,0xbb,0x43,0x44,0x44,0x44,0x4c,0xcc,0xcc,0x54,0xd5,0x3b,0x44,0x44,0x44,0xcc,0xcc,0xcc, 0xcc,0x4c,0x55,0xbd,0xc3,0x43,0x44,0x4c,0x44,0xcc,0xcc,0xc4,0x54,0x55,0x44,0xc4,0x44,0xc4,0x4c,0x4c,0xcc,0xcc,0x4c,0x5d,0x55,0x45,0x44,0xc4,0x4c,0xcc,0xcc,0xcc, @@ -1291,7 +1285,7 @@ static const uint8_t wvc_standard_00cf[] = { 0x55,0xd5,0xd5,0xd5,0x4d,0xcd,0xcc,0xd4,0xcc,0xcc,0xcc,0x55,0x55,0xd5,0xdd,0xcc,0xcc,0xd4,0x4c,0x4d,0x55,0x55,0x55,0x55,0x55,0xd5,0xd5,0xd4,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_00d0[] = { +static const uint8_t vcb_standard_00d0[] = { 0x12,0x12,0xe0,0x50,0x4a,0x4a,0xef,0xbd,0x17,0xe3,0x9c,0xb5,0xd6,0x8a,0xf7,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xbd,0x17,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0x7a,0x2f, 0x62,0x7c,0x6f,0xce,0x39,0x6b,0xbd,0xf7,0x5e,0xc4,0xf8,0xde,0x9c,0x73,0xd6,0x7a,0xef,0xbd,0x98,0x33,0xc6,0x39,0xe7,0xac,0xf5,0xde,0x9c,0x31,0x67,0x8c,0x73,0xce, 0x59,0xeb,0xbd,0x39,0xa3,0xd6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0x31,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0xb3,0xd6,0x7b,0xef,0xcd,0x19,0xc4,0x38, @@ -1299,17 +1293,17 @@ static const uint8_t wvc_standard_00d0[] = { 0x6f,0xce,0x3b,0x03,0xee,0xbd,0x37,0xe7,0x9c,0xf7,0x06,0x70,0x6f,0xce,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_00d1[] = { +static const uint8_t vcb_standard_00d1[] = { 0x12,0x05,0x20,0x98,0x31,0xbb,0x43,0x9c,0xa2,0xb3,0xbb,0xc4,0xa9,0xba,0xbb,0xcb,0xb4,0x33,0x44,0x44,0x4d,0xbb,0x43,0x44,0x4c,0xbd,0x3b,0xc4,0x4c,0xd5,0xbb,0x43, 0xcc,0x54,0xc5,0x4c,0x4d,0xd5,0x5d,0xcc,0x4c,0x55,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_00d2[] = { +static const uint8_t vcb_standard_00d2[] = { 0x21,0x03,0x60,0x00,0x00,0x4a,0x39,0xe5,0x9c,0x73,0x52,0x4a,0x29,0xad,0xd4,0xd2,0x5b,0x6f,0xc5,0x36,0xdb,0x7c,0xf3,0xd5,0x58,0x01, }; -static const uint8_t wvc_standard_00d3[] = { +static const uint8_t vcb_standard_00d3[] = { 0x92,0x01,0x98,0x6c,0x5b,0x49,0xb2,0x24,0xd9,0x96,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_00d4[] = { +static const uint8_t vcb_standard_00d4[] = { 0x12,0x0e,0x28,0x30,0x86,0x31,0xe7,0x1c,0x83,0x0e,0x42,0x29,0x15,0x42,0x8c,0x41,0xe8,0x9c,0x84,0x54,0x5a,0xaa,0x10,0x72,0x0c,0x42,0xe7,0xa4,0xa4,0xd4,0x52,0xf2, 0x9c,0x73,0x52,0x42,0x28,0x25,0xa5,0x96,0x92,0xe7,0x9c,0x93,0x12,0x42,0x29,0x29,0xb5,0x96,0x5c,0x0b,0xa1,0x94,0x50,0x4a,0x49,0xa9,0xb5,0xe4,0x5a,0x08,0xa5,0x94, 0x52,0x4a,0x6b,0xad,0x25,0xa5,0x44,0x08,0x21,0x95,0x94,0x5a,0x8a,0x31,0x29,0x25,0x42,0x08,0xa9,0xa4,0x94,0x5a,0x8c,0x49,0x29,0x19,0x4b,0x49,0xa9,0xb5,0xd6,0x62, @@ -1317,7 +1311,7 @@ static const uint8_t wvc_standard_00d4[] = { 0xf7,0x16,0x5b,0x8c,0x35,0xd7,0x64,0x8c,0x31,0x3e,0xb7,0xd4,0x52,0x6d,0xb5,0x16,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_00d5[] = { +static const uint8_t vcb_standard_00d5[] = { 0x92,0x1b,0x20,0x28,0x32,0x43,0x44,0xcc,0xdd,0x54,0x4d,0x55,0x4d,0xad,0x3b,0xc4,0x4c,0x4c,0xd5,0x54,0x55,0x4d,0x55,0xd5,0xb2,0x43,0xc4,0xd4,0xd4,0xd5,0x54,0x55, 0x55,0xdd,0x3c,0xc4,0xc4,0x4c,0xcc,0xcc,0x4c,0xcc,0xcc,0xc4,0x4c,0x44,0xc4,0x4c,0xc4,0x4c,0x4d,0xdc,0xd4,0xc4,0xcc,0x3c,0xc4,0xc4,0x44,0xcc,0xc4,0x44,0xcd,0xcc, 0x4c,0xcc,0x3b,0xc4,0x44,0xc5,0x43,0x4c,0xcd,0x4c,0x5d,0x44,0x3d,0x3c,0x4d,0xcd,0x44,0xcd,0xcc,0xcc,0x4c,0x55,0xd5,0x43,0xc4,0xcc,0x54,0x5d,0x5d,0xcd,0xcc,0x55, @@ -1327,12 +1321,12 @@ static const uint8_t wvc_standard_00d5[] = { 0x55,0xd5,0xc4,0x54,0xd5,0x55,0xd5,0x4d,0x55,0xc5,0x54,0x55,0x55,0xcd,0x54,0x5d,0x4d,0x5d,0xcd,0x54,0x4c,0x55,0x55,0x4d,0xd5,0x5c,0x55,0x5d,0x55,0xcd,0x54,0x0d, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_00d6[] = { +static const uint8_t vcb_standard_00d6[] = { 0x92,0x07,0xa0,0x20,0xaa,0x32,0x33,0xbb,0xa3,0x2a,0x33,0xb3,0xbb,0x3b,0xaa,0x32,0x33,0xbb,0xbb,0x2b,0x33,0xb3,0xbb,0xbb,0xbb,0x32,0x33,0xbb,0xbb,0xbb,0x33,0xb3, 0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x3b,0x3c,0x44,0xbb,0xbb,0xbb,0xc3,0x43,0xbc,0xbb,0xbb,0x3b,0x44,0xc4,0xbb,0xbb,0xbb,0x43,0x44,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00d7[] = { +static const uint8_t vcb_standard_00d7[] = { 0x12,0x0e,0x28,0x30,0x86,0x31,0xe7,0x18,0x73,0x0c,0x3a,0x09,0x15,0x42,0xce,0x41,0xe8,0x1c,0x84,0x54,0x52,0xa9,0x10,0x72,0x0e,0x42,0xe7,0x20,0x94,0x92,0x52,0xf1, 0x1c,0x74,0x52,0x42,0x28,0xa5,0x94,0x54,0x8a,0xe7,0x20,0x94,0x12,0x42,0x29,0x29,0xb5,0x56,0x5c,0x0c,0xa5,0x94,0x50,0x4a,0x49,0xa9,0xa5,0x22,0x63,0x08,0xa5,0x94, 0x52,0x4a,0x4a,0xad,0x15,0x63,0x4c,0x09,0x21,0xa5,0x94,0x52,0x6b,0xad,0x18,0x63,0x42,0x09,0xa9,0xa4,0x94,0x52,0x6c,0xc5,0x18,0x1b,0x4b,0x49,0xa9,0xb5,0xd6,0x5a, @@ -1340,15 +1334,15 @@ static const uint8_t wvc_standard_00d7[] = { 0xf7,0xd4,0x5a,0x8c,0xb1,0xc6,0x62,0x8c,0x31,0x3e,0xb7,0xd4,0x52,0x4c,0xb9,0x16,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_00d8[] = { +static const uint8_t vcb_standard_00d8[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x4c,0xc4,0x29,0x4b,0x44,0x45,0xb4,0x4c,0x55,0xdd,0xd4,0x42,0xd4,0x54,0xcd,0x2c,0x44,0x4d,0xd5,0x4c,0xd3,0x5c, 0x55,0x55,0x35,0xc4,0xcc,0x54,0xcd,0x42,0xd4,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_00d9[] = { +static const uint8_t vcb_standard_00d9[] = { 0x12,0x05,0x20,0x98,0x31,0x33,0x43,0x9c,0xaa,0xb3,0xbb,0xcc,0xa9,0xba,0xbb,0xcb,0xac,0x3b,0x44,0x44,0x55,0xbb,0x43,0x44,0x54,0xb5,0x3b,0xc4,0xcc,0x55,0xbb,0x43, 0xcc,0x54,0xc5,0x4c,0x55,0xdd,0x5d,0xcc,0x54,0xdd,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_00da[] = { +static const uint8_t vcb_standard_00da[] = { 0x92,0x1b,0x20,0xa8,0xb2,0x33,0x4b,0x4c,0xd4,0x44,0x4d,0x44,0xc4,0xac,0x33,0xc4,0xbb,0x4c,0x54,0xdd,0x4d,0x54,0xdc,0xc4,0xc2,0xc3,0xbd,0x53,0x54,0x5d,0xdd,0x4d, 0xd5,0x4c,0xb5,0x44,0x44,0xc4,0xc4,0xc4,0xcc,0xcd,0x4c,0xdd,0x4c,0x43,0xc4,0x44,0xcc,0x44,0x44,0xd5,0xcc,0x4c,0xc4,0x35,0x4c,0x54,0x4c,0x4c,0x55,0x4d,0x5d,0x5c, 0xcd,0x4c,0x43,0x44,0xcc,0x4d,0xd4,0x4d,0xdd,0x55,0x4c,0x4d,0x35,0xcc,0xd4,0xc4,0x54,0xd5,0xdc,0x5d,0xd5,0x54,0xdd,0xc3,0x5c,0xcd,0xdc,0xdd,0xdd,0x54,0x45,0xcd, @@ -1358,36 +1352,36 @@ static const uint8_t wvc_standard_00da[] = { 0xdc,0x4c,0x4d,0xd5,0xd5,0xd4,0x54,0x55,0x5d,0xd5,0xc4,0xcc,0x44,0xd5,0xc4,0x4d,0x5d,0xdd,0xd5,0xd5,0xd5,0xd4,0x5c,0x5d,0x5d,0xdd,0xd4,0xcc,0xd5,0x54,0xd5,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_00db[] = { +static const uint8_t vcb_standard_00db[] = { 0x02,0x04,0xa8,0xc5,0x1a,0x83,0xcb,0x41,0x42,0x4a,0x4a,0xca,0xbd,0x21,0x84,0x21,0x26,0x3d,0x63,0x4c,0x42,0x6a,0xbd,0x42,0x08,0x22,0x25,0xbd,0x63,0x0c,0x2a,0x06, 0x3d,0x65,0x44,0x19,0xe4,0xbc,0x85,0xc6,0x21,0x06,0x3d,0x00, }; -static const uint8_t wvc_standard_00dc[] = { +static const uint8_t vcb_standard_00dc[] = { 0x02,0x04,0xa8,0xc5,0x1a,0x83,0xcb,0x41,0x42,0x4a,0x4a,0xca,0xbd,0x21,0x84,0x21,0x26,0x3d,0x63,0x4c,0x42,0x6a,0xbd,0x42,0x08,0x22,0x25,0xbd,0x63,0x0c,0x2a,0x06, 0x3d,0x65,0x44,0x19,0xe4,0xbc,0x85,0xc6,0x21,0x06,0x3d,0x00, }; -static const uint8_t wvc_standard_00dd[] = { +static const uint8_t vcb_standard_00dd[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x96,0xe5,0x79,0xa6,0xa9,0xaa,0xb6,0xec,0x58,0x92,0xe7,0x89,0xa2,0x6a,0xba,0xaa,0x6e,0x3b,0x92,0xe5,0x79,0xa2,0xa8,0xaa,0xaa,0x6a,0xdb, 0x96,0xe7,0x99,0xa2,0xaa,0xaa,0xaa,0xeb,0xea,0xba,0xe5,0x79,0xa2,0xa8,0xaa,0xaa,0xeb,0xba,0xba,0xee,0x99,0xa6,0xaa,0xaa,0xaa,0xeb,0xca,0xb2,0xee,0x7b,0xa6,0xa9, 0xaa,0xaa,0xea,0xba,0xb2,0xec,0xfb,0xa6,0xaa,0xba,0xae,0xeb,0xca,0xb2,0x2c,0x0b,0xbf,0xa9,0xaa,0xae,0xeb,0xba,0xb2,0x2c,0xdb,0xbe,0xb0,0xba,0xae,0x2c,0xcb,0xb2, 0x6d,0xeb,0xb6,0x31,0xac,0xae,0x2b,0xcb,0xb2,0x6c,0xdb,0xb6,0xae,0x1c,0xb7,0xae,0xeb,0xba,0xef,0x1b,0xcb,0x71,0x64,0xeb,0xba,0xaf,0x0b,0xc3,0x6f,0x0c,0x47,0x02, 0x00,0x78,0x82,0x03,0x00,0x50,0x81,0x0d,0xab,0x23,0x9c,0x14,0x8d,0x05,0x06, }; -static const uint8_t wvc_standard_00de[] = { +static const uint8_t vcb_standard_00de[] = { 0x92,0x07,0x20,0x98,0xa9,0xba,0x43,0xcc,0x9c,0x2a,0x33,0xc4,0x4c,0xd5,0xa9,0x32,0x43,0xcc,0x54,0xad,0x3b,0xc4,0x4c,0xd5,0xdd,0xba,0x43,0xcc,0x54,0xdd,0x3d,0xc4, 0x4c,0xd5,0x5d,0xe6,0x43,0xcc,0x54,0xdd,0x65,0xce,0x4c,0x55,0x66,0x66,0x6f,0xcc,0x5c,0x5d,0x66,0x6e,0xd7,0x5d,0x66,0x66,0x6f,0x77,0xd5,0x65,0xee,0x6e,0x77,0x0f, 0x00,0xb8,0x0b,0x0e,0x00,0x60,0x07,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00df[] = { +static const uint8_t vcb_standard_00df[] = { 0x12,0x12,0xe0,0x72,0x4e,0x4a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0xea,0x9c,0xb5,0x5a,0x7b,0x2f,0xbe,0x39,0x6b,0xad,0xd5,0x39,0x6b,0xb5,0xf6,0x5e,0x8c,0x73,0xd6, 0x5a,0xab,0x95,0xd6,0x6a,0x2d,0xc6,0x18,0xe7,0xac,0xf5,0x5e,0xac,0xd5,0x5a,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x68,0xed,0xbd,0x18,0xe7,0xac,0xb5,0xde,0x7b,0xd1,0xda, 0x7b,0x31,0xce,0x59,0x6b,0xbd,0xf7,0xa2,0xb5,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0xef,0xc5,0x38,0x67,0xad,0xf7,0xe6,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_00e0[] = { +static const uint8_t vcb_standard_00e0[] = { 0x81,0x00,0x18,0x44,0x9d,0x69,0x00, }; -static const uint8_t wvc_standard_00e1[] = { +static const uint8_t vcb_standard_00e1[] = { 0x12,0x12,0xa0,0x98,0xa9,0x32,0x33,0xbb,0xbb,0xbb,0xbb,0xcb,0x4c,0x33,0xbb,0x3b,0x44,0x44,0x44,0xc4,0xcc,0x34,0x33,0xbb,0x43,0x44,0x44,0x44,0xcc,0x4c,0xb3,0xbb, 0x3b,0x44,0x44,0x4c,0xc4,0xcc,0x34,0xbb,0xc3,0x43,0x44,0x4c,0xc4,0xcc,0xcc,0xbb,0x3b,0x3c,0x44,0x44,0x4c,0xcc,0xcc,0x34,0xbb,0x43,0x44,0x44,0x4c,0xcc,0xcc,0xcc, 0xbb,0x43,0x44,0x44,0xc4,0xcc,0x44,0xcd,0xcc,0xbc,0x43,0x44,0xc4,0x44,0xc4,0xcc,0x4c,0x55,0x44,0x44,0x44,0xc4,0x44,0x4c,0xcd,0x54,0x45,0x44,0x44,0x44,0x44,0x4c, @@ -1395,7 +1389,7 @@ static const uint8_t wvc_standard_00e1[] = { 0x44,0xc4,0x54,0x4d,0xd5,0xd4,0xcc,0x44,0x44,0x4c,0xc4,0xd4,0x54,0x55,0x4d,0xcd,0xc4,0x44,0xc4,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_00e2[] = { +static const uint8_t vcb_standard_00e2[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc4,0x14,0x84,0x48,0x31,0x08,0x21,0x84,0x94,0x42,0x08,0x29,0x45,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x31,0x27,0x25,0x94,0x92,0x5a,0x28, 0x25,0xb5,0x88,0x31,0x08,0x99,0x63,0x52,0x32,0xe7,0xa4,0x84,0x12,0x5a,0x0a,0xa5,0xb4,0x14,0x4a,0x68,0x2d,0x94,0x12,0x5b,0x28,0xa5,0xc5,0xd6,0x5a,0xad,0xa9,0xb5, 0x58,0x43,0x28,0xad,0x85,0x52,0x5a,0x0b,0xa5,0xb4,0x98,0x5a,0xaa,0xb1,0xb5,0x56,0x63,0xc4,0x18,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x4a,0x29,0xad,0x85,0x52,0x5a, @@ -1410,31 +1404,31 @@ static const uint8_t wvc_standard_00e2[] = { 0xb5,0xa4,0x54,0x63,0x8b,0xb1,0xe6,0x58,0x63,0xaf,0xa9,0xb5,0x5a,0x5b,0x8c,0xb9,0xa6,0x16,0x6b,0xae,0x39,0xf7,0x1e,0x63,0x8e,0x3d,0xb5,0x56,0x73,0x8b,0xb1,0xe6, 0x14,0x5b,0xae,0x35,0xe7,0xde,0x6b,0x6e,0x3d,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_00e3[] = { +static const uint8_t vcb_standard_00e3[] = { 0x42,0x06,0x28,0x71,0xd8,0x6a,0xeb,0x29,0xd6,0xc8,0x20,0xc5,0x9c,0x84,0x96,0x4b,0x84,0x90,0x72,0x10,0x62,0x2e,0x11,0x52,0x8a,0x39,0x47,0xb1,0x65,0x48,0x19,0xc5, 0x18,0xd5,0x94,0x31,0xa5,0x14,0x53,0x52,0x6b,0xe8,0x9c,0x62,0x8c,0x51,0x4f,0x9d,0x63,0x4a,0x31,0xc3,0xac,0x94,0x56,0x4a,0x28,0x91,0x82,0xd2,0x72,0xac,0xb5,0x76, 0xcc,0x01, }; -static const uint8_t wvc_standard_00e4[] = { +static const uint8_t vcb_standard_00e4[] = { 0x92,0x0a,0x20,0x10,0x51,0x55,0x55,0x55,0x55,0x1d,0x33,0x55,0x55,0x55,0x55,0x55,0x3a,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0xc0,0xdd,0x17,0x0e,0x80,0x3e,0x13,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_00e5[] = { +static const uint8_t vcb_standard_00e5[] = { 0x81,0x00,0x18,0x44,0xe5,0x6c,0x00, }; -static const uint8_t wvc_standard_00e6[] = { +static const uint8_t vcb_standard_00e6[] = { 0x42,0x06,0x28,0xb2,0xe0,0x7b,0x10,0x42,0x08,0x87,0x51,0x6a,0x21,0x98,0x20,0x34,0xe6,0x20,0x83,0x54,0x72,0xd0,0xa0,0xa4,0xd2,0x6a,0xeb,0x41,0x73,0x88,0x19,0xc6, 0x9c,0xf7,0x4a,0x42,0xc9,0x24,0xa5,0x1e,0x2c,0xe7,0x20,0x62,0xc8,0x79,0x90,0x90,0x63,0x8a,0x31,0xa5,0xb4,0x95,0x96,0x32,0x6a,0x8c,0x60,0xa0,0x73,0xee,0xb8,0x72, 0x08,0x02, }; -static const uint8_t wvc_standard_00e7[] = { +static const uint8_t vcb_standard_00e7[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0xbb,0xbb,0x9b,0x22,0xb3,0xbb,0xbb,0xbb,0xa1,0x32,0xbb,0xbb,0xbb,0x2b,0xb3,0xbb,0x3b,0x44,0xc4,0x32,0xbb,0xbb,0x43,0x44,0xb4,0xbb, 0x3b,0x44,0x4c,0x4c,0xbb,0xbb,0x43,0x44,0x4c,0xbc,0x3b,0xc4,0xcc,0xcc,0xcc,0xbb,0x43,0x44,0xcc,0xcc,0xbc,0x3b,0x44,0xcc,0xcc,0xcc,0xbb,0x43,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00e8[] = { +static const uint8_t vcb_standard_00e8[] = { 0x12,0x0e,0x28,0x30,0x86,0x29,0xe7,0x1c,0x83,0x4e,0x4a,0x2a,0x15,0x42,0x8c,0x41,0xe8,0x9c,0x94,0x94,0x5a,0xaa,0x10,0x62,0x0c,0x42,0x08,0xa5,0xa4,0xd4,0x5a,0xf3, 0x9c,0x73,0x10,0x42,0x28,0x25,0xa5,0xd6,0x9a,0xe7,0x9c,0x93,0x10,0x42,0x29,0x29,0xb5,0xd6,0x5c,0x0b,0xa1,0x94,0x52,0x4a,0x6a,0xad,0xb5,0xe6,0x5a,0x08,0xa5,0x94, 0x92,0x52,0x6b,0x31,0x36,0xe7,0x44,0x08,0x21,0x95,0x94,0x5a,0x6b,0xb1,0x29,0x25,0x42,0x08,0x29,0xa5,0xd6,0x5a,0x8c,0x49,0x29,0x19,0x4b,0x49,0xa9,0xb5,0x18,0x63, @@ -1442,7 +1436,7 @@ static const uint8_t wvc_standard_00e8[] = { 0xe7,0xd8,0x62,0x8c,0xb5,0xd6,0xa4,0x94,0x52,0x42,0xc8,0x16,0x53,0x8d,0x39,0x17,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_00e9[] = { +static const uint8_t vcb_standard_00e9[] = { 0x14,0x27,0xe8,0xe1,0x38,0x9a,0x27,0x69,0x9a,0x28,0x4a,0x9a,0x26,0x8a,0x9e,0x28,0xba,0xaa,0x27,0x8a,0xaa,0x2b,0x69,0x9a,0x69,0x6a,0xa2,0xa8,0xaa,0x9a,0x28,0x9a, 0xaa,0xa9,0xaa,0xb2,0x2c,0x9a,0xaa,0x2b,0x4b,0x9a,0x66,0x9a,0x9a,0x28,0xaa,0xa6,0x26,0x8a,0xaa,0x2a,0xaa,0xa6,0x2c,0x9b,0xaa,0x2a,0xcb,0x9e,0x69,0xda,0xb2,0xa9, 0xaa,0xba,0x2d,0xaa,0xaa,0x6e,0xcb,0xb6,0xec,0xdb,0xae,0x2c,0xeb,0xbe,0x67,0x9a,0xb2,0x2d,0xaa,0xaa,0xad,0x9b,0xaa,0x6a,0xeb,0xae,0x2c,0xeb,0xba,0x2b,0xdb,0xba, @@ -1459,21 +1453,21 @@ static const uint8_t wvc_standard_00e9[] = { 0x19,0x6e,0xdf,0x37,0x86,0xdd,0xf7,0x85,0x65,0xb5,0x6d,0xe3,0x98,0x6d,0x1d,0xd7,0xd6,0x95,0x63,0xf7,0x95,0xca,0xee,0x2b,0xcb,0xf0,0xda,0xb6,0xaf,0xcc,0xba,0x4e, 0x98,0x75,0xdb,0x38,0x76,0x5f,0x67,0xfc,0xc2,0x90,0x00,0x00,0x30,0xe0,0x00,0x00,0x10,0x60,0x42,0x19,0x08, }; -static const uint8_t wvc_standard_00ea[] = { +static const uint8_t vcb_standard_00ea[] = { 0x12,0x05,0x20,0x10,0x41,0x44,0x44,0x1c,0x44,0x44,0x44,0x44,0x42,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xbc,0xbb,0x0b,0x80,0xd1,0x17,0x0e,0x80,0xd1,0x13,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_00eb[] = { +static const uint8_t vcb_standard_00eb[] = { 0x01,0x08,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x6a,0xb3,0xb3,0xbb,0xbb,0xb3,0xb3,0xb3,0xb3,0xbb,0xbb,0xaf,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x7b,0x77,0x77,0x77,0x77,0x01, }; -static const uint8_t wvc_standard_00ec[] = { +static const uint8_t vcb_standard_00ec[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0xf6,0x5e,0x8c,0x2b,0xa5,0xd6,0xde,0x7b,0x2f,0xc6,0x39,0xdb,0x4a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe7,0x9c,0xb3,0xd6,0x5a,0xe5,0x1c,0xe3,0x9c,0x73,0xd6,0x7a,0x2f,0xe6,0x9c,0xb3,0xd6,0x7b,0x6f, 0xc6,0x9c,0x73,0xd6,0x7a,0xef,0xbd,0xd8,0x7b,0xd6,0x5a,0xef,0xcd,0x19,0x7b,0xd7,0x59,0x6b,0xbe,0x39,0x83,0x7b,0xeb,0xcd,0x77,0x6f,0x70,0xef,0xbd,0xf9,0xee,0x1d, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00ed[] = { +static const uint8_t vcb_standard_00ed[] = { 0x12,0x0e,0x28,0x30,0x86,0x29,0xe7,0x9c,0x83,0x50,0x4a,0x2a,0x15,0x42,0x8c,0x41,0xe8,0xa0,0x94,0x94,0x5a,0xab,0x10,0x62,0x0c,0x42,0x08,0xa5,0xa4,0xd4,0x5a,0xd4, 0x9c,0x73,0x10,0x42,0x28,0x25,0xa5,0xd6,0xa2,0xe7,0x9c,0x83,0x10,0x42,0x29,0x29,0xb5,0x16,0x55,0x0b,0xa1,0x94,0x52,0x4a,0x4a,0xad,0xb5,0xe8,0x5a,0xe8,0xa4,0x94, 0x92,0x52,0x6b,0x31,0x46,0x29,0x45,0x08,0x21,0xa5,0x94,0x5a,0x6b,0x31,0x3a,0x27,0x42,0x08,0x25,0xa5,0xd4,0x5a,0x8c,0xcd,0x39,0x19,0x4b,0x49,0xa9,0xb5,0x18,0x63, @@ -1481,59 +1475,59 @@ static const uint8_t wvc_standard_00ed[] = { 0xf7,0xd8,0x62,0xac,0xb1,0xd6,0xe6,0x9c,0x73,0x3e,0xb7,0x16,0x5b,0x8d,0xb5,0x16,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_00ee[] = { +static const uint8_t vcb_standard_00ee[] = { 0x92,0x0a,0x20,0x98,0xa9,0xba,0xc3,0x4c,0x55,0x2d,0x22,0xb3,0x3b,0x4c,0x54,0x5d,0x22,0x32,0x3b,0xcc,0xdc,0x6d,0x76,0xb3,0x3b,0x4c,0xd5,0xdc,0x54,0xb7,0xbb,0x43, 0x54,0xe5,0x5d,0xf6,0xcc,0xbb,0xcc,0x5d,0xed,0x4c,0x57,0xbd,0xcb,0x5c,0xe6,0x76,0x76,0xf7,0xcc,0xcc,0x5d,0x5e,0x4e,0x77,0xcf,0xd4,0x64,0x65,0x76,0x76,0x77,0xe6, 0x54,0xd5,0xcd,0x56,0xf7,0x6e,0xce,0x5c,0x65,0xee,0x76,0x77,0x77,0x55,0xd5,0x55,0x5f,0x77,0x77,0xdf,0x55,0xed,0xe5,0x0e,0x00,0x98,0x0d,0x0e,0x00,0x10,0x09,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_00ef[] = { +static const uint8_t vcb_standard_00ef[] = { 0x12,0x03,0x20,0x90,0x40,0x34,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b,0x00,0xfb,0x11,0x0e, 0x00,0x52,0x0f,0x26,0x26,0xa6,0x30, }; -static const uint8_t wvc_standard_00f0[] = { +static const uint8_t vcb_standard_00f0[] = { 0x92,0x01,0x18,0x6d,0x24,0x37,0x92,0x1b,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_00f1[] = { +static const uint8_t vcb_standard_00f1[] = { 0x92,0x01,0x18,0x6d,0x24,0x37,0x92,0x1b,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_00f2[] = { +static const uint8_t vcb_standard_00f2[] = { 0x92,0x01,0x18,0x6d,0x24,0x37,0x92,0x1b,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_00f3[] = { +static const uint8_t vcb_standard_00f3[] = { 0x92,0x07,0x20,0x21,0xaa,0x32,0xbb,0xbb,0xd3,0x99,0x2a,0xb3,0x3b,0x44,0x9d,0xa9,0x32,0xbb,0x43,0x5c,0xa2,0x2a,0x33,0x44,0xc4,0xdd,0xad,0x32,0x43,0x44,0x54,0x55, 0x33,0xb3,0x3b,0x44,0x55,0x35,0x33,0xbb,0x43,0x54,0x55,0xb3,0xbb,0x3b,0x44,0x55,0x55,0xbd,0xbb,0x3b,0x54,0x55,0xd5,0xbb,0xbb,0x3b,0x55,0x55,0x35,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00f4[] = { +static const uint8_t vcb_standard_00f4[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0xf6,0x5e,0x8c,0x2d,0xa5,0xd6,0xde,0x7b,0x2f,0xc6,0x39,0xdb,0x4a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe7,0x9c,0xb3,0xd6,0x5a,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x5a,0x2f,0xe2,0x9c,0xb3,0xd6,0x5b,0xef, 0xc5,0x9c,0x31,0xd6,0x7a,0xef,0xbd,0xc8,0x79,0xce,0x5a,0xef,0xcd,0x19,0x7b,0xcf,0x59,0xeb,0xbd,0x39,0x83,0x7a,0x6b,0xcd,0x37,0x67,0x70,0x6f,0xad,0xf9,0xee,0x1d, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00f5[] = { +static const uint8_t vcb_standard_00f5[] = { 0x92,0x07,0x20,0xaa,0x32,0x33,0x33,0x33,0xab,0x2a,0x33,0x33,0x33,0xb3,0xaa,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xb3,0x32,0x33,0x33,0x33,0x33,0x33,0x33, 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xb3,0x33,0x33,0x33,0x33,0x33,0x33,0xbb,0x33,0x33,0x33,0xb3,0xb3,0x3b,0x33,0x33,0x33,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00f6[] = { +static const uint8_t vcb_standard_00f6[] = { 0x92,0x07,0x20,0x98,0xa9,0x32,0xbb,0xbb,0xcb,0x4c,0xab,0xbb,0xbb,0xbb,0xcc,0xb4,0x32,0xbb,0xbb,0xcb,0x4c,0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc, 0xbb,0x3b,0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0xcc,0x4c,0x44,0x44,0x44,0xc4,0xcc,0xcc,0x44,0x44,0x44,0xcc,0xcc,0x4c,0x44,0x44,0xc4,0xcc,0xcc,0x44,0x44,0x44,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_00f7[] = { +static const uint8_t vcb_standard_00f7[] = { 0x01,0x04,0x28,0x53,0x10,0x34,0xe5,0xc0,0x85,0xd4,0x7b,0xef,0x3d,0x32,0xcc,0x23,0xa2,0x34,0x54,0x8e,0x7b,0xef,0x3d,0x32,0x0a,0x13,0x61,0x28,0x33,0x0a,0x7b,0x2a, 0xb5,0xb5,0xd6,0x43,0x26,0xb9,0x85,0xd4,0x7b,0xce,0x3d,0x00, }; -static const uint8_t wvc_standard_00f8[] = { +static const uint8_t vcb_standard_00f8[] = { 0x12,0x05,0x28,0x32,0x50,0x42,0x49,0x2d,0x36,0x00,0x31,0x06,0xa9,0xd5,0x0e,0x31,0xe8,0x24,0xc6,0x58,0x32,0x68,0x14,0x93,0x56,0x43,0xc5,0x94,0x62,0xd2,0x5a,0xe8, 0x20,0x53,0xcc,0x51,0x4b,0x29,0x85,0x8e,0x39,0x69,0x2d,0xd6,0x96,0x42,0x08,0xad,0x05,0xa1,0x7b,0x2b,0x29,0x06, }; -static const uint8_t wvc_standard_00f9[] = { +static const uint8_t vcb_standard_00f9[] = { 0x14,0x05,0x20,0x99,0xa1,0x2a,0xaa,0xa2,0xaa,0xb2,0x2b,0x3b,0xaa,0xaa,0xb3,0x3a,0xa3,0xaa,0xba,0xab,0xbb,0xba,0x33,0xcb,0x43,0xac,0x3b,0xc3,0x3b,0x4c,0xaa,0xaa, 0x3b,0xbb,0xab,0xbb,0x4b,0xb4,0xc3,0xba,0x3b,0x44,0xcb,0x0b,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_00fa[] = { +static const uint8_t vcb_standard_00fa[] = { 0x92,0x16,0x20,0xd8,0xdc,0xdc,0x5c,0xdd,0xdd,0xdd,0xdd,0x25,0xc2,0x5c,0xd5,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x44,0x54,0x54,0x5d,0xdd,0xdd,0xdd,0xdd,0xdd,0xbd,0x4b, 0xc5,0xd5,0xdd,0xdd,0xdd,0xdd,0xdd,0x5d,0xbc,0xd4,0xd5,0xd5,0xdd,0xdd,0xdd,0xdd,0xdd,0x3d,0x54,0xcd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x5d,0x4c,0x5d,0x5d,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0x45,0xd4,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, @@ -1542,23 +1536,23 @@ static const uint8_t wvc_standard_00fa[] = { 0x55,0x55,0x55,0x55,0xa5,0x43,0x3c,0x45,0x55,0x55,0x55,0x55,0x55,0xa2,0xb9,0xbb,0x4b,0xcc,0x54,0x55,0x55,0x55,0xa5,0x09,0x00,0x88,0x11,0x0e,0x00,0x00,0x01,0x96, 0x10,0xbb,0x2a,0x37,0x93,0xd4,0xab,0x67,0x43,0x62,0x98,0x9c,0xa4,0x4f,0x31,0x5c,0x8d,0xe1,0x5b,0x00,0x20,0x26,0x8c,0x31, }; -static const uint8_t wvc_standard_00fb[] = { +static const uint8_t vcb_standard_00fb[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xef,0xbd,0x17,0xe3,0x9c,0x2d,0xa5,0xd6,0xde,0x7b,0x2f,0xce,0x5a,0x5b,0x4a,0xad,0xbd,0x17,0xe3,0x9c,0xb5,0x7a,0xef,0xbd,0x18,0x63, 0x8c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0x63,0x9c,0x71,0xd6,0x5a,0xe5,0x1b,0x5f,0x8c,0x73,0xd6,0x7a,0x2b,0x62,0x8c,0x71,0xce,0x5a,0xef, 0xc5,0x9c,0x31,0xce,0x59,0xeb,0xbd,0xc8,0x79,0xce,0x5a,0x6f,0xcd,0x17,0x7b,0xcf,0x59,0x67,0xad,0xf7,0x82,0x7b,0x6b,0xbd,0x37,0x67,0x70,0x6f,0x9d,0xb7,0xe6,0x1b, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_00fc[] = { +static const uint8_t vcb_standard_00fc[] = { 0x21,0x01,0x58,0x97,0x97,0x97,0x95,0x95,0x95,0x77,0x97,0x09, }; -static const uint8_t wvc_standard_00fd[] = { +static const uint8_t vcb_standard_00fd[] = { 0x12,0x0e,0x20,0x20,0x22,0xca,0x54,0x55,0x55,0x55,0x25,0xab,0x3b,0x4c,0x55,0x55,0x55,0xd5,0x2a,0x43,0xd3,0x54,0x55,0x55,0x55,0xa5,0x2a,0x3d,0x55,0x55,0x55,0x55, 0x55,0xaa,0xc2,0xd4,0x54,0x55,0x55,0x55,0xb5,0x4c,0x55,0x55,0x55,0x55,0x55,0x55,0xd3,0x53,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_00fe[] = { +static const uint8_t vcb_standard_00fe[] = { 0x18,0x9a,0xe1,0x70,0x0e,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0xde,0x03,0x5e,0x8c,0x40,0x8b,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xd2,0x7b,0x40,0x9b,0x11,0x78,0x33,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -1588,58 +1582,58 @@ static const uint8_t wvc_standard_00fe[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_00ff[] = { +static const uint8_t vcb_standard_00ff[] = { 0x02,0x04,0x28,0xe6,0x20,0x74,0x6e,0x41,0x85,0x4c,0x4a,0x68,0xc1,0x54,0x44,0x21,0x26,0x41,0x97,0x0a,0x3a,0x48,0x41,0x77,0x86,0x11,0x04,0xbd,0x97,0xc8,0x19,0xe4, 0x3c,0xa6,0xc8,0x11,0x82,0x34,0xb6,0x4c,0x22,0xc4,0x34,0x00, }; -static const uint8_t wvc_standard_0100[] = { +static const uint8_t vcb_standard_0100[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0x44,0x45,0xb4,0xcc,0x54,0xd5,0xcc,0x42,0x54,0x4d,0xcd,0x2c,0x44,0x4d,0xd5,0x4c,0x53,0x55, 0x55,0x55,0x2d,0x44,0xcd,0x54,0xcd,0x42,0xcc,0x4c,0x4d,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0101[] = { +static const uint8_t vcb_standard_0101[] = { 0x92,0x07,0xa0,0x10,0xa9,0x32,0x33,0xb3,0xcb,0xcc,0x2a,0xb3,0xbb,0xbb,0xcc,0xac,0x32,0xbb,0xbb,0xcb,0x4c,0x33,0xb3,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0xcc, 0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0102[] = { +static const uint8_t vcb_standard_0102[] = { 0x92,0x07,0xa0,0x21,0xaa,0x32,0x33,0xbb,0x23,0xa2,0x2a,0xb3,0xbb,0x3b,0x22,0xaa,0x32,0xb3,0xbb,0xab,0x2a,0x33,0xb3,0xbb,0xbb,0xaa,0x32,0x33,0xbb,0xbb,0x33,0x33, 0xb3,0xbb,0xbb,0x3b,0x33,0x33,0xbb,0xbb,0xbb,0xb3,0xb3,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x3b,0xc4,0xbb,0xbb,0xbb,0xbb,0x43,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0103[] = { +static const uint8_t vcb_standard_0103[] = { 0x01,0x01,0xa0,0xa8,0x43,0x53,0x66,0x10,0xa2,0xaa,0x4d,0x00, }; -static const uint8_t wvc_standard_0104[] = { +static const uint8_t vcb_standard_0104[] = { 0x12,0x05,0xa0,0x98,0xa9,0x32,0x43,0x1c,0xa2,0xaa,0x33,0xc4,0x21,0xaa,0xb2,0x43,0xac,0x2a,0xb3,0xbb,0xcc,0xaa,0x32,0xbb,0xc3,0xb4,0xb3,0x3b,0xc4,0x4c,0xbb,0xbb, 0x43,0xcc,0x44,0xc4,0xc4,0x4c,0x55,0x44,0xcc,0xcc,0x54,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0105[] = { +static const uint8_t vcb_standard_0105[] = { 0x92,0x01,0x98,0x6d,0xe4,0x38,0x72,0x23,0x49,0x92,0x24,0x49,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0106[] = { +static const uint8_t vcb_standard_0106[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0x33,0xc5,0x5c,0xcc,0x31,0xcb,0x4c,0x45,0x2c,0x4d,0xd5,0x55,0xd5,0xca,0x54,0x5d,0xcd,0x2c,0x4c,0x55,0xd5,0x4c,0x4b,0x5d, 0xd5,0xd5,0x2d,0xc4,0x44,0xd4,0xcc,0x42,0xcc,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0107[] = { +static const uint8_t vcb_standard_0107[] = { 0x14,0x05,0x20,0x99,0xa1,0x2a,0xaa,0xa2,0xaa,0xba,0x2b,0x3b,0xaa,0xaa,0xb3,0xba,0xa3,0xaa,0xba,0xab,0xbb,0xba,0x3b,0xc4,0x43,0x2c,0x33,0xc3,0x3b,0x44,0xaa,0xaa, 0xb3,0xba,0xab,0xbb,0x43,0xb4,0xc3,0xba,0x3b,0xc4,0x43,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0108[] = { +static const uint8_t vcb_standard_0108[] = { 0x01,0x02,0xa0,0x18,0x1a,0x1a,0x1a,0x22,0x22,0xa2,0xa2,0xa2,0xaa,0x2a,0x33,0x33,0xb3,0xbb,0x3b,0x00, }; -static const uint8_t wvc_standard_0109[] = { +static const uint8_t vcb_standard_0109[] = { 0x12,0x05,0x20,0x99,0xa9,0x32,0x43,0x9c,0x99,0xaa,0x3b,0xc4,0x99,0xa9,0x32,0x43,0xac,0x2a,0xb3,0xbb,0xc4,0xaa,0x32,0xbb,0xc3,0xb4,0xb3,0x3b,0xc4,0x4c,0xbb,0xbb, 0x43,0xcc,0x44,0xc4,0xcc,0x4c,0x55,0x44,0xcc,0xcc,0x54,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_010a[] = { +static const uint8_t vcb_standard_010a[] = { 0x12,0x05,0xe0,0x51,0xca,0x5a,0xe0,0x9c,0xb5,0xc0,0x39,0x6b,0x81,0x94,0xd6,0x02,0xac,0x05,0x68,0x0f,0xd0,0x1a,0x20,0x46,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_010b[] = { +static const uint8_t vcb_standard_010b[] = { 0x12,0x05,0xe0,0x51,0xca,0x5a,0xe0,0x9c,0xb5,0xc0,0x39,0x6b,0x81,0x94,0xd6,0x02,0xac,0x05,0x68,0x0f,0xd0,0x1a,0x20,0x46,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_010c[] = { +static const uint8_t vcb_standard_010c[] = { 0x92,0x1b,0x20,0x21,0xaa,0x32,0x33,0xbb,0xbb,0xbb,0xbb,0xbb,0x3b,0x54,0x2a,0xb3,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x25,0x32,0x33,0xbb,0xbb,0x43,0x44,0x44, 0x44,0x44,0x54,0x33,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x4c,0x4c,0x55,0x35,0xbb,0xbb,0x43,0x44,0x44,0xcc,0xcc,0xcc,0x54,0xd5,0xbb,0x3b,0x44,0x44,0x44,0xcc,0xcc, 0xcc,0x4c,0x55,0xbd,0xbb,0x43,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0x54,0x55,0x44,0x44,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0x4c,0x55,0x55,0x45,0x44,0x44,0x4c,0xcc,0xcc,0xcc, @@ -1649,28 +1643,28 @@ static const uint8_t wvc_standard_010c[] = { 0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0x54,0x55,0x55,0x55,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x55,0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_010d[] = { +static const uint8_t vcb_standard_010d[] = { 0x14,0x27,0xe0,0x51,0xce,0x4a,0x00,0x00,0x70,0xce,0x59,0x0b,0x00,0x00,0xce,0x49,0x6b,0x01,0x00,0xc0,0x5a,0xeb,0x3d,0x00,0x00,0x58,0x6b,0xbd,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_010e[] = { +static const uint8_t vcb_standard_010e[] = { 0x01,0x04,0x60,0x00,0x00,0x00,0x25,0x8d,0x54,0x52,0x59,0x65,0x9d,0xb6,0xda,0x6b,0xf1,0xc5,0x18,0x67,0xac,0xb9,0xe6,0x39,0x73,0xce,0x39,0xe7,0x7b,0xef,0x05, }; -static const uint8_t wvc_standard_010f[] = { +static const uint8_t vcb_standard_010f[] = { 0x92,0x01,0x98,0x6c,0x63,0x49,0xb2,0x24,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0110[] = { +static const uint8_t vcb_standard_0110[] = { 0x92,0x01,0x98,0x6c,0x63,0x49,0xb2,0x24,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0111[] = { +static const uint8_t vcb_standard_0111[] = { 0x92,0x0a,0x28,0x30,0x48,0x29,0xc6,0x9c,0x93,0x92,0x52,0xa4,0x14,0x63,0xce,0x41,0x48,0xa5,0xa5,0x48,0x29,0xc6,0x9c,0x83,0x50,0x52,0x6a,0x15,0x63,0xce,0x41,0x28, 0x25,0xa5,0xd6,0x2a,0xc6,0x9c,0x83,0x50,0x4a,0x6a,0xb1,0x65,0xce,0x41,0x28,0x25,0xa5,0xd6,0x62,0xec,0x9c,0x83,0x50,0x4a,0x4a,0xad,0xc5,0x18,0x42,0x28,0x25,0xa5, 0xd6,0x62,0xac,0x35,0x84,0x50,0x4a,0x4a,0xad,0xc5,0x58,0x6b,0x49,0xa9,0xa5,0xd8,0x62,0xac,0x35,0xe7,0x92,0x52,0x6a,0x2d,0xc6,0x5a,0x6b,0xce,0xa9,0xb5,0x18,0x6b, 0xcc,0x35,0xe7,0x9e,0x53,0x6a,0x31,0xc6,0x5a,0x6b,0xce,0xb9,0x17,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0112[] = { +static const uint8_t vcb_standard_0112[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc5,0x14,0x84,0x4a,0x31,0x08,0x1d,0x84,0x94,0x3a,0x08,0x29,0x55,0x8c,0x41,0xc8,0x9c,0x93,0x52,0x31,0x07,0x25,0x94,0x92,0x5a,0x08, 0x25,0xb5,0x8a,0x31,0x08,0x95,0x63,0x12,0x32,0xe7,0xa4,0x84,0x12,0x5a,0x0a,0xa5,0xb4,0xd4,0x41,0x68,0x29,0x94,0xd2,0x5a,0x28,0xa5,0xb5,0xd4,0x5a,0xac,0x29,0xb5, 0x58,0x3b,0x08,0xa9,0x85,0x52,0x5a,0x0b,0xa5,0xb4,0x96,0x5a,0xaa,0x31,0xb5,0x16,0x63,0xc4,0x18,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x42,0x29,0xad,0x85,0x52,0x5a, @@ -1685,36 +1679,36 @@ static const uint8_t wvc_standard_0112[] = { 0xb1,0xa4,0x14,0x63,0x8b,0xb1,0xe6,0x16,0x5b,0xae,0xa9,0xa5,0x1a,0x5b,0x8c,0xb9,0xa6,0xd4,0x62,0xad,0xb9,0xf6,0x1c,0x5b,0x8d,0x3d,0xb5,0x16,0x6b,0x8b,0xb1,0xe6, 0xd4,0x52,0xad,0xb5,0xd6,0xdc,0x63,0x6e,0xbd,0x15,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0113[] = { +static const uint8_t vcb_standard_0113[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0x33,0xbb,0x4b,0xa2,0x2a,0xb3,0xbb,0xbb,0x24,0xaa,0x32,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0x3b,0xbb,0xbb,0xcb,0xcc, 0xbb,0xbb,0xbb,0xbb,0xcc,0xb4,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0x3b,0xbc,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0114[] = { +static const uint8_t vcb_standard_0114[] = { 0x14,0x05,0x20,0x20,0x22,0x33,0x32,0x23,0x33,0x43,0x34,0x44,0x32,0x33,0x44,0x43,0x24,0xb3,0x43,0x34,0x44,0x43,0xc4,0x4c,0xcc,0x34,0x44,0xcc,0xc4,0x54,0xb2,0x3b, 0xc4,0x43,0x34,0x44,0xcc,0x44,0x4c,0x43,0xc4,0x4c,0xd4,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0115[] = { +static const uint8_t vcb_standard_0115[] = { 0x14,0x05,0x20,0x98,0x21,0xb3,0x32,0x1b,0x2b,0xcc,0xcc,0xc4,0x29,0xc3,0xcc,0xc4,0x24,0x44,0x54,0x4d,0x55,0x4b,0xd4,0xd5,0xdd,0x35,0x4c,0xd5,0xdd,0xdd,0xca,0xcc, 0xdd,0x5c,0xb5,0x4c,0xdd,0xd5,0x5d,0xcb,0xd4,0xdd,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0116[] = { +static const uint8_t vcb_standard_0116[] = { 0x92,0x01,0x98,0x6c,0xe4,0xc8,0x72,0x24,0xcb,0xb2,0x25,0xdb,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0117[] = { +static const uint8_t vcb_standard_0117[] = { 0x92,0x01,0x98,0x6c,0xe4,0xc8,0x72,0x24,0xcb,0xb2,0x25,0xdb,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0118[] = { +static const uint8_t vcb_standard_0118[] = { 0x92,0x01,0x98,0x6c,0xe4,0xc8,0x72,0x24,0xcb,0xb2,0x25,0xdb,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0119[] = { +static const uint8_t vcb_standard_0119[] = { 0x92,0x01,0x18,0x6d,0xe4,0x48,0x72,0x24,0x49,0x92,0x24,0x49,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_011a[] = { +static const uint8_t vcb_standard_011a[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0x60,0xad,0xb5,0xc0,0x5a,0x6b,0x81,0xd6,0xd6,0x02,0xac,0x06,0x68,0x0f,0xf0,0x1e,0x20,0x46,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_011b[] = { +static const uint8_t vcb_standard_011b[] = { 0x12,0x12,0xe0,0x51,0xca,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0x2a,0xa5,0xb5,0xde,0x8b,0x31,0xc6,0x39,0xe7,0xac,0x55,0x4a,0x6b,0xbd,0x17,0x63,0x8c,0x73,0xce, 0x59,0xab,0xd6,0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xf5,0x5e,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x78,0xef,0xbd,0x18,0xe7,0x9c,0xb5,0xd6,0x7b,0xf1,0xde, 0x7b,0x31,0xce,0x39,0x67,0xad,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x8c,0x71,0xce,0x5a,0xef,0xcd, @@ -1722,27 +1716,27 @@ static const uint8_t wvc_standard_011b[] = { 0xb5,0xd6,0x7a,0x6f,0xce,0x39,0x03,0x6a,0xbd,0xf7,0xde,0x9c,0xf7,0x06,0x70,0xef,0xbd,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_011c[] = { +static const uint8_t vcb_standard_011c[] = { 0x81,0x00,0x18,0x2c,0x95,0x69,0x00, }; -static const uint8_t wvc_standard_011d[] = { +static const uint8_t vcb_standard_011d[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0x33,0xb3,0x43,0xa2,0x2a,0xb3,0xbb,0x3b,0x24,0xaa,0x32,0xbb,0xbb,0x4b,0x33,0x33,0xb3,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0xcc, 0xbb,0xbb,0xbb,0xbb,0xcc,0xbc,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_011e[] = { +static const uint8_t vcb_standard_011e[] = { 0x12,0x0e,0x20,0x98,0x99,0xb9,0x5b,0xee,0xee,0xee,0xae,0xaa,0xaa,0xc4,0xee,0xee,0xee,0x6e,0x2b,0xaa,0x4a,0x5c,0x66,0x66,0x66,0x66,0x33,0x44,0xd5,0x65,0x66,0x66, 0x66,0x36,0xbb,0xd3,0x65,0x66,0x66,0x66,0xe6,0xdd,0x4c,0x5e,0x66,0x66,0x66,0x66,0xde,0xcd,0x64,0x66,0x66,0x66,0x66,0x66,0x66,0x5e,0x5e,0x66,0x66,0x66,0x66,0x66, 0xe6,0x65,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xe6,0x65,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x5e,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x0e,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_011f[] = { +static const uint8_t vcb_standard_011f[] = { 0x01,0x08,0x28,0x42,0x08,0x21,0xa4,0x90,0x42,0x0a,0x29,0xa4,0x90,0x42,0x0c,0x31,0xc4,0x90,0x43,0x0e,0x39,0x04,0x11,0x54,0x52,0x49,0x45,0x15,0x55,0x54,0x51,0x45, 0x15,0x55,0x54,0x59,0x46,0x19,0x65,0x94,0x51,0x26,0x19,0x65,0x94,0x59,0x46,0x1d,0x75,0xd4,0x51,0x87,0x9d,0x85,0x14,0x52,0x48,0xa5,0x95,0x16,0x5a,0x69,0xa9,0xb6, 0xde,0x5a,0xaa,0x3d,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x84,0x10,0x42,0x08,0x21,0x7c,0xef,0x3d,0x00, }; -static const uint8_t wvc_standard_0120[] = { +static const uint8_t vcb_standard_0120[] = { 0x14,0x27,0xe0,0x92,0xd2,0x7b,0x52,0x7a,0x4f,0x4a,0xef,0x69,0x2d,0x46,0xc4,0x98,0x5a,0x8b,0xd1,0x7b,0x73,0x7a,0x6d,0x46,0x73,0xd6,0x8a,0x5a,0x53,0x6b,0x31,0x7a, 0x6f,0x4e,0xed,0xc5,0x69,0xce,0x5a,0x51,0xeb,0x8b,0xb1,0x56,0xb5,0xde,0xab,0xce,0x7b,0xe5,0xbd,0x37,0x76,0x7e,0x31,0xd6,0xaa,0xd6,0x7b,0xcd,0x7a,0xaf,0x9d,0xf7, 0x46,0xde,0x00,0x00,0x00,0xd2,0x6b,0x75,0x6a,0x6d,0x4e,0xad,0xcd,0x29,0xc6,0x3a,0x51,0x6b,0x6a,0x6f,0x56,0xad,0xcd,0xa9,0xb5,0x39,0xc5,0x38,0x2b,0x6a,0x7d,0x33, @@ -1753,26 +1747,26 @@ static const uint8_t wvc_standard_0120[] = { 0x39,0x23,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc4,0x5a,0xf7,0x56,0x6b,0xce,0xea,0xcc,0xd9,0xbd,0x39,0x23,0xe7,0x58,0xeb,0xde,0x6a,0xcd,0xd9,0xac, 0x39,0xbb,0x77,0x67,0xe4,0x1c,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0121[] = { +static const uint8_t vcb_standard_0121[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x96,0xe5,0x79,0xa6,0xa9,0xaa,0xba,0xee,0x48,0x92,0xe7,0x89,0xa2,0xaa,0xba,0xae,0xef,0x3b,0x92,0xe5,0x79,0xa2,0xa8,0xaa,0xae,0x6b,0xdb, 0x9a,0xe7,0x89,0xa2,0x69,0xaa,0xae,0x2c,0xfb,0xc2,0xe6,0x79,0xa2,0x68,0x9a,0xae,0xeb,0xca,0xba,0x2e,0x9a,0xa6,0x69,0xaa,0xaa,0xeb,0xca,0xb2,0xee,0x8b,0xa2,0x68, 0x9a,0xaa,0x2a,0xbb,0xb2,0x2c,0x0c,0xa7,0xaa,0xaa,0xae,0xeb,0xca,0xb2,0xad,0x33,0x4e,0x55,0x75,0x5d,0x57,0xb6,0x65,0xdb,0x16,0x7e,0xd5,0x75,0x65,0xd9,0xb6,0x6d, 0x5b,0xf7,0x85,0x5f,0x75,0x5d,0x59,0xb6,0x6d,0xdb,0xd6,0x75,0x61,0xb8,0x75,0xdd,0xf7,0x7d,0x61,0xf8,0x09,0x8d,0x5b,0xd7,0x7d,0x9f,0x6e,0x1c,0x7d,0x04,0x00,0xf0, 0x04,0x07,0x00,0xa0,0x02,0x1b,0x56,0x47,0x38,0x29,0x1a,0x0b,0x0c, }; -static const uint8_t wvc_standard_0122[] = { +static const uint8_t vcb_standard_0122[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xa6,0x9c,0x93,0x50,0x4a,0x85,0x10,0x63,0x8e,0x49,0x48,0xa9,0xc5,0x0a,0x21,0xc6,0x9c,0x93,0x92,0x52,0x8c,0xc5,0x73,0xce,0x41,0x28, 0xa5,0xb5,0x16,0x8b,0xe7,0x9c,0x83,0x50,0x4a,0x6b,0x31,0x16,0x95,0x3a,0x27,0x25,0xa5,0x96,0x62,0x2b,0x2a,0x85,0x4c,0x4a,0x4a,0xa9,0xb5,0x18,0x84,0x30,0x25,0xa5, 0xd6,0x5a,0x69,0x2d,0x08,0xa1,0x4a,0x2a,0xb1,0xa5,0xd6,0x5a,0x10,0x42,0xd7,0x94,0x5a,0x8a,0x25,0xb6,0x20,0x84,0xad,0xad,0xa4,0x14,0x63,0x8c,0x41,0xf8,0xe0,0x63, 0x6c,0x25,0x96,0x1a,0x83,0x0f,0x3e,0xc8,0xd6,0x4a,0x4c,0xb5,0x16,0x00,0x30,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0123[] = { +static const uint8_t vcb_standard_0123[] = { 0x92,0x0a,0x20,0x10,0xc9,0xcc,0xcc,0xcc,0xcc,0xa4,0xaa,0xcc,0xcc,0xcc,0xcc,0xcc,0xb2,0xcb,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x0c,0x80,0xd8,0x15,0x0e,0x00,0x3b,0x11,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0124[] = { +static const uint8_t vcb_standard_0124[] = { 0x12,0x12,0xa0,0x98,0xa9,0x32,0xbb,0x43,0xcc,0x54,0x55,0x25,0x22,0xb3,0x3b,0x44,0xc4,0x4c,0xd5,0x55,0x22,0x32,0xbb,0x43,0x44,0xcc,0x54,0xdd,0x2d,0x33,0xb3,0x3b, 0x44,0xc4,0x4c,0xd5,0xdd,0x32,0x33,0xbb,0x43,0x44,0xcc,0x54,0xdd,0xb5,0xbb,0x3b,0x44,0xc4,0x4c,0xd5,0xdd,0x5d,0xbb,0xbb,0x43,0x44,0xcc,0x54,0xd5,0xdd,0x45,0x44, 0x44,0xcc,0xcc,0x4c,0xd5,0x5d,0xe6,0x43,0x44,0x4c,0xcc,0xcc,0x54,0xdd,0x65,0x46,0x44,0xc4,0xcc,0x4c,0x55,0xdd,0x5d,0x66,0x44,0x44,0xcc,0xcc,0x54,0x5d,0xdd,0x65, @@ -1780,11 +1774,11 @@ static const uint8_t wvc_standard_0124[] = { 0x65,0xee,0xd6,0xdd,0xdd,0x5d,0x66,0x66,0xe6,0xee,0x6e,0xdd,0xdd,0xdd,0x65,0x66,0x6e,0xee,0xee,0x0e,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0125[] = { +static const uint8_t vcb_standard_0125[] = { 0x01,0x04,0x28,0x50,0xd6,0x1b,0xcb,0x3d,0xe4,0xde,0x7b,0xef,0xbd,0x40,0xd4,0x23,0x8a,0x3d,0xc4,0xde,0x7b,0xef,0xbd,0x71,0xd6,0x23,0x68,0x3d,0xc4,0xdc,0x7b,0xef, 0x3d,0xf7,0xde,0x53,0x8d,0xbd,0xe5,0xde,0x7b,0xef,0x39,0x00, }; -static const uint8_t wvc_standard_0126[] = { +static const uint8_t vcb_standard_0126[] = { 0x92,0x16,0x28,0x30,0x86,0x29,0xc6,0x18,0x73,0x0e,0x42,0x29,0xa5,0xa4,0x54,0x29,0xe5,0x1c,0x74,0x8e,0x49,0x47,0xa5,0xa5,0xd6,0x62,0x8c,0x90,0x72,0x0e,0x42,0xe7, 0x24,0xa4,0xd4,0x5a,0x8c,0x31,0x06,0xcf,0x41,0x08,0x21,0x84,0x12,0x5a,0x69,0x2d,0xb6,0x18,0x83,0xe8,0x20,0x84,0x10,0x42,0x29,0xad,0xb5,0x16,0x63,0x8c,0x41,0xc6, 0x10,0x4a,0x29,0x25,0xa5,0x96,0x62,0x8b,0xb1,0xe6,0x20,0x63,0xe8,0x24,0x94,0x92,0x52,0x6b,0x35,0xe6,0x58,0x73,0x10,0x42,0x94,0x50,0x52,0x6a,0xad,0xb5,0x18,0x6b, @@ -1794,12 +1788,12 @@ static const uint8_t wvc_standard_0126[] = { 0x41,0x08,0x21,0x84,0x10,0xb2,0xc6,0x18,0x63,0xcd,0x39,0xd7,0x1c,0x84,0x10,0x42,0x08,0x9f,0x63,0x8d,0xb1,0xd6,0x5c,0x6b,0x0f,0x42,0x08,0x21,0x84,0xef,0xb1,0xc6, 0x58,0x6b,0xae,0xb9,0x16,0x00,0x72,0x23,0x1c,0x00,0x10,0x17,0x8c,0x24,0xa4,0xce,0x32,0xac,0x34,0xe2,0xc6,0x13,0x30,0x44,0x20,0x01, }; -static const uint8_t wvc_standard_0127[] = { +static const uint8_t vcb_standard_0127[] = { 0x42,0x06,0x28,0x62,0x52,0x4a,0x4a,0xb1,0x28,0x0b,0x21,0xc5,0x1c,0xb4,0xa4,0x3c,0x64,0x8c,0x62,0x10,0x93,0xf2,0x90,0x31,0x48,0x39,0x0b,0x4a,0x43,0xc8,0x18,0xc4, 0xac,0x18,0x8f,0x31,0x85,0x90,0x92,0x62,0x44,0x08,0x9d,0x42,0x0a,0x8a,0x51,0x31,0xc6,0x8e,0x31,0xe8,0x45,0x06,0xe3,0x53,0x08,0x21,0x18,0x5d,0x8c,0xd1,0x31,0xd6, 0x62,0x04, }; -static const uint8_t wvc_standard_0128[] = { +static const uint8_t vcb_standard_0128[] = { 0x14,0x27,0x28,0x40,0xc8,0x39,0xc5,0x18,0x84,0x88,0x31,0x08,0xa1,0x84,0x94,0x42,0x28,0x29,0x55,0xce,0x49,0xe9,0xa0,0xa4,0xd4,0x41,0x49,0xa9,0xa4,0xd4,0x62,0x49, 0x29,0xc6,0xca,0x39,0x29,0x9d,0x84,0x94,0x3a,0x09,0x29,0x95,0x94,0x62,0x2c,0x29,0xc5,0x16,0x52,0xaa,0xb1,0xb4,0x96,0x6b,0x69,0xa9,0xc6,0x16,0x63,0xce,0x2d,0xc6, 0x5e,0x43,0x4a,0xb1,0x96,0xd4,0x6a,0x2d,0xad,0xd5,0xdc,0x62,0xac,0xb9,0xc5,0x9a,0x7b,0xe4,0x1c,0xa5,0x4e,0x4a,0x6b,0x9d,0x94,0xd6,0x52,0x6b,0xb5,0xa6,0xd6,0x6a, @@ -1814,21 +1808,21 @@ static const uint8_t wvc_standard_0128[] = { 0x41,0xc5,0x18,0x7c,0xcd,0x39,0x18,0x9d,0x73,0x31,0xaa,0xd6,0xe0,0x63,0xce,0x41,0xc8,0x5a,0x8b,0xd0,0xbd,0x17,0xa5,0x73,0x10,0x4a,0xd5,0xda,0x83,0xcc,0x35,0x28, 0x99,0x6b,0x11,0x3a,0xf8,0x62,0x74,0xd0,0xc5,0x17,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0129[] = { +static const uint8_t vcb_standard_0129[] = { 0x12,0x05,0x20,0x22,0x4c,0xc4,0xd4,0x25,0xa0,0x2a,0xcb,0x6d,0xa4,0xba,0xcb,0xed,0x4e,0x3a,0xaa,0x53,0x6e,0x24,0xab,0xba,0x5c,0x45,0x43,0xab,0xb2,0xcc,0xc4,0xc5, 0x33,0xcb,0x55,0xe5,0x4d,0x3c,0x54,0x6d,0x77,0x56,0x44,0x05, }; -static const uint8_t wvc_standard_012a[] = { +static const uint8_t vcb_standard_012a[] = { 0x42,0x06,0x28,0x81,0x1a,0x73,0xed,0x31,0xd6,0x08,0x31,0xe6,0x20,0x95,0x96,0x4b,0x85,0x94,0x82,0x52,0x62,0x2f,0x95,0x52,0xca,0x41,0x68,0xb9,0x66,0x4a,0x21,0xa5, 0x9c,0xe5,0xd2,0x31,0xa6,0x18,0x63,0x14,0x6b,0x09,0x1d,0x52,0x06,0x41,0x2b,0x21,0x74,0x4a,0x21,0xa2,0xa8,0xa5,0xd6,0x4a,0xe8,0x10,0x72,0x92,0x72,0x8c,0xb1,0x75, 0x8a,0x01, }; -static const uint8_t wvc_standard_012b[] = { +static const uint8_t vcb_standard_012b[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x80,0x54,0x52,0x59,0x67,0x9d,0x76,0xda,0x69,0xe7,0x9d,0x77,0x62,0x8a,0x29,0xa6,0xb8,0xe6,0x9a,0xab,0xb6,0xd9,0xe6,0xab,0xb1,0xc6, 0x3a,0x6b,0xbd,0xb5,0xde,0xde,0xef,0xae,0xfb,0xee,0xba,0xf3,0xbe,0xbb,0xee,0xba,0xef,0xae,0xbb,0xee,0x9c,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7, 0xde,0x7b,0x6f,0x00, }; -static const uint8_t wvc_standard_012c[] = { +static const uint8_t vcb_standard_012c[] = { 0x12,0x12,0x20,0xa8,0xb2,0x3b,0x4d,0x44,0xc5,0x44,0x55,0x2c,0x2b,0x3d,0xc5,0x4c,0x45,0xcd,0x4c,0x45,0x32,0xbb,0x4b,0xbd,0x53,0xc4,0x54,0x4c,0x3d,0xac,0x3b,0xc4, 0x4c,0x55,0x45,0x4d,0xd4,0xbb,0xc3,0xc3,0x54,0x44,0xd5,0x44,0xd4,0x3c,0x3d,0x3c,0xc5,0xc4,0x54,0xcd,0xc4,0xcc,0x3b,0xcc,0x4c,0x54,0x4c,0x55,0xd5,0x44,0x45,0x54, 0xcd,0x53,0x55,0xcc,0xd4,0x54,0x45,0x4d,0xd4,0xcc,0x4c,0xd4,0xd4,0x44,0x4c,0xc5,0x4b,0xd5,0x4c,0x45,0x4d,0xd5,0x54,0xc4,0xcb,0x43,0xc5,0xcb,0x44,0x4d,0x4d,0x45, @@ -1836,26 +1830,26 @@ static const uint8_t wvc_standard_012c[] = { 0x54,0x4d,0x4d,0x55,0xd4,0xd4,0xc4,0xc4,0x4c,0x55,0x55,0x4c,0x4c,0xd5,0x54,0x55,0x55,0x4d,0xd5,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_012d[] = { +static const uint8_t vcb_standard_012d[] = { 0x42,0x06,0xa8,0x41,0xa2,0x49,0xc5,0x1c,0x94,0x48,0x88,0xc4,0x90,0x62,0x8e,0x82,0x10,0x42,0x08,0x21,0x84,0xd0,0x0c,0x58,0x50,0x39,0x69,0x39,0x65,0x20,0x2a,0xc5, 0x20,0xe5,0xca,0x80,0xa5,0x0c,0x72,0xd4,0x2b,0x05,0x9e,0x42,0x0a,0x62,0xef,0x20,0xa8,0xd0,0x39,0x8a,0x41,0xb4,0xa0,0x6b,0x6c,0xb1,0x06,0x97,0x83,0x10,0x42,0xf8, 0x20,0x04, }; -static const uint8_t wvc_standard_012e[] = { +static const uint8_t vcb_standard_012e[] = { 0x12,0x05,0x20,0x99,0x21,0x32,0xbb,0x1b,0xa2,0x2a,0x33,0xc4,0x19,0xaa,0x32,0x43,0xa4,0x2a,0xb3,0x3b,0x44,0xaa,0x32,0xbb,0x43,0x34,0xb3,0x3b,0xc4,0x4c,0x33,0xbb, 0x43,0xcc,0x3c,0xc4,0xc4,0x4c,0xd5,0x43,0xc4,0xcc,0x54,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_012f[] = { +static const uint8_t vcb_standard_012f[] = { 0x14,0x05,0xe0,0x90,0x92,0x94,0xa4,0xb4,0xde,0x13,0x9f,0xf8,0xd6,0x7b,0x5e,0xf4,0x22,0x80,0xf4,0x9e,0xd6,0xbc,0x97,0xde,0xd3,0x9e,0xf7,0x00,0xa4,0xf8,0xbc,0xa7, 0xb5,0xf4,0xa2,0xf7,0xb4,0x16,0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0130[] = { +static const uint8_t vcb_standard_0130[] = { 0x92,0x0a,0x20,0x18,0xc9,0xcc,0xcc,0xcc,0xcc,0x9c,0xab,0xcc,0xcc,0xcc,0xcc,0xcc,0x39,0xcb,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x80,0x4b,0x15,0x0e,0x00,0xba,0x0f,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0131[] = { +static const uint8_t vcb_standard_0131[] = { 0x12,0x12,0xa0,0x20,0xaa,0xb2,0x32,0xbb,0xbb,0xbb,0xbb,0xcb,0x2a,0x33,0xb3,0x3b,0x44,0x44,0x44,0xc4,0xac,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44,0x4c,0x33,0xb3,0xbb, 0x43,0x44,0x44,0x44,0xc4,0xcc,0x34,0xbb,0x43,0x44,0x44,0x44,0x44,0x4c,0xd5,0xbb,0x3b,0x44,0x44,0xc4,0x4c,0xcc,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0xcc,0xd4,0xcc, 0x3b,0x44,0x44,0x44,0x44,0xc4,0xc4,0xcc,0x54,0xbd,0x43,0x44,0x44,0x44,0x44,0x54,0x55,0x55,0x44,0x44,0x44,0xc4,0xc4,0x44,0x55,0x55,0xc5,0x43,0x44,0x44,0xc4,0x4c, @@ -1863,44 +1857,44 @@ static const uint8_t wvc_standard_0131[] = { 0x44,0x4c,0x54,0x4d,0x55,0xd5,0x4c,0x44,0x44,0xc4,0xc4,0xd4,0x54,0x55,0x55,0x45,0x4c,0x44,0x44,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0132[] = { +static const uint8_t vcb_standard_0132[] = { 0x92,0x0a,0x20,0x98,0x31,0xbb,0xbb,0x43,0xcc,0x9c,0xaa,0x3b,0x44,0xc4,0xcc,0xd5,0xa9,0xba,0x43,0x44,0xcc,0xd4,0xb5,0x3b,0xc4,0xcc,0xcc,0x5d,0x5e,0xbb,0x43,0xcc, 0xcc,0xd4,0xdd,0x3d,0xc4,0x4c,0x55,0xd5,0x5d,0xe6,0x43,0xcc,0x54,0x55,0x5d,0x66,0x3e,0xc4,0x4c,0xd5,0x5d,0xe6,0xee,0x43,0xcc,0x54,0xdd,0x65,0xee,0xc6,0x4c,0x5d, 0x5e,0xee,0xee,0x6e,0xcc,0xd4,0x5d,0x66,0xee,0xee,0x4e,0xd5,0x5d,0xe6,0x6e,0x77,0xf7,0x54,0xdd,0x65,0xee,0xee,0x76,0x0f,0x00,0xe0,0x09,0x0e,0x00,0x40,0x05,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0133[] = { +static const uint8_t vcb_standard_0133[] = { 0x92,0x07,0xa0,0x20,0xaa,0x32,0xbb,0xbb,0x9b,0x2a,0xb3,0xb3,0xbb,0xbb,0xa9,0x32,0x33,0xbb,0xbb,0x2b,0x33,0xb3,0xbb,0xbb,0xc3,0x32,0x33,0xbb,0xbb,0x43,0x34,0xb3, 0xbb,0x3b,0x44,0x44,0x33,0xbb,0xbb,0x43,0x44,0xbc,0xbb,0x3b,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0xbc,0x3b,0x3c,0x44,0x44,0xc4,0xbb,0x43,0x44,0x44,0x44,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0134[] = { +static const uint8_t vcb_standard_0134[] = { 0x92,0x0a,0x20,0x98,0x31,0x33,0xbb,0x43,0xcc,0x9c,0x2a,0x44,0x44,0xc4,0x4c,0xd5,0xa9,0x3a,0x44,0x44,0x4c,0x5d,0xb5,0xc3,0xcc,0x4c,0x4d,0xdd,0x65,0x43,0xcc,0xcc, 0xcc,0xd4,0x65,0x36,0xbc,0x4c,0x55,0xdd,0x65,0x6e,0x43,0xcc,0x54,0xd5,0x65,0x66,0x3e,0xc4,0x54,0xdd,0x5d,0x66,0xe6,0x43,0x4c,0x55,0xdd,0x65,0xee,0xc6,0xcc,0xd5, 0x65,0xe6,0x66,0x66,0xcc,0x54,0xdd,0xe5,0x66,0x6e,0x4e,0xd5,0xe5,0xee,0xf6,0xee,0xee,0x54,0xdd,0x65,0xe6,0xee,0xf6,0x0e,0x00,0x08,0x0d,0x0e,0x00,0x60,0x07,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0135[] = { +static const uint8_t vcb_standard_0135[] = { 0x12,0x0e,0x20,0x28,0x42,0xcc,0x2c,0x43,0xcc,0xcc,0xa4,0xbc,0xbc,0xcc,0xbb,0xc4,0xcc,0x4c,0x3a,0xcc,0xcc,0xbc,0xcc,0xcc,0xcc,0xc4,0xcc,0xcc,0x4c,0xc4,0xcc,0xcc, 0x4c,0xc4,0xc3,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xbc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xac,0xbb,0xcc,0xbc,0xcc,0xcc,0xcc,0x4c,0xba, 0xcb,0x4c,0xc4,0xcc,0xcc,0xcc,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x0c,0x00,0xdc,0x0d,0x0e,0x00,0x10,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0136[] = { +static const uint8_t vcb_standard_0136[] = { 0x12,0x05,0x28,0x21,0xce,0x39,0x27,0xad,0x26,0x42,0x31,0xe6,0xa4,0xf5,0x4c,0x31,0xe8,0xa4,0xd5,0xde,0x29,0x67,0x10,0x83,0x14,0x33,0xe5,0x90,0x62,0x90,0x6a,0xe7, 0x24,0x63,0xca,0x49,0x0c,0xa9,0x85,0x90,0x39,0x69,0x25,0xe6,0x94,0x4a,0x28,0x31,0xf6,0x60,0x73,0x8d,0x35,0x08, }; -static const uint8_t wvc_standard_0137[] = { +static const uint8_t vcb_standard_0137[] = { 0x14,0x05,0x20,0x98,0xa9,0x2a,0xab,0x1a,0xb3,0xc4,0xcc,0xc4,0x31,0xcb,0x4c,0xcd,0xac,0x4c,0x55,0xd5,0xcc,0x4a,0x54,0x55,0xcd,0xac,0x4c,0x55,0xd5,0x4c,0x53,0x55, 0xd5,0x5d,0xad,0x4c,0xcd,0x54,0xd5,0xca,0x4c,0x4d,0x55,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0138[] = { +static const uint8_t vcb_standard_0138[] = { 0x92,0x07,0x20,0x22,0xaa,0x32,0x33,0x33,0xa3,0xaa,0x2a,0x33,0xb3,0x33,0xaa,0xaa,0x32,0x33,0x33,0xab,0x2a,0x33,0x33,0xb3,0xbb,0xaa,0x32,0x33,0x33,0xbb,0x33,0x33, 0xb3,0xb3,0xbb,0x3b,0x33,0x33,0xb3,0xbb,0xbb,0x33,0xb3,0xb3,0xbb,0xbb,0x3b,0x33,0xb3,0xbb,0xbb,0xbb,0xb3,0xb3,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0139[] = { +static const uint8_t vcb_standard_0139[] = { 0x18,0x9a,0xe1,0x71,0x0e,0x90,0xd6,0x02,0xd2,0x5a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5a,0x03,0xda,0x7b,0xc0,0x6a,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0xc0,0x7a,0x0d,0x68,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -1930,41 +1924,41 @@ static const uint8_t wvc_standard_0139[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_013a[] = { +static const uint8_t vcb_standard_013a[] = { 0x14,0x27,0xe0,0x70,0x0e,0x5a,0x43,0x6b,0x78,0x0f,0x70,0xd6,0xc2,0x7b,0x78,0x0f,0x31,0x02,0xce,0x5a,0x78,0x0f,0xef,0x21,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xda,0x7b,0xa8,0x15,0xb5,0xe2,0x56,0x40,0x7b,0x0f,0xb3,0xa2,0x56,0xd4,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x7a,0x0f,0xb5,0xa2, 0x56,0xdc,0x0b,0x58,0xef,0x61,0x56,0xcc,0x8a,0x5a,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x31,0xa2,0x5e,0xd4,0x8b,0x5b,0x01,0x6f,0x46,0xdc,0x8a, 0x5b,0x51,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x06,0x1c,0x00,0x00, 0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_013b[] = { +static const uint8_t vcb_standard_013b[] = { 0x92,0x07,0x20,0xa1,0xa9,0x32,0xbb,0xbb,0xd3,0x99,0x2a,0xb3,0xbb,0x3b,0x9d,0xa9,0x32,0xbb,0xbb,0xd3,0xaa,0xaa,0xbb,0x3b,0x44,0x55,0xad,0xb2,0xbb,0x3b,0x54,0x55, 0xb3,0xbb,0xbb,0x3b,0x55,0x35,0xbb,0xbb,0xbb,0x53,0xd5,0xbb,0xbb,0xbb,0x3b,0x55,0xcd,0xbc,0xbb,0xbb,0x53,0xd5,0xcc,0xbb,0xbb,0x3b,0x55,0xcd,0x34,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_013c[] = { +static const uint8_t vcb_standard_013c[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xe7,0x9c,0x93,0x92,0x4a,0x85,0x10,0x63,0xce,0x41,0x28,0xa5,0xa5,0x0a,0x21,0xc6,0x9c,0x83,0x50,0x4a,0x4b,0x51,0x63,0x8c,0x41,0x28, 0x25,0xa5,0xd6,0xa2,0xc6,0x18,0x83,0x50,0x4a,0x4a,0xad,0x45,0xd7,0x42,0x28,0x25,0xa5,0x94,0x5a,0x8b,0xae,0x85,0x50,0x4a,0x4a,0xad,0xb5,0x16,0xa5,0x54,0xa9,0x94, 0xd4,0x5a,0x8b,0x31,0x4a,0xa9,0x52,0x29,0xad,0xb5,0x16,0x63,0x94,0x52,0xe7,0x94,0x5a,0x8b,0x31,0xc6,0x28,0xa5,0xee,0x29,0xb5,0x16,0x63,0xad,0x51,0x4a,0xe9,0x64, 0x8c,0x31,0xc6,0x5a,0x9b,0x73,0xce,0xc9,0x18,0x63,0x8c,0xb5,0x16,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_013d[] = { +static const uint8_t vcb_standard_013d[] = { 0x11,0x03,0x0c,0x01,0x40,0x10,0x8a,0x66,0x00,0x00,0x4c,0x70,0x00,0x00,0x08,0xb0,0x82,0x5d,0x99,0xa5,0x55,0x1b,0xc5,0x4d,0x9d,0xe4,0x45,0x1f,0x04,0x3e,0xa1,0x23, 0x36,0x23,0x43,0x2e,0xa5,0x62,0x26,0x27,0x82,0x1e,0xa9,0xa1,0x16,0x2b,0xc1,0x0e,0xad,0xe0,0x06,0x2f,0x00,0x03, }; -static const uint8_t wvc_standard_013e[] = { +static const uint8_t vcb_standard_013e[] = { 0x12,0x05,0xe0,0x70,0xca,0x5a,0xad,0xc5,0x28,0xa5,0xd6,0x5e,0x8b,0x51,0x4a,0xad,0xbd,0x17,0xa3,0xd6,0xde,0x7b,0x6f,0x4e,0xbc,0xf7,0xde,0x9c,0x88,0x31,0xc6,0x5a, 0x11,0x63,0x8c,0xb5,0x62,0xce,0x39,0x6b,0x05,0x31,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_013f[] = { +static const uint8_t vcb_standard_013f[] = { 0x42,0x06,0xa0,0xaa,0xcd,0x4c,0xcc,0xdd,0x82,0xa4,0x2a,0x43,0xed,0xc5,0x53,0x3b,0x54,0xf6,0xa4,0xb5,0x33,0xdc,0xf6,0x2c,0x3b,0x2a,0xc3,0x6d,0xac,0xb3,0x2a,0xc3, 0x5d,0x34,0x44,0xab,0xb2,0xcc,0xc4,0xd4,0xb3,0xaa,0xcb,0x55,0x66,0xcd,0xbb,0x4b,0x65,0xf7,0xe6,0xbc,0x43,0x00, }; -static const uint8_t wvc_standard_0140[] = { +static const uint8_t vcb_standard_0140[] = { 0x12,0x05,0xe0,0x71,0xca,0x5a,0xad,0xc5,0xe8,0x9c,0xb5,0x5a,0x8b,0xd1,0x39,0x6b,0xb5,0x16,0xa3,0xb5,0x5a,0x6b,0x2d,0x46,0xb4,0xd5,0x5a,0x8c,0x78,0xef,0xbd,0x39, 0xf1,0xde,0x7b,0x73,0x22,0xc6,0x18,0xe7,0x04,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0141[] = { +static const uint8_t vcb_standard_0141[] = { 0x12,0x12,0xa0,0x98,0xa9,0x32,0x33,0x33,0xbb,0xbb,0xbb,0x4b,0x33,0x33,0xb3,0xbb,0x3b,0x44,0x44,0xc4,0x34,0x33,0xbb,0xbb,0xbb,0x43,0x44,0x44,0xcc,0xbb,0xbb,0xbb, 0x3b,0x44,0x44,0x44,0xc4,0xcc,0x3c,0xbb,0xbb,0x43,0x44,0x44,0x44,0x4c,0xd5,0xbb,0x3b,0x44,0x44,0xc4,0x44,0xc4,0xd4,0xbc,0xbb,0x43,0x44,0x44,0xc4,0xcc,0x4c,0xcd, 0x3b,0x44,0x44,0xc4,0x44,0x4c,0x4c,0x4d,0x55,0xbd,0x43,0x44,0x44,0x44,0xcc,0x54,0x55,0x55,0x44,0x44,0xc4,0x44,0xc4,0x4c,0x55,0x55,0x45,0x44,0x44,0x44,0xc4,0xc4, @@ -1972,7 +1966,7 @@ static const uint8_t wvc_standard_0141[] = { 0xcc,0xcc,0xd4,0x54,0x55,0xd5,0x4c,0xc4,0xc4,0xcc,0xcc,0xcc,0x54,0x55,0x55,0x45,0x4c,0x4c,0xcc,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0142[] = { +static const uint8_t vcb_standard_0142[] = { 0x14,0x27,0x20,0x21,0xba,0x23,0x33,0xc4,0x32,0x43,0x3c,0x44,0xcd,0x43,0x54,0x2d,0x33,0x44,0xbb,0xcb,0xb4,0x3b,0x4c,0xcc,0x54,0x45,0x4c,0xd5,0x32,0x43,0xb4,0xbb, 0x44,0xbb,0xcb,0xc4,0x44,0x55,0xcc,0x54,0x3d,0x44,0x55,0xcc,0x5c,0xc5,0x4c,0x5d,0x55,0x65,0x56,0xd5,0xe5,0x43,0x54,0xc5,0x4c,0x55,0xcc,0x5c,0xd5,0x55,0x5e,0xd5, 0x65,0x2e,0x33,0x44,0xbb,0xcb,0xb4,0xbb,0x4c,0xcc,0x5c,0xc5,0x4c,0x5d,0xbb,0xcb,0x3c,0x44,0xd5,0x43,0xcc,0x4c,0xd5,0xdd,0x4c,0xdd,0xb5,0xbb,0xcc,0xc3,0xcb,0x3c, @@ -1985,15 +1979,15 @@ static const uint8_t wvc_standard_0142[] = { 0xdd,0x6d,0x56,0x55,0x66,0xdd,0x6d,0x56,0x5d,0x66,0x66,0xf6,0xde,0x65,0x76,0xdd,0x65,0xde,0x5d,0x6e,0xdd,0x65,0x66,0xee,0x76,0x66,0xee,0x0e,0x00,0x00,0x03,0x0e, 0x00,0x00,0x01,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_0143[] = { +static const uint8_t vcb_standard_0143[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0x44,0x45,0xb4,0x4c,0xd5,0x54,0xd5,0x42,0xd4,0x4c,0xcd,0x2c,0x44,0xcd,0xd4,0x4c,0x53,0x5d, 0xd5,0x55,0x2d,0x44,0xcd,0xd4,0xcc,0x42,0xd4,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0144[] = { +static const uint8_t vcb_standard_0144[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0x44,0x45,0xb4,0x4c,0xd5,0x54,0xd5,0x42,0xd4,0x4c,0xcd,0x2c,0x44,0xcd,0xd4,0x4c,0x53,0x5d, 0xd5,0x55,0x2d,0x44,0xcd,0xd4,0xcc,0x42,0xd4,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0145[] = { +static const uint8_t vcb_standard_0145[] = { 0x14,0x27,0xe0,0x92,0xd2,0x7b,0x52,0x7a,0x4f,0x4a,0xef,0x69,0x2d,0x46,0xc4,0xb8,0x5a,0x8b,0xcf,0x7b,0x31,0x7a,0x2d,0x46,0x71,0xce,0x89,0x3a,0x57,0x6b,0x2f,0x7a, 0x2f,0x46,0xed,0xc5,0x68,0xc6,0x3a,0x31,0xe7,0x8b,0x6f,0x4e,0x73,0xde,0x6a,0xce,0x5a,0xdd,0x9c,0x33,0xf2,0x7d,0x2f,0xce,0x69,0xce,0x7a,0xcd,0x59,0xab,0x7c,0x73, 0x46,0xce,0x00,0x00,0x00,0xd6,0x6b,0x73,0x6a,0x6d,0x46,0xad,0xcd,0x29,0xc6,0x39,0x31,0xe7,0x6a,0x6f,0x4e,0xad,0xc5,0xa9,0xb5,0x39,0xc5,0x38,0x27,0xe6,0x7c,0x31, @@ -2004,27 +1998,27 @@ static const uint8_t wvc_standard_0145[] = { 0xf7,0xe2,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc4,0x3a,0x73,0x36,0xe7,0xbd,0xe6,0xbc,0x57,0xbd,0xf7,0xe2,0xde,0x38,0x6b,0xce,0xe6,0xbc,0xd7,0x9c, 0xf7,0xba,0x35,0x5f,0xdc,0x1b,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0146[] = { +static const uint8_t vcb_standard_0146[] = { 0x92,0x0a,0x28,0x30,0x86,0x31,0xc6,0x98,0x72,0xce,0x39,0xa5,0x94,0x73,0xce,0x39,0x06,0x9d,0x94,0x48,0x29,0xe7,0x20,0x74,0x4e,0x4a,0x29,0x3d,0x84,0x10,0x42,0x08, 0x9d,0x84,0x94,0x7a,0x07,0x21,0x84,0x10,0x42,0x29,0x29,0xf5,0x18,0x43,0x28,0x21,0x94,0x94,0x52,0xeb,0xb1,0x86,0x4e,0x3a,0x08,0xa5,0xb4,0xd4,0x6b,0x0f,0x21,0x84, 0x94,0x5a,0x6a,0xa9,0xf7,0x1e,0x32,0xa8,0x28,0xa5,0x92,0x52,0xef,0x3d,0xb5,0x50,0x52,0x6a,0x29,0xc6,0xde,0x7b,0x4b,0x25,0xb3,0xd2,0x5a,0x6b,0xbd,0xe7,0xde,0x4b, 0x2a,0x29,0xc6,0xda,0x7a,0xef,0x39,0xb7,0x92,0x52,0x4c,0x2d,0x16,0x00,0x4c,0x22,0x1c,0x00,0x10,0x17,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0147[] = { +static const uint8_t vcb_standard_0147[] = { 0x14,0x05,0xa0,0x98,0xa1,0x2a,0xaa,0x22,0x33,0xbb,0x2b,0x43,0x32,0xab,0x33,0xc3,0x1b,0x33,0xc3,0xb3,0x3b,0xc3,0xbb,0x4b,0xcc,0xac,0x3b,0xcb,0xc3,0x4c,0x32,0xb3, 0x3b,0x3b,0xac,0x3b,0xcc,0xb4,0xcb,0x3a,0xc4,0xcc,0xcb,0x0b,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0148[] = { +static const uint8_t vcb_standard_0148[] = { 0x12,0x12,0xe0,0x51,0x4a,0x4a,0x6b,0xb5,0xd6,0xda,0x7b,0x31,0xce,0x89,0xb5,0x5a,0x7b,0xef,0xbd,0x18,0xe7,0xac,0x15,0x6b,0xb5,0xf6,0xde,0x7b,0x31,0xce,0x39,0x2b, 0xd6,0x7a,0xef,0xbd,0x18,0xe7,0x9c,0xb5,0x56,0xac,0xf5,0x5e,0x8c,0x31,0xce,0x59,0x6b,0xad,0x68,0xed,0xbd,0x18,0x63,0x9c,0xb3,0xd6,0x7b,0xd1,0xda,0x7b,0x31,0xc6, 0x38,0x67,0xad,0xf7,0xa2,0xb5,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0xef,0x05,0xef,0xc5,0x38,0x67,0xad,0xf7,0xde,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_0149[] = { +static const uint8_t vcb_standard_0149[] = { 0x02,0x04,0x20,0xc2,0x5e,0xe7,0x64,0x1b,0xaa,0xb3,0x5b,0x1e,0x21,0x2a,0xf4,0x2d,0xaa,0x2a,0xeb,0xb6,0xa9,0xa9,0xf3,0xad,0x22,0xa2,0x6a,0xb4,0x2b,0xa3,0xc9,0xe4, 0x6e,0xcf,0x3a,0x00, }; -static const uint8_t wvc_standard_014a[] = { +static const uint8_t vcb_standard_014a[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xa5,0x18,0x84,0x4a,0x29,0x08,0xa1,0x84,0x94,0x42,0x28,0x29,0x55,0x8c,0x49,0xc8,0x98,0x83,0x92,0x31,0x27,0xa5,0x94,0x52,0x5a,0x08, 0x25,0xb5,0x8a,0x31,0x08,0x99,0x63,0x52,0x32,0xc7,0xa4,0x84,0x12,0x5a,0x2a,0x25,0xb4,0x12,0x4a,0x69,0xa9,0x94,0xd2,0x5a,0x28,0xa5,0xb5,0x96,0x5a,0x8c,0x29,0xb5, 0x16,0x43,0x29,0xa9,0x85,0x52,0x5a,0x2b,0xa5,0xb4,0x96,0x5a,0xaa,0x31,0xb5,0x56,0x63,0xc4,0x98,0x94,0xcc,0x39,0x29,0x99,0x63,0x52,0x4a,0x29,0xad,0x95,0x52,0x5a, @@ -2039,20 +2033,20 @@ static const uint8_t wvc_standard_014a[] = { 0xb1,0xa4,0x12,0x63,0x6b,0x31,0xe6,0x18,0x5b,0x8e,0xa9,0xb5,0x5a,0x5b,0x6c,0xb9,0xa6,0xd4,0x62,0xad,0xb5,0xf6,0x1c,0x5b,0x6e,0x3d,0xa5,0x16,0x6b,0x8b,0xb1,0xe6, 0xd2,0x52,0x8d,0x35,0xd7,0xde,0x63,0x4d,0x39,0x15,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_014b[] = { +static const uint8_t vcb_standard_014b[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0xc4,0x44,0xb4,0x4c,0x4d,0xd5,0xd4,0x42,0xd4,0x4c,0xcd,0x2c,0x44,0x4d,0xd5,0x4c,0xd3,0x54, 0xd5,0x55,0x2d,0x44,0xcd,0x54,0xcd,0x42,0xd4,0xcc,0x4d,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_014c[] = { +static const uint8_t vcb_standard_014c[] = { 0x92,0x0a,0x20,0x98,0xa9,0xaa,0xc2,0xc3,0xbb,0x23,0x33,0xb3,0xbb,0xcb,0xcb,0x43,0x32,0x3b,0xb3,0xcb,0xd4,0x5c,0xb5,0x3b,0x44,0x4c,0x55,0x55,0x55,0xbb,0x3b,0x44, 0xcc,0x4c,0xd5,0xb5,0x3b,0xc4,0x54,0x5d,0x5d,0x55,0xbb,0x43,0xcc,0x54,0xd5,0x5d,0xbd,0xcc,0x4c,0xd5,0xd6,0xdd,0x65,0xcc,0xcc,0x5c,0x6d,0x6d,0x5d,0x4e,0x55,0x55, 0xd6,0x6e,0x66,0x6e,0x55,0x5d,0xdd,0x5d,0xee,0xe6,0x5e,0xdd,0xdd,0x65,0xe6,0xe6,0x6e,0xdd,0xed,0x65,0x5e,0xe6,0xee,0x0e,0x00,0x38,0x0d,0x0e,0x00,0xa0,0x07,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_014d[] = { +static const uint8_t vcb_standard_014d[] = { 0x01,0x04,0x60,0x00,0x00,0x00,0x65,0x9c,0xb2,0x4a,0x2b,0x2f,0xbd,0xf5,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0x5e,0x03, }; -static const uint8_t wvc_standard_014e[] = { +static const uint8_t vcb_standard_014e[] = { 0x92,0x1b,0x20,0x21,0xaa,0x32,0x33,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0xbb,0x3b,0x44,0x44,0x44,0x44,0xc4,0xac,0x32,0xbb,0xbb,0xbb,0xc3,0x43,0x44, 0x44,0x44,0x4c,0xb3,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0xc4,0x54,0x3d,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0xd5,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x55,0xbd,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x55,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x55,0x55,0x45,0x44,0x44,0x44,0x44,0x44,0xc4, @@ -2062,7 +2056,7 @@ static const uint8_t wvc_standard_014e[] = { 0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0x4c,0xcc,0x54,0x55,0x55,0x55,0xd5,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0x54,0x55,0x55,0x55,0x4d,0xc5,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_014f[] = { +static const uint8_t vcb_standard_014f[] = { 0x92,0x1b,0x20,0x20,0xb2,0x3b,0x43,0xc4,0x5d,0xdd,0xcd,0xd4,0xdd,0xd5,0xdd,0xc3,0x33,0xcc,0x54,0x4d,0xdd,0xdc,0xdc,0x5d,0x5d,0xc5,0x3b,0x4c,0x3c,0xcc,0x5d,0xd5, 0xd5,0xd4,0xd5,0xdd,0x43,0xc4,0xd4,0xd5,0x55,0x55,0xdd,0x55,0xdd,0x55,0x45,0x3c,0x44,0x45,0x4c,0x54,0x55,0x5d,0xd5,0xdc,0x5d,0x5c,0x4d,0x55,0xd5,0xdd,0x55,0xd5, 0xcd,0xdd,0xcd,0xc4,0xc4,0x4c,0x44,0xcc,0xdc,0x54,0x45,0xd5,0x54,0xd5,0xcc,0x44,0xcc,0x44,0x4c,0xd5,0xd4,0xd4,0x54,0x4d,0x55,0x4d,0xcc,0xc4,0x44,0x54,0x44,0xcd, @@ -2072,81 +2066,81 @@ static const uint8_t wvc_standard_014f[] = { 0x55,0xcd,0x4c,0x55,0xc5,0xcc,0x4c,0x4c,0x4c,0x4d,0xcd,0x54,0x4d,0x55,0x55,0x4d,0xcd,0x4c,0x54,0x4d,0x55,0x55,0x55,0x55,0x4d,0xcd,0xcc,0xd4,0x4c,0xc5,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_0150[] = { +static const uint8_t vcb_standard_0150[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x9a,0x66,0x9a,0xae,0x2b,0xcb,0xc6,0xb0,0x58,0x96,0x28,0xaa,0xaa,0x2c,0xdb,0xb6,0x31,0x2c,0x96,0x25,0x8a,0xaa,0x2a,0xcb,0xb6,0x2d,0x1c, 0x9b,0x28,0xaa,0xaa,0x2c,0xdb,0xb6,0xae,0xa3,0x89,0xa2,0xaa,0xca,0xb2,0x6d,0xeb,0xbe,0x72,0x9c,0xaa,0x2a,0xcb,0xb6,0xed,0xeb,0xc2,0x91,0xa9,0xaa,0xb2,0x6c,0xdb, 0xba,0xee,0x1b,0xa9,0xb2,0x6c,0xdb,0xba,0x2e,0x0c,0x95,0x54,0x59,0xb6,0x6d,0x5b,0xf7,0x8d,0x4a,0xb2,0x6d,0xeb,0xba,0x31,0x1c,0x47,0x25,0xd9,0xb6,0x75,0xdf,0xf7, 0x8d,0x63,0x89,0x2f,0x0c,0x85,0x65,0xa9,0x84,0xaf,0xfc,0xc2,0x51,0x09,0x04,0x00,0xf0,0x04,0x07,0x00,0xa0,0x02,0x1b,0x56,0x47,0x38,0x29,0x1a,0x0b,0x0c, }; -static const uint8_t wvc_standard_0151[] = { +static const uint8_t vcb_standard_0151[] = { 0x41,0x00,0x10,0x4c,0x00, }; -static const uint8_t wvc_standard_0152[] = { +static const uint8_t vcb_standard_0152[] = { 0x91,0x01,0x58,0x00,0xaa,0xae,0xae,0xee,0xf2,0xf2,0x36,0x17, }; -static const uint8_t wvc_standard_0153[] = { +static const uint8_t vcb_standard_0153[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xc6,0x20,0x94,0xd4,0x5a,0x85,0x10,0x63,0xce,0x49,0x69,0xa9,0xb5,0x0a,0x21,0xc6,0x9c,0x93,0xd2,0x52,0x6b,0x41,0x63,0xce,0x41,0x28, 0xa5,0xb5,0x18,0x8b,0xc6,0x1c,0x83,0x50,0x4a,0x6b,0x2d,0x26,0x53,0x3a,0x27,0x25,0xa5,0xd6,0x62,0x4d,0xaa,0x74,0x4c,0x4a,0x4a,0xad,0xc5,0x96,0x94,0x32,0xa5,0x94, 0x94,0x5a,0x8b,0x31,0x29,0xa5,0x42,0x0a,0xb5,0xc5,0x16,0x63,0x72,0x46,0xd6,0x94,0x5a,0x8b,0xb1,0xc6,0xe6,0x9c,0x8e,0xa9,0xc4,0x14,0x63,0x8d,0xcd,0x39,0xe7,0x64, 0x6d,0x2d,0xc6,0x18,0x9b,0x73,0xce,0xc9,0xd8,0x5a,0x8f,0x39,0x16,0x00,0x30,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0154[] = { +static const uint8_t vcb_standard_0154[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0xa3,0x3b,0xc3,0x34,0x44,0xba,0xb3,0x44,0x43,0xa4,0xbb,0xcb,0xbc,0x4c,0xcb,0xc4,0xdc,0xdc,0xb5,0x4c,0x5c,0xcd,0x5d,0xba,0xbb, 0xcc,0xcb,0xb4,0xcc,0xdc,0x45,0x5d,0xcb,0xcc,0x5d,0xdc,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0155[] = { +static const uint8_t vcb_standard_0155[] = { 0x92,0x0a,0xa0,0x20,0xaa,0x32,0x3b,0xbb,0xbb,0xa3,0x2a,0xb3,0xbb,0xbb,0xbb,0x3b,0xaa,0x32,0x3b,0xbb,0xbb,0xbb,0x2b,0x33,0xbb,0xbb,0x3b,0x44,0xc4,0x32,0x3b,0xbb, 0x43,0x44,0x44,0xb4,0xbb,0xbb,0x3b,0x44,0x44,0x44,0xbb,0xbb,0xbb,0x43,0x44,0x44,0xbc,0xbb,0x43,0x44,0x44,0x44,0xc4,0xbb,0x43,0x44,0x44,0x44,0x44,0xbc,0x43,0x44, 0x44,0x44,0x44,0xc4,0x43,0x44,0x44,0x44,0x44,0x44,0x3c,0x44,0x44,0x44,0x44,0x44,0xc4,0x43,0x44,0x44,0x44,0x44,0x44,0x0c,0x00,0x80,0x05,0x0e,0x00,0x00,0x01,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0156[] = { +static const uint8_t vcb_standard_0156[] = { 0x92,0x07,0xa0,0x21,0xaa,0x32,0x33,0x33,0xa3,0x2a,0x33,0x33,0x33,0x33,0xaa,0x32,0x33,0x33,0x33,0x2b,0x33,0x33,0x33,0xb3,0xbb,0x32,0x33,0x33,0x33,0xb3,0x33,0x33, 0x33,0xb3,0xbb,0x3b,0x33,0x33,0x33,0xbb,0xbb,0x33,0xb3,0xb3,0xbb,0xbb,0x3b,0x33,0x33,0xbb,0xbb,0xbb,0x33,0xb3,0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0157[] = { +static const uint8_t vcb_standard_0157[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0x32,0xa3,0xbb,0xcb,0x34,0x4c,0xba,0xb3,0xc4,0xcb,0xa4,0xbb,0xcb,0xbc,0xcc,0xcb,0xcc,0xe5,0x64,0xb6,0xcc,0x64,0x4d,0xe6,0xb9,0x3b, 0xcd,0xcb,0xb4,0xcc,0x64,0x4e,0xe5,0x4b,0x4d,0xe6,0xe4,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0158[] = { +static const uint8_t vcb_standard_0158[] = { 0x12,0x05,0xa8,0x72,0xd8,0x62,0xcd,0xbd,0x37,0xc2,0x30,0xe5,0x28,0xe6,0xd2,0x18,0xa7,0x1c,0xd5,0xa0,0x22,0x85,0x94,0xb3,0x1a,0x54,0x84,0x14,0x62,0x12,0x7b,0xab, 0x98,0x63,0x4e,0x62,0x8e,0x9d,0x63,0xcc,0x49,0xcb,0x39,0x63,0x08,0x31,0x68,0x35,0x77,0x4e,0x29,0xe6,0x24,0x05, }; -static const uint8_t wvc_standard_0159[] = { +static const uint8_t vcb_standard_0159[] = { 0x12,0x0e,0x20,0xc8,0xcc,0xcc,0xcc,0xcc,0xcc,0xa4,0xc9,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0x9c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x2a,0xca,0xcc,0x44,0x44,0x44,0x44,0x24,0x0a,0x20,0x5d,0x19,0x0e,0x00,0x00,0x01,0xd6,0xa4,0xab,0x17,0xa9, 0x2e,0x63,0x74,0x30,0xba,0x74,0x65,0x17,0x34,0x3a,0xbc,0xc8,0xd1,0x21,0x00,0x05,0x00,0x48,0xd7,0xc8,0x6a,0xc2,0x02, }; -static const uint8_t wvc_standard_015a[] = { +static const uint8_t vcb_standard_015a[] = { 0x92,0x07,0x20,0x10,0xc9,0xcc,0xcc,0xcc,0x9c,0xcc,0xcc,0xcc,0xcc,0xcc,0xc9,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x44,0x44,0x44,0x44,0x0c, 0x20,0x8e,0x17,0x0e,0x80,0x3e,0x13,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_015b[] = { +static const uint8_t vcb_standard_015b[] = { 0x01,0x04,0xa8,0x30,0x0c,0x1b,0xc4,0xb8,0x63,0xd2,0x7b,0xed,0xbd,0x30,0xcc,0x13,0xc3,0xb4,0x73,0xd2,0x7b,0xcf,0xbd,0x72,0xd4,0x33,0x06,0x3d,0x85,0xd8,0x7b,0xcf, 0xbd,0xf7,0xde,0x6b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0x3d,0x00, }; -static const uint8_t wvc_standard_015c[] = { +static const uint8_t vcb_standard_015c[] = { 0x42,0x06,0x28,0x31,0xa4,0x41,0xe6,0x28,0xb4,0x06,0x90,0xc5,0x98,0x93,0x14,0x8b,0x31,0xc6,0x18,0x63,0x8c,0xf1,0x94,0x78,0x10,0x52,0xab,0x45,0x54,0x22,0x32,0x07, 0xa9,0x15,0x4d,0x89,0xc7,0x18,0x83,0x14,0x3c,0x27,0x22,0x53,0xca,0x51,0x30,0xa5,0xb8,0xd0,0x31,0x68,0x45,0xe6,0xa2,0x63,0x2a,0x29,0x17,0x5b,0x8c,0x31,0xc6,0xf7, 0x62,0x04, }; -static const uint8_t wvc_standard_015d[] = { +static const uint8_t vcb_standard_015d[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0x3b,0xef,0xbc,0xf3,0xd2,0x4b,0x6f,0xbd,0xf3,0xce,0x4b,0x2f,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad, 0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0x35,0x00, }; -static const uint8_t wvc_standard_015e[] = { +static const uint8_t vcb_standard_015e[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0x6b,0xbd,0x87,0xd6,0x5a,0x7b,0x0f,0xad,0xb5,0xf6,0x1e,0x5a,0x7b,0x2f,0x46,0xb4,0xf6,0x5e,0x8c,0x78,0xf1,0xbd,0x39,0xf1,0xde,0x7b, 0x73,0x62,0xce,0x18,0xe7,0x04,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_015f[] = { +static const uint8_t vcb_standard_015f[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0xb2,0xa3,0xbb,0x4b,0xbd,0x54,0xba,0x3b,0xcd,0x53,0x9d,0xbb,0x53,0x3d,0xd5,0x53,0x55,0x6e,0xf5,0x3e,0xd5,0xe4,0xd5,0xee,0xb9,0x3b, 0xd5,0x53,0x35,0x55,0xf5,0xce,0xed,0x53,0xd5,0x6e,0x6d,0x0e,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0160[] = { +static const uint8_t vcb_standard_0160[] = { 0x92,0x16,0x28,0x30,0x86,0x31,0xc6,0x1c,0x83,0x0e,0x42,0x29,0x29,0xa5,0x54,0x21,0xe4,0x1c,0x84,0xd0,0x49,0x48,0xa5,0xb5,0xd8,0x62,0x8c,0x10,0x72,0x0e,0x42,0x08, 0xa5,0xa4,0xd4,0x5a,0x6c,0x31,0x06,0xcf,0x41,0x08,0x21,0x84,0x52,0x5a,0x8a,0x2d,0xc6,0x18,0x8b,0xe7,0x20,0x84,0x10,0x42,0x4a,0xad,0xc5,0x18,0x63,0x8c,0x41,0xb6, 0x10,0x4a,0x29,0x25,0xa5,0xd6,0x5a,0x8c,0xb1,0xd6,0x22,0x5b,0x08,0xa5,0x94,0x92,0x52,0x6b,0x31,0xc6,0x5a,0x6b,0x30,0xc6,0x94,0x52,0x52,0x4a,0xad,0xb5,0x1a,0x6b, @@ -2156,7 +2150,7 @@ static const uint8_t wvc_standard_0160[] = { 0xb9,0x18,0x63,0x84,0x10,0xb6,0xd6,0x56,0x63,0xad,0xb9,0xe6,0x5a,0x8c,0x31,0xc6,0x18,0xe1,0x63,0x8c,0xb5,0xd6,0x9a,0x7b,0x2e,0xc6,0x18,0x63,0x8c,0x10,0x32,0xc6, 0x58,0x63,0xcd,0x39,0x17,0x00,0x72,0x23,0x1c,0x00,0x10,0x17,0x8c,0x24,0xa4,0xce,0x32,0xac,0x34,0xe2,0xc6,0x13,0x30,0x44,0x20,0x01, }; -static const uint8_t wvc_standard_0161[] = { +static const uint8_t vcb_standard_0161[] = { 0x14,0x27,0xe0,0x71,0x4a,0x6b,0x68,0x0f,0xef,0xe1,0x3d,0xbc,0x77,0xd2,0x79,0x0f,0xef,0xe1,0x3d,0xc4,0x88,0x18,0xcf,0x49,0xef,0xe1,0x3d,0xbc,0x87,0x18,0x11,0x63, 0x7b,0x6f,0x4e,0xdc,0x8a,0x5a,0xb1,0x33,0x76,0x6e,0xef,0xc5,0x89,0x7a,0x51,0x2b,0xf6,0x46,0xde,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xef,0xd5,0x8a, 0x5a,0x71,0x2b,0xee,0x45,0xce,0xef,0xbd,0x5a,0x51,0x2b,0xea,0xc5,0xcd,0xc8,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0xbd,0x5b,0x71,0x2b,0x6a,0x45, @@ -2164,52 +2158,52 @@ static const uint8_t wvc_standard_0161[] = { 0x18,0xf3,0xc6,0xcd,0xc8,0x19,0x37,0x23,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xbc,0x18,0x77,0x46,0xce,0xc8,0x17,0x39,0x23,0xdf,0x17,0xe3,0xde,0xc8, 0x19,0x37,0x23,0x67,0xdc,0x1c,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0162[] = { +static const uint8_t vcb_standard_0162[] = { 0x01,0x04,0xa8,0x20,0x0c,0x1b,0xc3,0xb8,0x53,0x10,0xa4,0xcf,0xd1,0x40,0x8c,0x22,0xc4,0x34,0x64,0xd2,0x83,0xee,0xd1,0x61,0x12,0x34,0x06,0x39,0x85,0xd4,0xa3,0xd1, 0xd1,0x48,0x29,0x75,0x10,0x4a,0x2a,0xe3,0xa4,0x94,0x4e,0x00, }; -static const uint8_t wvc_standard_0163[] = { +static const uint8_t vcb_standard_0163[] = { 0x01,0x04,0x68,0x00,0x00,0x00,0xc5,0x31,0x1c,0x45,0x72,0x24,0x49,0x92,0x2c,0xcb,0xb2,0x2c,0xcb,0xd2,0x34,0xcf,0x12,0x35,0x57,0xf5,0x65,0xdf,0xd5,0x65,0xdd,0xb5, 0x5d,0x5d,0xd7,0x01, }; -static const uint8_t wvc_standard_0164[] = { +static const uint8_t vcb_standard_0164[] = { 0x42,0x06,0x28,0x72,0x52,0x53,0x6a,0x3d,0x07,0x09,0x31,0xc8,0x9c,0xc4,0x20,0x34,0x84,0x24,0x62,0x8e,0x62,0x2e,0x9d,0x74,0xce,0x51,0x2e,0xc6,0x43,0xc8,0x11,0xa3, 0xa4,0xf6,0x90,0x29,0x66,0x08,0x82,0x5a,0x4c,0xe8,0xa4,0x42,0x0a,0x6a,0x71,0x2d,0xb5,0x8e,0x39,0xaa,0xc5,0xc6,0x56,0x32,0xa4,0xa0,0x16,0x5b,0x63,0xa9,0x90,0x72, 0xd4,0x03, }; -static const uint8_t wvc_standard_0165[] = { +static const uint8_t vcb_standard_0165[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0xb2,0xa3,0xbb,0x4b,0xbd,0x54,0xba,0x3b,0xcd,0xd3,0x1c,0xc4,0x53,0x3d,0xd5,0x5b,0xcd,0x6d,0x65,0x36,0xd5,0x64,0x55,0xee,0x39,0x3c, 0xd5,0xd3,0x35,0x55,0x6d,0x4e,0xe5,0xd3,0x55,0xe6,0xec,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0166[] = { +static const uint8_t vcb_standard_0166[] = { 0x01,0x04,0x60,0x00,0x00,0x00,0xe3,0x94,0x54,0x52,0x59,0xa7,0x9d,0x96,0xda,0x6a,0xab,0xbd,0x99,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xdf,0x7b,0xef,0x05, }; -static const uint8_t wvc_standard_0167[] = { +static const uint8_t vcb_standard_0167[] = { 0x42,0x06,0x20,0x2a,0x55,0xd5,0xcc,0x55,0x0a,0xa5,0x2a,0x43,0x65,0x4e,0xd3,0xb2,0xc3,0x5c,0x25,0xad,0x33,0xd4,0x76,0xad,0xba,0x21,0xbb,0xe4,0x24,0x33,0xa2,0xba, 0xd4,0x34,0xbb,0x22,0x32,0x44,0xbd,0xd3,0xb3,0x2a,0xc3,0xd5,0x64,0x44,0x33,0x43,0xe5,0xf5,0x55,0xbc,0x3b,0x00, }; -static const uint8_t wvc_standard_0168[] = { +static const uint8_t vcb_standard_0168[] = { 0x21,0x03,0x60,0x00,0x00,0xce,0x38,0x23,0x95,0x74,0xd6,0x5a,0xad,0xbd,0xf6,0xda,0x6b,0xf1,0xc5,0x17,0xdf,0x7c,0x35,0xde,0x78,0x01, }; -static const uint8_t wvc_standard_0169[] = { +static const uint8_t vcb_standard_0169[] = { 0x91,0x00,0x50,0x6d,0xdb,0xb6,0x00, }; -static const uint8_t wvc_standard_016a[] = { +static const uint8_t vcb_standard_016a[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x4a,0x29,0xe5,0x94,0x73,0x52,0x5a,0xab,0xb5,0xf6,0x5e,0x7d,0x31,0xc6,0x59,0x6b,0x8d,0x73,0xd6,0x5a,0xeb,0x9c,0x73, 0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0x4e,0x00, }; -static const uint8_t wvc_standard_016b[] = { +static const uint8_t vcb_standard_016b[] = { 0x12,0x0e,0x20,0x20,0x22,0x42,0xd5,0xcc,0xcc,0xcc,0xb4,0xaa,0xaa,0xcc,0xcc,0xcc,0xcc,0x4c,0xab,0xaa,0x4a,0xcc,0xcc,0xcc,0xcc,0x4c,0xb3,0xc3,0xcc,0xcc,0xcc,0xcc, 0xcc,0x3c,0xcb,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_016c[] = { +static const uint8_t vcb_standard_016c[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0x2b,0xef,0xbc,0xf3,0xd6,0x4b,0xef,0xbc,0xf3,0xd6,0x6b,0xaf,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad, 0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0xb5,0xd6,0x5a,0x6b,0xad,0x35,0x00, }; -static const uint8_t wvc_standard_016d[] = { +static const uint8_t vcb_standard_016d[] = { 0x14,0x27,0xe8,0x21,0x39,0x9e,0x27,0x69,0x96,0x28,0x4a,0x96,0x26,0x8a,0x9e,0x28,0xca,0xae,0x27,0x9a,0xae,0x2c,0x69,0x9a,0x29,0x6a,0xa2,0xa8,0xaa,0x96,0x27,0xaa, 0xaa,0xa9,0xaa,0xb6,0x2d,0x9a,0xaa,0x6c,0x4b,0x9a,0x26,0x8a,0x9a,0xe8,0xa9,0xaa,0x26,0x8a,0xaa,0x2a,0xaa,0xa6,0x2d,0x9b,0xaa,0x6a,0xdb,0x9e,0x69,0xda,0xb2,0xa9, 0xba,0xba,0x2d,0xaa,0xaa,0x6e,0xcb,0xb6,0xed,0xfb,0xae,0x6c,0x0b,0xbf,0x67,0x9a,0xb2,0x2c,0xaa,0xaa,0xad,0x9b,0xaa,0x6b,0xeb,0xae,0x2d,0xfb,0xbe,0x6c,0xeb,0xba, @@ -2226,7 +2220,7 @@ static const uint8_t wvc_standard_016d[] = { 0xdf,0xf8,0x71,0x6d,0x9b,0x6f,0xfb,0x3e,0x63,0xb6,0x75,0x9f,0xf0,0x1b,0xf9,0xbe,0xb0,0x94,0x6d,0x5b,0x68,0x0b,0x3f,0xe5,0xd6,0x75,0x63,0x19,0x7e,0x23,0x5d,0xf9, 0x11,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_016e[] = { +static const uint8_t vcb_standard_016e[] = { 0x14,0x27,0xe0,0x92,0xd2,0x7b,0x52,0x7a,0x4f,0x4a,0xef,0x69,0x2d,0x46,0xc4,0x98,0x5a,0x8b,0xd1,0x6b,0x33,0x7a,0x6d,0x46,0x73,0xd6,0x8a,0x5a,0x53,0x6b,0x31,0x6a, 0x2f,0x4e,0xed,0xc5,0x69,0xce,0x5a,0x51,0xeb,0x8b,0xb1,0x4e,0x75,0xde,0xaa,0xce,0x7b,0xe5,0xbc,0x37,0x76,0x7e,0x31,0xce,0x6a,0xd6,0x7b,0xcd,0x7a,0xaf,0x9c,0xf7, 0x46,0xde,0x00,0x00,0x00,0xd2,0x6b,0x75,0x6a,0x6d,0x4e,0xad,0xcd,0x29,0xc6,0x39,0x51,0x67,0x6a,0x6f,0x56,0xad,0xcd,0xa9,0xb5,0x39,0xc5,0x38,0x27,0xe6,0x7c,0x33, @@ -2237,7 +2231,7 @@ static const uint8_t wvc_standard_016e[] = { 0x37,0x23,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc4,0x5a,0xf7,0x36,0x6b,0xce,0xea,0xcc,0x59,0xbd,0x39,0x23,0xdf,0x58,0xeb,0xde,0xea,0xcc,0xd9,0xac, 0x39,0xbb,0x37,0x67,0xdc,0x1c,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_016f[] = { +static const uint8_t vcb_standard_016f[] = { 0x12,0x12,0xa0,0x20,0xaa,0x32,0x33,0x33,0xbb,0xbb,0xbb,0xcb,0x2a,0xb3,0xb3,0xbb,0xbb,0x43,0x44,0xc4,0xac,0x32,0x33,0xbb,0xbb,0x43,0x44,0x44,0x4c,0x33,0xb3,0xbb, 0x3b,0x44,0x44,0x44,0xc4,0xcc,0x34,0xbb,0x3b,0x44,0x44,0x44,0x44,0x54,0xd5,0xbb,0x3b,0x44,0x44,0x44,0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0x44,0xcc,0xcc, 0x43,0x44,0x44,0x44,0x44,0xc4,0xc4,0xcc,0x54,0x45,0x44,0x44,0x44,0x44,0x44,0xd4,0x54,0x55,0x44,0x44,0xc4,0x4c,0xc4,0x44,0x4d,0x55,0x45,0x44,0x44,0x44,0xcc,0x4c, @@ -2245,7 +2239,7 @@ static const uint8_t wvc_standard_016f[] = { 0xcc,0xcc,0x54,0x55,0x55,0xcd,0x4c,0xc4,0xc4,0xc4,0xcc,0x4c,0x55,0x55,0x55,0x45,0x44,0xc4,0xcc,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_0170[] = { +static const uint8_t vcb_standard_0170[] = { 0x92,0x1b,0xa0,0x20,0x32,0xbb,0xbb,0x43,0x4c,0x4c,0x44,0xcc,0xcc,0xa4,0x2a,0xb3,0x3b,0x44,0xc4,0xc4,0xcc,0xcc,0x4c,0x4d,0xaa,0x32,0xbb,0x3b,0xc4,0xcc,0xcc,0xcc, 0xcc,0xcc,0x34,0xb3,0x3b,0x3c,0xc4,0xc4,0xcc,0xcc,0x4c,0x4d,0x4d,0x33,0xbb,0x3b,0x44,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xbc,0x3b,0x44,0xc4,0xc4,0xcc,0xcc,0xcc,0xd4, 0x4c,0xcd,0xbb,0x3b,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0x54,0xcd,0x3c,0x44,0x44,0xc4,0xcc,0xcc,0x4c,0x4d,0x4d,0x4d,0xcd,0x43,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0x4c,0xd5, @@ -2255,11 +2249,11 @@ static const uint8_t wvc_standard_0170[] = { 0xcc,0xd4,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xcd,0x4c,0x4d,0xcd,0x54,0x55,0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0x4c,0xd5,0x54,0x4d,0xd5,0x54,0xd5,0x54,0x0d, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_0171[] = { +static const uint8_t vcb_standard_0171[] = { 0x14,0x05,0x20,0x20,0x22,0x33,0x32,0x23,0x33,0x43,0x34,0x44,0x32,0x33,0x44,0x43,0x24,0x33,0x43,0x34,0xc4,0x43,0xc4,0x54,0x54,0x35,0x44,0xd4,0x44,0x55,0x32,0x33, 0xc4,0xc3,0x34,0x44,0x54,0xc5,0x54,0xc3,0x44,0x55,0xd4,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0172[] = { +static const uint8_t vcb_standard_0172[] = { 0x14,0x27,0xe8,0x20,0x49,0x9a,0x66,0x69,0x9a,0x28,0x5a,0x9a,0x26,0x8a,0x9e,0x29,0xaa,0xaa,0x28,0x8a,0xaa,0x6a,0x79,0x9e,0x69,0x7a,0xa6,0xa9,0xaa,0x9e,0x68,0xaa, 0xaa,0xa9,0xaa,0xae,0x6b,0xaa,0xaa,0x2b,0x5b,0x9e,0x67,0x9a,0x9e,0x29,0xaa,0xaa,0x67,0x8a,0xaa,0x6a,0xaa,0xaa,0xeb,0x9a,0xaa,0xea,0xba,0xa2,0xaa,0xda,0xb2,0xe9, 0xaa,0xb6,0x6d,0xba,0xaa,0x2d,0xbb,0xb2,0xac,0xdb,0xae,0x2c,0xeb,0xb6,0xa7,0xaa,0xb2,0x6d,0xaa,0xae,0xac,0x9b,0xaa,0x6b,0xdb,0xae,0x2c,0xdb,0xba,0x2b,0xcb,0xb6, @@ -2276,22 +2270,22 @@ static const uint8_t wvc_standard_0172[] = { 0xae,0xca,0xb2,0x2e,0xac,0xb6,0xec,0xeb,0xb2,0xae,0x0b,0xc3,0xae,0xeb,0xc6,0xb0,0xda,0xb6,0xb0,0xbb,0xb6,0x2e,0x1c,0xb3,0xac,0x0b,0xc3,0xed,0xfb,0xca,0xf1,0xeb, 0xc2,0x50,0xb5,0x6d,0x61,0x78,0x75,0xdd,0xe8,0xea,0xb6,0xf1,0xdb,0xc2,0xb0,0xf4,0x8d,0x9d,0x2f,0x00,0x00,0x0c,0x38,0x00,0x00,0x04,0x98,0x50,0x06,0x02, }; -static const uint8_t wvc_standard_0173[] = { +static const uint8_t vcb_standard_0173[] = { 0x92,0x01,0x98,0x6c,0x64,0x49,0xb2,0x23,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0174[] = { +static const uint8_t vcb_standard_0174[] = { 0x92,0x01,0x98,0x6c,0x64,0x49,0xb2,0x23,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_0175[] = { +static const uint8_t vcb_standard_0175[] = { 0x14,0x05,0x20,0x20,0x22,0x33,0x32,0x23,0xb3,0x43,0x34,0x44,0x32,0x33,0xc4,0x43,0x24,0x33,0x43,0x34,0x44,0x43,0xc4,0x54,0xd4,0x34,0x44,0xd4,0xc4,0x54,0x32,0x33, 0x44,0x43,0x34,0x44,0xd4,0xc4,0xcc,0x43,0x44,0x55,0xd4,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0176[] = { +static const uint8_t vcb_standard_0176[] = { 0x42,0x06,0x28,0x81,0x1a,0x6b,0xec,0x2d,0xd6,0xc8,0x28,0xe5,0x20,0x95,0x96,0x4b,0x84,0x94,0x72,0x52,0x62,0x2f,0x95,0x52,0xca,0x41,0x68,0x35,0x66,0x4a,0x19,0xa5, 0x18,0xd5,0x92,0x31,0xa6,0x94,0x62,0x12,0x73,0x09,0x1d,0x52,0x48,0x49,0x2d,0xa1,0x73,0x4a,0x21,0xa3,0x28,0xa5,0x96,0x4a,0x08,0x11,0x82,0xd2,0x72,0x8c,0x31,0x76, 0x8c,0x01, }; -static const uint8_t wvc_standard_0177[] = { +static const uint8_t vcb_standard_0177[] = { 0x92,0x1b,0x20,0x98,0xa9,0x32,0x3b,0xbb,0x43,0x44,0xcc,0x4c,0xcc,0xd4,0xdd,0xbb,0x3b,0x44,0xc4,0xcc,0xcc,0x54,0xcd,0x55,0x65,0x35,0xbb,0xbb,0x43,0xc4,0xcc,0x4c, 0xcc,0x54,0x5d,0xd5,0xbb,0x3b,0xc4,0xcc,0x4c,0x55,0x55,0x55,0x5d,0xdd,0xbd,0x43,0x44,0xc4,0xcc,0xcc,0x4c,0x55,0x55,0xd5,0x55,0x44,0xc4,0xcc,0x4c,0x4d,0x55,0x55, 0xd5,0xdd,0x5d,0x45,0x44,0xcc,0xcc,0x54,0x55,0x55,0x55,0xd5,0xdd,0x65,0xcc,0x44,0xcd,0xcc,0x54,0x55,0xd5,0xd4,0xd5,0x5d,0x5d,0x4d,0xcc,0xd4,0x54,0x55,0x55,0x55, @@ -2301,7 +2295,7 @@ static const uint8_t wvc_standard_0177[] = { 0x5e,0x65,0xde,0xd5,0x4d,0x55,0xd5,0xd5,0x5d,0xdd,0xe5,0x5d,0xde,0xdd,0x5d,0xdd,0x5d,0x5d,0x55,0x5d,0x5e,0x66,0x66,0x5e,0xe6,0x5d,0x56,0x55,0xd5,0x55,0x5d,0x0d, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_0178[] = { +static const uint8_t vcb_standard_0178[] = { 0x18,0x9a,0xe1,0x90,0x12,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5e,0x03,0x5a,0x8c,0x40,0x8b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0x40,0x8b,0x11,0x68,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -2331,11 +2325,11 @@ static const uint8_t wvc_standard_0178[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0179[] = { +static const uint8_t vcb_standard_0179[] = { 0x12,0x05,0xe0,0x50,0xc6,0x6b,0x80,0xb5,0x00,0x6b,0x01,0x5a,0x03,0xb4,0x06,0x78,0x0f,0xf0,0x1e,0x20,0x46,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0, 0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_017a[] = { +static const uint8_t vcb_standard_017a[] = { 0x14,0x27,0xe8,0x22,0x49,0x9e,0x67,0x59,0x96,0x28,0x5a,0x96,0x25,0x8a,0xa2,0x29,0xaa,0xaa,0x28,0x8a,0xaa,0x6a,0x69,0x9a,0x69,0x6a,0x9a,0x67,0x9a,0x9a,0xe6,0x99, 0xa6,0x69,0x9a,0xaa,0x2b,0x9a,0xa6,0xea,0x5a,0x9a,0x66,0x9a,0x9a,0xa7,0x99,0xa6,0xe6,0x69,0xa6,0x69,0xaa,0xa6,0xab,0x9a,0xa6,0x29,0x9b,0xa2,0x69,0xba,0xae,0xa9, 0x9a,0xb6,0x2b,0xaa,0xaa,0x2c,0xab,0xae,0x2c,0xcb,0xaa,0xeb,0xea,0xb2,0x68,0x9a,0xae,0x2c,0xaa,0xa6,0x2b,0x9b,0xa6,0xea,0xca,0xaa,0xeb,0xba,0xb2,0xea,0xba,0xb2, @@ -2353,42 +2347,42 @@ static const uint8_t wvc_standard_017a[] = { 0x57,0x98,0x7d,0xd5,0x95,0x6d,0xdd,0x95,0x6d,0x5b,0x58,0x5d,0xd5,0xb6,0x65,0xdf,0xf6,0xd9,0xba,0xaa,0xab,0x02,0x00,0xc0,0x80,0x03,0x00,0x40,0x80,0x09,0x65,0x20, }; -static const uint8_t wvc_standard_017b[] = { +static const uint8_t vcb_standard_017b[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xbd,0x16,0xdf,0x9c,0x2b,0xa5,0xd6,0xde,0x8b,0x31,0xce,0x5a,0x5b,0x4a,0xad,0xbd,0x17,0xe3,0x9c,0xb5,0x6a,0xad,0xb5,0xf8,0x62, 0x9c,0xb3,0x56,0xef,0xb5,0xf6,0x62,0x8c,0x73,0xd6,0xaa,0xd6,0x18,0xe7,0xac,0xb3,0xd6,0x7b,0xdd,0x1b,0xe3,0x9c,0xb5,0xd6,0x7a,0x2f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_017c[] = { +static const uint8_t vcb_standard_017c[] = { 0x14,0x05,0xd8,0xa8,0x02,0x2e,0x13,0xb8,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_017d[] = { +static const uint8_t vcb_standard_017d[] = { 0x92,0x0a,0x20,0x10,0xd9,0xdd,0xdd,0xdd,0xdd,0x1d,0xb3,0xdd,0xdd,0xdd,0xdd,0x5d,0xb9,0xdb,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x0d,0x80,0xd8,0x15,0x0e,0x00,0x3b,0x11,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_017e[] = { +static const uint8_t vcb_standard_017e[] = { 0x42,0x06,0x28,0x51,0xd2,0x59,0xa7,0x9d,0x26,0x89,0x20,0xc4,0x14,0x65,0x9e,0x34,0xa4,0x18,0x83,0xd4,0x92,0xb2,0x0c,0x43,0x4c,0x49,0x26,0xc6,0x53,0x8c,0x31,0xe6, 0xa0,0x18,0x0d,0x39,0xc4,0x90,0x53,0x62,0x5c,0x28,0x21,0x84,0x0e,0x8a,0xf1,0x98,0x54,0x0e,0x29,0x43,0x45,0xe5,0xde,0x52,0xe7,0x14,0x14,0x5b,0x8c,0xf1,0xbd,0xc7, 0x5e,0x04, }; -static const uint8_t wvc_standard_017f[] = { +static const uint8_t vcb_standard_017f[] = { 0x12,0x05,0xe0,0x50,0x4a,0x4a,0x6d,0xbd,0x87,0xd6,0x5a,0x7b,0x0f,0xad,0xb5,0xf6,0x22,0xde,0x7b,0x2f,0x46,0xbc,0xf7,0x5e,0x8c,0x88,0xf1,0xbd,0x39,0x11,0xe3,0x7b, 0x73,0x62,0xce,0x18,0xe7,0x04,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0180[] = { +static const uint8_t vcb_standard_0180[] = { 0x92,0x0a,0x20,0x10,0x51,0x55,0x55,0x55,0x55,0x9d,0x2a,0x55,0x55,0x55,0x55,0xd5,0x31,0x53,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0xc0,0xdd,0x17,0x0e,0x80,0x3e,0x13,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0181[] = { +static const uint8_t vcb_standard_0181[] = { 0x92,0x0a,0xe0,0x70,0x4e,0x6b,0xad,0xb5,0xf5,0xde,0x9c,0x2b,0xad,0xf7,0xde,0x7b,0xef,0xc5,0x39,0xdb,0x5a,0xef,0xbd,0xf7,0xde,0x7b,0x73,0x7a,0xef,0xbd,0xf8,0x62, 0x8c,0x73,0x4e,0xf1,0xbd,0x17,0xe3,0x7b,0x31,0xce,0xe9,0xd6,0xf7,0x62,0x8c,0x71,0xce,0x3a,0xdd,0xfc,0x5e,0x9c,0x31,0xd6,0x5a,0x2f,0xde,0x7b,0x6f,0xc6,0x9b,0xef, 0xc6,0x7b,0x2f,0xce,0x79,0x6f,0xde,0xc8,0x39,0xc6,0x5a,0xd9,0xb0,0xf7,0x9c,0xb7,0xde,0xbd,0x37,0xa8,0x35,0xe7,0x9d,0xf7,0x06,0x37,0xe7,0x9b,0xf7,0xde,0x01,0x00, 0x3c,0xc1,0x01,0x00,0xa8,0xc0,0x86,0xd5,0x11,0x4e,0x8a,0xc6,0x02,0x03, }; -static const uint8_t wvc_standard_0182[] = { +static const uint8_t vcb_standard_0182[] = { 0x92,0x1b,0x20,0x20,0x32,0x3b,0xbb,0xcb,0x44,0xcc,0x4c,0xd5,0x5c,0xdd,0x5d,0xbc,0xbb,0x3b,0xcc,0xcc,0x54,0xd5,0x54,0xdd,0xd5,0xbd,0x33,0x3b,0xcc,0x4c,0xcc,0xc4, 0x4c,0x55,0x55,0x55,0x44,0xc4,0xc3,0x4c,0xcd,0x54,0xdd,0xcc,0x5d,0xd5,0x44,0xcc,0xc3,0xcc,0xc4,0x4c,0xd5,0xd4,0xcc,0xdc,0x5d,0x4c,0x4c,0xc4,0x4c,0x55,0xd5,0xcc, 0xd4,0xd5,0xd5,0x4d,0x4d,0xc5,0xc4,0xc4,0x4c,0xcc,0xd4,0x54,0x55,0x5d,0xc5,0xcc,0x4c,0x55,0x55,0x4d,0x55,0xd5,0xdc,0xdc,0xd5,0xcd,0xd4,0x44,0x4d,0xc5,0xd4,0xcc, @@ -2398,11 +2392,11 @@ static const uint8_t wvc_standard_0182[] = { 0xcd,0xd4,0xcc,0xcd,0xcc,0x4c,0xdc,0xcc,0xcc,0x45,0xcd,0xd4,0xdc,0xcd,0xdd,0xcd,0xcc,0xc4,0xd4,0xcc,0xcd,0x5c,0x4d,0xcd,0x5c,0xcd,0xcd,0x54,0xd4,0xc4,0xc4,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_0183[] = { +static const uint8_t vcb_standard_0183[] = { 0x14,0x05,0xa0,0x20,0xa2,0x2a,0xaa,0xa2,0x2a,0xbb,0xab,0x3b,0xaa,0xaa,0x3b,0xbb,0x23,0xab,0xba,0xab,0xbb,0xba,0x3b,0xcc,0xcb,0xac,0xbb,0xcb,0xbb,0x4c,0xaa,0xaa, 0xbb,0xba,0xab,0xbb,0xcb,0xbc,0xcb,0xba,0xbb,0xcc,0x4b,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0184[] = { +static const uint8_t vcb_standard_0184[] = { 0x14,0x27,0xe8,0x20,0x49,0x9e,0x27,0x79,0x9a,0x28,0x4a,0x9a,0x27,0x8a,0xa2,0x29,0xba,0xae,0x28,0x9a,0xae,0x6b,0x79,0x9e,0x6a,0x7a,0xa6,0xa9,0xaa,0x9e,0x68,0xaa, 0xaa,0xa9,0xaa,0xb6,0x6c,0xaa,0xaa,0x2c,0x4b,0x9e,0x67,0x9a,0x9e,0x69,0xaa,0xaa,0x67,0x9a,0xaa,0x6a,0xaa,0xaa,0x2c,0x9b,0xaa,0x2a,0xcb,0xa2,0xaa,0xea,0xb6,0xe9, 0xba,0xba,0x6d,0xba,0xaa,0x6e,0xcb,0xb6,0xed,0xfb,0xae,0x2d,0x0b,0xbb,0xa8,0xaa,0xb6,0x6e,0xaa,0xae,0xed,0x9b,0xaa,0x6b,0xfb,0xae,0x6c,0xfb,0xbe,0x2c,0xeb,0xba, @@ -2419,7 +2413,7 @@ static const uint8_t wvc_standard_0184[] = { 0x65,0x61,0x58,0x6d,0xdb,0x18,0x6e,0x5f,0x37,0x96,0x5f,0x38,0x8e,0xe5,0xb5,0x75,0xe5,0x98,0x75,0xdf,0x28,0xdb,0x3a,0xbe,0x2f,0x3c,0x85,0xe1,0x79,0xba,0xba,0xae, 0x3c,0xb3,0xae,0x63,0xfb,0x3a,0xba,0xf1,0x23,0x1c,0x3f,0x65,0x00,0x00,0x18,0x70,0x00,0x00,0x08,0x30,0xa1,0x0c,0x04, }; -static const uint8_t wvc_standard_0185[] = { +static const uint8_t vcb_standard_0185[] = { 0x14,0x27,0xe8,0x20,0x49,0x9e,0x27,0x79,0x9a,0x28,0x4a,0x9a,0x27,0x8a,0xa2,0x29,0xba,0xae,0x28,0x9a,0xae,0x6b,0x79,0x9e,0x6a,0x7a,0xa6,0xa9,0xaa,0x9e,0x68,0xaa, 0xaa,0xa9,0xaa,0xb6,0x6c,0xaa,0xaa,0x2c,0x4b,0x9e,0x67,0x9a,0x9e,0x69,0xaa,0xaa,0x67,0x9a,0xaa,0x6a,0xaa,0xaa,0x2c,0x9b,0xaa,0x2a,0xcb,0xa2,0xaa,0xea,0xb6,0xe9, 0xba,0xba,0x6d,0xba,0xaa,0x6e,0xcb,0xb6,0xed,0xfb,0xae,0x2d,0x0b,0xbb,0xa8,0xaa,0xb6,0x6e,0xaa,0xae,0xed,0x9b,0xaa,0x6b,0xfb,0xae,0x6c,0xfb,0xbe,0x2c,0xeb,0xba, @@ -2436,14 +2430,14 @@ static const uint8_t wvc_standard_0185[] = { 0x65,0x61,0x58,0x6d,0xdb,0x18,0x6e,0x5f,0x37,0x96,0x5f,0x38,0x8e,0xe5,0xb5,0x75,0xe5,0x98,0x75,0xdf,0x28,0xdb,0x3a,0xbe,0x2f,0x3c,0x85,0xe1,0x79,0xba,0xba,0xae, 0x3c,0xb3,0xae,0x63,0xfb,0x3a,0xba,0xf1,0x23,0x1c,0x3f,0x65,0x00,0x00,0x18,0x70,0x00,0x00,0x08,0x30,0xa1,0x0c,0x04, }; -static const uint8_t wvc_standard_0186[] = { +static const uint8_t vcb_standard_0186[] = { 0x12,0x0e,0x20,0x20,0x32,0xbb,0x33,0xbb,0x4b,0x54,0x9d,0xaa,0xbb,0x44,0x3c,0xc4,0xcc,0xed,0x29,0x3b,0xc4,0xc4,0x43,0xcc,0x5d,0xb5,0xbb,0xcc,0x4c,0xc4,0x4c,0x65, 0x5e,0xbb,0x43,0xd5,0x44,0xd4,0x5c,0xd5,0x3e,0x44,0x4d,0xd5,0x4c,0x55,0xde,0xde,0x43,0xd4,0x55,0xcd,0x5c,0xdd,0xdd,0xb6,0x3b,0xc4,0xcc,0xd4,0x55,0xe6,0x5e,0x3b, 0x44,0xcc,0x54,0xd5,0xdd,0xee,0xbe,0xc4,0x54,0x55,0xed,0x5d,0xee,0x66,0x44,0x4c,0x55,0xdd,0xdd,0xde,0xe6,0xce,0xcc,0xd5,0xd5,0xe6,0xe6,0x6e,0x6e,0xcc,0xd4,0x55, 0x5e,0xe6,0xee,0xe6,0x4e,0xe6,0x5d,0xdd,0xe6,0xe6,0xde,0xe6,0x54,0x5d,0xdd,0xed,0x6e,0xee,0xee,0x0e,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0187[] = { +static const uint8_t vcb_standard_0187[] = { 0x18,0x9a,0xe1,0x90,0x0e,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0xde,0x03,0xda,0x8b,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xd2,0x7b,0x40,0x8b,0x11,0x68,0xf1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -2473,7 +2467,7 @@ static const uint8_t wvc_standard_0187[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0188[] = { +static const uint8_t vcb_standard_0188[] = { 0x12,0x12,0xe0,0x70,0xce,0x5a,0xef,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0x6a,0xad,0xd6,0xde,0x8b,0x31,0xc6,0x39,0x67,0xad,0x55,0x5a,0xad,0xbd,0x17,0x63,0x8c,0x73,0xce, 0x5a,0xab,0xd6,0xde,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xf5,0x5e,0xbc,0xf7,0x5e,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x78,0x2f,0xc6,0x39,0xe7,0xac,0xb5,0xd6,0x7b,0xf1,0x5e, 0x8c,0x73,0xce,0x59,0x6b,0xad,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0x6f,0x06,0x31,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0xb3,0xd6,0x5a,0xef,0xcd, @@ -2481,27 +2475,27 @@ static const uint8_t wvc_standard_0188[] = { 0xb5,0xde,0x7a,0x6f,0xce,0x39,0x03,0xee,0xbd,0x37,0xe7,0x9c,0xf7,0x06,0x70,0xef,0xbd,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_0189[] = { +static const uint8_t vcb_standard_0189[] = { 0x42,0x06,0x20,0x39,0x65,0xef,0x66,0xef,0x1a,0x32,0x4c,0xd5,0xe6,0x1c,0x21,0x3b,0x4c,0xe6,0xb5,0x19,0xaa,0xc3,0x6d,0xc6,0x22,0xaa,0xc3,0xed,0x45,0x2b,0xa2,0x3a, 0xd5,0x55,0x3c,0xab,0xb2,0x54,0xd6,0xc4,0xb3,0x2a,0x54,0xe6,0xdd,0x4d,0x3c,0xd4,0x6d,0xf7,0x5e,0xcd,0x5c,0x00, }; -static const uint8_t wvc_standard_018a[] = { +static const uint8_t vcb_standard_018a[] = { 0x14,0x27,0xe0,0x71,0xca,0x5a,0x00,0x00,0x70,0xce,0x59,0x0b,0x00,0x00,0xce,0x39,0x6b,0x01,0x00,0xc0,0x5a,0x2b,0x46,0x00,0x00,0x58,0xab,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_018b[] = { +static const uint8_t vcb_standard_018b[] = { 0x14,0x27,0xe0,0x71,0xca,0x5a,0x00,0x00,0x70,0xce,0x59,0x0b,0x00,0x00,0xce,0x39,0x6b,0x01,0x00,0xc0,0x5a,0x2b,0x46,0x00,0x00,0x58,0xab,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_018c[] = { +static const uint8_t vcb_standard_018c[] = { 0x14,0x05,0x20,0x99,0xa1,0x2a,0xaa,0xa2,0xaa,0xba,0x2b,0x3b,0xaa,0xaa,0xb3,0xba,0xa3,0xaa,0xba,0xab,0xbb,0xba,0x3b,0xc4,0x43,0xac,0x33,0xc3,0x3b,0x44,0xaa,0xaa, 0xb3,0xba,0xab,0xb3,0x43,0xb4,0xc3,0xba,0x3b,0xc4,0x43,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_018d[] = { +static const uint8_t vcb_standard_018d[] = { 0x12,0x12,0xe0,0x70,0xce,0x5a,0xef,0xc5,0xf8,0x5e,0x8c,0x73,0xd6,0x6a,0xad,0xd6,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xbd,0xd7,0x4a,0xad,0xbd,0x17,0x63,0x8c,0x73,0xd6, 0x7a,0xaf,0xd6,0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xf5,0x5e,0xb4,0xf6,0x5e,0x8c,0x73,0xd6,0x5a,0xeb,0xbd,0x78,0x2f,0xc6,0x39,0xe7,0xac,0xf5,0xde,0x7b,0xf1,0x5e, 0x8c,0x73,0xce,0x59,0xeb,0xbd,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0x31,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0xb3,0xd6,0x7b,0x73,0xce, @@ -2509,10 +2503,10 @@ static const uint8_t wvc_standard_018d[] = { 0xb5,0xde,0x9b,0x73,0xce,0x7b,0x03,0xee,0xbd,0x39,0xe7,0xbd,0xf7,0x06,0x70,0x6f,0xce,0x7b,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_018e[] = { +static const uint8_t vcb_standard_018e[] = { 0x91,0x00,0x58,0x55,0x55,0x73,0x75,0x00, }; -static const uint8_t wvc_standard_018f[] = { +static const uint8_t vcb_standard_018f[] = { 0x14,0x27,0x28,0x41,0xc8,0x39,0xa4,0x18,0x84,0x8a,0x29,0x08,0x21,0x84,0x92,0x42,0x08,0xa9,0x54,0x8c,0x49,0xc9,0x98,0x93,0x92,0x39,0x27,0xa5,0x94,0x52,0x52,0x28, 0x25,0xb5,0x8a,0x31,0x29,0x99,0x73,0x52,0x32,0xc7,0xa4,0x84,0x52,0x5a,0x2a,0xa5,0xa4,0x12,0x4a,0x69,0xa9,0x94,0x12,0x53,0x28,0xa5,0xb5,0x94,0x5a,0x8b,0x29,0xa5, 0x16,0x43,0x29,0xad,0x95,0x92,0x5a,0x2b,0x25,0xb5,0x96,0x52,0x8a,0x31,0xb5,0x16,0x63,0xc4,0x98,0x94,0xcc,0x39,0x29,0x99,0x73,0x52,0x4a,0x4a,0xad,0x95,0x54,0x5a, @@ -2527,20 +2521,20 @@ static const uint8_t wvc_standard_018f[] = { 0xb1,0xa4,0x12,0x63,0x8b,0xb1,0xd6,0x16,0x5b,0x8d,0xa9,0xb5,0x1a,0x5b,0x6c,0xb5,0x96,0xd6,0x6a,0xad,0xb5,0xf6,0x1a,0x5b,0x6d,0xb9,0xb4,0x56,0x73,0x8b,0xb1,0xf6, 0xd4,0x52,0xae,0xb1,0xd6,0x9a,0x63,0x4d,0xb5,0x15,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0190[] = { +static const uint8_t vcb_standard_0190[] = { 0x12,0x05,0x28,0x32,0x0e,0x3a,0x28,0x2d,0x37,0x00,0x21,0xe5,0xa8,0xb5,0x0e,0x39,0x08,0x29,0xb6,0x16,0x22,0x87,0x18,0xb4,0x18,0x3b,0xe5,0x18,0x83,0x94,0x52,0xc8, 0x20,0x63,0x8c,0x49,0x2b,0x25,0x85,0x8e,0x31,0x48,0xa9,0xc5,0x96,0x42,0x07,0x29,0xf6,0x9e,0x73,0x2b,0xa9,0x05, }; -static const uint8_t wvc_standard_0191[] = { +static const uint8_t vcb_standard_0191[] = { 0x21,0x01,0x58,0x77,0x77,0x77,0x77,0x77,0x77,0x97,0x97,0x07, }; -static const uint8_t wvc_standard_0192[] = { +static const uint8_t vcb_standard_0192[] = { 0x92,0x0a,0x20,0x10,0x61,0x66,0x66,0x66,0x66,0x96,0x2a,0x66,0x66,0x66,0x66,0xe6,0x39,0x63,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x0e,0x80,0x4b,0x15,0x0e,0x00,0xba,0x0f,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0193[] = { +static const uint8_t vcb_standard_0193[] = { 0x14,0x27,0xe8,0x20,0x49,0x9a,0x66,0x69,0x9a,0xe7,0x59,0x9a,0xe7,0x79,0x9e,0x28,0xaa,0xaa,0x27,0x8a,0xaa,0x6a,0x89,0x9e,0x69,0x7a,0xa6,0xa9,0xaa,0x9e,0x69,0xaa, 0xaa,0xa9,0x9a,0xb2,0x2b,0xaa,0xa6,0x2c,0x5b,0x9e,0x68,0x9a,0x9e,0x69,0xaa,0xaa,0x67,0x9a,0xaa,0x2a,0x9a,0xaa,0xec,0x9a,0xa6,0xea,0xba,0x9e,0xaa,0xda,0xb2,0xe9, 0xaa,0xba,0x2c,0xba,0xaa,0x6e,0xbb,0xb6,0xec,0xdb,0xae,0x2c,0x0b,0xb7,0xa7,0xaa,0xb2,0x2d,0xaa,0xae,0xad,0x9b,0xaa,0x2b,0xeb,0xaa,0x2c,0xdb,0xbe,0x2b,0xdb,0xb6, @@ -2557,28 +2551,28 @@ static const uint8_t wvc_standard_0193[] = { 0x0b,0xc3,0x6a,0xcb,0xc2,0x30,0xeb,0xba,0xb0,0xec,0xc2,0xb0,0x54,0x6d,0x5d,0x19,0x5e,0xdd,0x37,0x8e,0xd7,0xd6,0x95,0xe1,0xf6,0x85,0xc6,0xef,0x2b,0x43,0xd5,0xb6, 0x8d,0xe5,0xd5,0x6d,0x61,0x98,0x7d,0x5b,0xf8,0x6d,0xe1,0x37,0x8e,0xdd,0xd8,0x19,0x03,0x00,0xc0,0x80,0x03,0x00,0x40,0x80,0x09,0x65,0x20, }; -static const uint8_t wvc_standard_0194[] = { +static const uint8_t vcb_standard_0194[] = { 0x01,0x04,0x28,0x30,0x92,0x14,0x87,0x49,0xb3,0xa4,0x94,0x52,0xca,0x50,0x94,0x3c,0x4c,0x4a,0xa4,0xa4,0x94,0x52,0xca,0x62,0x98,0x44,0x4c,0xca,0xc4,0x62,0x8c,0x31, 0xc6,0x18,0x63,0x8c,0x31,0xc6,0x18,0x63,0x8c,0x31,0x46,0x00, }; -static const uint8_t wvc_standard_0195[] = { +static const uint8_t vcb_standard_0195[] = { 0x42,0x06,0x28,0x81,0x18,0x6b,0xae,0x35,0xe7,0x08,0x41,0x69,0x2d,0xd6,0x9e,0x4b,0xa5,0x94,0xa3,0x16,0x7b,0x4e,0x19,0x22,0xc8,0x49,0xcb,0xb9,0x94,0xcc,0x10,0xe4, 0xa4,0xb5,0xd6,0x42,0x86,0x8c,0x72,0x12,0x63,0x4b,0x21,0x43,0x48,0x41,0xab,0xad,0x95,0x4e,0x29,0xc5,0x28,0xb6,0x1a,0x4b,0xc7,0x18,0x93,0x94,0x5a,0x6c,0xa9,0x74, 0x0e,0x02, }; -static const uint8_t wvc_standard_0196[] = { +static const uint8_t vcb_standard_0196[] = { 0x92,0x0a,0x20,0x10,0xd9,0xdd,0xdd,0xdd,0xdd,0x95,0xd5,0xdd,0xdd,0xdd,0xdd,0xdd,0xd1,0xdc,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x5d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0x80,0x7e,0x15,0x0e,0x00,0xfe,0x0f,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0197[] = { +static const uint8_t vcb_standard_0197[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xe7,0x20,0x94,0x94,0x52,0x85,0x10,0x63,0xce,0x49,0x29,0x29,0xa5,0x0a,0x21,0xc6,0x9c,0x93,0x92,0x5a,0x6b,0x35,0x63,0xcc,0x41,0x48, 0x29,0xb5,0xd4,0x82,0xc6,0x1c,0x83,0x90,0x52,0x6b,0xad,0xd5,0x94,0x3a,0x27,0x25,0xb5,0x16,0x53,0xab,0x29,0x75,0x4e,0x4a,0x6a,0x2d,0xc6,0x56,0x73,0x2d,0xa5,0x94, 0xd4,0x5a,0x6b,0xa9,0xc6,0x5e,0x4a,0x09,0x2d,0xb5,0x16,0x6b,0xcd,0xb5,0xc6,0x52,0x52,0x6a,0x29,0xa6,0xda,0x72,0xac,0xa9,0xb4,0xd2,0x5a,0x8c,0x31,0xd6,0x9c,0x5b, 0x4b,0xa9,0xa5,0xd8,0x6a,0xad,0x35,0xb8,0x96,0x4a,0x4c,0x31,0x16,0x00,0x30,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0198[] = { +static const uint8_t vcb_standard_0198[] = { 0x14,0x27,0xe8,0x21,0x39,0x9e,0x27,0x69,0x96,0x28,0x4a,0x96,0x26,0x8a,0x9e,0x28,0xca,0xae,0x27,0x9a,0xae,0x2c,0x69,0x9a,0x29,0x6a,0xa2,0xa8,0xaa,0x9a,0x27,0xaa, 0xaa,0xa9,0xaa,0xb6,0x2d,0x9a,0xaa,0x6c,0x4b,0x9a,0x26,0x9a,0x96,0xe8,0xa9,0xaa,0x26,0x8a,0xaa,0x2a,0xaa,0xa6,0x2d,0x9b,0xaa,0x6a,0xcb,0x9e,0x69,0xca,0xb2,0xa9, 0xaa,0xba,0x2e,0xaa,0xaa,0x6d,0xcb,0xb6,0x2d,0xfc,0xae,0x6c,0xfb,0xbe,0x67,0x9a,0xb2,0x2d,0xaa,0xaa,0xad,0x9b,0xaa,0x6b,0xeb,0xae,0x2d,0xfb,0xba,0x6c,0xdb,0xba, @@ -2595,7 +2589,7 @@ static const uint8_t wvc_standard_0198[] = { 0xc2,0x92,0x6b,0xdb,0xc2,0x70,0xfb,0x3a,0xb2,0xad,0x2b,0x7d,0xe3,0xc9,0xf7,0x8d,0xa3,0x6b,0xdb,0xc2,0x73,0xfb,0xbe,0xd2,0xf6,0x6d,0xce,0xef,0x0c,0x09,0x75,0xca, 0x00,0x00,0x30,0xe0,0x00,0x00,0x10,0x60,0x42,0x19,0x08, }; -static const uint8_t wvc_standard_0199[] = { +static const uint8_t vcb_standard_0199[] = { 0x12,0x12,0x28,0x30,0x06,0x21,0xc6,0xa0,0x93,0x50,0x4a,0x2a,0x29,0x55,0x08,0x31,0xe6,0xa0,0x94,0x54,0x5a,0x6a,0x29,0xb6,0x0a,0x21,0xc6,0x20,0x94,0x92,0x52,0x6b, 0xb1,0xc5,0x58,0x3c,0xe7,0x1c,0x84,0x92,0x52,0x6a,0x29,0xa6,0xd8,0x8a,0xe7,0x9c,0x93,0x92,0x52,0x6b,0x31,0xc6,0x18,0x6b,0x71,0x2d,0x84,0x94,0x52,0x6a,0x2d,0xb6, 0xd8,0x62,0x6c,0xb2,0x85,0x90,0x52,0x4a,0xad,0xc5,0x18,0x6b,0x8d,0xcd,0x28,0xd5,0x52,0x6a,0x2d,0xc6,0x18,0x63,0xac,0xb1,0x28,0xe5,0x52,0x4a,0xad,0xc5,0x16,0x63, @@ -2604,7 +2598,7 @@ static const uint8_t wvc_standard_0199[] = { 0x6b,0xad,0x49,0x29,0xa5,0x8c,0x90,0x35,0xa6,0x1a,0x6b,0xcd,0x39,0x29,0x25,0x94,0x31,0x36,0xb6,0x54,0x53,0xce,0x39,0x17,0x00,0xa0,0x1e,0x1c,0x00,0xa0,0x12,0x8c, 0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_019a[] = { +static const uint8_t vcb_standard_019a[] = { 0x14,0x27,0xa8,0x41,0xc8,0x39,0xc4,0x14,0x84,0x48,0x31,0x08,0x21,0x84,0x94,0x42,0x08,0x29,0x45,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x31,0x27,0xa5,0x94,0x92,0x5a,0x28, 0x25,0xb5,0x88,0x31,0x08,0x95,0x63,0x52,0x32,0xe7,0xa4,0x84,0x52,0x5a,0x0a,0xa5,0xb4,0x14,0x4a,0x69,0xad,0x94,0x12,0x5b,0x28,0xa5,0xc5,0xd6,0x5a,0xad,0xa9,0xb5, 0x58,0x43,0x29,0xad,0x85,0x52,0x5a,0x2c,0xa5,0xb4,0x98,0x5a,0xab,0xb1,0xb5,0x56,0x63,0xc4,0x98,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x4a,0x29,0xad,0x95,0x52,0x5a, @@ -2619,12 +2613,12 @@ static const uint8_t wvc_standard_019a[] = { 0xb5,0xa4,0x54,0x63,0x8c,0x31,0xe7,0x58,0x63,0xaf,0xa9,0xb5,0x5a,0x5b,0x8c,0x3d,0xa7,0x16,0x6b,0xae,0x39,0xf7,0x5e,0x63,0x8e,0x41,0xb5,0x56,0x73,0x8b,0x31,0xf7, 0x14,0x5b,0xce,0x35,0xd7,0xde,0x6b,0x6e,0x41,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_019b[] = { +static const uint8_t vcb_standard_019b[] = { 0x92,0x07,0xa0,0x21,0xaa,0x32,0x33,0x33,0xa3,0x2a,0x33,0x33,0x33,0x33,0xaa,0x2a,0x33,0x33,0x33,0x2b,0x33,0x33,0x33,0xb3,0xbb,0x32,0x33,0x33,0x33,0xbb,0x33,0x33, 0xb3,0xb3,0xbb,0x3b,0x33,0x33,0xb3,0xbb,0xbb,0x33,0x33,0xb3,0xbb,0xbb,0x3b,0x33,0x33,0xbb,0xbb,0xbb,0x33,0xb3,0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_019c[] = { +static const uint8_t vcb_standard_019c[] = { 0x12,0x12,0xe0,0x71,0xce,0x5a,0xef,0xc5,0x18,0xe3,0x9c,0x73,0xd6,0xea,0x9c,0xb5,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xbd,0xd7,0x39,0x6b,0xbd,0x17,0x63,0x8c,0x73,0xd6, 0x7a,0xaf,0xb5,0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xf5,0x5e,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x68,0x2d,0xc6,0x39,0xe7,0xac,0xb5,0xd6,0x7b,0xd1,0xda, 0x8b,0x73,0xce,0x59,0x6b,0xad,0xf7,0xe2,0xbd,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xf7,0xde,0x0b,0x62,0x9c,0x73,0xce,0x5a,0xef,0xbd, @@ -2632,44 +2626,44 @@ static const uint8_t wvc_standard_019c[] = { 0xb5,0xd6,0x7a,0xef,0xbd,0x39,0x03,0xee,0xbd,0x37,0xdf,0x9c,0x73,0x06,0x70,0xef,0xbd,0x39,0xe7,0x1c,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_019d[] = { +static const uint8_t vcb_standard_019d[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xc6,0x20,0x94,0xd4,0x5a,0x85,0x10,0x63,0x8e,0x49,0x49,0xa9,0xb5,0x0a,0x21,0xc6,0x9c,0x93,0x92,0x52,0x6b,0x3d,0x63,0xce,0x41,0x48, 0xa9,0xb5,0x18,0x83,0xc6,0x1c,0x83,0x90,0x4a,0x6b,0x31,0x26,0x55,0x3a,0x27,0x25,0xa5,0xd6,0x62,0x4c,0x2a,0x85,0x8c,0x4a,0x4a,0xad,0xc5,0x96,0x94,0x32,0xa5,0x94, 0xd4,0x5a,0x8b,0xb5,0x28,0xa5,0x42,0x0a,0xb1,0xb5,0x16,0x63,0x72,0x4a,0xe6,0x94,0x5a,0x8b,0xb1,0xc6,0xa2,0x9c,0x8e,0xad,0xc4,0x12,0x63,0xac,0xcd,0x39,0xe7,0x64, 0x6d,0x2d,0xb6,0x18,0x9b,0x73,0xce,0xc9,0xd6,0x5a,0x6d,0x35,0x16,0x00,0x30,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_019e[] = { +static const uint8_t vcb_standard_019e[] = { 0x81,0x00,0x18,0x54,0xce,0x68,0x00, }; -static const uint8_t wvc_standard_019f[] = { +static const uint8_t vcb_standard_019f[] = { 0x92,0x07,0x20,0x90,0xa9,0x32,0xbb,0xbb,0xcb,0x4c,0xb3,0xbb,0x43,0xc4,0xcc,0x2c,0xbb,0xbb,0xc3,0xcb,0x4c,0xb3,0x3b,0x44,0xc4,0xcc,0x34,0xbb,0x43,0x3c,0xcc,0xcc, 0x3b,0x44,0x44,0x44,0x55,0xbd,0x43,0x44,0xc4,0x4c,0x55,0x44,0x44,0x44,0x4c,0x55,0x4d,0x45,0x44,0x4c,0x54,0xd5,0xd4,0x4c,0xc4,0x4c,0x55,0x55,0x45,0x44,0xcc,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_01a0[] = { +static const uint8_t vcb_standard_01a0[] = { 0x42,0x06,0x28,0xc2,0xe2,0x83,0x50,0x46,0x29,0x89,0x49,0x6a,0x2d,0xf6,0x60,0x2c,0xc5,0x18,0x84,0x52,0x83,0xf2,0x98,0x42,0x8a,0x41,0x4b,0xc2,0x63,0x4c,0x21,0xe5, 0x28,0x27,0xd1,0x31,0x85,0x90,0x72,0x98,0x53,0xe9,0x1c,0x43,0xc6,0x48,0x6d,0x31,0x85,0x4c,0x19,0xa1,0xac,0xf8,0x1e,0x3b,0xc6,0x90,0xc3,0x1e,0x8c,0x4e,0x21,0x74, 0x12,0x03, }; -static const uint8_t wvc_standard_01a1[] = { +static const uint8_t vcb_standard_01a1[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xc7,0x20,0x94,0xd2,0x5a,0x85,0x10,0x63,0xce,0x49,0x49,0xa9,0xb5,0x0c,0x21,0xc6,0x9c,0x93,0x92,0x52,0x6b,0x51,0x63,0x8c,0x39,0x28, 0x25,0xa5,0xd6,0xa2,0xc6,0x18,0x83,0x50,0x4a,0x6b,0x31,0x46,0x95,0x3a,0x07,0x21,0xa5,0xd6,0x62,0x8c,0x2a,0x75,0x0e,0x42,0x4a,0xad,0xc5,0x18,0xa5,0x34,0xa5,0x94, 0x94,0x5a,0x8c,0x31,0x4a,0x69,0x4a,0x29,0x29,0xc5,0x58,0x63,0x94,0x52,0xc6,0x94,0x5a,0x8b,0xb1,0xd6,0x28,0xa5,0xad,0x29,0xb5,0x16,0x63,0xad,0x51,0x4a,0xe9,0x64, 0x8c,0xad,0xd6,0x9e,0x9b,0x73,0xce,0xc9,0x18,0x63,0x8d,0x39,0x17,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_01a2[] = { +static const uint8_t vcb_standard_01a2[] = { 0x12,0x05,0x20,0x10,0x51,0x55,0x55,0x15,0x2b,0x55,0x55,0xd5,0x39,0x53,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xdd,0xdd,0xdd,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x0d,0x00,0xba,0x13,0x0e,0x00,0xba,0x0f,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_01a3[] = { +static const uint8_t vcb_standard_01a3[] = { 0x14,0x05,0x20,0x98,0x19,0x33,0x32,0xa3,0xbb,0xcb,0xb4,0x4c,0xba,0xb3,0xcc,0xcb,0xa4,0xbb,0xd3,0xbc,0xcc,0xcb,0xcc,0xe5,0x64,0xb6,0xcc,0xe4,0x4d,0x66,0xba,0x3b, 0xcd,0x4b,0xb5,0xcc,0x64,0xce,0xe5,0x53,0x4d,0xe6,0xe4,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_01a4[] = { +static const uint8_t vcb_standard_01a4[] = { 0x14,0x05,0x20,0x98,0x21,0xb3,0x32,0x9b,0xaa,0xcc,0xcc,0xcc,0xb1,0xca,0xcc,0xcc,0x24,0x44,0x5c,0x4d,0x5d,0xcb,0xdc,0xdd,0xdd,0xb5,0x4c,0xdd,0xdd,0xe5,0xca,0xcc, 0xdd,0xdc,0xb5,0x4c,0xe5,0xdd,0x5d,0xcb,0xd4,0xdd,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_01a5[] = { +static const uint8_t vcb_standard_01a5[] = { 0x01,0x10,0x28,0x21,0xca,0x23,0xc4,0x3c,0x74,0xd4,0x7b,0xef,0x3d,0x42,0xce,0x23,0xc4,0xbc,0x63,0xd0,0x7b,0xef,0x3d,0x84,0xd6,0x2b,0x47,0x3d,0x94,0xd4,0x7b,0xef, 0xbd,0xf7,0xde,0x63,0xef,0x3d,0xf7,0xde,0x7b,0xef,0x3d,0x32,0xcc,0x2b,0xe4,0x3c,0x74,0xd2,0x7b,0xef,0x3d,0x42,0x8c,0x23,0xa3,0x38,0x53,0xce,0x7b,0xef,0x3d,0x84, 0x94,0x33,0x06,0xbd,0x73,0xd0,0x7b,0xef,0xbd,0xf7,0xde,0x73,0xce,0x3d,0xe7,0xda,0x7b,0xef,0xbd,0x73,0xd4,0x3b,0x28,0x3d,0x95,0xda,0x7b,0xef,0xbd,0x72,0xd2,0x2b, @@ -2677,7 +2671,7 @@ static const uint8_t wvc_standard_01a5[] = { 0xf7,0xde,0x7b,0xef,0xbd,0xf5,0xdc,0x5b,0xed,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde, 0x7b,0xef,0x3d,0x00, }; -static const uint8_t wvc_standard_01a6[] = { +static const uint8_t vcb_standard_01a6[] = { 0x12,0x12,0x20,0x20,0xc2,0x33,0xb3,0x4a,0x55,0x55,0x55,0x3d,0xab,0xbb,0xc4,0xcc,0x44,0xcd,0xcc,0xcc,0xab,0xba,0xc3,0xc3,0xc3,0xcc,0xcc,0xcc,0xcc,0x4b,0x44,0xc4, 0xcc,0xcc,0xcc,0xcc,0xcc,0x3c,0x44,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x3c,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0xbc,0x43,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c, 0x4c,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0x43,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcb,0xcc,0xcc,0xcc,0xcc, @@ -2685,31 +2679,31 @@ static const uint8_t wvc_standard_01a6[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x88,0x11,0x0e,0x00,0x88,0x0b,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_01a7[] = { +static const uint8_t vcb_standard_01a7[] = { 0x92,0x01,0x18,0x4c,0xa4,0xed,0xd6,0x36,0x69,0xbb,0xb5,0xdd,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_01a8[] = { +static const uint8_t vcb_standard_01a8[] = { 0x01,0x02,0x98,0x6d,0xdb,0x36,0x92,0x24,0x49,0xb2,0x6d,0x5b,0xd7,0x75,0x5d,0x00, }; -static const uint8_t wvc_standard_01a9[] = { +static const uint8_t vcb_standard_01a9[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0x44,0x45,0xb4,0x4c,0xd5,0x5c,0xd5,0x42,0xd4,0x4c,0xcd,0x2c,0x44,0xcd,0xd4,0x4c,0x53,0x55, 0xd5,0x55,0x2d,0x44,0xcd,0xd4,0xcc,0x42,0xd4,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_01aa[] = { +static const uint8_t vcb_standard_01aa[] = { 0x12,0x05,0x20,0x98,0x31,0x33,0x43,0x9c,0xa2,0xb3,0xbb,0xcc,0xa9,0xba,0xbb,0xcb,0xb4,0x3b,0x44,0x44,0x55,0xbb,0x43,0x44,0x54,0xbd,0x3b,0xc4,0xcc,0xd5,0xbb,0x43, 0xcc,0x54,0xc5,0x4c,0x55,0x55,0x5e,0xcc,0x54,0xdd,0x5d,0x0e,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_01ab[] = { +static const uint8_t vcb_standard_01ab[] = { 0x12,0x12,0xe0,0x72,0x4e,0x4a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0xea,0x9c,0xb5,0x5a,0x7b,0x2f,0xc6,0x39,0x6b,0xbd,0xd7,0x39,0x6b,0xb5,0xf6,0x5e,0x8c,0x73,0xd6, 0x7a,0xaf,0x94,0xd6,0x7a,0x2f,0xc6,0x18,0xe7,0xac,0xf7,0x5e,0xac,0xf5,0x5a,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x68,0xed,0xbd,0x18,0xe7,0xac,0xf5,0xde,0x7c,0xd1,0xda, 0x7b,0x31,0xce,0x59,0xeb,0xbd,0x37,0xa3,0xb5,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0xef,0xc5,0x38,0x67,0xad,0xf7,0xe6,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_01ac[] = { +static const uint8_t vcb_standard_01ac[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0xa3,0xbb,0x43,0x34,0x44,0xba,0x33,0xc4,0x43,0xa4,0xbb,0xcb,0xbc,0x4c,0xcb,0xc4,0x5c,0x54,0xb5,0x4c,0xd4,0x44,0x5d,0xba,0xbb, 0xcc,0xcb,0xb4,0x4c,0x5c,0xc5,0x54,0xcb,0x44,0xd5,0xdc,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_01ad[] = { +static const uint8_t vcb_standard_01ad[] = { 0x14,0x27,0xa0,0x21,0x42,0x2c,0x33,0xc4,0x32,0x43,0x44,0x44,0x55,0x44,0x54,0x2d,0x33,0x44,0xb3,0xc3,0x34,0x3b,0x4c,0xc4,0x4c,0x45,0xcc,0xdc,0x32,0x43,0xb4,0xb3, 0x44,0x3b,0x4b,0xc4,0xc4,0xd5,0x4c,0xdc,0xc4,0xcc,0x55,0xcc,0x5c,0xc5,0xcc,0x5d,0xd5,0x5d,0x56,0xdd,0x65,0xc4,0x5c,0xc5,0xcc,0xdd,0xcc,0xdc,0xd5,0x55,0x5e,0x5d, 0xe5,0x2d,0x33,0x44,0xbb,0xcb,0xb4,0xb3,0xc4,0xcc,0xdc,0xcd,0xcc,0x55,0x3b,0xcb,0x34,0xc3,0xd4,0x43,0xd4,0xcc,0xd4,0xdc,0x4c,0xdd,0xb5,0xbb,0x4c,0xc3,0xd3,0xbc, @@ -2722,14 +2716,14 @@ static const uint8_t wvc_standard_01ad[] = { 0xe5,0x6d,0xd6,0x55,0xe6,0xe5,0x6d,0x4e,0x5d,0x66,0x66,0x6e,0x5f,0xed,0x6d,0xd5,0x5d,0xde,0x5d,0xee,0xdc,0x6c,0x66,0xe6,0xf6,0x6d,0xf5,0x0c,0x00,0x00,0x03,0x0e, 0x00,0x00,0x01,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_01ae[] = { +static const uint8_t vcb_standard_01ae[] = { 0x92,0x01,0x98,0x6c,0xe4,0x48,0x72,0x64,0xc9,0xb2,0x65,0xdb,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_01af[] = { +static const uint8_t vcb_standard_01af[] = { 0x12,0x05,0xe0,0x72,0x4e,0x4a,0x6b,0xbd,0xe7,0x9c,0x94,0x56,0x7b,0xcf,0x39,0x29,0xb5,0xf6,0x9e,0x94,0xd6,0x6a,0x2d,0x46,0xac,0xd5,0x5a,0x8c,0x68,0xed,0xbd,0x18, 0xd1,0xda,0x7b,0x31,0x02,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_01b0[] = { +static const uint8_t vcb_standard_01b0[] = { 0x12,0x0e,0x28,0x30,0x06,0x21,0xc6,0xa0,0x93,0x50,0x4a,0x29,0x15,0x42,0x8c,0x41,0x27,0x21,0x95,0xd6,0x62,0xac,0x10,0x62,0x0c,0x42,0x29,0x29,0xb5,0xd6,0x62,0xf2, 0x9c,0x73,0x10,0x4a,0x69,0xa9,0xb5,0x18,0x93,0xe7,0x9c,0x83,0x90,0x52,0x6b,0x31,0xc6,0x98,0x5c,0x0b,0x21,0xa5,0x94,0x5a,0x8a,0x2d,0xc6,0xe2,0x5a,0x08,0xa9,0xa4, 0xd4,0x5a,0x8b,0xb1,0x26,0x63,0x54,0x4a,0xa9,0xb5,0xd8,0x62,0xac,0xb5,0x17,0xa3,0x52,0x2a,0x2d,0xc5,0x18,0x63,0xac,0xc1,0x18,0x9b,0x53,0x6b,0x31,0xc6,0x58,0x6b, @@ -2737,37 +2731,37 @@ static const uint8_t wvc_standard_01b0[] = { 0xe6,0xd6,0x62,0xab,0x35,0xe7,0x62,0x8c,0x30,0xba,0xb6,0xd4,0x5a,0xad,0x35,0x17,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_01b1[] = { +static const uint8_t vcb_standard_01b1[] = { 0x92,0x07,0x20,0x21,0xaa,0x32,0xbb,0xbb,0xd3,0xa1,0x2a,0xb3,0xbb,0x3b,0x25,0xaa,0x32,0xbb,0x3b,0x5c,0xa2,0x2a,0xb3,0x3b,0xc4,0xdd,0xad,0x32,0xbb,0x43,0x54,0xd5, 0x2a,0xb3,0xbb,0x3b,0x55,0xad,0x32,0xbb,0xbb,0x53,0x55,0x33,0xbb,0xbb,0x3b,0x55,0x55,0x35,0xbb,0xbb,0x53,0x55,0x55,0x33,0xb3,0x3b,0x55,0x55,0x35,0x33,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_01b2[] = { +static const uint8_t vcb_standard_01b2[] = { 0x92,0x0a,0x20,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xbc,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b,0x20,0x5d,0x19,0x0e,0x80,0xd1,0x13,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_01b3[] = { +static const uint8_t vcb_standard_01b3[] = { 0x14,0x27,0xe0,0x51,0xca,0x5a,0x00,0x00,0x70,0xd2,0x59,0x0b,0x00,0x00,0xce,0x49,0x6b,0x01,0x00,0xc0,0x5a,0x2b,0x46,0x00,0x00,0x58,0xab,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_01b4[] = { +static const uint8_t vcb_standard_01b4[] = { 0x14,0x27,0xe0,0x70,0xce,0x5a,0x00,0x00,0x70,0x52,0x6a,0x0d,0x00,0x00,0x4e,0x4a,0xad,0x01,0x00,0x40,0x6b,0x2d,0x46,0x00,0x00,0x58,0xad,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_01b5[] = { +static const uint8_t vcb_standard_01b5[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0xa3,0xbb,0xcb,0xb4,0x4c,0xba,0xb3,0xcc,0xcb,0x1c,0xbc,0x53,0x3d,0x55,0x53,0x4d,0xe5,0x64,0x36,0xd5,0xe4,0x4d,0x66,0xc2,0x3b, 0xd5,0x53,0x35,0x55,0x64,0xce,0x65,0x53,0x4d,0xe6,0x64,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_01b6[] = { +static const uint8_t vcb_standard_01b6[] = { 0x21,0x01,0x60,0x27,0x9d,0x75,0x5e,0x89,0x25,0x8e,0x58,0xde,0x89,0x07, }; -static const uint8_t wvc_standard_01b7[] = { +static const uint8_t vcb_standard_01b7[] = { 0x14,0x27,0xe8,0xe1,0x48,0x9e,0x27,0x69,0x96,0x28,0x4a,0x96,0x26,0x8a,0x9e,0x29,0xca,0xae,0x27,0x9a,0xae,0x2b,0x69,0x9a,0x69,0x6a,0xa2,0xa8,0xaa,0x96,0x27,0xaa, 0xaa,0xa9,0xaa,0xb6,0x2d,0x9a,0xaa,0x6c,0x4b,0x9a,0x26,0x9a,0x9a,0xe8,0xa9,0xaa,0x26,0x8a,0xaa,0x2a,0xaa,0xa6,0x2d,0x9b,0xaa,0x6a,0xdb,0x9e,0x69,0xca,0xb2,0xa9, 0xaa,0xba,0x2d,0xaa,0xaa,0x6d,0xcb,0xb6,0x2d,0xfc,0xae,0x2c,0xeb,0xbe,0x67,0x9a,0xb2,0x2c,0xaa,0xaa,0xad,0x9b,0xaa,0x6a,0xeb,0xae,0x2d,0xfb,0xbe,0xac,0xdb,0xba, @@ -2784,11 +2778,11 @@ static const uint8_t wvc_standard_01b7[] = { 0x65,0x63,0xb8,0x8d,0xdf,0x38,0x76,0x61,0x38,0xba,0xb6,0x6d,0x1c,0xb7,0xae,0x3b,0x65,0x5b,0x17,0xfa,0xc6,0x90,0xef,0x13,0x9e,0xd7,0xb6,0x8d,0xe3,0xf6,0x75,0xc6, 0xed,0xeb,0x46,0x5f,0x19,0x12,0x8e,0x1f,0x01,0x00,0x60,0xc0,0x01,0x00,0x20,0xc0,0x84,0x32,0x10, }; -static const uint8_t wvc_standard_01b8[] = { +static const uint8_t vcb_standard_01b8[] = { 0x12,0x05,0xe0,0x50,0xce,0x5a,0xad,0xc5,0x28,0xa5,0xd6,0xda,0x8b,0x51,0x4a,0xad,0xbd,0x17,0xa3,0xd6,0xde,0x7b,0x6f,0x4e,0xbc,0xf7,0xde,0x9c,0x88,0x31,0xc6,0x39, 0x11,0x63,0x8c,0x73,0x62,0xce,0x39,0x6b,0x05,0x73,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_01b9[] = { +static const uint8_t vcb_standard_01b9[] = { 0x14,0x27,0x20,0x20,0x51,0x55,0x55,0xd5,0x53,0x55,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xd5,0x54,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x3d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55,0x55,0x55, @@ -2801,22 +2795,22 @@ static const uint8_t wvc_standard_01b9[] = { 0x55,0x55,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x52,0x11,0x0e, 0x00,0x52,0x0f,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_01ba[] = { +static const uint8_t vcb_standard_01ba[] = { 0x12,0x12,0xe0,0x71,0xce,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x71,0xce,0xe9,0x9c,0xb5,0xde,0x8b,0x31,0xc6,0x39,0xe7,0xac,0xd5,0x39,0x6b,0xbd,0x17,0x63,0x8c,0x73,0xce, 0x59,0xab,0xb5,0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x56,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0x6b,0xad,0x68,0x2d,0xc6,0x39,0xe7,0xac,0xb5,0xd6,0x7b,0xd1,0x5a, 0x8c,0x73,0xce,0x59,0x6b,0xad,0xf7,0xa2,0xb5,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0xef,0x05,0xef,0xc5,0x38,0x67,0xad,0xf7,0xde,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_01bb[] = { +static const uint8_t vcb_standard_01bb[] = { 0x21,0x03,0x60,0x00,0x00,0x4a,0x29,0xe7,0x9c,0x73,0x4e,0x4a,0x29,0xad,0xd5,0x56,0x5b,0x6f,0xc5,0x16,0x5b,0x8c,0x35,0xde,0x79,0x01, }; -static const uint8_t wvc_standard_01bc[] = { +static const uint8_t vcb_standard_01bc[] = { 0x92,0x0a,0xa0,0x98,0xa9,0x32,0xbb,0x43,0xcc,0x9c,0x22,0xb3,0xbb,0x3b,0xc4,0xcc,0xa9,0x32,0xbb,0xbb,0x43,0xcc,0x2c,0x33,0xbb,0xbb,0x43,0xcc,0xcc,0x32,0xbb,0xbb, 0xc3,0x4b,0xd4,0xb4,0xbb,0xbb,0x43,0xc4,0x4c,0x55,0xbb,0xbb,0xc3,0x43,0xcc,0x54,0xbd,0x3b,0x44,0x44,0xcc,0x4c,0xd5,0xbb,0x43,0x44,0x4c,0xcc,0x54,0x45,0x44,0xcc, 0xcc,0xcc,0x54,0x5d,0x44,0x4c,0xcc,0xcc,0xd4,0x5c,0xcd,0xcc,0x4c,0x55,0x55,0xdd,0xdd,0xcc,0x4c,0x55,0x55,0x5d,0xdd,0x0d,0x00,0xe0,0x09,0x0e,0x00,0x40,0x05,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_01bd[] = { +static const uint8_t vcb_standard_01bd[] = { 0x18,0x9a,0xe1,0x90,0x12,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5e,0x03,0xda,0x8b,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x7b,0x40,0x8b,0x0f,0x68,0xf1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -2846,19 +2840,19 @@ static const uint8_t wvc_standard_01bd[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_01be[] = { +static const uint8_t vcb_standard_01be[] = { 0x42,0x06,0x28,0xf4,0x62,0x84,0x10,0x42,0x08,0xc9,0x51,0x4b,0x2d,0x08,0xdf,0x2b,0xe5,0x1c,0x94,0x9a,0x7b,0xaf,0x18,0x33,0x0a,0x62,0xef,0xbd,0x52,0xcc,0x20,0x47, 0x39,0xf8,0x4c,0x31,0xa5,0x1c,0x94,0xda,0x53,0xe7,0x98,0x52,0xc4,0x48,0xae,0xad,0x95,0x48,0x11,0xe2,0x30,0x07,0x9d,0x2a,0xa7,0x14,0xd4,0xa0,0x73,0xeb,0x24,0x84, 0x96,0x03, }; -static const uint8_t wvc_standard_01bf[] = { +static const uint8_t vcb_standard_01bf[] = { 0x21,0x01,0x58,0x77,0x77,0x77,0x75,0x77,0x77,0x79,0x99,0x09, }; -static const uint8_t wvc_standard_01c0[] = { +static const uint8_t vcb_standard_01c0[] = { 0x12,0x05,0xa0,0x10,0xa9,0xba,0xcb,0x1c,0xa2,0xb3,0x3b,0x55,0x21,0xb2,0xbb,0x53,0xad,0x33,0xc4,0xc4,0xd5,0xb2,0x43,0xc4,0xd4,0xbd,0xbb,0xc4,0x55,0xe6,0x3b,0xc4, 0xd4,0x65,0x4e,0xd5,0x5d,0xe6,0xee,0x4c,0xd5,0x65,0xee,0x0e,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_01c1[] = { +static const uint8_t vcb_standard_01c1[] = { 0x14,0x27,0x20,0x30,0x53,0x3d,0x55,0xd5,0x51,0x51,0x55,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x35,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xd5,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x4d,0x55,0x55,0x55,0x55,0x55, @@ -2871,15 +2865,15 @@ static const uint8_t wvc_standard_01c1[] = { 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x0d,0x00,0xba,0x11,0x0e, 0x00,0xba,0x0f,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_01c2[] = { +static const uint8_t vcb_standard_01c2[] = { 0x14,0x05,0xa0,0x98,0xa1,0x2a,0xaa,0x22,0x33,0xbb,0xab,0x3b,0x32,0xab,0x3b,0xbb,0x1b,0x33,0xbb,0xb3,0x3b,0xbb,0x3b,0xcc,0xcb,0xac,0xbb,0xcb,0xbb,0x4c,0x32,0xb3, 0x3b,0xbb,0xab,0xbb,0xcb,0xbc,0xcb,0xba,0xbb,0xcc,0x4b,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_01c3[] = { +static const uint8_t vcb_standard_01c3[] = { 0x14,0x05,0xa0,0x98,0xa1,0x2a,0xaa,0x22,0x33,0xbb,0xab,0x3b,0x32,0xab,0x3b,0xbb,0x1b,0x33,0xbb,0xb3,0x3b,0xbb,0x3b,0xcc,0xcb,0xac,0xbb,0xcb,0xbb,0x4c,0x32,0xb3, 0x3b,0xbb,0xab,0xbb,0xcb,0xbc,0xcb,0xba,0xbb,0xcc,0x4b,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_01c4[] = { +static const uint8_t vcb_standard_01c4[] = { 0x12,0x0e,0x28,0x30,0x06,0x21,0xc6,0x20,0xa4,0xd4,0x5a,0x8c,0x15,0x42,0x4a,0x41,0x28,0xa5,0xb5,0x16,0x73,0xad,0x10,0x62,0x0c,0x42,0x29,0xad,0xb5,0x58,0x63,0xd0, 0x98,0x73,0x52,0x52,0x6a,0x31,0xc6,0x18,0x83,0xc6,0x9c,0x93,0x92,0x52,0x8c,0x31,0xd6,0x1a,0x54,0x0a,0x21,0xa5,0xd6,0x5a,0x8c,0x35,0xc7,0xe0,0x5a,0x08,0x29,0xb5, 0x16,0x63,0x8c,0xb5,0x07,0x21,0x54,0x6b,0x2d,0xc6,0x58,0x73,0xcd,0x39,0x08,0xe1,0x5a,0x4a,0x31,0xd6,0x9a,0x6b,0xce,0x41,0x08,0x9d,0x63,0xac,0x35,0xd7,0x9c,0x7b, @@ -2887,17 +2881,17 @@ static const uint8_t wvc_standard_01c4[] = { 0xf8,0x9e,0x83,0xce,0x35,0xe8,0xe0,0x83,0x10,0xc2,0xe7,0x9a,0x73,0xce,0x39,0x17,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_01c5[] = { +static const uint8_t vcb_standard_01c5[] = { 0x92,0x0a,0x28,0x30,0x46,0x21,0xa7,0xa0,0x93,0x90,0x4a,0xa3,0x94,0x73,0x10,0x52,0x49,0x29,0xa5,0x46,0x29,0xe7,0x24,0xa4,0x94,0x52,0x6a,0x95,0x73,0x52,0x52,0x6a, 0x2d,0xb6,0x18,0x2b,0xe7,0xa4,0xa4,0xd4,0x5a,0x8b,0x35,0x76,0x52,0x52,0x6a,0xb1,0xd6,0x5a,0x73,0xee,0xa4,0xa4,0xd6,0x62,0xac,0xb5,0xd6,0x1c,0x52,0x8a,0xb1,0xd6, 0x5c,0x7b,0x0e,0x3a,0xa4,0xd4,0x62,0xad,0xb9,0xe6,0x9c,0x7b,0x69,0x2d,0xd6,0x9c,0x73,0xee,0xc1,0x07,0x13,0x5b,0xac,0xb5,0xf7,0xde,0x73,0x0f,0x2a,0xc6,0x9a,0x6b, 0xd0,0x3d,0x08,0x21,0x54,0x8c,0x35,0xe7,0x9c,0x83,0xf0,0xc1,0x17,0x00,0x4c,0x22,0x1c,0x00,0x10,0x17,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_01c6[] = { +static const uint8_t vcb_standard_01c6[] = { 0x42,0x06,0x20,0xb9,0x6d,0x77,0x67,0xf7,0xa2,0xcb,0x5d,0xde,0xe6,0x2c,0xaa,0x43,0x55,0x66,0x3e,0x1a,0xaa,0x4b,0xe5,0x4e,0xa3,0x21,0x43,0x5d,0xd6,0x2b,0x1a,0x32, 0xd4,0xd5,0x3c,0xa3,0x21,0x4c,0x66,0xcd,0x2b,0x1a,0x43,0x6f,0xde,0xc4,0xb3,0xc3,0xdd,0xe6,0xd5,0xc4,0x43,0x00, }; -static const uint8_t wvc_standard_01c7[] = { +static const uint8_t vcb_standard_01c7[] = { 0x12,0x0e,0x28,0x30,0x46,0x29,0xc6,0xa0,0x93,0x4e,0x42,0x4a,0x0d,0x53,0x8e,0x41,0x28,0x25,0x95,0x54,0x5a,0x69,0x14,0x73,0x0e,0x42,0x29,0x29,0xa5,0xd4,0x5a,0xe5, 0x9c,0x84,0x54,0x5a,0x6a,0xad,0xb5,0x18,0x2b,0xe7,0xa4,0x94,0x94,0x52,0x6b,0xb1,0xc5,0xd8,0x41,0x48,0xa9,0xa5,0xd6,0x62,0x8c,0x31,0xc6,0x0e,0x42,0x4a,0xa9,0xb5, 0x16,0x63,0x8c,0x31,0x86,0x52,0x5a,0x8a,0x31,0xc6,0x1a,0x63,0xad,0x35,0x94,0x94,0x5a,0x8b,0x31,0xc6,0x58,0x73,0xad,0x25,0xa5,0xd6,0x62,0xac,0xb5,0xd6,0x9a,0x7b, @@ -2905,11 +2899,11 @@ static const uint8_t wvc_standard_01c7[] = { 0xe6,0x5c,0x7b,0xef,0xbd,0x07,0xd5,0x5a,0x8c,0xb5,0xe6,0x9a,0x73,0x10,0xbe,0x17,0x00,0xb8,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_01c8[] = { +static const uint8_t vcb_standard_01c8[] = { 0x12,0x05,0xe0,0x51,0xca,0x5a,0xad,0xc5,0xe8,0x9c,0xb5,0x5a,0x8b,0xd1,0x49,0x6b,0xb5,0x16,0xa3,0xb5,0x5a,0x7b,0x6f,0x4e,0xb4,0xf6,0xde,0x8c,0x88,0xef,0xbd,0x39, 0xf1,0xde,0x7b,0x73,0x62,0xce,0x18,0x6b,0x05,0x31,0xce,0x19,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_01c9[] = { +static const uint8_t vcb_standard_01c9[] = { 0x12,0x12,0xa0,0x98,0xa9,0xaa,0x32,0xbb,0xbb,0xbb,0xbb,0xcb,0x4c,0x33,0xb3,0x3b,0x44,0x44,0x44,0xc4,0xcc,0x34,0x3b,0xbb,0x43,0x44,0x44,0x44,0xcc,0x4c,0xb3,0xbb, 0x43,0x44,0x44,0x4c,0xc4,0xcc,0x34,0xbb,0xc3,0x43,0x44,0x4c,0xc4,0x4c,0xd5,0xbb,0x3b,0x44,0x44,0xc4,0x44,0xcc,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0xcc,0x54,0xd5, 0x3b,0x44,0x44,0x44,0x44,0xc4,0xcc,0x4c,0x55,0xbd,0x43,0x44,0x4c,0x44,0x44,0x54,0x55,0x55,0x44,0x44,0x44,0x44,0x44,0x44,0xcd,0x54,0x45,0x44,0x44,0x44,0xc4,0xcc, @@ -2917,7 +2911,7 @@ static const uint8_t wvc_standard_01c9[] = { 0x4c,0x44,0x54,0x55,0x55,0xd5,0x4c,0x44,0x44,0xc4,0x44,0xd5,0x54,0x55,0x4d,0x45,0x44,0x44,0x44,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_01ca[] = { +static const uint8_t vcb_standard_01ca[] = { 0x12,0x0e,0x28,0x30,0x46,0x29,0xc6,0x1c,0x83,0x50,0x4a,0x29,0x15,0x42,0x8c,0x39,0x27,0x1d,0x95,0xd6,0x62,0xac,0x10,0x62,0xcc,0x39,0x09,0x29,0xb5,0x16,0x5b,0xf1, 0x9c,0x73,0x10,0x4a,0x48,0xa5,0xb5,0x18,0x8b,0xe7,0x9c,0x83,0x50,0x4a,0x4a,0xb1,0xd5,0x58,0x54,0x0a,0xa1,0x94,0x94,0x52,0x8b,0x2d,0xd6,0xa2,0x52,0xe8,0xa8,0xa4, 0x94,0x52,0x6b,0x35,0x16,0x63,0x4c,0x2a,0xa9,0xb5,0xd6,0x62,0xab,0xb1,0x18,0x63,0x52,0x0a,0x2d,0xb5,0xd6,0x62,0x8c,0xc5,0x08,0x5b,0x53,0x6a,0x2d,0xb6,0xda,0x6a, @@ -2925,28 +2919,28 @@ static const uint8_t wvc_standard_01ca[] = { 0xf7,0xd6,0x62,0xa9,0xad,0xe6,0x62,0x8c,0x0f,0xbe,0xb6,0x14,0x4b,0x8c,0x35,0x17,0x00,0xb8,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_01cb[] = { +static const uint8_t vcb_standard_01cb[] = { 0x92,0x0a,0x28,0x30,0x46,0x21,0xc6,0x20,0x94,0xd2,0x5a,0x85,0x10,0x63,0xce,0x49,0x69,0xa9,0xb5,0x0a,0x21,0xc6,0x9c,0x93,0x92,0x52,0x6b,0x39,0x63,0xce,0x41,0x48, 0xa9,0xb5,0xd8,0x72,0xe7,0x1c,0x83,0x50,0x4a,0x6b,0x31,0xf6,0x54,0x3a,0x27,0x25,0xa5,0xd6,0x62,0xec,0x29,0x85,0x8e,0x4a,0x4a,0xad,0xc5,0xd6,0x7b,0x2f,0xa9,0xa4, 0xd6,0x5a,0x8b,0xb1,0xf7,0x9e,0x42,0x0a,0xb5,0xb5,0x16,0x63,0xef,0xbd,0xd5,0xd4,0x5a,0x8b,0xb1,0xc6,0xde,0x7b,0x8e,0xad,0xc4,0x12,0x6b,0x8c,0xbd,0xf7,0xde,0x63, 0x6d,0x31,0xb6,0x18,0x7b,0xef,0xbd,0xc7,0xd6,0x52,0x6d,0x39,0x16,0x00,0x30,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_01cc[] = { +static const uint8_t vcb_standard_01cc[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x80,0x72,0xca,0x29,0xe7,0xa4,0x93,0x52,0x5a,0x6b,0xb5,0xf5,0xd6,0x5b,0xb1,0xcd,0x36,0xdb,0x6c,0xb7,0xdd,0x76,0xe3,0xad,0x77,0xde, 0x79,0xeb,0xbd,0x77,0xde,0x79,0xe7,0x8d,0xb7,0xde,0x7b,0xef,0xad,0xb7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x39,0xef,0xbd,0xf7,0xce,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef, 0xbd,0xf7,0x5e,0x00, }; -static const uint8_t wvc_standard_01cd[] = { +static const uint8_t vcb_standard_01cd[] = { 0x01,0x02,0x20,0x20,0x22,0x22,0xa2,0xa2,0xa2,0xa2,0xa2,0x2a,0x33,0xb3,0xb3,0x3b,0xbc,0xc4,0x44,0x00, }; -static const uint8_t wvc_standard_01ce[] = { +static const uint8_t vcb_standard_01ce[] = { 0x12,0x05,0x20,0x98,0x31,0x33,0x43,0x9c,0xaa,0xbb,0x3b,0xc4,0xa9,0xba,0xbb,0x43,0xb4,0x3b,0x44,0x44,0x4d,0xbb,0x43,0x44,0x4c,0xb5,0x3b,0xc4,0x4c,0x55,0xbb,0x43, 0xcc,0x54,0x45,0xc4,0x4c,0xd5,0x5d,0x44,0xcc,0x54,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_01cf[] = { +static const uint8_t vcb_standard_01cf[] = { 0x92,0x01,0x18,0x6c,0xed,0x4a,0x7b,0xac,0x5d,0xdb,0xae,0x6d,0x07,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_01d0[] = { +static const uint8_t vcb_standard_01d0[] = { 0x18,0x9a,0xe1,0x70,0x12,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0xde,0x03,0x5e,0x8c,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xd2,0x7b,0x40,0x8b,0x0f,0x78,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -2976,33 +2970,33 @@ static const uint8_t wvc_standard_01d0[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_01d1[] = { +static const uint8_t vcb_standard_01d1[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x96,0xe5,0x79,0xa2,0xa8,0x9a,0xb2,0xec,0x58,0x92,0xe7,0x89,0xa2,0x69,0xaa,0xaa,0x6d,0x3b,0x96,0xe5,0x79,0xa2,0x68,0x9a,0xaa,0x6a,0xdb, 0x96,0xe7,0x89,0xa2,0x69,0xaa,0xaa,0xeb,0xea,0xba,0xe5,0x79,0xa2,0x68,0xaa,0xaa,0xea,0xba,0xba,0xee,0x89,0xa2,0x6a,0xaa,0xaa,0xeb,0xca,0xb2,0xef,0x7b,0xa2,0x68, 0x9a,0xaa,0xea,0xba,0xb2,0xec,0xfb,0xa6,0x69,0xba,0xaa,0xeb,0xca,0xb2,0x6d,0xfb,0xbe,0x69,0x9a,0xaa,0xeb,0xba,0xb2,0x2c,0xdb,0xbe,0xb0,0xba,0xaa,0xeb,0xca,0xb2, 0x6d,0xeb,0xb6,0x31,0xac,0xaa,0xeb,0xba,0xb2,0x6c,0xdb,0xb6,0xae,0x1c,0xb7,0x6e,0xeb,0xba,0xf0,0x0b,0xc3,0x30,0x4c,0x6d,0x5d,0xf7,0x7d,0xdf,0x17,0x86,0x63,0x78, 0xa6,0x01,0x00,0x3c,0xc1,0x01,0x00,0xa8,0xc0,0x86,0xd5,0x11,0x4e,0x8a,0xc6,0x02,0x03, }; -static const uint8_t wvc_standard_01d2[] = { +static const uint8_t vcb_standard_01d2[] = { 0x21,0x03,0x60,0x00,0x00,0xca,0x38,0xe5,0x9c,0x93,0xd2,0x4a,0x2b,0xb5,0xb5,0x56,0x6b,0xed,0xc5,0x18,0xef,0xac,0x73,0xde,0x39,0x01, }; -static const uint8_t wvc_standard_01d3[] = { +static const uint8_t vcb_standard_01d3[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0xa3,0x33,0xcb,0x34,0x4c,0xb2,0xb3,0x44,0xcb,0xa4,0xbb,0xcb,0xbc,0x4c,0xcb,0x4c,0xdd,0x5c,0xb6,0x4c,0x64,0xcd,0x65,0xba,0xbb, 0xcc,0xcb,0xb4,0xcc,0xdc,0x45,0x5d,0x4b,0xcd,0xdd,0x64,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_01d4[] = { +static const uint8_t vcb_standard_01d4[] = { 0x11,0x03,0x20,0x10,0x19,0x33,0x3b,0x33,0xb3,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0x3b,0x43,0x3c,0x44,0xbc,0xbb,0xbb,0xbb,0xbb,0xbb,0xdb,0x4d,0x0d,0x00,0x80,0x09,0x0e, 0x00,0x00,0x01,0x56,0xb0,0x2b,0xb3,0xb4,0x6a,0xa3,0xb8,0xa9,0x93,0xbc,0xe8,0x83,0xc0,0x27,0x74,0xc4,0x66,0x64,0xc8,0xa5,0x54,0xcc,0xe4,0x44,0xd0,0x23,0x35,0xd4, 0x62,0x25,0xd8,0xa1,0x15,0xdc,0xe0,0x05,0x60, }; -static const uint8_t wvc_standard_01d5[] = { +static const uint8_t vcb_standard_01d5[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0x23,0xc4,0xd3,0x34,0x4d,0x42,0xb4,0xcc,0x4b,0x1d,0x44,0xdc,0xc5,0xdd,0xdb,0xd5,0xdd,0x5c,0xb6,0x5d,0xdd,0xcd,0xe5,0x41,0xc4, 0x5d,0xdc,0xb5,0xd5,0x64,0xd6,0x5d,0xdb,0x4d,0x66,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_01d6[] = { +static const uint8_t vcb_standard_01d6[] = { 0x21,0x03,0x60,0x00,0x00,0x4a,0x29,0xe7,0x9c,0x93,0x4e,0x3a,0x2b,0xb5,0xd4,0xd6,0x5b,0x6f,0xc5,0x16,0xdb,0x6c,0xf1,0xd5,0x57,0x01, }; -static const uint8_t wvc_standard_01d7[] = { +static const uint8_t vcb_standard_01d7[] = { 0x12,0x12,0x20,0x19,0xa9,0x32,0xbb,0x43,0x44,0x44,0x44,0x4c,0xd5,0x2a,0xb3,0x3b,0x44,0x44,0x44,0xc4,0xcc,0xac,0x32,0xbb,0x43,0x44,0x44,0x44,0xcc,0x4c,0x33,0xbb, 0x3b,0x44,0x44,0xc4,0xc4,0xd4,0xb4,0x32,0xbb,0x43,0x44,0x44,0xc4,0xcc,0x54,0xb3,0xbb,0x3b,0x44,0x44,0x44,0xc4,0xcc,0x34,0xbb,0xbb,0x43,0x44,0x44,0xc4,0x54,0xd5, 0xbb,0xbb,0x3b,0x44,0x44,0x44,0x44,0xcd,0x54,0xbd,0x3b,0x44,0x44,0xc4,0xc4,0xcc,0x4c,0x55,0x44,0x44,0x44,0x44,0x44,0x44,0xd5,0x54,0x45,0x44,0x44,0x44,0xc4,0xcc, @@ -3010,7 +3004,7 @@ static const uint8_t wvc_standard_01d7[] = { 0x44,0x44,0x54,0x55,0x55,0xd5,0x4c,0x44,0x44,0x44,0x44,0x55,0x4d,0x55,0x55,0x45,0xc4,0x44,0x44,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_01d8[] = { +static const uint8_t vcb_standard_01d8[] = { 0x12,0x12,0xa0,0xa0,0xa9,0xba,0xbb,0x3b,0x44,0x44,0x44,0xa4,0x2a,0xb3,0x3b,0x3c,0x44,0x44,0x44,0x44,0xaa,0x32,0xbb,0x3b,0x44,0x44,0x44,0x44,0x34,0xb3,0x3b,0x44, 0x44,0x44,0x44,0xcc,0x44,0x33,0xbb,0x43,0x44,0x44,0x44,0x44,0xcc,0xbc,0x3b,0x44,0xc4,0xcc,0xc4,0xcc,0xcc,0xcc,0xbb,0x43,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0x44,0x44, 0x44,0x44,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -3018,17 +3012,17 @@ static const uint8_t wvc_standard_01d8[] = { 0xcc,0xcc,0xc4,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_01d9[] = { +static const uint8_t vcb_standard_01d9[] = { 0x14,0x27,0xe0,0x70,0x4e,0x5b,0x00,0x00,0x70,0x52,0x6a,0x0d,0x00,0x00,0x4e,0x4a,0xad,0x01,0x00,0xc0,0x6a,0x2d,0x46,0x00,0x00,0x58,0xad,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_01da[] = { +static const uint8_t vcb_standard_01da[] = { 0x12,0x05,0xe0,0x50,0x4e,0x6b,0xe0,0x9c,0xd6,0xc0,0x49,0xad,0x81,0xd5,0xde,0x03,0xbc,0x07,0x88,0x11,0x30,0x23,0xa0,0x56,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_01db[] = { +static const uint8_t vcb_standard_01db[] = { 0x18,0x9a,0xe1,0x90,0x12,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5e,0x03,0x5a,0x8c,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0x40,0x8b,0x0f,0x68,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -3058,28 +3052,28 @@ static const uint8_t wvc_standard_01db[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_01dc[] = { +static const uint8_t vcb_standard_01dc[] = { 0x02,0x04,0x28,0x52,0x16,0x6a,0x08,0xc9,0x02,0x08,0x39,0x06,0xc9,0x35,0x86,0x31,0x48,0x45,0x44,0x4a,0x39,0xe6,0xc0,0x76,0xcc,0x39,0x69,0x45,0x54,0x4e,0x39,0xe5, 0x44,0x74,0xd4,0x51,0x86,0xb8,0x17,0x63,0x84,0x4e,0x45,0x00, }; -static const uint8_t wvc_standard_01dd[] = { +static const uint8_t vcb_standard_01dd[] = { 0x42,0x06,0xa0,0x31,0x55,0xd5,0xd4,0x55,0x0a,0xa5,0x2a,0x43,0x5d,0xc5,0xca,0xb2,0xc3,0x54,0x25,0xb5,0x3b,0x54,0x6e,0x2d,0xba,0x21,0xbb,0xd4,0x2c,0x33,0xa2,0x3a, 0xd4,0xb4,0xc3,0xaa,0xb2,0x43,0x45,0x54,0xb3,0x2a,0xc3,0xdd,0x64,0x3c,0x33,0x3b,0x65,0x6d,0x4d,0x3c,0x33,0x00, }; -static const uint8_t wvc_standard_01de[] = { +static const uint8_t vcb_standard_01de[] = { 0x02,0x04,0x20,0xb9,0x5d,0x5e,0x65,0x9a,0xb2,0x3b,0x64,0xa4,0x21,0x32,0x64,0x2c,0xaa,0xb2,0xdb,0x35,0xaa,0xa1,0x63,0xb5,0x2a,0xa2,0xda,0xbc,0x33,0x23,0xb9,0x5c, 0xde,0xc5,0x32,0x00, }; -static const uint8_t wvc_standard_01df[] = { +static const uint8_t vcb_standard_01df[] = { 0x11,0x03,0x98,0x6c,0x1c,0x49,0xb6,0x6d,0xdb,0xb6,0xae,0x6b,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0x07,0x00,0xc0,0x04,0x07,0x00,0x80,0x00,0x2b,0xd8,0x95, 0x59,0x5a,0xb5,0x51,0xdc,0xd4,0x49,0x5e,0xf4,0x41,0xe0,0x13,0x3a,0x62,0x33,0x32,0xe4,0x52,0x2a,0x66,0x72,0x22,0xe8,0x91,0x1a,0x6a,0xb1,0x12,0xec,0xd0,0x0a,0x6e, 0xf0,0x02,0x30, }; -static const uint8_t wvc_standard_01e0[] = { +static const uint8_t vcb_standard_01e0[] = { 0x01,0x04,0x28,0x21,0x44,0x23,0x63,0xa8,0x53,0x4a,0x82,0x4b,0xc1,0x42,0x88,0x23,0x62,0xa8,0x43,0xc8,0x79,0x28,0xb5,0x74,0x10,0x3c,0xa5,0xb0,0x64,0x4c,0x7a,0x8a, 0x35,0x08,0x21,0x84,0xef,0xbd,0xe7,0xde,0x7b,0xef,0x3d,0x00, }; -static const uint8_t wvc_standard_01e1[] = { +static const uint8_t vcb_standard_01e1[] = { 0x14,0x27,0xe8,0x20,0x49,0x9e,0x27,0x79,0x9a,0x28,0x4a,0x9a,0x27,0x8a,0xa2,0x29,0xba,0xae,0x28,0x9a,0xaa,0x6b,0x79,0x9e,0x69,0x7a,0xa6,0xa9,0xaa,0x9e,0x68,0xaa, 0xaa,0xa9,0xaa,0xb2,0x6c,0xaa,0xaa,0x2b,0x5b,0x9e,0x67,0x9a,0x9e,0x29,0xaa,0xaa,0x67,0x9a,0xaa,0x6a,0xaa,0xaa,0xec,0x9a,0xaa,0x2a,0xbb,0xa2,0xaa,0xea,0xb2,0xe9, 0xaa,0xba,0x6c,0xaa,0xaa,0x6e,0xbb,0xb6,0xec,0xeb,0xae,0x2c,0x0b,0xbf,0xa8,0xaa,0xb2,0x6e,0xaa,0xae,0xad,0x9b,0xaa,0x6b,0xeb,0xae,0x2c,0xeb,0xbe,0x2b,0xcb,0xbe, @@ -3096,33 +3090,33 @@ static const uint8_t wvc_standard_01e1[] = { 0x65,0x5f,0x58,0x6d,0xd9,0x18,0x6e,0xdf,0x16,0x86,0x5d,0x18,0x8e,0xe3,0xb5,0x6d,0xbe,0xac,0xeb,0x4a,0x57,0xd6,0xb1,0x85,0x5f,0xe9,0xeb,0xc6,0xd1,0xb5,0x6d,0xa1, 0x6c,0xdb,0x42,0x59,0xb7,0x19,0xbb,0xef,0x33,0x76,0x63,0x27,0x0c,0x00,0x00,0x03,0x0e,0x00,0x00,0x01,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_01e2[] = { +static const uint8_t vcb_standard_01e2[] = { 0x92,0x07,0x28,0x30,0x46,0x29,0xe7,0xa4,0xa4,0xd4,0x28,0xc5,0x18,0x84,0x94,0x62,0x6b,0x94,0x62,0x0c,0x42,0x4a,0xad,0x55,0x8c,0x41,0x48,0xa9,0xb5,0x18,0x2b,0xc6, 0x20,0xa4,0xd4,0x5a,0x8c,0x1d,0x84,0x94,0x5a,0x8b,0xb1,0xd6,0x0e,0x42,0x4a,0xad,0xc5,0x58,0x6b,0x48,0xa9,0xb5,0x18,0x6b,0xcd,0x39,0xa4,0xd4,0x5a,0x8c,0xb5,0xe6, 0x9a,0x5a,0x8b,0xb1,0xd6,0x9c,0x7b,0x4f,0xad,0xc5,0x58,0x6b,0xce,0x39,0x17,0x00,0x70,0x17,0x1c,0x00,0xc0,0x0e,0x6c,0x14,0xd9,0x9c,0x60,0x24,0x28, }; -static const uint8_t wvc_standard_01e3[] = { +static const uint8_t vcb_standard_01e3[] = { 0x12,0x05,0xa8,0x31,0xcc,0x31,0x27,0x2d,0x28,0x40,0x29,0xe6,0xa4,0xe5,0x4c,0x41,0x08,0xa9,0xd5,0xe0,0x29,0xa8,0x18,0xa4,0x18,0x34,0x05,0x19,0x73,0xd0,0x72,0xe7, 0xa4,0x63,0x8c,0x49,0x0d,0xa5,0x95,0xce,0x39,0xa9,0x29,0xe6,0xd8,0x52,0x6a,0x3d,0x18,0xa3,0x9c,0xf1,0xbd,0x09, }; -static const uint8_t wvc_standard_01e4[] = { +static const uint8_t vcb_standard_01e4[] = { 0x42,0x06,0x28,0x62,0x12,0x52,0xc9,0x29,0xf6,0xca,0x28,0xc5,0x98,0x84,0xd6,0x4b,0x85,0x94,0x62,0x92,0x7a,0x0f,0x15,0x53,0x8c,0x49,0xa7,0x3d,0x55,0xc8,0x20,0xe5, 0x20,0xf7,0x50,0x29,0xa4,0x14,0x74,0xda,0x5b,0xa6,0x14,0x52,0x8a,0x61,0xef,0x14,0x53,0x08,0x19,0x43,0x3d,0x74,0x10,0x32,0xa6,0x10,0xf6,0x5a,0x7b,0xee,0xb9,0xf7, 0xde,0x03, }; -static const uint8_t wvc_standard_01e5[] = { +static const uint8_t vcb_standard_01e5[] = { 0x92,0x0a,0x20,0x98,0xa9,0xaa,0x32,0xbb,0x43,0x24,0xb3,0x33,0x33,0xbc,0xc4,0x54,0x32,0xbb,0x33,0x3b,0xcc,0x54,0xad,0x3b,0x44,0x44,0xcd,0x5d,0xdf,0xba,0x43,0x44, 0x54,0x5d,0xed,0xb5,0xbb,0xcc,0x5d,0x66,0x76,0x66,0xbb,0xcb,0x54,0xe5,0x6d,0x77,0xc7,0x4c,0x5d,0xe6,0xf6,0xf6,0xf6,0xcb,0xdc,0xed,0xf6,0x6e,0xf7,0xce,0xdd,0x6e, 0x6f,0x77,0x6f,0xf7,0xdc,0xe5,0xf6,0x76,0x6f,0x77,0x5f,0x67,0x6f,0x77,0x77,0x77,0x77,0x66,0x77,0x77,0x77,0x77,0x77,0x0f,0x00,0x38,0x0d,0x0e,0x00,0xa0,0x07,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_01e6[] = { +static const uint8_t vcb_standard_01e6[] = { 0x92,0x0a,0x20,0x98,0xa9,0xaa,0x32,0xbb,0x43,0x24,0xb3,0x33,0x33,0xbc,0xc4,0x54,0x32,0xbb,0x33,0x3b,0xcc,0x54,0xad,0x3b,0x44,0x44,0xcd,0x5d,0xdf,0xba,0x43,0x44, 0x54,0x5d,0xed,0xb5,0xbb,0xcc,0x5d,0x66,0x76,0x66,0xbb,0xcb,0x54,0xe5,0x6d,0x77,0xc7,0x4c,0x5d,0xe6,0xf6,0xf6,0xf6,0xcb,0xdc,0xed,0xf6,0x6e,0xf7,0xce,0xdd,0x6e, 0x6f,0x77,0x6f,0xf7,0xdc,0xe5,0xf6,0x76,0x6f,0x77,0x5f,0x67,0x6f,0x77,0x77,0x77,0x77,0x66,0x77,0x77,0x77,0x77,0x77,0x0f,0x00,0x38,0x0d,0x0e,0x00,0xa0,0x07,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_01e7[] = { +static const uint8_t vcb_standard_01e7[] = { 0x12,0x12,0xa0,0x21,0xaa,0x32,0xbb,0xbb,0x43,0xcc,0x54,0x25,0xa2,0x2a,0xb3,0xbb,0x3b,0xc4,0x4c,0x55,0x22,0xaa,0x32,0xbb,0xbb,0x43,0xcc,0x54,0xad,0x2a,0x2b,0xb3, 0x3b,0xc4,0x4c,0xd5,0xd5,0xaa,0x2a,0x33,0xbb,0x43,0xcc,0x54,0xd5,0x35,0x33,0xb3,0x3b,0x44,0xc4,0x4c,0xd5,0x5d,0x33,0x33,0xbb,0x43,0x44,0xcc,0x54,0xdd,0xbd,0xbb, 0x3b,0xbc,0xc4,0x4c,0xcd,0x55,0xde,0xbb,0xbb,0x43,0xc4,0xcc,0x4c,0xd5,0xdd,0xbd,0x3b,0x44,0xc4,0x4c,0xcd,0xd5,0x5d,0xde,0xbb,0x43,0x44,0xcc,0x4c,0x55,0xdd,0x5d, @@ -3130,18 +3124,18 @@ static const uint8_t wvc_standard_01e7[] = { 0x66,0xe6,0x56,0xd5,0xd5,0xdd,0x5d,0x66,0xe6,0xe6,0x6e,0x55,0xd5,0xdd,0xdd,0x5d,0x66,0xe6,0xee,0x0e,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_01e8[] = { +static const uint8_t vcb_standard_01e8[] = { 0x42,0x06,0xa8,0x61,0x18,0x72,0xe8,0x9d,0xc4,0x0c,0x39,0x05,0x99,0x64,0x92,0x52,0xc5,0x9c,0x83,0x10,0x5a,0xef,0x90,0x53,0x4e,0x41,0x26,0x2d,0x65,0x8c,0x29,0xc6, 0x18,0xe5,0x0c,0x39,0xc5,0x10,0x53,0x10,0x63,0x08,0x9d,0x52,0x08,0x41,0xed,0x94,0x53,0xca,0x20,0x82,0x30,0x84,0xd4,0x49,0xe6,0x0c,0xb2,0xd4,0x83,0x0e,0x2e,0x76, 0x8e,0x03, }; -static const uint8_t wvc_standard_01e9[] = { +static const uint8_t vcb_standard_01e9[] = { 0x14,0x27,0xe0,0x70,0xce,0x5a,0x00,0x00,0x70,0x52,0x6a,0x0b,0x00,0x00,0x4e,0x5a,0xad,0x01,0x00,0xc0,0x6a,0x2d,0x46,0x00,0x00,0x58,0xad,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_01ea[] = { +static const uint8_t vcb_standard_01ea[] = { 0x92,0x16,0x28,0x30,0x86,0x31,0xc7,0x9c,0x82,0x4c,0x3a,0x2a,0x29,0xa5,0xd4,0x30,0x05,0xa1,0x84,0x10,0x4a,0x49,0x25,0x95,0x94,0x62,0x6a,0x18,0x83,0x10,0x42,0x08, 0xa5,0xa4,0x92,0x52,0x6a,0xa9,0x65,0xd0,0x51,0x4a,0xa9,0x94,0x94,0x5a,0x6b,0xad,0xb5,0x1a,0x33,0x07,0x25,0xa5,0x54,0x4a,0x4a,0x29,0xb5,0x56,0x5b,0xac,0x1d,0x84, 0x94,0x52,0x4a,0xa9,0xb5,0xda,0x72,0xad,0x35,0xd7,0x0e,0x42,0x4a,0x29,0xb5,0xd4,0x5a,0x8c,0x31,0xc6,0x58,0x6b,0x07,0x21,0x95,0x96,0x5a,0x8b,0x31,0xc6,0x5c,0x6b, @@ -3151,17 +3145,17 @@ static const uint8_t wvc_standard_01ea[] = { 0xbd,0xc5,0x58,0x6b,0xad,0xb9,0xe7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x62,0xad,0xb5,0xe7,0x9e,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0x6f,0x35,0xd6,0x9c,0x73,0xcf,0xbd,0xe7, 0xde,0x7b,0xef,0xbd,0x17,0x00,0x72,0x23,0x1c,0x00,0x10,0x17,0x8c,0x24,0xa4,0xce,0x32,0xac,0x34,0xe2,0xc6,0x13,0x30,0x44,0x20,0x01, }; -static const uint8_t wvc_standard_01eb[] = { +static const uint8_t vcb_standard_01eb[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xbd,0x17,0xe3,0x9c,0x2b,0xa5,0xd6,0xde,0x7b,0x2f,0xc6,0x39,0x5b,0x4a,0xad,0xbd,0xf7,0x5e,0x8c,0x75,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe7,0x9c,0xb3,0xd6,0x7a,0xe5,0x1c,0xe3,0x9c,0x73,0xd6,0x7a,0x2f,0xe6,0x9c,0xb3,0xd6,0x7b,0xef, 0xc5,0x9c,0x73,0xd6,0x7a,0xef,0xbd,0xd8,0xbb,0xd6,0x5a,0xef,0xcd,0x19,0x7b,0xd7,0x5a,0xeb,0xbd,0x39,0x83,0x7b,0xef,0xcd,0x79,0x67,0x90,0xf3,0xbd,0xf9,0xee,0x1c, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_01ec[] = { +static const uint8_t vcb_standard_01ec[] = { 0x14,0x05,0x20,0x98,0xa9,0x2a,0xab,0x1a,0x33,0xcd,0x54,0xcd,0x31,0xcb,0x4c,0xcd,0xac,0x4c,0x55,0x55,0xcd,0x42,0xd4,0x5d,0x45,0x2c,0x4c,0xdd,0x55,0x4c,0x53,0x55, 0xd5,0xe5,0x2d,0x4c,0xcd,0x5c,0xe6,0x4a,0xd4,0x4c,0x5d,0x0e,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_01ed[] = { +static const uint8_t vcb_standard_01ed[] = { 0x12,0x0e,0x28,0x30,0x86,0x31,0xe7,0x9c,0x83,0x50,0x42,0x2a,0x8d,0x52,0xce,0x41,0x08,0xa1,0x94,0x54,0x5a,0x69,0x94,0x72,0x0e,0x4a,0x08,0xa5,0xa4,0xd4,0x5a,0xe6, 0x9c,0x94,0x94,0x4a,0x49,0xa9,0xb5,0xd8,0x32,0xe7,0xa4,0xa4,0x54,0x4a,0x4a,0xad,0xb5,0xd8,0x49,0x48,0xa9,0xb5,0x94,0x5a,0x8b,0xb1,0xc6,0x0e,0x42,0x4a,0xad,0xa5, 0xd6,0x5a,0x8c,0x35,0x76,0x10,0x4a,0x69,0x29,0xb6,0x18,0x6b,0xcc,0xb5,0x83,0x50,0x4a,0x6a,0xad,0xc5,0x18,0x6b,0xad,0xa1,0x94,0x96,0x62,0x8b,0xb1,0xc6,0x5a,0x6b, @@ -3169,32 +3163,32 @@ static const uint8_t wvc_standard_01ed[] = { 0xc6,0x5a,0x73,0xcd,0xbd,0xf7,0xd4,0x5a,0x8c,0x35,0xd6,0x9a,0x73,0xee,0x39,0x17,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_standard_01ee[] = { +static const uint8_t vcb_standard_01ee[] = { 0x42,0x06,0x28,0x52,0xe0,0x59,0x28,0xa5,0xc5,0x48,0x80,0x03,0x11,0x73,0x14,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xaf,0x8c,0x47,0x12,0x31,0xa9,0x3d,0x86,0x9e,0x3a,0xe6, 0x20,0xf6,0xcc,0x78,0xc4,0x8c,0x72,0x14,0x3b,0xe5,0x99,0x43,0x88,0x41,0x0c,0x9d,0x87,0x4e,0x29,0x06,0x31,0xa5,0x5e,0x4a,0xc6,0x18,0xc4,0x18,0x7b,0x8c,0x21,0x84, 0x12,0x03, }; -static const uint8_t wvc_standard_01ef[] = { +static const uint8_t vcb_standard_01ef[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x9a,0xaa,0x44,0x54,0xc4,0xa9,0x4a,0xc4,0x44,0xb4,0x4c,0x55,0x5d,0x55,0x43,0x54,0x4d,0xcd,0x34,0x44,0x4d,0xd5,0x4c,0xcb,0x54, 0xd5,0x55,0x35,0x44,0xcd,0xd4,0x4c,0x43,0xd4,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_01f0[] = { +static const uint8_t vcb_standard_01f0[] = { 0x21,0x01,0x58,0x97,0x97,0x95,0x95,0x95,0x77,0x77,0x99,0x09, }; -static const uint8_t wvc_standard_01f1[] = { +static const uint8_t vcb_standard_01f1[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0x16,0xe3,0x9c,0x2d,0xa5,0xd6,0xde,0x7b,0x6f,0xc6,0x3a,0x5b,0x4a,0xad,0xbd,0xf7,0x5e,0x9c,0xb5,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe3,0x9c,0xb3,0xd6,0x7b,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x7a,0x2f,0xe6,0x9c,0xb3,0xd6,0x7b,0x6f, 0xc6,0x9c,0x73,0xd6,0x7a,0xef,0xbd,0xd8,0xbb,0xd6,0x5a,0x6f,0xce,0x19,0x7b,0xd7,0x59,0xeb,0xbd,0x39,0x83,0x7b,0xef,0xcd,0x39,0x6f,0x90,0xef,0xbd,0x39,0xe7,0x1d, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_01f2[] = { +static const uint8_t vcb_standard_01f2[] = { 0x12,0x0e,0x20,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0xbc,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b,0x40,0xbe,0x15,0x0e,0x00,0xfe,0x0f,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_01f3[] = { +static const uint8_t vcb_standard_01f3[] = { 0x92,0x16,0x28,0x30,0x86,0x31,0xc7,0x1c,0x83,0x4e,0x42,0x29,0x29,0xb5,0xd6,0x30,0x05,0xa1,0x84,0xd0,0x49,0x49,0xa5,0x95,0xd8,0x62,0x6b,0x94,0x82,0x10,0x42,0x08, 0xa5,0xa4,0x94,0x5a,0x6b,0xad,0x65,0xd0,0x51,0x29,0x25,0x95,0x94,0x5a,0x8b,0x2d,0xc6,0x18,0x33,0x07,0xa5,0xa4,0x54,0x4a,0x4a,0xa9,0xc5,0x18,0x63,0xad,0x1d,0x84, 0x94,0x5a,0x6a,0x2d,0xb6,0x16,0x63,0xcd,0xb5,0xd6,0x0e,0x42,0x49,0x29,0xb5,0x16,0x5b,0x8c,0xb5,0xd6,0x5c,0x7b,0x07,0x21,0x95,0xd6,0x5a,0xcb,0x31,0xc6,0x60,0x73, @@ -3204,7 +3198,7 @@ static const uint8_t wvc_standard_01f3[] = { 0xbe,0xd5,0x56,0x6b,0xce,0xb9,0xd6,0xde,0x7b,0xee,0x3d,0x07,0xdd,0x62,0xac,0xb9,0xe6,0xa0,0x83,0x0f,0x42,0xf8,0xe0,0x83,0x70,0x31,0xd6,0x9e,0x73,0xee,0x39,0x08, 0x1d,0x74,0xf0,0x3d,0x18,0x00,0x72,0x23,0x1c,0x00,0x10,0x17,0x8c,0x24,0xa4,0xce,0x32,0xac,0x34,0xe2,0xc6,0x13,0x30,0x44,0x20,0x01, }; -static const uint8_t wvc_standard_01f4[] = { +static const uint8_t vcb_standard_01f4[] = { 0x92,0x1b,0xa0,0xa9,0x32,0x33,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xcb,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4,0xac,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44, 0x44,0x44,0x4c,0xb3,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0xcc,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44, 0x44,0xc4,0xcc,0xbc,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0x4c,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0xcc,0x44,0x44,0x44,0x44,0x44,0x44,0x44, @@ -3214,105 +3208,105 @@ static const uint8_t wvc_standard_01f4[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0xcc,0x44,0x4c,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0xc4,0x44,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x4c,0x44,0x44,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_standard_01f5[] = { +static const uint8_t vcb_standard_01f5[] = { 0x12,0x05,0xe0,0x30,0x4a,0x6b,0x80,0xb5,0x00,0x6b,0x01,0x5a,0x03,0xb4,0x06,0x78,0x0f,0x10,0x1f,0x60,0x4e,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0, 0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_01f6[] = { +static const uint8_t vcb_standard_01f6[] = { 0x12,0x05,0xe0,0x30,0x4a,0x6b,0x80,0xb5,0x00,0x6b,0x01,0x5a,0x03,0xb4,0x06,0x78,0x0f,0x10,0x1f,0x60,0x4e,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0, 0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_01f7[] = { +static const uint8_t vcb_standard_01f7[] = { 0x92,0x07,0xa0,0x98,0x21,0x32,0x33,0xbb,0x4b,0xa2,0x2a,0xb3,0xbb,0xbb,0x24,0xaa,0x32,0xbb,0xbb,0x4b,0x33,0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0xcc, 0xbb,0xbb,0xbb,0xbb,0xcc,0xbc,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0x3b,0xc4,0xcc,0xcc,0xbc,0xbb,0x43,0xcc,0xcc,0x4c,0x44,0xc4,0xc3,0xcc,0xcc,0x3c,0xbc,0xc3,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_01f8[] = { +static const uint8_t vcb_standard_01f8[] = { 0x92,0x01,0x98,0x6c,0x64,0x49,0xb2,0x1c,0x59,0x92,0x6c,0x4b,0x06,0x00,0x80,0x01,0x07,0x00,0x80,0x00,0x13,0xca,0x40, }; -static const uint8_t wvc_standard_01f9[] = { +static const uint8_t vcb_standard_01f9[] = { 0x14,0x05,0x20,0xb8,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x0b,0x00,0x3b,0x11,0x0e,0x00,0x3b,0x11,0x16,0x42, }; -static const uint8_t wvc_standard_01fa[] = { +static const uint8_t vcb_standard_01fa[] = { 0x14,0x05,0x20,0xb8,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x0b,0x00,0x3b,0x11,0x0e,0x00,0x3b,0x11,0x16,0x42, }; -static const uint8_t wvc_standard_01fb[] = { +static const uint8_t vcb_standard_01fb[] = { 0x14,0x05,0x20,0xb8,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x0b,0x00,0x3b,0x11,0x0e,0x00,0x3b,0x11,0x16,0x42, }; -static const uint8_t wvc_standard_01fc[] = { +static const uint8_t vcb_standard_01fc[] = { 0x14,0x05,0x20,0xb8,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x0b,0x00,0x3b,0x11,0x0e,0x00,0x3b,0x11,0x16,0x42, }; -static const uint8_t wvc_standard_01fd[] = { +static const uint8_t vcb_standard_01fd[] = { 0x14,0x27,0xe0,0x71,0x0e,0x52,0x42,0x4a,0x78,0x0d,0x70,0xd6,0xc2,0x7b,0x78,0x0d,0x73,0x02,0xce,0x5a,0x78,0x0f,0xed,0x61,0x4e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xd2,0x6b,0x78,0x0f,0xef,0x61,0x4e,0x40,0x6a,0x0f,0xef,0xe1,0x3d,0xcc,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x7a,0x0f,0xef,0xe1, 0x3d,0xcc,0x09,0x48,0xef,0xe1,0x3d,0xbc,0x87,0x39,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x73,0x62,0x4e,0xc4,0x89,0x3a,0x01,0x6f,0x4e,0xcc,0x89, 0x39,0x31,0x2b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x06,0x1c,0x00,0x00, 0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_01fe[] = { +static const uint8_t vcb_standard_01fe[] = { 0x42,0x06,0xa8,0x61,0x5a,0x72,0x69,0xb9,0xe7,0x46,0x50,0x24,0x95,0xa3,0x5a,0x6b,0xc9,0xa8,0x72,0x92,0x62,0x0e,0x0d,0x45,0x50,0x41,0xab,0xb9,0x86,0x0a,0x1a,0xc4, 0xa4,0xc5,0x10,0x31,0x85,0x10,0x93,0x18,0x4b,0x07,0x1d,0x53,0x4e,0x6a,0x8d,0xa9,0x94,0x8c,0x39,0xaa,0x39,0xb6,0x10,0x2a,0xc4,0xa4,0x06,0x1d,0x53,0xa9,0x14,0x83, 0x16,0x04, }; -static const uint8_t wvc_standard_01ff[] = { +static const uint8_t vcb_standard_01ff[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0x44,0x45,0xac,0x4c,0x55,0xd5,0xcc,0x42,0xd4,0x4c,0xcd,0x2c,0x44,0x4d,0xd5,0x4c,0xd3,0x54, 0xd5,0x55,0x35,0x44,0xcd,0x54,0xcd,0x42,0xcc,0xcc,0x4d,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0200[] = { +static const uint8_t vcb_standard_0200[] = { 0x14,0x05,0xe0,0x90,0x92,0x94,0xa4,0x94,0x5e,0x13,0xa3,0xf8,0x52,0x7b,0x62,0xf4,0x22,0x80,0x14,0x9f,0xf7,0xbc,0x97,0x5e,0xf4,0x9e,0xf7,0x00,0xa4,0x18,0xbd,0xe7, 0xbd,0x14,0xa3,0xf7,0xbc,0x17,0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0201[] = { +static const uint8_t vcb_standard_0201[] = { 0x21,0x03,0x60,0x00,0x00,0x46,0x29,0xa7,0xa4,0xb3,0xce,0x4a,0x6d,0xb5,0xf5,0xd6,0x6b,0xf1,0xcd,0x77,0x63,0x9e,0x7d,0xf6,0xba,0x01, }; -static const uint8_t wvc_standard_0202[] = { +static const uint8_t vcb_standard_0202[] = { 0x42,0x06,0xa8,0x40,0xa6,0x49,0xe6,0x24,0xa5,0x46,0x98,0xe4,0x14,0x83,0x52,0x9a,0x73,0x4e,0x29,0xa5,0x94,0xd2,0x10,0x59,0x92,0x41,0x8a,0x41,0x75,0x64,0x32,0xe6, 0x24,0xe5,0x0c,0x91,0xc6,0x90,0x82,0xd4,0x33,0x45,0x1e,0x53,0x8a,0x41,0x0c,0x21,0xa9,0xd0,0x29,0xe6,0xb0,0xd5,0xe4,0x63,0x09,0x1d,0xc4,0x1a,0x94,0x31,0xc2,0xa5, 0x14,0x03, }; -static const uint8_t wvc_standard_0203[] = { +static const uint8_t vcb_standard_0203[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xb3,0x44,0x54,0xc4,0x31,0x4b,0x44,0x45,0xb4,0xcc,0x54,0xd5,0xcc,0x42,0x54,0x4d,0xcd,0x2c,0x44,0x4d,0xd5,0x4c,0xd3,0x54, 0x55,0x55,0x2d,0x44,0xcd,0x54,0xcd,0x42,0xd4,0x4c,0x4d,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0204[] = { +static const uint8_t vcb_standard_0204[] = { 0x92,0x0a,0x20,0x98,0xd9,0xdd,0xdd,0xdd,0xdd,0x1d,0xbc,0xdd,0xdd,0xdd,0xdd,0xdd,0x40,0xdb,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x5d,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0x5d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x0d,0x80,0x7e,0x15,0x0e,0x00,0xfe,0x0f,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0205[] = { +static const uint8_t vcb_standard_0205[] = { 0x92,0x0a,0x28,0x30,0x86,0x31,0xe7,0x20,0x94,0x92,0x52,0x84,0x90,0x73,0x10,0x4a,0x49,0xa9,0xb5,0x0a,0x21,0xe7,0x20,0x94,0x92,0x52,0x8b,0xc5,0x52,0x8c,0x41,0x28, 0xa5,0xb5,0x18,0x8b,0xa5,0x18,0x83,0x50,0x4a,0x6b,0x31,0x16,0x55,0x3a,0x27,0x25,0xa5,0xd6,0x62,0x2c,0x2a,0x75,0x4e,0x4a,0x4a,0x2d,0xc6,0x58,0x8c,0x31,0x29,0xa5, 0xd6,0x62,0xac,0xb5,0x18,0xa3,0x52,0x4a,0xad,0xc5,0x58,0x6b,0x31,0xc6,0xd6,0xd6,0x5a,0xab,0x35,0xd7,0x62,0x8c,0xce,0xa9,0xb5,0x16,0x63,0xce,0xc5,0x18,0x63,0x64, 0x8c,0x31,0xd6,0xe0,0x8b,0x31,0xc6,0xc8,0x1a,0x63,0x8d,0xb9,0x16,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0206[] = { +static const uint8_t vcb_standard_0206[] = { 0x14,0x05,0x20,0x98,0xb1,0x2a,0xab,0x1a,0xab,0x44,0x54,0xc4,0x29,0x4b,0x44,0x45,0xb4,0xcc,0x54,0x55,0xcd,0x42,0xd4,0x4c,0xcd,0x2c,0x44,0x4d,0xd5,0x4c,0x53,0x55, 0xd5,0x55,0x35,0x44,0xcd,0xdc,0x4c,0x43,0xd4,0x4c,0xcd,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0207[] = { +static const uint8_t vcb_standard_0207[] = { 0x12,0x05,0x20,0x10,0xc9,0xcc,0xcc,0x9c,0xcc,0xcc,0xcc,0xcc,0xc9,0xcc,0xcc,0xcc,0xcc,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x0c,0x00,0xfe,0x13,0x0e,0x00,0xfe,0x0f,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0208[] = { +static const uint8_t vcb_standard_0208[] = { 0x42,0x06,0x28,0x71,0x14,0x6b,0x8d,0xb1,0xd7,0x8a,0x18,0x06,0xa1,0xa4,0x1a,0x4b,0x43,0x10,0x63,0x50,0x62,0x6e,0x99,0x31,0x4a,0x39,0x89,0xb9,0x75,0x4a,0x29,0xe5, 0x24,0xd6,0x14,0x32,0xa5,0x14,0x73,0x96,0x62,0x09,0x1d,0x53,0x8a,0x51,0x8a,0xa9,0x84,0x90,0x31,0x25,0x29,0xc6,0x18,0x63,0x0a,0x9d,0xb4,0x96,0x73,0xcf,0x2d,0x95, 0xd2,0x02, }; -static const uint8_t wvc_standard_0209[] = { +static const uint8_t vcb_standard_0209[] = { 0x01,0x04,0x60,0x00,0x00,0x00,0xa1,0x8d,0x56,0xde,0x89,0x29,0xbe,0x59,0xeb,0xdd,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0xbd,0xf7,0xde,0x7b,0xef,0x9c,0x73,0x06, }; -static const uint8_t wvc_standard_020a[] = { +static const uint8_t vcb_standard_020a[] = { 0x12,0x12,0xe0,0x72,0x4e,0x4a,0x6b,0xb5,0xf6,0x5e,0x8c,0x73,0xce,0x29,0x9d,0x94,0x5a,0x7b,0xef,0xbd,0x18,0xe7,0xac,0x55,0x4a,0x6b,0xb5,0xf6,0xde,0x7b,0x31,0xce, 0x59,0xab,0x95,0xd6,0x6a,0xed,0xbd,0x18,0xe7,0xac,0xb5,0x5e,0xac,0xd5,0xda,0x7b,0x31,0xce,0x59,0xeb,0xbd,0x68,0xad,0xb5,0x18,0x63,0x9c,0xb3,0xd6,0x7b,0xd1,0x5a, 0x7b,0x31,0xc6,0x38,0x67,0xad,0xf7,0xa2,0xb5,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0xef,0xc5,0x38,0x67,0xad,0xf7,0xde,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_020b[] = { +static const uint8_t vcb_standard_020b[] = { 0x14,0x27,0xe8,0x23,0x49,0xa2,0x28,0x59,0x96,0x28,0x4a,0x96,0x25,0x8a,0xa2,0x29,0xba,0xae,0x28,0x9a,0xae,0x2b,0x69,0x9a,0x69,0x6a,0x9a,0x67,0x9a,0x96,0xe6,0x99, 0xa6,0x69,0x9a,0xaa,0x6c,0x8a,0xa6,0x2b,0x4b,0x9a,0x66,0x9a,0x96,0xa7,0x99,0xa6,0xe6,0x69,0xa6,0x29,0x9a,0xa6,0xeb,0x9a,0xa6,0x29,0xab,0xa2,0x69,0xca,0xb2,0xa9, 0x9a,0xb2,0x6c,0x9a,0xa6,0x2c,0xbb,0xae,0x6c,0xdb,0xae,0x2b,0xdb,0xb6,0x68,0x9a,0xb2,0x6c,0x9a,0xa6,0x2c,0x9b,0xa6,0x29,0xcb,0xae,0xec,0xea,0xb6,0x2b,0xbb,0xba, @@ -3330,7 +3324,7 @@ static const uint8_t wvc_standard_020b[] = { 0x59,0xb7,0xb9,0xae,0x6c,0xfb,0xb2,0x6c,0xeb,0xbe,0xea,0xaa,0xbe,0xad,0xfb,0xbe,0x30,0xdc,0xba,0x2b,0xbc,0x02,0x00,0xc0,0x80,0x03,0x00,0x40,0x80,0x09,0x65,0x20, }; -static const uint8_t wvc_standard_020c[] = { +static const uint8_t vcb_standard_020c[] = { 0x14,0x27,0xe8,0x23,0x49,0xa2,0x28,0x59,0x96,0x28,0x4a,0x96,0x25,0x8a,0xa2,0x29,0xba,0xae,0x28,0x9a,0xae,0x2b,0x69,0x9a,0x69,0x6a,0x9a,0x67,0x9a,0x96,0xe6,0x99, 0xa6,0x69,0x9a,0xaa,0x6c,0x8a,0xa6,0x2b,0x4b,0x9a,0x66,0x9a,0x96,0xa7,0x99,0xa6,0xe6,0x69,0xa6,0x29,0x9a,0xa6,0xeb,0x9a,0xa6,0x29,0xab,0xa2,0x69,0xca,0xb2,0xa9, 0x9a,0xb2,0x6c,0x9a,0xa6,0x2c,0xbb,0xae,0x6c,0xdb,0xae,0x2b,0xdb,0xb6,0x68,0x9a,0xb2,0x6c,0x9a,0xa6,0x2c,0x9b,0xa6,0x29,0xcb,0xae,0xec,0xea,0xb6,0x2b,0xbb,0xba, @@ -3348,23 +3342,23 @@ static const uint8_t wvc_standard_020c[] = { 0x59,0xb7,0xb9,0xae,0x6c,0xfb,0xb2,0x6c,0xeb,0xbe,0xea,0xaa,0xbe,0xad,0xfb,0xbe,0x30,0xdc,0xba,0x2b,0xbc,0x02,0x00,0xc0,0x80,0x03,0x00,0x40,0x80,0x09,0x65,0x20, }; -static const uint8_t wvc_standard_020d[] = { +static const uint8_t vcb_standard_020d[] = { 0x01,0x10,0xa0,0x32,0xdb,0x2a,0x5b,0xab,0x4a,0x5f,0x65,0xb3,0x63,0xb3,0x5b,0x33,0xd3,0x5d,0xe5,0x44,0x54,0x44,0xcc,0xbc,0xdb,0xde,0x6d,0xd5,0x6d,0x5d,0x75,0x5f, 0x76,0x77,0xf7,0x2a,0xcb,0xaa,0x52,0xab,0xc2,0x5e,0x65,0x33,0xcb,0x2a,0x43,0xb3,0x4a,0xde,0x5c,0x44,0x54,0xc4,0x43,0xbc,0x4b,0xde,0xdc,0x5d,0xe5,0x5d,0x5d,0xe7, 0x75,0xf7,0xee,0xaa,0xba,0x2a,0x2a,0xb3,0x22,0x4d,0x3c,0xab,0xb2,0x2a,0x2a,0xb3,0x2a,0x4d,0xbc,0xbb,0xc3,0x3b,0xbb,0xbb,0x32,0x4d,0xc4,0xd6,0xec,0xd6,0x74,0x56, 0x54,0xdf,0x55,0xc5,0xbb,0xc4,0x43,0x4d,0xbc,0xd5,0x55,0xce,0x43,0xcd,0xc3,0xc4,0xc3,0xbc,0x5d,0xd7,0x4c,0xd6,0xcc,0x3b,0xdb,0x44,0x5d,0x5f,0x75,0x56,0xf5,0x6d, 0x65,0x77,0x66,0x00, }; -static const uint8_t wvc_standard_020e[] = { +static const uint8_t vcb_standard_020e[] = { 0x92,0x07,0xa0,0x90,0xa9,0x32,0x33,0x33,0x43,0xb3,0x2a,0xb3,0xbb,0x3b,0xac,0xaa,0x32,0xbb,0xbb,0x4b,0x33,0x33,0xb3,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0x4c, 0xb3,0xbb,0xbb,0xbb,0xcc,0xb4,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0xcb,0xcc,0x4c,0xc4,0xbb,0xbb,0xcc,0xcc,0xbc,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_020f[] = { +static const uint8_t vcb_standard_020f[] = { 0x12,0x05,0x20,0x99,0xa9,0x32,0x43,0x9c,0xa1,0x2a,0x33,0xc4,0x99,0xa9,0x32,0x43,0xac,0x2a,0xb3,0x3b,0xc4,0xaa,0x32,0xbb,0x43,0x34,0xb3,0xbb,0xc3,0x4c,0x33,0xbb, 0xc3,0xcb,0x44,0x44,0xc4,0xcc,0x4c,0x44,0x44,0xcc,0xcc,0x0c,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0210[] = { +static const uint8_t vcb_standard_0210[] = { 0x01,0x10,0x28,0x40,0x0c,0x25,0x07,0xd1,0x84,0xd6,0x9c,0x6f,0xce,0x71,0xd0,0x2c,0x07,0x4d,0xa5,0xd8,0x9c,0x0e,0x4e,0xa4,0xda,0x3c,0xc9,0x4d,0xc5,0xdc,0x9c,0x73, 0xce,0x39,0xe7,0x64,0x73,0xce,0x18,0xe7,0x9c,0x73,0x4e,0x51,0xce,0x2c,0x06,0xcd,0x84,0xd6,0x9c,0x73,0x4e,0x62,0xd0,0x2c,0x05,0xcd,0x84,0xd6,0x9c,0x73,0xce,0x93, 0xd8,0x3c,0x68,0x4d,0x95,0xd6,0x9c,0x73,0xce,0x38,0xe7,0x74,0x30,0xce,0x08,0xe3,0x9c,0x73,0x4e,0x93,0xd6,0x3c,0x48,0xcd,0xc6,0xda,0x9c,0x73,0xce,0x82,0xd6,0x34, @@ -3372,34 +3366,34 @@ static const uint8_t wvc_standard_0210[] = { 0x09,0xe7,0x9c,0x73,0x4e,0xd4,0xde,0x5c,0xcb,0x4d,0xe8,0xe2,0x9c,0x73,0xce,0x27,0xe3,0x74,0x6f,0x4e,0x08,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7, 0x9c,0x73,0x4e,0x00, }; -static const uint8_t wvc_standard_0211[] = { +static const uint8_t vcb_standard_0211[] = { 0x01,0x02,0xa0,0x20,0x22,0x22,0x1a,0x22,0x22,0x22,0xa2,0xa2,0xa2,0x22,0x2b,0x2b,0xab,0xab,0x2b,0x00, }; -static const uint8_t wvc_standard_0212[] = { +static const uint8_t vcb_standard_0212[] = { 0x02,0x04,0xa8,0x61,0x14,0x5a,0xc7,0xa4,0x32,0x08,0x31,0xa4,0x3c,0x44,0x48,0x31,0x06,0x3d,0x33,0x0a,0x31,0xc4,0xc0,0x64,0xcc,0x31,0xe6,0x44,0x43,0xca,0x20,0x83, 0x38,0x53,0x0c,0x29,0x83,0xb8,0xc5,0xe2,0x82,0x0a,0x41,0x00, }; -static const uint8_t wvc_standard_0213[] = { +static const uint8_t vcb_standard_0213[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xbd,0x17,0xe3,0x9c,0x2b,0xa5,0xd6,0xde,0x8b,0x71,0xce,0x5a,0x57,0x4a,0xad,0xbd,0x17,0xe3,0x9c,0xb5,0x6a,0xad,0xb5,0x18,0xe7, 0x9c,0xb3,0x56,0xad,0xb5,0x16,0xe3,0x9c,0x73,0xd6,0xaa,0xd6,0x18,0xe7,0xac,0xb5,0xd6,0x7b,0xdd,0x1b,0xe3,0x9c,0xb5,0xde,0x7b,0x2f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0214[] = { +static const uint8_t vcb_standard_0214[] = { 0x12,0x05,0x20,0x99,0x21,0x32,0x43,0x1c,0x9a,0xaa,0x33,0xc4,0x19,0xaa,0x32,0x43,0xa4,0x2a,0xb3,0xbb,0x4c,0xaa,0x32,0xbb,0xcb,0xb4,0xb3,0xbb,0x44,0x55,0xb3,0xbb, 0xc3,0x54,0x45,0xc4,0x4c,0xcd,0x55,0x44,0xcc,0x54,0xd5,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0215[] = { +static const uint8_t vcb_standard_0215[] = { 0x01,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x5a,0x58,0xa5,0x95,0x77,0x5e,0x7a,0xef,0xc5,0xf6,0x5e,0x6b,0xed,0xc5,0x19,0xe3,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73, 0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x33,0x46,0x00, }; -static const uint8_t wvc_standard_0216[] = { +static const uint8_t vcb_standard_0216[] = { 0x12,0x0e,0x20,0x98,0x51,0x55,0x55,0x55,0x55,0x55,0x15,0x3d,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x40,0xbe,0x15,0x0e,0x00,0xfe,0x0f,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0217[] = { +static const uint8_t vcb_standard_0217[] = { 0x12,0x12,0xe0,0x50,0xca,0x5a,0xef,0xc5,0xf8,0xde,0x8c,0x73,0xd6,0x8a,0xd6,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xad,0x17,0xad,0xbd,0x17,0x63,0x8c,0x73,0xd6,0x7a,0x2b, 0xde,0x8b,0x71,0xce,0x18,0xe7,0xac,0xf5,0x5e,0xbc,0x17,0xe3,0x9c,0x31,0xd6,0x59,0xeb,0xbd,0x88,0x31,0xc6,0x39,0xe7,0xac,0xb5,0xde,0x7b,0x11,0x63,0x8c,0x73,0xce, 0x59,0xeb,0xbd,0x39,0x63,0xce,0x39,0x6b,0x9d,0xb3,0xd6,0x7b,0x73,0x06,0x33,0xce,0x3a,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0x71,0xd6,0x7b,0x73,0xde,0x19,0xc4,0x18, @@ -3407,74 +3401,74 @@ static const uint8_t wvc_standard_0217[] = { 0x6f,0xce,0x3b,0x03,0x6a,0xbd,0x37,0xe7,0xbd,0xf7,0x06,0x70,0xef,0xbd,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_0218[] = { +static const uint8_t vcb_standard_0218[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0x23,0xc4,0xcb,0xbc,0x4c,0x42,0xb4,0xcc,0xcb,0x9c,0x4c,0xdc,0x45,0x55,0x5b,0x4d,0xe5,0x64,0xb6,0xdd,0xe4,0x4d,0xe6,0xc9,0xc4, 0x5d,0xdc,0xb5,0xdd,0x64,0xce,0x65,0xd3,0x4d,0xe6,0x64,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0219[] = { +static const uint8_t vcb_standard_0219[] = { 0x92,0x0a,0x28,0x30,0x86,0x29,0xa6,0x1c,0x83,0x0c,0x3a,0xc3,0x94,0x73,0xd0,0x49,0x28,0x25,0xa5,0x86,0x31,0xe7,0x9c,0x83,0x92,0x52,0x4a,0x95,0x73,0x52,0x4a,0x49, 0xa9,0xb5,0xd6,0x32,0xe7,0xa4,0x94,0x92,0x52,0x6b,0x31,0x66,0x10,0x52,0x69,0x2d,0xc6,0x1a,0x6b,0xcd,0x20,0x94,0x94,0x5a,0x8c,0x31,0xf6,0x1a,0x4a,0x69,0x2d,0xc6, 0x5a,0x73,0xcf,0x3d,0x94,0xd2,0x5a,0x8b,0xb5,0xd6,0xdc,0x73,0x69,0x2d,0xc6,0x1c,0x7b,0xcf,0x41,0x08,0x93,0x52,0xab,0xb5,0xe6,0x1c,0x84,0x0e,0xaa,0xb5,0x5a,0x6b, 0xce,0x39,0xf8,0x20,0x4c,0x6b,0xb1,0xd6,0x1a,0x74,0x10,0x42,0x18,0x00,0x70,0x1a,0x1c,0x00,0x40,0x0f,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_021a[] = { +static const uint8_t vcb_standard_021a[] = { 0x12,0x05,0xe0,0x50,0x4a,0x6b,0x20,0xa5,0xb5,0x40,0x4a,0xad,0x81,0xd6,0x5a,0x03,0xb4,0x06,0x78,0x11,0xf0,0x1e,0x60,0x4e,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00, 0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_021b[] = { +static const uint8_t vcb_standard_021b[] = { 0x12,0x0e,0x20,0x98,0x31,0x3b,0xbc,0xc3,0xc3,0x43,0x1c,0xab,0x3b,0x44,0x44,0x44,0x44,0xc4,0xb1,0x42,0xcc,0x44,0xcc,0xcc,0x54,0x35,0xbc,0x4c,0xd5,0x4c,0x55,0x55, 0x55,0x3b,0xcc,0x54,0xcd,0x54,0x55,0xd5,0xbd,0x4c,0xd5,0x5d,0xd5,0xdd,0x5d,0xde,0xcb,0x54,0x5d,0x55,0xd5,0xdd,0x5d,0x3e,0x44,0x4d,0xd5,0xdd,0x5d,0x5e,0xde,0x43, 0x54,0x55,0xdd,0xdd,0x5d,0x66,0xc6,0x4c,0xdd,0xdd,0x5d,0x66,0x66,0x66,0xcc,0x54,0xdd,0xdd,0x65,0x66,0x6e,0xce,0xcc,0xd5,0x5d,0x66,0x66,0x66,0xe6,0x4c,0x55,0xdd, 0x65,0x66,0x66,0x66,0x4e,0xd5,0x5d,0xde,0x65,0x66,0x66,0xee,0x54,0xdd,0xe5,0x65,0xe6,0x66,0x6e,0x0e,0x00,0xdc,0x0d,0x0e,0x00,0x10,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_021c[] = { +static const uint8_t vcb_standard_021c[] = { 0x01,0x08,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x6a,0xab,0xab,0xb3,0xbb,0xbb,0xb7,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb, 0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x01, }; -static const uint8_t wvc_standard_021d[] = { +static const uint8_t vcb_standard_021d[] = { 0x14,0x27,0xd8,0xb9,0xcb,0x04,0x00,0x80,0xbb,0xdb,0x05,0x00,0x80,0xbb,0xdb,0x05,0x00,0x80,0xdd,0xed,0x06,0x00,0x80,0xdd,0xed,0x06,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x03,0x0e,0x00, 0x00,0x01,0x26,0x94,0x81,0x00, }; -static const uint8_t wvc_standard_021e[] = { +static const uint8_t vcb_standard_021e[] = { 0x12,0x05,0xe0,0x50,0xca,0x5a,0xad,0xc5,0xa8,0xb5,0xd6,0x5a,0x8b,0x51,0x6b,0xad,0xb5,0x16,0xa3,0xf7,0x5a,0x7b,0x6f,0x4e,0xb4,0xf6,0xde,0x9c,0x88,0xf1,0xbd,0x39, 0x11,0xe3,0x7b,0x73,0x62,0xce,0x18,0x6b,0x05,0x31,0xd6,0x1a,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_021f[] = { +static const uint8_t vcb_standard_021f[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0x33,0x33,0x43,0xc4,0x2a,0xb3,0xbb,0x3b,0x44,0xac,0x32,0xbb,0xbb,0x43,0x44,0x33,0xb3,0xbb,0x3b,0x44,0x34,0x33,0xbb,0xbb,0x43,0x44, 0x33,0xb3,0xbb,0x3b,0x44,0x34,0x33,0x33,0xbb,0x43,0x44,0xb3,0x3b,0xb3,0x3b,0x44,0x44,0x34,0x33,0xbb,0x43,0x44,0xc4,0x3b,0xb3,0x3b,0x44,0x44,0x34,0x33,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0220[] = { +static const uint8_t vcb_standard_0220[] = { 0x12,0x05,0x20,0x99,0x21,0x32,0x43,0x1c,0x9a,0x2a,0x33,0xc4,0x19,0xaa,0xb2,0x43,0xa4,0x2a,0xb3,0xbb,0x4c,0xaa,0x32,0xbb,0xcb,0xb4,0xb3,0xbb,0x44,0x55,0xb3,0xbb, 0xc3,0x4c,0x45,0xc4,0x4c,0xd5,0x55,0x44,0xcc,0x54,0xd5,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0221[] = { +static const uint8_t vcb_standard_0221[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0xf6,0xde,0x8c,0x2d,0xad,0xd6,0xde,0x7b,0x2f,0xc6,0x39,0x5b,0x4a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x4e,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe3,0x9c,0xb3,0xd6,0x5a,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x5a,0x2b,0xe6,0x9c,0xb3,0xd6,0x5b,0xef, 0xc5,0x9c,0x33,0xd6,0x7a,0x6b,0xbe,0xc8,0x79,0xce,0x5a,0xef,0xcd,0x19,0x7b,0xcf,0x59,0xeb,0xbd,0x39,0x83,0x7a,0x6b,0xbd,0x77,0x67,0x70,0x6b,0xad,0x79,0xee,0x1c, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0222[] = { +static const uint8_t vcb_standard_0222[] = { 0x12,0x05,0xa0,0x10,0xa9,0x32,0x43,0x1c,0x22,0xb3,0xbb,0xc4,0x21,0x32,0xbb,0xcb,0x2c,0xb3,0x3b,0x44,0xcd,0x32,0xbb,0x43,0x4c,0xb5,0x3b,0xc4,0x4c,0x55,0xbb,0x43, 0xcc,0x54,0xc5,0x4c,0x4d,0xd5,0x5d,0xcc,0x4c,0x55,0xdd,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_0223[] = { +static const uint8_t vcb_standard_0223[] = { 0x12,0x05,0xe0,0x50,0x46,0x6b,0x20,0xe7,0xb5,0xc0,0xb5,0x16,0xa0,0x35,0x40,0x6b,0x80,0x17,0x01,0xef,0x01,0xea,0x04,0x00,0x01,0x00,0xa0,0xc0,0x01,0x00,0x20,0xc0, 0x06,0x4d,0x89,0xc5,0x01,0x02, }; -static const uint8_t wvc_standard_0224[] = { +static const uint8_t vcb_standard_0224[] = { 0x92,0x0a,0xe0,0x70,0x4e,0x5b,0xad,0xb5,0xf6,0x5e,0x8c,0x6d,0xad,0xd6,0xde,0x6b,0xed,0xc5,0x39,0xdb,0x5a,0xad,0xbd,0xd6,0x5a,0x8c,0xf3,0x7a,0xef,0xbd,0x17,0xdf, 0x8b,0x71,0x4e,0xef,0xbd,0xf7,0xe2,0x8b,0x31,0xd6,0x49,0x8e,0x2f,0xc6,0x18,0xe7,0xac,0x55,0x16,0x63,0x8c,0x31,0xd6,0x59,0x2b,0x5e,0x9c,0x71,0xce,0x5c,0xef,0xc5, 0x8b,0x31,0xce,0x99,0xef,0xcd,0xb8,0xe6,0xbc,0x75,0xd6,0x7b,0x91,0xf3,0x9c,0xb3,0x5e,0x19,0xc8,0xd5,0xbd,0x37,0x5f,0x20,0xe7,0x9a,0x73,0xbd,0x01,0x00,0x3c,0xc1, 0x01,0x00,0xa8,0xc0,0x86,0xd5,0x11,0x4e,0x8a,0xc6,0x02,0x03, }; -static const uint8_t wvc_standard_0225[] = { +static const uint8_t vcb_standard_0225[] = { 0x21,0x03,0x60,0x00,0x00,0x4e,0x39,0xe5,0x9c,0x74,0xd2,0x59,0x67,0xa5,0x95,0x5a,0x6a,0xeb,0xad,0xb7,0x5e,0x7b,0x2d,0xb6,0xf8,0x00, }; -static const uint8_t wvc_standard_0226[] = { +static const uint8_t vcb_standard_0226[] = { 0x12,0x12,0xe0,0x70,0xca,0x5a,0xef,0xc5,0x18,0x63,0x8c,0x73,0xd6,0xaa,0xb5,0xd6,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xbd,0x55,0x6b,0xad,0xbd,0x17,0x63,0x8c,0x73,0xd6, 0x5a,0xaf,0xf7,0x5a,0x8b,0x71,0xce,0x18,0xe7,0xac,0xf5,0x5e,0xb4,0x16,0xe3,0x9c,0x33,0xce,0x59,0xeb,0xbd,0x78,0x2f,0xc6,0x39,0xe7,0xac,0xb5,0xd6,0x7b,0xf1,0x5e, 0x8c,0x73,0xce,0x59,0xeb,0xbd,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0xb3,0xd6,0x5a,0xef,0xcd, @@ -3482,15 +3476,15 @@ static const uint8_t wvc_standard_0226[] = { 0xb5,0xde,0x7b,0x6f,0xce,0x79,0x03,0xee,0xbd,0x37,0xe7,0x9c,0xf7,0x06,0x70,0x6f,0xce,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_0227[] = { +static const uint8_t vcb_standard_0227[] = { 0x01,0x04,0x60,0x00,0x00,0x00,0x25,0x95,0x54,0xd2,0x49,0x27,0xa5,0x94,0x56,0x5a,0x69,0xa5,0x95,0x56,0x6a,0x2f,0xd6,0x9c,0x73,0xce,0x39,0xe7,0x9c,0x73,0x06, }; -static const uint8_t wvc_standard_0228[] = { +static const uint8_t vcb_standard_0228[] = { 0x92,0x0a,0xe0,0x70,0x4e,0x5b,0xef,0xc5,0x38,0x67,0xad,0x29,0xa5,0xd6,0x62,0x8c,0xb1,0xd6,0x7b,0x57,0x4a,0xad,0xc5,0x38,0x67,0xad,0xf7,0x5a,0xab,0xb5,0x18,0xe7, 0xac,0xf5,0x5e,0xad,0xb5,0x16,0xe3,0x9c,0xf5,0xde,0xab,0xd6,0xf7,0xe6,0xac,0xf5,0xde,0x9c,0xd5,0xfb,0xde,0x9c,0xb5,0xde,0x9b,0x33,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0229[] = { +static const uint8_t vcb_standard_0229[] = { 0x18,0x9a,0xe1,0x90,0x12,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x5e,0x03,0x5a,0x8c,0x40,0x7b,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x52,0x6b,0x40,0x8b,0x0f,0x68,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -3520,68 +3514,68 @@ static const uint8_t wvc_standard_0229[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_022a[] = { +static const uint8_t vcb_standard_022a[] = { 0x92,0x07,0x20,0x10,0xa9,0xba,0x43,0x44,0xcc,0x4c,0xb3,0x3b,0x44,0xc4,0x4c,0x34,0xbb,0x43,0x44,0xcc,0xcc,0x3b,0x44,0x44,0xc4,0xcc,0xbc,0x43,0x44,0x3c,0xcc,0xcc, 0x3b,0x44,0xcc,0xcc,0xcc,0x44,0x44,0x44,0xcc,0xd4,0x54,0x44,0xc4,0xcc,0x4c,0x55,0xcd,0x44,0xcc,0x4c,0xd4,0xcc,0xcc,0x4c,0xc4,0x4c,0xd5,0xcc,0x44,0xc4,0xcc,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_022b[] = { +static const uint8_t vcb_standard_022b[] = { 0x92,0x07,0xa0,0x10,0xa1,0x32,0x33,0xbb,0xcb,0xcc,0x2a,0xb3,0xbb,0xbb,0xcc,0xac,0x32,0xbb,0xbb,0xcb,0x4c,0x33,0xb3,0xbb,0xbb,0xcc,0x34,0x33,0xbb,0xbb,0xcb,0x4c, 0xb3,0xbb,0xbb,0xbb,0xcc,0x34,0xbb,0xbb,0xbb,0xcb,0xcc,0xbb,0xbb,0x3b,0xc4,0xcc,0xcc,0xbc,0xbb,0x43,0xcc,0xcc,0x4c,0xc4,0x3b,0xc4,0xcc,0xcc,0xbc,0xbb,0x43,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_022c[] = { +static const uint8_t vcb_standard_022c[] = { 0x92,0x0a,0xe8,0xe0,0x38,0x9a,0x26,0x8a,0xaa,0xea,0xba,0xbe,0xaf,0x58,0x96,0x28,0xaa,0xaa,0xeb,0xca,0xb6,0xf1,0x2b,0x96,0x26,0x8a,0xaa,0x2a,0xbb,0xb6,0x2d,0xfc, 0x9a,0x28,0xaa,0xaa,0xeb,0xda,0xb6,0x6d,0x0b,0xbf,0x26,0x8a,0xaa,0x2a,0xbb,0xb2,0x6c,0xdb,0x42,0x51,0x55,0x5d,0xd9,0xb6,0x6d,0x59,0xb7,0x85,0x61,0x54,0x55,0xd7, 0xb5,0x6d,0xd9,0xb6,0x75,0x54,0xd7,0xd5,0x6d,0xdd,0xd6,0x6d,0xdd,0x17,0xaa,0xae,0x2c,0xcb,0xb6,0xad,0xdb,0xba,0x8e,0x6b,0xdb,0xba,0x6e,0xfb,0xba,0x2e,0xfc,0x8c, 0xd9,0xb6,0x75,0x5b,0xb7,0x75,0x5f,0xf8,0x11,0x86,0xa3,0x6f,0xfc,0x10,0xf2,0xf1,0x7d,0x3a,0x21,0x04,0x00,0xf0,0x04,0x07,0x00,0xa0,0x02,0x1b,0x56,0x47,0x38,0x29, 0x1a,0x0b,0x0c, }; -static const uint8_t wvc_standard_022d[] = { +static const uint8_t vcb_standard_022d[] = { 0x14,0x27,0xe0,0x70,0xce,0x5a,0x00,0x00,0x70,0xd2,0x6a,0x0d,0x00,0x00,0x4e,0x4a,0xad,0x01,0x00,0xc0,0x6a,0xed,0x3d,0x00,0x00,0x58,0xad,0xbd,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_022e[] = { +static const uint8_t vcb_standard_022e[] = { 0x14,0x27,0xe0,0x51,0xce,0x5a,0x00,0x00,0x70,0xce,0x59,0x0b,0x00,0x00,0xce,0x39,0x6b,0x01,0x00,0xc0,0x5a,0x2b,0x46,0x00,0x00,0x58,0xab,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_022f[] = { +static const uint8_t vcb_standard_022f[] = { 0x14,0x27,0xe0,0x70,0xce,0x5a,0x00,0x00,0x70,0xd6,0x6a,0x0b,0x00,0x00,0xce,0x5a,0x6b,0x01,0x00,0xc0,0x5a,0x2b,0x46,0x00,0x00,0x58,0x6b,0xc5,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0230[] = { +static const uint8_t vcb_standard_0230[] = { 0x92,0x07,0x20,0x99,0xa9,0x32,0xbb,0xbb,0x1b,0x22,0xab,0xbb,0xbb,0xbb,0x21,0x2a,0xbb,0xbb,0xbb,0x2b,0x33,0xb3,0xbb,0xbb,0xbb,0x32,0x33,0xbb,0xbb,0xbb,0xb3,0xbb, 0xbb,0x3b,0x44,0x44,0xbb,0xbb,0xbb,0x43,0x44,0xbc,0xbb,0x3b,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0xbc,0xbb,0x3b,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0231[] = { +static const uint8_t vcb_standard_0231[] = { 0x92,0x0a,0xa0,0xa0,0xa9,0x32,0xbb,0xbb,0xc3,0x23,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x2a,0x32,0xbb,0xbb,0x43,0x44,0x2c,0xb3,0xbb,0x3b,0x3c,0x44,0xc4,0x32,0x3b,0xbb, 0x43,0x44,0x44,0xb4,0xbb,0x3b,0x44,0x44,0x44,0x44,0xbb,0xc3,0xc3,0x43,0x44,0x44,0x3c,0x3c,0x44,0x44,0x44,0xc4,0xcc,0x3b,0x44,0x44,0x44,0xc4,0xc4,0x44,0x44,0x44, 0x44,0x44,0x44,0xc4,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0x44,0x44,0x44,0x44,0x4c,0xc4,0x4c,0x0c,0x00,0x80,0x05,0x0e,0x00,0x00,0x01,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0232[] = { +static const uint8_t vcb_standard_0232[] = { 0x92,0x0a,0xa0,0xa0,0xa9,0x32,0xbb,0xbb,0xc3,0x23,0x2a,0xb3,0xbb,0x3b,0x44,0x44,0x2a,0x32,0xbb,0xbb,0x43,0x44,0x2c,0xb3,0xbb,0x3b,0x3c,0x44,0xc4,0x32,0x3b,0xbb, 0x43,0x44,0x44,0xb4,0xbb,0x3b,0x44,0x44,0x44,0x44,0xbb,0xc3,0xc3,0x43,0x44,0x44,0x3c,0x3c,0x44,0x44,0x44,0xc4,0xcc,0x3b,0x44,0x44,0x44,0xc4,0xc4,0x44,0x44,0x44, 0x44,0x44,0x44,0xc4,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xcc,0x44,0x44,0x44,0x44,0x4c,0xc4,0x4c,0x0c,0x00,0x80,0x05,0x0e,0x00,0x00,0x01,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_standard_0233[] = { +static const uint8_t vcb_standard_0233[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xe6,0x20,0x94,0xd2,0x52,0x85,0x10,0x63,0xce,0x41,0x49,0xa9,0xb5,0x0c,0x21,0xc6,0x9c,0x93,0x92,0x52,0x6b,0x4d,0x63,0x8c,0x39,0x28, 0x25,0xa5,0x16,0x9b,0xc6,0x18,0x83,0x50,0x4a,0x6a,0x31,0x36,0x95,0x3a,0x07,0x21,0xa5,0xd6,0x62,0x6c,0x2a,0x75,0x0e,0x42,0x4a,0xad,0xc5,0xd8,0x9c,0x33,0xa5,0x94, 0xd6,0x62,0x8c,0xb1,0x39,0x67,0x4a,0x29,0xad,0xc5,0x18,0x6b,0x73,0xce,0xd6,0x94,0x5a,0x8b,0xb1,0xd6,0xe6,0x9c,0xad,0x29,0xb5,0x16,0x63,0xad,0xcd,0x39,0xa7,0x64, 0x8c,0xb1,0xd6,0x5c,0x93,0x52,0x4a,0xc9,0x18,0x63,0xad,0x39,0x17,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0234[] = { +static const uint8_t vcb_standard_0234[] = { 0x21,0x01,0x58,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x97,0x09, }; -static const uint8_t wvc_standard_0235[] = { +static const uint8_t vcb_standard_0235[] = { 0x12,0x12,0xe0,0x71,0xce,0x5a,0xef,0xc5,0xf8,0x5e,0x8c,0x73,0xd6,0xea,0x9c,0xb5,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xad,0xd5,0x39,0x6d,0xbd,0x17,0x63,0x8c,0x73,0xd6, 0x5a,0xab,0xb5,0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x5e,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0xeb,0xbd,0x78,0xef,0xbd,0x18,0x63,0x9c,0xb3,0xd6,0x7b,0xf1,0xde, 0x7b,0x31,0xc6,0x38,0x67,0xad,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x5a,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xb5,0xde,0x0b,0x62,0x8c,0x73,0xce,0x5a,0x6b,0xbd, @@ -3589,43 +3583,43 @@ static const uint8_t wvc_standard_0235[] = { 0xb5,0xd6,0x7a,0xef,0xbd,0x39,0x03,0xee,0xbd,0xf7,0xde,0x9c,0x73,0x06,0x70,0xef,0xbd,0x37,0xe7,0x1c,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a, 0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_0236[] = { +static const uint8_t vcb_standard_0236[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0xbb,0xbb,0x1b,0x22,0xb3,0x3b,0xbc,0xc3,0x21,0x32,0xbb,0x43,0x3c,0x2c,0xb3,0x3b,0x3c,0x44,0xc4,0x32,0xbb,0x43,0x44,0x44,0xb4,0x3b, 0x44,0x44,0x44,0x44,0xbb,0x43,0x44,0x44,0x44,0x3c,0x44,0x44,0xc4,0xcc,0xcc,0x43,0x44,0x44,0xcc,0xcc,0x3c,0x44,0x44,0xc4,0xcc,0xcc,0x43,0x44,0x44,0xcc,0xcc,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0237[] = { +static const uint8_t vcb_standard_0237[] = { 0x42,0x06,0xa8,0xd2,0x62,0x84,0x10,0x42,0x08,0x87,0x41,0x28,0x31,0x07,0x21,0x2c,0x86,0x94,0xa3,0x1e,0x7c,0x90,0x18,0x32,0x4a,0x6a,0x10,0xc2,0x52,0x0a,0x31,0x89, 0x3d,0x08,0x4d,0x31,0xc6,0x1c,0x93,0xdc,0x5b,0x08,0x95,0x42,0x04,0x51,0xae,0x35,0x46,0x88,0x11,0xe3,0x38,0x08,0x99,0x31,0xa9,0x94,0xe4,0x20,0x7c,0x49,0xb5,0x94, 0x1c,0x04, }; -static const uint8_t wvc_standard_0238[] = { +static const uint8_t vcb_standard_0238[] = { 0x91,0x01,0x60,0x00,0xa3,0x94,0x53,0xce,0x49,0x67,0xa5,0xd5,0xd6,0x7b,0x00, }; -static const uint8_t wvc_standard_0239[] = { +static const uint8_t vcb_standard_0239[] = { 0x92,0x0a,0x28,0x30,0x86,0x31,0xc6,0x98,0x72,0xce,0x39,0xa5,0x94,0x73,0xd0,0x39,0x06,0x1d,0x95,0x48,0x29,0xe7,0xa0,0x73,0x4e,0x42,0x4a,0xbd,0x73,0xd0,0x41,0x08, 0x9d,0x84,0x54,0x7a,0xe7,0x20,0x94,0x12,0x42,0x29,0x29,0xf5,0x18,0x43,0x28,0x25,0x94,0x94,0x5a,0xea,0x31,0x86,0x4e,0x42,0x29,0xa5,0xa4,0xd4,0x6b,0xef,0x20,0x84, 0x54,0x52,0x6a,0xa9,0xf7,0x1e,0x32,0xc9,0xa8,0xa4,0xd4,0x52,0xef,0xbd,0xb5,0x50,0x52,0x6a,0xa9,0xb5,0xde,0x7b,0x2b,0x25,0xa3,0xce,0x52,0x6b,0xbd,0xe7,0xde,0x53, 0x2b,0xa5,0xa5,0xd6,0x7a,0xef,0x39,0xa7,0x54,0x4a,0x6b,0xad,0x15,0x00,0x4c,0x22,0x1c,0x00,0x10,0x17,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_023a[] = { +static const uint8_t vcb_standard_023a[] = { 0x21,0x03,0x60,0x00,0x00,0x52,0x59,0x65,0x9d,0x76,0xda,0x69,0xe7,0x9d,0x77,0xde,0x79,0x27,0x9e,0x98,0x66,0x9a,0x6d,0xbe,0xf9,0x00, }; -static const uint8_t wvc_standard_023b[] = { +static const uint8_t vcb_standard_023b[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xb5,0xf6,0x5e,0x8c,0x2d,0xa5,0xd6,0xde,0x7b,0x2f,0xc6,0x39,0x5b,0x5a,0xad,0xbd,0xf7,0x5e,0x8c,0x73,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe7,0x9c,0xb3,0xd6,0x5a,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x5a,0x2f,0xe6,0x9c,0xb3,0xd6,0x5a,0xef, 0xc5,0x9c,0x31,0xd6,0x5a,0xef,0xbd,0xc8,0x79,0xce,0x5a,0xef,0xcd,0x19,0x7b,0xcf,0x59,0xeb,0xbd,0x39,0x83,0x5a,0x6b,0xcd,0x37,0x67,0x70,0x6f,0xad,0xf7,0xe6,0x1c, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_023c[] = { +static const uint8_t vcb_standard_023c[] = { 0x14,0x05,0x20,0x98,0x21,0xb3,0x32,0x1b,0xab,0xcc,0xcc,0xcc,0xa9,0xca,0xcc,0xc4,0xa4,0x4c,0x54,0x4d,0x55,0xcb,0xd4,0xdd,0xdd,0xb5,0x4c,0xdd,0xdd,0xdd,0xca,0xcc, 0xdd,0xdc,0xb5,0x4c,0xdd,0xdd,0x5d,0xcb,0xd4,0xdd,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_023d[] = { +static const uint8_t vcb_standard_023d[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0xb2,0xa3,0xbb,0xcb,0xbc,0x54,0xba,0xbb,0xcc,0xcb,0x1c,0x44,0x5c,0x3d,0xd5,0x5b,0xcd,0xed,0x64,0x36,0xd5,0xec,0xd5,0xee,0x41,0x3c, 0x55,0xd4,0x35,0xd5,0xe4,0xce,0xed,0xd3,0xcd,0xee,0xe4,0x0d,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_023e[] = { +static const uint8_t vcb_standard_023e[] = { 0x12,0x12,0x20,0x21,0x32,0xbb,0xbb,0xbb,0xc3,0x3b,0x44,0xa4,0x2a,0xb3,0xbb,0xbb,0x3b,0x44,0x44,0x44,0xaa,0x32,0xbb,0xbb,0xbb,0x43,0x44,0x44,0x34,0xb3,0xbb,0x3b, 0x44,0x44,0x44,0x44,0x44,0x33,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0xbc,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0xbc,0x3b, 0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x3c,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0xc4,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44, @@ -3633,11 +3627,11 @@ static const uint8_t wvc_standard_023e[] = { 0x4c,0xc4,0x44,0x44,0x44,0x44,0xc4,0xcc,0xc4,0xc4,0x4c,0x44,0x44,0x44,0x44,0xcc,0xc4,0x4c,0xc4,0x0c,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_023f[] = { +static const uint8_t vcb_standard_023f[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0x23,0x3c,0xcb,0xbc,0x4c,0x3a,0xb4,0x4c,0x4b,0x9c,0x3b,0x54,0x3d,0x55,0x53,0xcd,0xe4,0x64,0x36,0xd5,0xe4,0x4d,0x66,0xc2,0x3b, 0x55,0x54,0x35,0xd5,0x64,0xce,0x65,0x53,0x4d,0x66,0xe4,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0240[] = { +static const uint8_t vcb_standard_0240[] = { 0x18,0x9a,0xe1,0x70,0x0e,0x90,0x5a,0x03,0x52,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0xde,0x03,0x5e,0x9c,0x40,0x8b,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xd2,0x7b,0x40,0x8b,0x11,0x68,0x31,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -3667,32 +3661,32 @@ static const uint8_t wvc_standard_0240[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x02,0x1c,0x00,0x00,0x02,0x2c,0x84,0x00, }; -static const uint8_t wvc_standard_0241[] = { +static const uint8_t vcb_standard_0241[] = { 0x02,0x04,0xa8,0x06,0x1d,0x7c,0x8d,0xbd,0x64,0x4c,0x62,0xc9,0x3d,0x34,0x46,0x21,0x06,0xbd,0x75,0xcc,0x39,0x47,0xbd,0x66,0x46,0x11,0xe4,0x38,0x76,0x88,0x19,0xc4, 0xbc,0x85,0xca,0x11,0x82,0xbc,0xc6,0x4c,0x22,0xc4,0x38,0x00, }; -static const uint8_t wvc_standard_0242[] = { +static const uint8_t vcb_standard_0242[] = { 0x14,0x05,0x20,0x98,0xa1,0x33,0xb2,0xa3,0xbb,0x53,0xbd,0x54,0xba,0x3b,0xcd,0x53,0x9d,0xbb,0x53,0x3d,0xd5,0x53,0x55,0x6e,0x65,0x36,0xd5,0xe4,0xd5,0xee,0xb9,0x3b, 0xd5,0x53,0x3d,0x55,0x6d,0xce,0xe5,0x53,0x55,0x66,0x65,0x0e,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_standard_0243[] = { +static const uint8_t vcb_standard_0243[] = { 0x12,0x05,0xe0,0x71,0x4e,0x4a,0xad,0xc5,0xe8,0x9c,0xb5,0x5a,0x8b,0xd1,0x39,0x6b,0xb5,0x16,0xa3,0x94,0xd6,0x7a,0x6f,0x4e,0xac,0xf5,0xde,0x9c,0x68,0x2d,0xc6,0x39, 0xd1,0xda,0x7b,0x73,0x02,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0244[] = { +static const uint8_t vcb_standard_0244[] = { 0x12,0x05,0xe0,0x71,0x4e,0x4a,0xad,0xc5,0xe8,0x9c,0xb5,0x5a,0x8b,0xd1,0x39,0x6b,0xb5,0x16,0xa3,0x94,0xd6,0x7a,0x6f,0x4e,0xac,0xf5,0xde,0x9c,0x68,0x2d,0xc6,0x39, 0xd1,0xda,0x7b,0x73,0x02,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_standard_0245[] = { +static const uint8_t vcb_standard_0245[] = { 0x14,0x05,0x20,0x98,0x21,0xb3,0x32,0x9b,0x2a,0xc4,0xcc,0xc4,0xa9,0xc2,0xc4,0xc4,0x2c,0xc4,0x5c,0x4d,0x55,0x4b,0xd4,0xdd,0xdd,0xb5,0x4c,0xdd,0xdd,0xdd,0xca,0xcc, 0x5d,0xdd,0x35,0x4c,0xdd,0xdd,0x5d,0x4b,0xdc,0xdd,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_standard_0246[] = { +static const uint8_t vcb_standard_0246[] = { 0x01,0x08,0x68,0x00,0x00,0x00,0x80,0x27,0x79,0x8e,0xe8,0x88,0x8e,0xe8,0x88,0x8e,0xe8,0x88,0x8e,0xe8,0x88,0x8e,0xe8,0x78,0x8e,0xe7,0x88,0x92,0x28,0x89,0x92,0x28, 0x89,0x96,0x69,0x99,0x9a,0xe9,0xa9,0xa2,0xaa,0xba,0xb2,0x6b,0xcb,0xba,0xac,0xdb,0xbe,0x2d,0xec,0xc2,0xae,0xfb,0xbe,0xee,0xfb,0xbe,0x6e,0xfc,0xba,0x30,0x2c,0xcb, 0xb2,0x2c,0xcb,0xb2,0x2c,0xcb,0xb2,0x2c,0xcb,0xb2,0x2c,0xcb,0xb2,0x2c,0x4b,0x00, }; -static const uint8_t wvc_standard_0247[] = { +static const uint8_t vcb_standard_0247[] = { 0x12,0x12,0xe0,0x50,0xca,0x5a,0xef,0xc5,0x18,0xe3,0x9c,0xb5,0xde,0x8b,0xd6,0xde,0x8b,0x31,0xc6,0x39,0x6b,0xbd,0x17,0xad,0xbd,0x17,0x63,0x8c,0x73,0xd6,0x7a,0x2f, 0xde,0x7b,0x71,0xc6,0x39,0xe7,0xac,0xf5,0x5e,0xbc,0x17,0xe3,0x9c,0x73,0xd6,0x5a,0xef,0xbd,0x78,0x2f,0xc6,0x39,0xe7,0xac,0xf5,0xde,0x7b,0xf1,0x5e,0x8c,0x73,0xce, 0x59,0xeb,0xbd,0x39,0x23,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0x31,0xce,0x39,0x67,0xad,0xf7,0xe6,0x0c,0x62,0x9c,0xb3,0xd6,0x7b,0xef,0xcd,0x19,0xc4,0x38, @@ -3700,24 +3694,24 @@ static const uint8_t wvc_standard_0247[] = { 0x6f,0xce,0x7b,0x03,0xee,0xbd,0x37,0xe7,0x9c,0xf7,0x06,0x70,0x6f,0xce,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_0248[] = { +static const uint8_t vcb_standard_0248[] = { 0x12,0x0e,0x20,0x20,0x2a,0xc2,0x54,0xcd,0xcc,0xcc,0xa4,0xbb,0xcb,0xcc,0xcc,0xcc,0xcc,0x4c,0x3a,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0xa4,0xbc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0x39,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x00,0x26,0x0f,0x0e,0x00,0x50,0x09,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_standard_0249[] = { +static const uint8_t vcb_standard_0249[] = { 0x01,0x08,0x68,0x00,0x00,0x00,0x80,0xa3,0x48,0x8a,0xa4,0x58,0x8a,0xe5,0x58,0x8e,0xe6,0x68,0x92,0x27,0x79,0x96,0xa8,0x89,0x9a,0xe8,0x99,0xa2,0x29,0xaa,0xa6,0xaa, 0xaa,0xaa,0xaa,0xba,0xae,0x2b,0xbb,0xb2,0x6b,0xbb,0xba,0x6b,0xbb,0xbe,0x2c,0xcc,0xc2,0x2d,0xdc,0xbe,0x2c,0xdc,0xc2,0x2d,0xec,0xc2,0xae,0xfb,0xc2,0x30,0x0c,0xc3, 0x30,0x0c,0xc3,0x30,0x0c,0xc3,0x30,0xfc,0xbe,0xef,0xfb,0xbe,0xef,0xfb,0x3e,0x00, }; -static const uint8_t wvc_standard_024a[] = { +static const uint8_t vcb_standard_024a[] = { 0x42,0x06,0xa8,0xa1,0x1e,0x83,0x0c,0x3e,0x08,0x87,0x41,0x88,0xa5,0xb7,0x1e,0x34,0x85,0x98,0x83,0xd6,0x7a,0xb0,0x20,0x83,0x52,0x72,0x0e,0xc2,0x62,0x88,0x21,0xc6, 0xa4,0x07,0x0d,0x3a,0xe8,0x24,0xa5,0x1c,0x34,0xc6,0x1c,0x72,0x0e,0x72,0xf0,0x18,0x84,0xcc,0x31,0xc1,0xb8,0xc6,0x98,0x23,0x69,0x88,0x02,0xa1,0x63,0xd0,0x28,0x53, 0xd0,0x03, }; -static const uint8_t wvc_standard_024b[] = { +static const uint8_t vcb_standard_024b[] = { 0x12,0x12,0xe0,0x70,0xca,0x5a,0xaf,0xbd,0xf7,0x5e,0x8c,0x73,0xd6,0x8a,0xd6,0xde,0x8b,0x31,0xc6,0x38,0xe7,0xac,0x15,0xad,0xbd,0x17,0x63,0x8c,0x73,0xce,0x59,0x2b, 0x5a,0x7b,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x56,0xb4,0xf6,0x5e,0x8c,0x31,0xce,0x59,0x6b,0xad,0x78,0x2f,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7b,0xf1,0x5e,0x8c,0x31,0xce, 0x39,0x67,0xad,0xf7,0x22,0xc6,0x18,0xe7,0x9c,0xb3,0xd6,0x7a,0xef,0x05,0x31,0xce,0x39,0x67,0xad,0xb5,0xde,0x0b,0x62,0x9c,0x73,0xce,0x5a,0xef,0xcd,0x19,0xc4,0x38, @@ -3725,7 +3719,7 @@ static const uint8_t wvc_standard_024b[] = { 0xef,0xcd,0x39,0x03,0xee,0xbd,0xf7,0xe6,0x9c,0xf7,0x06,0x70,0xef,0xbd,0x39,0xef,0x1d,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1, 0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_standard_024c[] = { +static const uint8_t vcb_standard_024c[] = { 0x12,0x12,0xa0,0x99,0xa9,0x32,0xbb,0xbb,0xcb,0x54,0x55,0x1d,0xa2,0x2a,0xb3,0x3b,0xc4,0x4c,0xd5,0xdd,0x21,0xaa,0x32,0xbb,0x43,0xcc,0x54,0xdd,0xad,0x2a,0xb3,0x3b, 0x44,0xc4,0x4c,0xd5,0xdd,0xaa,0x32,0xbb,0x43,0x44,0xcc,0x54,0xdd,0x35,0xb3,0x3b,0xbc,0xc4,0x44,0xcd,0x55,0x5e,0x33,0xbb,0x3b,0xc4,0xc4,0x4c,0xd5,0x5d,0xbe,0x3b, 0x44,0xc4,0x4c,0x4d,0xd5,0x5d,0xe6,0xbb,0x43,0xc4,0xcc,0x4c,0x55,0xdd,0x5d,0x3e,0x44,0xc4,0x44,0x4d,0xd5,0x55,0x5e,0xe6,0x43,0x44,0xc4,0x4c,0x55,0xd5,0x5d,0x66, @@ -3733,39 +3727,39 @@ static const uint8_t wvc_standard_024c[] = { 0xe6,0xee,0xd6,0xdd,0x5d,0x5e,0x5e,0xe6,0xe6,0xee,0x6e,0xdd,0xdd,0xdd,0x65,0x66,0xe6,0xee,0xee,0x0e,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_standard_024d[] = { +static const uint8_t vcb_standard_024d[] = { 0x92,0x0a,0xe0,0x71,0xce,0x5a,0xad,0xb5,0xf6,0x5e,0x8c,0xe9,0x9c,0xb5,0xde,0x8b,0x31,0xc6,0x39,0xd7,0x39,0x6b,0xbd,0x17,0x63,0x8c,0x73,0x5a,0xab,0xb5,0xf7,0x62, 0x9c,0xb3,0x56,0x6b,0xb5,0xf6,0x5e,0x8c,0x73,0xd6,0x6a,0xce,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0xd5,0xfa,0x5e,0x8c,0x73,0xd6,0x7a,0x2f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_024e[] = { +static const uint8_t vcb_standard_024e[] = { 0x12,0x05,0x20,0x99,0x21,0x32,0x43,0x1c,0x9a,0x2a,0x33,0xc4,0x19,0xaa,0x32,0x43,0xa4,0x2a,0xb3,0xbb,0xcc,0xaa,0x32,0xbb,0xcb,0x34,0xb3,0x3b,0x44,0x4d,0x33,0xbb, 0x43,0x4c,0x45,0xc4,0x4c,0x4d,0x55,0x44,0xcc,0xd4,0x54,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_standard_024f[] = { +static const uint8_t vcb_standard_024f[] = { 0x01,0x02,0xa0,0x18,0x1a,0x1a,0x1a,0x22,0x22,0xa2,0xa2,0xa2,0x2a,0x2b,0xab,0xb3,0xb3,0xb3,0x33,0x00, }; -static const uint8_t wvc_standard_0250[] = { +static const uint8_t vcb_standard_0250[] = { 0x92,0x07,0x20,0x21,0xaa,0x32,0x33,0x33,0x43,0xa2,0x2a,0x33,0xb3,0xb3,0x23,0xaa,0x32,0x33,0x33,0xc3,0x2a,0x33,0xb3,0x33,0x3b,0x44,0x34,0x33,0x33,0xb3,0x43,0x44, 0x33,0xb3,0xbb,0x3b,0x44,0x34,0x33,0x33,0xbb,0x43,0xc4,0xbb,0x3b,0xb3,0x3b,0x44,0xc4,0xbb,0x33,0xbb,0x43,0xc4,0xbb,0x3b,0xb3,0x3b,0x44,0xbc,0x33,0x33,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_standard_0251[] = { +static const uint8_t vcb_standard_0251[] = { 0x21,0x01,0x58,0x97,0x77,0x97,0x77,0x97,0x97,0x97,0x95,0x05, }; -static const uint8_t wvc_standard_0252[] = { +static const uint8_t vcb_standard_0252[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xad,0xbd,0x17,0xe3,0x9c,0x2b,0xa5,0xd6,0xde,0x7b,0x2f,0xc6,0x5a,0x5b,0x4a,0xad,0xbd,0xf7,0x5e,0x9c,0xb5,0x7a,0xef,0xbd,0x18,0x63, 0x9c,0xb3,0x56,0xef,0xbd,0x17,0x63,0x8c,0x73,0xd6,0xea,0xde,0x18,0xe3,0x9c,0xb3,0xd6,0x7a,0xe5,0x1c,0x63,0x8c,0x73,0xd6,0x5a,0x2f,0xe6,0x9c,0xb3,0xd6,0x7b,0x6f, 0xc6,0x9c,0x73,0xd6,0x7a,0x6f,0xbe,0xd8,0xbb,0xce,0x7a,0x6f,0xce,0x1b,0xbd,0xd7,0x7a,0xeb,0xbd,0x3b,0x83,0x7b,0xef,0xcd,0x79,0x6f,0x90,0xf3,0xbd,0x39,0xe7,0x1d, 0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_standard_0253[] = { +static const uint8_t vcb_standard_0253[] = { 0x14,0x27,0xe0,0x71,0x4a,0x4a,0x00,0x00,0x70,0x52,0x5a,0x0b,0x00,0x00,0x4a,0x4a,0x6b,0x01,0x00,0xc0,0x5a,0xeb,0x3d,0x00,0x00,0x48,0x6b,0xbd,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_standard_0254[] = { +static const uint8_t vcb_standard_0254[] = { 0x01,0x10,0x28,0x63,0x8c,0x2a,0xc5,0x28,0x53,0x4a,0x5a,0x29,0x31,0x63,0x8e,0x32,0xc6,0x28,0x53,0x4c,0x52,0x29,0xb1,0x94,0xd0,0x42,0x08,0xa9,0x73,0x8e,0x62,0x2a, 0x35,0xe7,0x9a,0x73,0x8d,0x35,0xb7,0x16,0x84,0x10,0x42,0x63,0x0a,0x2a,0xa5,0x20,0x53,0xca,0x51,0x2a,0x2d,0x63,0x0c,0x32,0xa5,0x20,0x53,0x0a,0x62,0x29,0xa9,0x84, 0x4e,0x42,0xe7,0xa4,0x73,0x0c,0x62,0x2b,0x29,0xd8,0x1a,0x73,0x6d,0x31,0xc8,0x96,0x83,0xb0,0x41,0x53,0x8a,0x29,0x85,0x98,0x52,0x4a,0x51,0x08,0x21,0x63,0x8a,0x31, @@ -3773,624 +3767,624 @@ static const uint8_t wvc_standard_0254[] = { 0x84,0x8c,0x49,0x08,0x29,0xa5,0x50,0x52,0xe9,0xa0,0x74,0xca,0x49,0x08,0xa9,0xc6,0xd2,0x5a,0x2a,0xa5,0x63,0x4e,0x4a,0x4a,0x2d,0x08,0x1d,0x84,0x10,0x42,0xc8,0x16, 0x84,0xb0,0x41,0x00, }; -static const uint8_t wvc_standard_0255[] = { +static const uint8_t vcb_standard_0255[] = { 0x92,0x0a,0x28,0x30,0x46,0x29,0xc6,0x20,0xa4,0x16,0x5b,0x85,0x10,0x63,0xce,0x49,0x68,0xad,0xb5,0x0a,0x21,0xc6,0x9c,0x93,0xd0,0x52,0x8a,0x3d,0x63,0xce,0x41,0x28, 0xa5,0xb5,0xd8,0x7a,0xc6,0x1c,0x83,0x50,0x4a,0x6a,0x2d,0xf6,0x52,0x3a,0x27,0x25,0xb5,0xd6,0x62,0xec,0xa9,0x74,0x8c,0x4a,0x4a,0x2d,0xc5,0xd8,0x7b,0x2f,0xa5,0x94, 0x94,0x62,0x8b,0xb1,0xf7,0x9e,0x42,0x0a,0x39,0xb6,0x18,0x63,0xef,0x3d,0xc7,0x94,0x5a,0x6c,0xad,0xc6,0xde,0x7b,0x8d,0x29,0xc5,0x56,0x63,0x8c,0xbd,0xf7,0xde,0x63, 0x8c,0xad,0xc6,0x5a,0x7b,0xef,0xbd,0xc7,0xd8,0x5a,0xad,0x39,0x16,0x00,0x30,0x1b,0x1c,0x00,0x20,0x12,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const wvc_info wvc_list_standard[] = { - {0x0000,0x004e,wvc_standard_0000}, - {0x0001,0x0035,wvc_standard_0001}, - {0x0002,0x0039,wvc_standard_0002}, - {0x0003,0x004e,wvc_standard_0003}, - {0x0004,0x0084,wvc_standard_0004}, - {0x0005,0x0017,wvc_standard_0005}, - {0x0006,0x0017,wvc_standard_0006}, - {0x0007,0x0006,wvc_standard_0007}, - {0x0008,0x004e,wvc_standard_0008}, - {0x0009,0x0067,wvc_standard_0009}, - {0x000a,0x0042,wvc_standard_000a}, - {0x000b,0x004e,wvc_standard_000b}, - {0x000c,0x0067,wvc_standard_000c}, - {0x000d,0x006f,wvc_standard_000d}, - {0x000e,0x003b,wvc_standard_000e}, - {0x000f,0x0042,wvc_standard_000f}, - {0x0010,0x0035,wvc_standard_0010}, - {0x0011,0x002c,wvc_standard_0011}, - {0x0012,0x0017,wvc_standard_0012}, - {0x0013,0x0195,wvc_standard_0013}, - {0x0014,0x00a7,wvc_standard_0014}, - {0x0015,0x00cd,wvc_standard_0015}, - {0x0016,0x0039,wvc_standard_0016}, - {0x0017,0x0036,wvc_standard_0017}, - {0x0018,0x0050,wvc_standard_0018}, - {0x0019,0x0036,wvc_standard_0019}, - {0x001a,0x0085,wvc_standard_001a}, - {0x001b,0x004e,wvc_standard_001b}, - {0x001c,0x0035,wvc_standard_001c}, - {0x001d,0x01cf,wvc_standard_001d}, - {0x001e,0x00a4,wvc_standard_001e}, - {0x001f,0x0042,wvc_standard_001f}, - {0x0020,0x004e,wvc_standard_0020}, - {0x0021,0x00f6,wvc_standard_0021}, - {0x0022,0x0044,wvc_standard_0022}, - {0x0023,0x0027,wvc_standard_0023}, - {0x0024,0x0017,wvc_standard_0024}, - {0x0025,0x002c,wvc_standard_0025}, - {0x0026,0x0090,wvc_standard_0026}, - {0x0027,0x0090,wvc_standard_0027}, - {0x0028,0x001a,wvc_standard_0028}, - {0x0029,0x0027,wvc_standard_0029}, - {0x002a,0x0035,wvc_standard_002a}, - {0x002b,0x0042,wvc_standard_002b}, - {0x002c,0x0031,wvc_standard_002c}, - {0x002d,0x01e1,wvc_standard_002d}, - {0x002e,0x00f6,wvc_standard_002e}, - {0x002f,0x002c,wvc_standard_002f}, - {0x0030,0x0036,wvc_standard_0030}, - {0x0031,0x0035,wvc_standard_0031}, - {0x0032,0x00a4,wvc_standard_0032}, - {0x0033,0x0195,wvc_standard_0033}, - {0x0034,0x0069,wvc_standard_0034}, - {0x0035,0x0069,wvc_standard_0035}, - {0x0036,0x0053,wvc_standard_0036}, - {0x0037,0x004e,wvc_standard_0037}, - {0x0038,0x00a7,wvc_standard_0038}, - {0x0039,0x003b,wvc_standard_0039}, - {0x003a,0x0024,wvc_standard_003a}, - {0x003b,0x00a4,wvc_standard_003b}, - {0x003c,0x0084,wvc_standard_003c}, - {0x003d,0x000c,wvc_standard_003d}, - {0x003e,0x005d,wvc_standard_003e}, - {0x003f,0x0035,wvc_standard_003f}, - {0x0040,0x0006,wvc_standard_0040}, - {0x0041,0x0035,wvc_standard_0041}, - {0x0042,0x0039,wvc_standard_0042}, - {0x0043,0x0084,wvc_standard_0043}, - {0x0044,0x0054,wvc_standard_0044}, - {0x0045,0x0042,wvc_standard_0045}, - {0x0046,0x0035,wvc_standard_0046}, - {0x0047,0x0017,wvc_standard_0047}, - {0x0048,0x004e,wvc_standard_0048}, - {0x0049,0x003b,wvc_standard_0049}, - {0x004a,0x00a7,wvc_standard_004a}, - {0x004b,0x0036,wvc_standard_004b}, - {0x004c,0x0035,wvc_standard_004c}, - {0x004d,0x0039,wvc_standard_004d}, - {0x004e,0x001a,wvc_standard_004e}, - {0x004f,0x000f,wvc_standard_004f}, - {0x0050,0x004e,wvc_standard_0050}, - {0x0051,0x002c,wvc_standard_0051}, - {0x0052,0x000c,wvc_standard_0052}, - {0x0053,0x0195,wvc_standard_0053}, - {0x0054,0x000c,wvc_standard_0054}, - {0x0055,0x0042,wvc_standard_0055}, - {0x0056,0x0035,wvc_standard_0056}, - {0x0057,0x0035,wvc_standard_0057}, - {0x0058,0x004e,wvc_standard_0058}, - {0x0059,0x0054,wvc_standard_0059}, - {0x005a,0x00f6,wvc_standard_005a}, - {0x005b,0x005d,wvc_standard_005b}, - {0x005c,0x0039,wvc_standard_005c}, - {0x005d,0x00a4,wvc_standard_005d}, - {0x005e,0x0039,wvc_standard_005e}, - {0x005f,0x0039,wvc_standard_005f}, - {0x0060,0x0006,wvc_standard_0060}, - {0x0061,0x000d,wvc_standard_0061}, - {0x0062,0x0084,wvc_standard_0062}, - {0x0063,0x00a0,wvc_standard_0063}, - {0x0064,0x036a,wvc_standard_0064}, - {0x0065,0x0024,wvc_standard_0065}, - {0x0066,0x0036,wvc_standard_0066}, - {0x0067,0x0147,wvc_standard_0067}, - {0x0068,0x0008,wvc_standard_0068}, - {0x0069,0x0084,wvc_standard_0069}, - {0x006a,0x004e,wvc_standard_006a}, - {0x006b,0x0039,wvc_standard_006b}, - {0x006c,0x0042,wvc_standard_006c}, - {0x006d,0x004e,wvc_standard_006d}, - {0x006e,0x002b,wvc_standard_006e}, - {0x006f,0x0036,wvc_standard_006f}, - {0x0070,0x01de,wvc_standard_0070}, - {0x0071,0x0024,wvc_standard_0071}, - {0x0072,0x002c,wvc_standard_0072}, - {0x0073,0x0050,wvc_standard_0073}, - {0x0074,0x0030,wvc_standard_0074}, - {0x0075,0x0036,wvc_standard_0075}, - {0x0076,0x0030,wvc_standard_0076}, - {0x0077,0x0067,wvc_standard_0077}, - {0x0078,0x0024,wvc_standard_0078}, - {0x0079,0x00f6,wvc_standard_0079}, - {0x007a,0x00a7,wvc_standard_007a}, - {0x007b,0x002c,wvc_standard_007b}, - {0x007c,0x002c,wvc_standard_007c}, - {0x007d,0x0195,wvc_standard_007d}, - {0x007e,0x004e,wvc_standard_007e}, - {0x007f,0x0017,wvc_standard_007f}, - {0x0080,0x0017,wvc_standard_0080}, - {0x0081,0x0017,wvc_standard_0081}, - {0x0082,0x0017,wvc_standard_0082}, - {0x0083,0x0017,wvc_standard_0083}, - {0x0084,0x0017,wvc_standard_0084}, - {0x0085,0x0067,wvc_standard_0085}, - {0x0086,0x004e,wvc_standard_0086}, - {0x0087,0x0024,wvc_standard_0087}, - {0x0088,0x0036,wvc_standard_0088}, - {0x0089,0x0017,wvc_standard_0089}, - {0x008a,0x0035,wvc_standard_008a}, - {0x008b,0x0067,wvc_standard_008b}, - {0x008c,0x036a,wvc_standard_008c}, - {0x008d,0x0042,wvc_standard_008d}, - {0x008e,0x0014,wvc_standard_008e}, - {0x008f,0x0031,wvc_standard_008f}, - {0x0090,0x0039,wvc_standard_0090}, - {0x0091,0x0084,wvc_standard_0091}, - {0x0092,0x0195,wvc_standard_0092}, - {0x0093,0x004e,wvc_standard_0093}, - {0x0094,0x00a7,wvc_standard_0094}, - {0x0095,0x0017,wvc_standard_0095}, - {0x0096,0x0067,wvc_standard_0096}, - {0x0097,0x000c,wvc_standard_0097}, - {0x0098,0x0035,wvc_standard_0098}, - {0x0099,0x0084,wvc_standard_0099}, - {0x009a,0x036a,wvc_standard_009a}, - {0x009b,0x036a,wvc_standard_009b}, - {0x009c,0x036a,wvc_standard_009c}, - {0x009d,0x0036,wvc_standard_009d}, - {0x009e,0x000c,wvc_standard_009e}, - {0x009f,0x004e,wvc_standard_009f}, - {0x00a0,0x0004,wvc_standard_00a0}, - {0x00a1,0x0004,wvc_standard_00a1}, - {0x00a2,0x0084,wvc_standard_00a2}, - {0x00a3,0x0043,wvc_standard_00a3}, - {0x00a4,0x0043,wvc_standard_00a4}, - {0x00a5,0x0091,wvc_standard_00a5}, - {0x00a6,0x000d,wvc_standard_00a6}, - {0x00a7,0x0039,wvc_standard_00a7}, - {0x00a8,0x006f,wvc_standard_00a8}, - {0x00a9,0x0111,wvc_standard_00a9}, - {0x00aa,0x006f,wvc_standard_00aa}, - {0x00ab,0x007c,wvc_standard_00ab}, - {0x00ac,0x0147,wvc_standard_00ac}, - {0x00ad,0x0085,wvc_standard_00ad}, - {0x00ae,0x0014,wvc_standard_00ae}, - {0x00af,0x00f6,wvc_standard_00af}, - {0x00b0,0x0036,wvc_standard_00b0}, - {0x00b1,0x0035,wvc_standard_00b1}, - {0x00b2,0x0042,wvc_standard_00b2}, - {0x00b3,0x0024,wvc_standard_00b3}, - {0x00b4,0x0024,wvc_standard_00b4}, - {0x00b5,0x0035,wvc_standard_00b5}, - {0x00b6,0x0036,wvc_standard_00b6}, - {0x00b7,0x0035,wvc_standard_00b7}, - {0x00b8,0x00a4,wvc_standard_00b8}, - {0x00b9,0x00a7,wvc_standard_00b9}, - {0x00ba,0x00f6,wvc_standard_00ba}, - {0x00bb,0x0007,wvc_standard_00bb}, - {0x00bc,0x00a7,wvc_standard_00bc}, - {0x00bd,0x002c,wvc_standard_00bd}, - {0x00be,0x0039,wvc_standard_00be}, - {0x00bf,0x0034,wvc_standard_00bf}, - {0x00c0,0x000c,wvc_standard_00c0}, - {0x00c1,0x01d3,wvc_standard_00c1}, - {0x00c2,0x0008,wvc_standard_00c2}, - {0x00c3,0x00a0,wvc_standard_00c3}, - {0x00c4,0x0042,wvc_standard_00c4}, - {0x00c5,0x0054,wvc_standard_00c5}, - {0x00c6,0x0042,wvc_standard_00c6}, - {0x00c7,0x0035,wvc_standard_00c7}, - {0x00c8,0x0035,wvc_standard_00c8}, - {0x00c9,0x0040,wvc_standard_00c9}, - {0x00ca,0x0054,wvc_standard_00ca}, - {0x00cb,0x0036,wvc_standard_00cb}, - {0x00cc,0x0039,wvc_standard_00cc}, - {0x00cd,0x006f,wvc_standard_00cd}, - {0x00ce,0x004e,wvc_standard_00ce}, - {0x00cf,0x00f6,wvc_standard_00cf}, - {0x00d0,0x00a4,wvc_standard_00d0}, - {0x00d1,0x0039,wvc_standard_00d1}, - {0x00d2,0x001a,wvc_standard_00d2}, - {0x00d3,0x0017,wvc_standard_00d3}, - {0x00d4,0x00a0,wvc_standard_00d4}, - {0x00d5,0x00f6,wvc_standard_00d5}, - {0x00d6,0x004e,wvc_standard_00d6}, - {0x00d7,0x00a0,wvc_standard_00d7}, - {0x00d8,0x0035,wvc_standard_00d8}, - {0x00d9,0x0039,wvc_standard_00d9}, - {0x00da,0x00f6,wvc_standard_00da}, - {0x00db,0x002c,wvc_standard_00db}, - {0x00dc,0x002c,wvc_standard_00dc}, - {0x00dd,0x008f,wvc_standard_00dd}, - {0x00de,0x004e,wvc_standard_00de}, - {0x00df,0x007d,wvc_standard_00df}, - {0x00e0,0x0007,wvc_standard_00e0}, - {0x00e1,0x00a7,wvc_standard_00e1}, - {0x00e2,0x0195,wvc_standard_00e2}, - {0x00e3,0x0042,wvc_standard_00e3}, - {0x00e4,0x0067,wvc_standard_00e4}, - {0x00e5,0x0007,wvc_standard_00e5}, - {0x00e6,0x0042,wvc_standard_00e6}, - {0x00e7,0x004e,wvc_standard_00e7}, - {0x00e8,0x00a0,wvc_standard_00e8}, - {0x00e9,0x01d5,wvc_standard_00e9}, - {0x00ea,0x0039,wvc_standard_00ea}, - {0x00eb,0x0031,wvc_standard_00eb}, - {0x00ec,0x006f,wvc_standard_00ec}, - {0x00ed,0x00a0,wvc_standard_00ed}, - {0x00ee,0x0067,wvc_standard_00ee}, - {0x00ef,0x0027,wvc_standard_00ef}, - {0x00f0,0x0017,wvc_standard_00f0}, - {0x00f1,0x0017,wvc_standard_00f1}, - {0x00f2,0x0017,wvc_standard_00f2}, - {0x00f3,0x004e,wvc_standard_00f3}, - {0x00f4,0x006f,wvc_standard_00f4}, - {0x00f5,0x004e,wvc_standard_00f5}, - {0x00f6,0x004e,wvc_standard_00f6}, - {0x00f7,0x002c,wvc_standard_00f7}, - {0x00f8,0x0036,wvc_standard_00f8}, - {0x00f9,0x0035,wvc_standard_00f9}, - {0x00fa,0x00d8,wvc_standard_00fa}, - {0x00fb,0x006f,wvc_standard_00fb}, - {0x00fc,0x000c,wvc_standard_00fc}, - {0x00fd,0x0084,wvc_standard_00fd}, - {0x00fe,0x036a,wvc_standard_00fe}, - {0x00ff,0x002c,wvc_standard_00ff}, - {0x0100,0x0035,wvc_standard_0100}, - {0x0101,0x004e,wvc_standard_0101}, - {0x0102,0x004e,wvc_standard_0102}, - {0x0103,0x000c,wvc_standard_0103}, - {0x0104,0x0039,wvc_standard_0104}, - {0x0105,0x0017,wvc_standard_0105}, - {0x0106,0x0035,wvc_standard_0106}, - {0x0107,0x0035,wvc_standard_0107}, - {0x0108,0x0014,wvc_standard_0108}, - {0x0109,0x0039,wvc_standard_0109}, - {0x010a,0x0027,wvc_standard_010a}, - {0x010b,0x0027,wvc_standard_010b}, - {0x010c,0x00f6,wvc_standard_010c}, - {0x010d,0x0069,wvc_standard_010d}, - {0x010e,0x001f,wvc_standard_010e}, - {0x010f,0x0017,wvc_standard_010f}, - {0x0110,0x0017,wvc_standard_0110}, - {0x0111,0x007c,wvc_standard_0111}, - {0x0112,0x0195,wvc_standard_0112}, - {0x0113,0x004e,wvc_standard_0113}, - {0x0114,0x0035,wvc_standard_0114}, - {0x0115,0x0035,wvc_standard_0115}, - {0x0116,0x0017,wvc_standard_0116}, - {0x0117,0x0017,wvc_standard_0117}, - {0x0118,0x0017,wvc_standard_0118}, - {0x0119,0x0017,wvc_standard_0119}, - {0x011a,0x0027,wvc_standard_011a}, - {0x011b,0x00a7,wvc_standard_011b}, - {0x011c,0x0007,wvc_standard_011c}, - {0x011d,0x004e,wvc_standard_011d}, - {0x011e,0x0084,wvc_standard_011e}, - {0x011f,0x0054,wvc_standard_011f}, - {0x0120,0x0111,wvc_standard_0120}, - {0x0121,0x008d,wvc_standard_0121}, - {0x0122,0x007c,wvc_standard_0122}, - {0x0123,0x0067,wvc_standard_0123}, - {0x0124,0x00a7,wvc_standard_0124}, - {0x0125,0x002c,wvc_standard_0125}, - {0x0126,0x00fa,wvc_standard_0126}, - {0x0127,0x0042,wvc_standard_0127}, - {0x0128,0x0195,wvc_standard_0128}, - {0x0129,0x002c,wvc_standard_0129}, - {0x012a,0x0042,wvc_standard_012a}, - {0x012b,0x0044,wvc_standard_012b}, - {0x012c,0x00a7,wvc_standard_012c}, - {0x012d,0x0042,wvc_standard_012d}, - {0x012e,0x0039,wvc_standard_012e}, - {0x012f,0x0030,wvc_standard_012f}, - {0x0130,0x0067,wvc_standard_0130}, - {0x0131,0x00a7,wvc_standard_0131}, - {0x0132,0x0067,wvc_standard_0132}, - {0x0133,0x004e,wvc_standard_0133}, - {0x0134,0x0067,wvc_standard_0134}, - {0x0135,0x0084,wvc_standard_0135}, - {0x0136,0x0036,wvc_standard_0136}, - {0x0137,0x0035,wvc_standard_0137}, - {0x0138,0x004e,wvc_standard_0138}, - {0x0139,0x036a,wvc_standard_0139}, - {0x013a,0x0085,wvc_standard_013a}, - {0x013b,0x004e,wvc_standard_013b}, - {0x013c,0x007c,wvc_standard_013c}, - {0x013d,0x0036,wvc_standard_013d}, - {0x013e,0x0039,wvc_standard_013e}, - {0x013f,0x0036,wvc_standard_013f}, - {0x0140,0x0039,wvc_standard_0140}, - {0x0141,0x00a7,wvc_standard_0141}, - {0x0142,0x0147,wvc_standard_0142}, - {0x0143,0x0035,wvc_standard_0143}, - {0x0144,0x0035,wvc_standard_0144}, - {0x0145,0x0111,wvc_standard_0145}, - {0x0146,0x007c,wvc_standard_0146}, - {0x0147,0x0035,wvc_standard_0147}, - {0x0148,0x007a,wvc_standard_0148}, - {0x0149,0x0024,wvc_standard_0149}, - {0x014a,0x0195,wvc_standard_014a}, - {0x014b,0x0035,wvc_standard_014b}, - {0x014c,0x0067,wvc_standard_014c}, - {0x014d,0x001f,wvc_standard_014d}, - {0x014e,0x00f6,wvc_standard_014e}, - {0x014f,0x00f6,wvc_standard_014f}, - {0x0150,0x007e,wvc_standard_0150}, - {0x0151,0x0005,wvc_standard_0151}, - {0x0152,0x000c,wvc_standard_0152}, - {0x0153,0x007c,wvc_standard_0153}, - {0x0154,0x0035,wvc_standard_0154}, - {0x0155,0x0067,wvc_standard_0155}, - {0x0156,0x004e,wvc_standard_0156}, - {0x0157,0x0035,wvc_standard_0157}, - {0x0158,0x0036,wvc_standard_0158}, - {0x0159,0x0097,wvc_standard_0159}, - {0x015a,0x004e,wvc_standard_015a}, - {0x015b,0x002c,wvc_standard_015b}, - {0x015c,0x0042,wvc_standard_015c}, - {0x015d,0x003b,wvc_standard_015d}, - {0x015e,0x0036,wvc_standard_015e}, - {0x015f,0x0035,wvc_standard_015f}, - {0x0160,0x00fa,wvc_standard_0160}, - {0x0161,0x00b1,wvc_standard_0161}, - {0x0162,0x002c,wvc_standard_0162}, - {0x0163,0x0024,wvc_standard_0163}, - {0x0164,0x0042,wvc_standard_0164}, - {0x0165,0x0035,wvc_standard_0165}, - {0x0166,0x001f,wvc_standard_0166}, - {0x0167,0x0036,wvc_standard_0167}, - {0x0168,0x001a,wvc_standard_0168}, - {0x0169,0x0007,wvc_standard_0169}, - {0x016a,0x003b,wvc_standard_016a}, - {0x016b,0x0084,wvc_standard_016b}, - {0x016c,0x003b,wvc_standard_016c}, - {0x016d,0x01cc,wvc_standard_016d}, - {0x016e,0x0111,wvc_standard_016e}, - {0x016f,0x00a7,wvc_standard_016f}, - {0x0170,0x00f6,wvc_standard_0170}, - {0x0171,0x0035,wvc_standard_0171}, - {0x0172,0x01de,wvc_standard_0172}, - {0x0173,0x0017,wvc_standard_0173}, - {0x0174,0x0017,wvc_standard_0174}, - {0x0175,0x0035,wvc_standard_0175}, - {0x0176,0x0042,wvc_standard_0176}, - {0x0177,0x00f6,wvc_standard_0177}, - {0x0178,0x036a,wvc_standard_0178}, - {0x0179,0x0024,wvc_standard_0179}, - {0x017a,0x01e0,wvc_standard_017a}, - {0x017b,0x0053,wvc_standard_017b}, - {0x017c,0x001a,wvc_standard_017c}, - {0x017d,0x0067,wvc_standard_017d}, - {0x017e,0x0042,wvc_standard_017e}, - {0x017f,0x0036,wvc_standard_017f}, - {0x0180,0x0067,wvc_standard_0180}, - {0x0181,0x006e,wvc_standard_0181}, - {0x0182,0x00f6,wvc_standard_0182}, - {0x0183,0x0035,wvc_standard_0183}, - {0x0184,0x01d7,wvc_standard_0184}, - {0x0185,0x01d7,wvc_standard_0185}, - {0x0186,0x0084,wvc_standard_0186}, - {0x0187,0x036a,wvc_standard_0187}, - {0x0188,0x00a7,wvc_standard_0188}, - {0x0189,0x0036,wvc_standard_0189}, - {0x018a,0x0069,wvc_standard_018a}, - {0x018b,0x0069,wvc_standard_018b}, - {0x018c,0x0035,wvc_standard_018c}, - {0x018d,0x00a7,wvc_standard_018d}, - {0x018e,0x0008,wvc_standard_018e}, - {0x018f,0x0195,wvc_standard_018f}, - {0x0190,0x0036,wvc_standard_0190}, - {0x0191,0x000c,wvc_standard_0191}, - {0x0192,0x0067,wvc_standard_0192}, - {0x0193,0x01db,wvc_standard_0193}, - {0x0194,0x002c,wvc_standard_0194}, - {0x0195,0x0042,wvc_standard_0195}, - {0x0196,0x0067,wvc_standard_0196}, - {0x0197,0x007c,wvc_standard_0197}, - {0x0198,0x01cb,wvc_standard_0198}, - {0x0199,0x00cb,wvc_standard_0199}, - {0x019a,0x0195,wvc_standard_019a}, - {0x019b,0x004e,wvc_standard_019b}, - {0x019c,0x00a7,wvc_standard_019c}, - {0x019d,0x007c,wvc_standard_019d}, - {0x019e,0x0007,wvc_standard_019e}, - {0x019f,0x004e,wvc_standard_019f}, - {0x01a0,0x0042,wvc_standard_01a0}, - {0x01a1,0x007c,wvc_standard_01a1}, - {0x01a2,0x0039,wvc_standard_01a2}, - {0x01a3,0x0035,wvc_standard_01a3}, - {0x01a4,0x0035,wvc_standard_01a4}, - {0x01a5,0x00a4,wvc_standard_01a5}, - {0x01a6,0x00a7,wvc_standard_01a6}, - {0x01a7,0x0017,wvc_standard_01a7}, - {0x01a8,0x0010,wvc_standard_01a8}, - {0x01a9,0x0035,wvc_standard_01a9}, - {0x01aa,0x0039,wvc_standard_01aa}, - {0x01ab,0x007d,wvc_standard_01ab}, - {0x01ac,0x0035,wvc_standard_01ac}, - {0x01ad,0x0147,wvc_standard_01ad}, - {0x01ae,0x0017,wvc_standard_01ae}, - {0x01af,0x0034,wvc_standard_01af}, - {0x01b0,0x00a0,wvc_standard_01b0}, - {0x01b1,0x004e,wvc_standard_01b1}, - {0x01b2,0x0067,wvc_standard_01b2}, - {0x01b3,0x0069,wvc_standard_01b3}, - {0x01b4,0x0069,wvc_standard_01b4}, - {0x01b5,0x0035,wvc_standard_01b5}, - {0x01b6,0x000e,wvc_standard_01b6}, - {0x01b7,0x01d3,wvc_standard_01b7}, - {0x01b8,0x0039,wvc_standard_01b8}, - {0x01b9,0x0147,wvc_standard_01b9}, - {0x01ba,0x007d,wvc_standard_01ba}, - {0x01bb,0x001a,wvc_standard_01bb}, - {0x01bc,0x0067,wvc_standard_01bc}, - {0x01bd,0x036a,wvc_standard_01bd}, - {0x01be,0x0042,wvc_standard_01be}, - {0x01bf,0x000c,wvc_standard_01bf}, - {0x01c0,0x0039,wvc_standard_01c0}, - {0x01c1,0x0147,wvc_standard_01c1}, - {0x01c2,0x0035,wvc_standard_01c2}, - {0x01c3,0x0035,wvc_standard_01c3}, - {0x01c4,0x00a0,wvc_standard_01c4}, - {0x01c5,0x007c,wvc_standard_01c5}, - {0x01c6,0x0036,wvc_standard_01c6}, - {0x01c7,0x00a0,wvc_standard_01c7}, - {0x01c8,0x0039,wvc_standard_01c8}, - {0x01c9,0x00a7,wvc_standard_01c9}, - {0x01ca,0x00a0,wvc_standard_01ca}, - {0x01cb,0x007c,wvc_standard_01cb}, - {0x01cc,0x0044,wvc_standard_01cc}, - {0x01cd,0x0014,wvc_standard_01cd}, - {0x01ce,0x0039,wvc_standard_01ce}, - {0x01cf,0x0017,wvc_standard_01cf}, - {0x01d0,0x036a,wvc_standard_01d0}, - {0x01d1,0x0091,wvc_standard_01d1}, - {0x01d2,0x001a,wvc_standard_01d2}, - {0x01d3,0x0035,wvc_standard_01d3}, - {0x01d4,0x0049,wvc_standard_01d4}, - {0x01d5,0x0035,wvc_standard_01d5}, - {0x01d6,0x001a,wvc_standard_01d6}, - {0x01d7,0x00a7,wvc_standard_01d7}, - {0x01d8,0x00a7,wvc_standard_01d8}, - {0x01d9,0x0069,wvc_standard_01d9}, - {0x01da,0x0027,wvc_standard_01da}, - {0x01db,0x036a,wvc_standard_01db}, - {0x01dc,0x002c,wvc_standard_01dc}, - {0x01dd,0x0036,wvc_standard_01dd}, - {0x01de,0x0024,wvc_standard_01de}, - {0x01df,0x0043,wvc_standard_01df}, - {0x01e0,0x002c,wvc_standard_01e0}, - {0x01e1,0x01d8,wvc_standard_01e1}, - {0x01e2,0x005d,wvc_standard_01e2}, - {0x01e3,0x0036,wvc_standard_01e3}, - {0x01e4,0x0042,wvc_standard_01e4}, - {0x01e5,0x0067,wvc_standard_01e5}, - {0x01e6,0x0067,wvc_standard_01e6}, - {0x01e7,0x00a7,wvc_standard_01e7}, - {0x01e8,0x0042,wvc_standard_01e8}, - {0x01e9,0x0069,wvc_standard_01e9}, - {0x01ea,0x00fa,wvc_standard_01ea}, - {0x01eb,0x006f,wvc_standard_01eb}, - {0x01ec,0x0035,wvc_standard_01ec}, - {0x01ed,0x00a0,wvc_standard_01ed}, - {0x01ee,0x0042,wvc_standard_01ee}, - {0x01ef,0x0035,wvc_standard_01ef}, - {0x01f0,0x000c,wvc_standard_01f0}, - {0x01f1,0x006f,wvc_standard_01f1}, - {0x01f2,0x0084,wvc_standard_01f2}, - {0x01f3,0x00fa,wvc_standard_01f3}, - {0x01f4,0x00f6,wvc_standard_01f4}, - {0x01f5,0x0024,wvc_standard_01f5}, - {0x01f6,0x0024,wvc_standard_01f6}, - {0x01f7,0x004e,wvc_standard_01f7}, - {0x01f8,0x0017,wvc_standard_01f8}, - {0x01f9,0x0035,wvc_standard_01f9}, - {0x01fa,0x0035,wvc_standard_01fa}, - {0x01fb,0x0035,wvc_standard_01fb}, - {0x01fc,0x0035,wvc_standard_01fc}, - {0x01fd,0x0085,wvc_standard_01fd}, - {0x01fe,0x0042,wvc_standard_01fe}, - {0x01ff,0x0035,wvc_standard_01ff}, - {0x0200,0x0030,wvc_standard_0200}, - {0x0201,0x001a,wvc_standard_0201}, - {0x0202,0x0042,wvc_standard_0202}, - {0x0203,0x0035,wvc_standard_0203}, - {0x0204,0x0067,wvc_standard_0204}, - {0x0205,0x007c,wvc_standard_0205}, - {0x0206,0x0035,wvc_standard_0206}, - {0x0207,0x0039,wvc_standard_0207}, - {0x0208,0x0042,wvc_standard_0208}, - {0x0209,0x001f,wvc_standard_0209}, - {0x020a,0x007d,wvc_standard_020a}, - {0x020b,0x01e0,wvc_standard_020b}, - {0x020c,0x01e0,wvc_standard_020c}, - {0x020d,0x0084,wvc_standard_020d}, - {0x020e,0x004e,wvc_standard_020e}, - {0x020f,0x0039,wvc_standard_020f}, - {0x0210,0x00a4,wvc_standard_0210}, - {0x0211,0x0014,wvc_standard_0211}, - {0x0212,0x002c,wvc_standard_0212}, - {0x0213,0x0053,wvc_standard_0213}, - {0x0214,0x0039,wvc_standard_0214}, - {0x0215,0x003b,wvc_standard_0215}, - {0x0216,0x0084,wvc_standard_0216}, - {0x0217,0x00a4,wvc_standard_0217}, - {0x0218,0x0035,wvc_standard_0218}, - {0x0219,0x007c,wvc_standard_0219}, - {0x021a,0x0027,wvc_standard_021a}, - {0x021b,0x0084,wvc_standard_021b}, - {0x021c,0x0031,wvc_standard_021c}, - {0x021d,0x0066,wvc_standard_021d}, - {0x021e,0x0039,wvc_standard_021e}, - {0x021f,0x004e,wvc_standard_021f}, - {0x0220,0x0039,wvc_standard_0220}, - {0x0221,0x006f,wvc_standard_0221}, - {0x0222,0x0039,wvc_standard_0222}, - {0x0223,0x0026,wvc_standard_0223}, - {0x0224,0x006c,wvc_standard_0224}, - {0x0225,0x001a,wvc_standard_0225}, - {0x0226,0x00a7,wvc_standard_0226}, - {0x0227,0x001f,wvc_standard_0227}, - {0x0228,0x0053,wvc_standard_0228}, - {0x0229,0x036a,wvc_standard_0229}, - {0x022a,0x004e,wvc_standard_022a}, - {0x022b,0x004e,wvc_standard_022b}, - {0x022c,0x0083,wvc_standard_022c}, - {0x022d,0x0069,wvc_standard_022d}, - {0x022e,0x0069,wvc_standard_022e}, - {0x022f,0x0069,wvc_standard_022f}, - {0x0230,0x004e,wvc_standard_0230}, - {0x0231,0x0067,wvc_standard_0231}, - {0x0232,0x0067,wvc_standard_0232}, - {0x0233,0x007c,wvc_standard_0233}, - {0x0234,0x000c,wvc_standard_0234}, - {0x0235,0x00a7,wvc_standard_0235}, - {0x0236,0x004e,wvc_standard_0236}, - {0x0237,0x0042,wvc_standard_0237}, - {0x0238,0x000f,wvc_standard_0238}, - {0x0239,0x007c,wvc_standard_0239}, - {0x023a,0x001a,wvc_standard_023a}, - {0x023b,0x006f,wvc_standard_023b}, - {0x023c,0x0035,wvc_standard_023c}, - {0x023d,0x0035,wvc_standard_023d}, - {0x023e,0x00a7,wvc_standard_023e}, - {0x023f,0x0035,wvc_standard_023f}, - {0x0240,0x036a,wvc_standard_0240}, - {0x0241,0x002c,wvc_standard_0241}, - {0x0242,0x0035,wvc_standard_0242}, - {0x0243,0x0034,wvc_standard_0243}, - {0x0244,0x0034,wvc_standard_0244}, - {0x0245,0x0035,wvc_standard_0245}, - {0x0246,0x0050,wvc_standard_0246}, - {0x0247,0x00a4,wvc_standard_0247}, - {0x0248,0x0084,wvc_standard_0248}, - {0x0249,0x0050,wvc_standard_0249}, - {0x024a,0x0042,wvc_standard_024a}, - {0x024b,0x00a4,wvc_standard_024b}, - {0x024c,0x00a7,wvc_standard_024c}, - {0x024d,0x0053,wvc_standard_024d}, - {0x024e,0x0039,wvc_standard_024e}, - {0x024f,0x0014,wvc_standard_024f}, - {0x0250,0x004e,wvc_standard_0250}, - {0x0251,0x000c,wvc_standard_0251}, - {0x0252,0x006f,wvc_standard_0252}, - {0x0253,0x0069,wvc_standard_0253}, - {0x0254,0x00a4,wvc_standard_0254}, - {0x0255,0x007c,wvc_standard_0255}, +static const vcb_info_t vcb_list_standard[] = { + {0x0000,0x004e,vcb_standard_0000}, + {0x0001,0x0035,vcb_standard_0001}, + {0x0002,0x0039,vcb_standard_0002}, + {0x0003,0x004e,vcb_standard_0003}, + {0x0004,0x0084,vcb_standard_0004}, + {0x0005,0x0017,vcb_standard_0005}, + {0x0006,0x0017,vcb_standard_0006}, + {0x0007,0x0006,vcb_standard_0007}, + {0x0008,0x004e,vcb_standard_0008}, + {0x0009,0x0067,vcb_standard_0009}, + {0x000a,0x0042,vcb_standard_000a}, + {0x000b,0x004e,vcb_standard_000b}, + {0x000c,0x0067,vcb_standard_000c}, + {0x000d,0x006f,vcb_standard_000d}, + {0x000e,0x003b,vcb_standard_000e}, + {0x000f,0x0042,vcb_standard_000f}, + {0x0010,0x0035,vcb_standard_0010}, + {0x0011,0x002c,vcb_standard_0011}, + {0x0012,0x0017,vcb_standard_0012}, + {0x0013,0x0195,vcb_standard_0013}, + {0x0014,0x00a7,vcb_standard_0014}, + {0x0015,0x00cd,vcb_standard_0015}, + {0x0016,0x0039,vcb_standard_0016}, + {0x0017,0x0036,vcb_standard_0017}, + {0x0018,0x0050,vcb_standard_0018}, + {0x0019,0x0036,vcb_standard_0019}, + {0x001a,0x0085,vcb_standard_001a}, + {0x001b,0x004e,vcb_standard_001b}, + {0x001c,0x0035,vcb_standard_001c}, + {0x001d,0x01cf,vcb_standard_001d}, + {0x001e,0x00a4,vcb_standard_001e}, + {0x001f,0x0042,vcb_standard_001f}, + {0x0020,0x004e,vcb_standard_0020}, + {0x0021,0x00f6,vcb_standard_0021}, + {0x0022,0x0044,vcb_standard_0022}, + {0x0023,0x0027,vcb_standard_0023}, + {0x0024,0x0017,vcb_standard_0024}, + {0x0025,0x002c,vcb_standard_0025}, + {0x0026,0x0090,vcb_standard_0026}, + {0x0027,0x0090,vcb_standard_0027}, + {0x0028,0x001a,vcb_standard_0028}, + {0x0029,0x0027,vcb_standard_0029}, + {0x002a,0x0035,vcb_standard_002a}, + {0x002b,0x0042,vcb_standard_002b}, + {0x002c,0x0031,vcb_standard_002c}, + {0x002d,0x01e1,vcb_standard_002d}, + {0x002e,0x00f6,vcb_standard_002e}, + {0x002f,0x002c,vcb_standard_002f}, + {0x0030,0x0036,vcb_standard_0030}, + {0x0031,0x0035,vcb_standard_0031}, + {0x0032,0x00a4,vcb_standard_0032}, + {0x0033,0x0195,vcb_standard_0033}, + {0x0034,0x0069,vcb_standard_0034}, + {0x0035,0x0069,vcb_standard_0035}, + {0x0036,0x0053,vcb_standard_0036}, + {0x0037,0x004e,vcb_standard_0037}, + {0x0038,0x00a7,vcb_standard_0038}, + {0x0039,0x003b,vcb_standard_0039}, + {0x003a,0x0024,vcb_standard_003a}, + {0x003b,0x00a4,vcb_standard_003b}, + {0x003c,0x0084,vcb_standard_003c}, + {0x003d,0x000c,vcb_standard_003d}, + {0x003e,0x005d,vcb_standard_003e}, + {0x003f,0x0035,vcb_standard_003f}, + {0x0040,0x0006,vcb_standard_0040}, + {0x0041,0x0035,vcb_standard_0041}, + {0x0042,0x0039,vcb_standard_0042}, + {0x0043,0x0084,vcb_standard_0043}, + {0x0044,0x0054,vcb_standard_0044}, + {0x0045,0x0042,vcb_standard_0045}, + {0x0046,0x0035,vcb_standard_0046}, + {0x0047,0x0017,vcb_standard_0047}, + {0x0048,0x004e,vcb_standard_0048}, + {0x0049,0x003b,vcb_standard_0049}, + {0x004a,0x00a7,vcb_standard_004a}, + {0x004b,0x0036,vcb_standard_004b}, + {0x004c,0x0035,vcb_standard_004c}, + {0x004d,0x0039,vcb_standard_004d}, + {0x004e,0x001a,vcb_standard_004e}, + {0x004f,0x000f,vcb_standard_004f}, + {0x0050,0x004e,vcb_standard_0050}, + {0x0051,0x002c,vcb_standard_0051}, + {0x0052,0x000c,vcb_standard_0052}, + {0x0053,0x0195,vcb_standard_0053}, + {0x0054,0x000c,vcb_standard_0054}, + {0x0055,0x0042,vcb_standard_0055}, + {0x0056,0x0035,vcb_standard_0056}, + {0x0057,0x0035,vcb_standard_0057}, + {0x0058,0x004e,vcb_standard_0058}, + {0x0059,0x0054,vcb_standard_0059}, + {0x005a,0x00f6,vcb_standard_005a}, + {0x005b,0x005d,vcb_standard_005b}, + {0x005c,0x0039,vcb_standard_005c}, + {0x005d,0x00a4,vcb_standard_005d}, + {0x005e,0x0039,vcb_standard_005e}, + {0x005f,0x0039,vcb_standard_005f}, + {0x0060,0x0006,vcb_standard_0060}, + {0x0061,0x000d,vcb_standard_0061}, + {0x0062,0x0084,vcb_standard_0062}, + {0x0063,0x00a0,vcb_standard_0063}, + {0x0064,0x036a,vcb_standard_0064}, + {0x0065,0x0024,vcb_standard_0065}, + {0x0066,0x0036,vcb_standard_0066}, + {0x0067,0x0147,vcb_standard_0067}, + {0x0068,0x0008,vcb_standard_0068}, + {0x0069,0x0084,vcb_standard_0069}, + {0x006a,0x004e,vcb_standard_006a}, + {0x006b,0x0039,vcb_standard_006b}, + {0x006c,0x0042,vcb_standard_006c}, + {0x006d,0x004e,vcb_standard_006d}, + {0x006e,0x002b,vcb_standard_006e}, + {0x006f,0x0036,vcb_standard_006f}, + {0x0070,0x01de,vcb_standard_0070}, + {0x0071,0x0024,vcb_standard_0071}, + {0x0072,0x002c,vcb_standard_0072}, + {0x0073,0x0050,vcb_standard_0073}, + {0x0074,0x0030,vcb_standard_0074}, + {0x0075,0x0036,vcb_standard_0075}, + {0x0076,0x0030,vcb_standard_0076}, + {0x0077,0x0067,vcb_standard_0077}, + {0x0078,0x0024,vcb_standard_0078}, + {0x0079,0x00f6,vcb_standard_0079}, + {0x007a,0x00a7,vcb_standard_007a}, + {0x007b,0x002c,vcb_standard_007b}, + {0x007c,0x002c,vcb_standard_007c}, + {0x007d,0x0195,vcb_standard_007d}, + {0x007e,0x004e,vcb_standard_007e}, + {0x007f,0x0017,vcb_standard_007f}, + {0x0080,0x0017,vcb_standard_0080}, + {0x0081,0x0017,vcb_standard_0081}, + {0x0082,0x0017,vcb_standard_0082}, + {0x0083,0x0017,vcb_standard_0083}, + {0x0084,0x0017,vcb_standard_0084}, + {0x0085,0x0067,vcb_standard_0085}, + {0x0086,0x004e,vcb_standard_0086}, + {0x0087,0x0024,vcb_standard_0087}, + {0x0088,0x0036,vcb_standard_0088}, + {0x0089,0x0017,vcb_standard_0089}, + {0x008a,0x0035,vcb_standard_008a}, + {0x008b,0x0067,vcb_standard_008b}, + {0x008c,0x036a,vcb_standard_008c}, + {0x008d,0x0042,vcb_standard_008d}, + {0x008e,0x0014,vcb_standard_008e}, + {0x008f,0x0031,vcb_standard_008f}, + {0x0090,0x0039,vcb_standard_0090}, + {0x0091,0x0084,vcb_standard_0091}, + {0x0092,0x0195,vcb_standard_0092}, + {0x0093,0x004e,vcb_standard_0093}, + {0x0094,0x00a7,vcb_standard_0094}, + {0x0095,0x0017,vcb_standard_0095}, + {0x0096,0x0067,vcb_standard_0096}, + {0x0097,0x000c,vcb_standard_0097}, + {0x0098,0x0035,vcb_standard_0098}, + {0x0099,0x0084,vcb_standard_0099}, + {0x009a,0x036a,vcb_standard_009a}, + {0x009b,0x036a,vcb_standard_009b}, + {0x009c,0x036a,vcb_standard_009c}, + {0x009d,0x0036,vcb_standard_009d}, + {0x009e,0x000c,vcb_standard_009e}, + {0x009f,0x004e,vcb_standard_009f}, + {0x00a0,0x0004,vcb_standard_00a0}, + {0x00a1,0x0004,vcb_standard_00a1}, + {0x00a2,0x0084,vcb_standard_00a2}, + {0x00a3,0x0043,vcb_standard_00a3}, + {0x00a4,0x0043,vcb_standard_00a4}, + {0x00a5,0x0091,vcb_standard_00a5}, + {0x00a6,0x000d,vcb_standard_00a6}, + {0x00a7,0x0039,vcb_standard_00a7}, + {0x00a8,0x006f,vcb_standard_00a8}, + {0x00a9,0x0111,vcb_standard_00a9}, + {0x00aa,0x006f,vcb_standard_00aa}, + {0x00ab,0x007c,vcb_standard_00ab}, + {0x00ac,0x0147,vcb_standard_00ac}, + {0x00ad,0x0085,vcb_standard_00ad}, + {0x00ae,0x0014,vcb_standard_00ae}, + {0x00af,0x00f6,vcb_standard_00af}, + {0x00b0,0x0036,vcb_standard_00b0}, + {0x00b1,0x0035,vcb_standard_00b1}, + {0x00b2,0x0042,vcb_standard_00b2}, + {0x00b3,0x0024,vcb_standard_00b3}, + {0x00b4,0x0024,vcb_standard_00b4}, + {0x00b5,0x0035,vcb_standard_00b5}, + {0x00b6,0x0036,vcb_standard_00b6}, + {0x00b7,0x0035,vcb_standard_00b7}, + {0x00b8,0x00a4,vcb_standard_00b8}, + {0x00b9,0x00a7,vcb_standard_00b9}, + {0x00ba,0x00f6,vcb_standard_00ba}, + {0x00bb,0x0007,vcb_standard_00bb}, + {0x00bc,0x00a7,vcb_standard_00bc}, + {0x00bd,0x002c,vcb_standard_00bd}, + {0x00be,0x0039,vcb_standard_00be}, + {0x00bf,0x0034,vcb_standard_00bf}, + {0x00c0,0x000c,vcb_standard_00c0}, + {0x00c1,0x01d3,vcb_standard_00c1}, + {0x00c2,0x0008,vcb_standard_00c2}, + {0x00c3,0x00a0,vcb_standard_00c3}, + {0x00c4,0x0042,vcb_standard_00c4}, + {0x00c5,0x0054,vcb_standard_00c5}, + {0x00c6,0x0042,vcb_standard_00c6}, + {0x00c7,0x0035,vcb_standard_00c7}, + {0x00c8,0x0035,vcb_standard_00c8}, + {0x00c9,0x0040,vcb_standard_00c9}, + {0x00ca,0x0054,vcb_standard_00ca}, + {0x00cb,0x0036,vcb_standard_00cb}, + {0x00cc,0x0039,vcb_standard_00cc}, + {0x00cd,0x006f,vcb_standard_00cd}, + {0x00ce,0x004e,vcb_standard_00ce}, + {0x00cf,0x00f6,vcb_standard_00cf}, + {0x00d0,0x00a4,vcb_standard_00d0}, + {0x00d1,0x0039,vcb_standard_00d1}, + {0x00d2,0x001a,vcb_standard_00d2}, + {0x00d3,0x0017,vcb_standard_00d3}, + {0x00d4,0x00a0,vcb_standard_00d4}, + {0x00d5,0x00f6,vcb_standard_00d5}, + {0x00d6,0x004e,vcb_standard_00d6}, + {0x00d7,0x00a0,vcb_standard_00d7}, + {0x00d8,0x0035,vcb_standard_00d8}, + {0x00d9,0x0039,vcb_standard_00d9}, + {0x00da,0x00f6,vcb_standard_00da}, + {0x00db,0x002c,vcb_standard_00db}, + {0x00dc,0x002c,vcb_standard_00dc}, + {0x00dd,0x008f,vcb_standard_00dd}, + {0x00de,0x004e,vcb_standard_00de}, + {0x00df,0x007d,vcb_standard_00df}, + {0x00e0,0x0007,vcb_standard_00e0}, + {0x00e1,0x00a7,vcb_standard_00e1}, + {0x00e2,0x0195,vcb_standard_00e2}, + {0x00e3,0x0042,vcb_standard_00e3}, + {0x00e4,0x0067,vcb_standard_00e4}, + {0x00e5,0x0007,vcb_standard_00e5}, + {0x00e6,0x0042,vcb_standard_00e6}, + {0x00e7,0x004e,vcb_standard_00e7}, + {0x00e8,0x00a0,vcb_standard_00e8}, + {0x00e9,0x01d5,vcb_standard_00e9}, + {0x00ea,0x0039,vcb_standard_00ea}, + {0x00eb,0x0031,vcb_standard_00eb}, + {0x00ec,0x006f,vcb_standard_00ec}, + {0x00ed,0x00a0,vcb_standard_00ed}, + {0x00ee,0x0067,vcb_standard_00ee}, + {0x00ef,0x0027,vcb_standard_00ef}, + {0x00f0,0x0017,vcb_standard_00f0}, + {0x00f1,0x0017,vcb_standard_00f1}, + {0x00f2,0x0017,vcb_standard_00f2}, + {0x00f3,0x004e,vcb_standard_00f3}, + {0x00f4,0x006f,vcb_standard_00f4}, + {0x00f5,0x004e,vcb_standard_00f5}, + {0x00f6,0x004e,vcb_standard_00f6}, + {0x00f7,0x002c,vcb_standard_00f7}, + {0x00f8,0x0036,vcb_standard_00f8}, + {0x00f9,0x0035,vcb_standard_00f9}, + {0x00fa,0x00d8,vcb_standard_00fa}, + {0x00fb,0x006f,vcb_standard_00fb}, + {0x00fc,0x000c,vcb_standard_00fc}, + {0x00fd,0x0084,vcb_standard_00fd}, + {0x00fe,0x036a,vcb_standard_00fe}, + {0x00ff,0x002c,vcb_standard_00ff}, + {0x0100,0x0035,vcb_standard_0100}, + {0x0101,0x004e,vcb_standard_0101}, + {0x0102,0x004e,vcb_standard_0102}, + {0x0103,0x000c,vcb_standard_0103}, + {0x0104,0x0039,vcb_standard_0104}, + {0x0105,0x0017,vcb_standard_0105}, + {0x0106,0x0035,vcb_standard_0106}, + {0x0107,0x0035,vcb_standard_0107}, + {0x0108,0x0014,vcb_standard_0108}, + {0x0109,0x0039,vcb_standard_0109}, + {0x010a,0x0027,vcb_standard_010a}, + {0x010b,0x0027,vcb_standard_010b}, + {0x010c,0x00f6,vcb_standard_010c}, + {0x010d,0x0069,vcb_standard_010d}, + {0x010e,0x001f,vcb_standard_010e}, + {0x010f,0x0017,vcb_standard_010f}, + {0x0110,0x0017,vcb_standard_0110}, + {0x0111,0x007c,vcb_standard_0111}, + {0x0112,0x0195,vcb_standard_0112}, + {0x0113,0x004e,vcb_standard_0113}, + {0x0114,0x0035,vcb_standard_0114}, + {0x0115,0x0035,vcb_standard_0115}, + {0x0116,0x0017,vcb_standard_0116}, + {0x0117,0x0017,vcb_standard_0117}, + {0x0118,0x0017,vcb_standard_0118}, + {0x0119,0x0017,vcb_standard_0119}, + {0x011a,0x0027,vcb_standard_011a}, + {0x011b,0x00a7,vcb_standard_011b}, + {0x011c,0x0007,vcb_standard_011c}, + {0x011d,0x004e,vcb_standard_011d}, + {0x011e,0x0084,vcb_standard_011e}, + {0x011f,0x0054,vcb_standard_011f}, + {0x0120,0x0111,vcb_standard_0120}, + {0x0121,0x008d,vcb_standard_0121}, + {0x0122,0x007c,vcb_standard_0122}, + {0x0123,0x0067,vcb_standard_0123}, + {0x0124,0x00a7,vcb_standard_0124}, + {0x0125,0x002c,vcb_standard_0125}, + {0x0126,0x00fa,vcb_standard_0126}, + {0x0127,0x0042,vcb_standard_0127}, + {0x0128,0x0195,vcb_standard_0128}, + {0x0129,0x002c,vcb_standard_0129}, + {0x012a,0x0042,vcb_standard_012a}, + {0x012b,0x0044,vcb_standard_012b}, + {0x012c,0x00a7,vcb_standard_012c}, + {0x012d,0x0042,vcb_standard_012d}, + {0x012e,0x0039,vcb_standard_012e}, + {0x012f,0x0030,vcb_standard_012f}, + {0x0130,0x0067,vcb_standard_0130}, + {0x0131,0x00a7,vcb_standard_0131}, + {0x0132,0x0067,vcb_standard_0132}, + {0x0133,0x004e,vcb_standard_0133}, + {0x0134,0x0067,vcb_standard_0134}, + {0x0135,0x0084,vcb_standard_0135}, + {0x0136,0x0036,vcb_standard_0136}, + {0x0137,0x0035,vcb_standard_0137}, + {0x0138,0x004e,vcb_standard_0138}, + {0x0139,0x036a,vcb_standard_0139}, + {0x013a,0x0085,vcb_standard_013a}, + {0x013b,0x004e,vcb_standard_013b}, + {0x013c,0x007c,vcb_standard_013c}, + {0x013d,0x0036,vcb_standard_013d}, + {0x013e,0x0039,vcb_standard_013e}, + {0x013f,0x0036,vcb_standard_013f}, + {0x0140,0x0039,vcb_standard_0140}, + {0x0141,0x00a7,vcb_standard_0141}, + {0x0142,0x0147,vcb_standard_0142}, + {0x0143,0x0035,vcb_standard_0143}, + {0x0144,0x0035,vcb_standard_0144}, + {0x0145,0x0111,vcb_standard_0145}, + {0x0146,0x007c,vcb_standard_0146}, + {0x0147,0x0035,vcb_standard_0147}, + {0x0148,0x007a,vcb_standard_0148}, + {0x0149,0x0024,vcb_standard_0149}, + {0x014a,0x0195,vcb_standard_014a}, + {0x014b,0x0035,vcb_standard_014b}, + {0x014c,0x0067,vcb_standard_014c}, + {0x014d,0x001f,vcb_standard_014d}, + {0x014e,0x00f6,vcb_standard_014e}, + {0x014f,0x00f6,vcb_standard_014f}, + {0x0150,0x007e,vcb_standard_0150}, + {0x0151,0x0005,vcb_standard_0151}, + {0x0152,0x000c,vcb_standard_0152}, + {0x0153,0x007c,vcb_standard_0153}, + {0x0154,0x0035,vcb_standard_0154}, + {0x0155,0x0067,vcb_standard_0155}, + {0x0156,0x004e,vcb_standard_0156}, + {0x0157,0x0035,vcb_standard_0157}, + {0x0158,0x0036,vcb_standard_0158}, + {0x0159,0x0097,vcb_standard_0159}, + {0x015a,0x004e,vcb_standard_015a}, + {0x015b,0x002c,vcb_standard_015b}, + {0x015c,0x0042,vcb_standard_015c}, + {0x015d,0x003b,vcb_standard_015d}, + {0x015e,0x0036,vcb_standard_015e}, + {0x015f,0x0035,vcb_standard_015f}, + {0x0160,0x00fa,vcb_standard_0160}, + {0x0161,0x00b1,vcb_standard_0161}, + {0x0162,0x002c,vcb_standard_0162}, + {0x0163,0x0024,vcb_standard_0163}, + {0x0164,0x0042,vcb_standard_0164}, + {0x0165,0x0035,vcb_standard_0165}, + {0x0166,0x001f,vcb_standard_0166}, + {0x0167,0x0036,vcb_standard_0167}, + {0x0168,0x001a,vcb_standard_0168}, + {0x0169,0x0007,vcb_standard_0169}, + {0x016a,0x003b,vcb_standard_016a}, + {0x016b,0x0084,vcb_standard_016b}, + {0x016c,0x003b,vcb_standard_016c}, + {0x016d,0x01cc,vcb_standard_016d}, + {0x016e,0x0111,vcb_standard_016e}, + {0x016f,0x00a7,vcb_standard_016f}, + {0x0170,0x00f6,vcb_standard_0170}, + {0x0171,0x0035,vcb_standard_0171}, + {0x0172,0x01de,vcb_standard_0172}, + {0x0173,0x0017,vcb_standard_0173}, + {0x0174,0x0017,vcb_standard_0174}, + {0x0175,0x0035,vcb_standard_0175}, + {0x0176,0x0042,vcb_standard_0176}, + {0x0177,0x00f6,vcb_standard_0177}, + {0x0178,0x036a,vcb_standard_0178}, + {0x0179,0x0024,vcb_standard_0179}, + {0x017a,0x01e0,vcb_standard_017a}, + {0x017b,0x0053,vcb_standard_017b}, + {0x017c,0x001a,vcb_standard_017c}, + {0x017d,0x0067,vcb_standard_017d}, + {0x017e,0x0042,vcb_standard_017e}, + {0x017f,0x0036,vcb_standard_017f}, + {0x0180,0x0067,vcb_standard_0180}, + {0x0181,0x006e,vcb_standard_0181}, + {0x0182,0x00f6,vcb_standard_0182}, + {0x0183,0x0035,vcb_standard_0183}, + {0x0184,0x01d7,vcb_standard_0184}, + {0x0185,0x01d7,vcb_standard_0185}, + {0x0186,0x0084,vcb_standard_0186}, + {0x0187,0x036a,vcb_standard_0187}, + {0x0188,0x00a7,vcb_standard_0188}, + {0x0189,0x0036,vcb_standard_0189}, + {0x018a,0x0069,vcb_standard_018a}, + {0x018b,0x0069,vcb_standard_018b}, + {0x018c,0x0035,vcb_standard_018c}, + {0x018d,0x00a7,vcb_standard_018d}, + {0x018e,0x0008,vcb_standard_018e}, + {0x018f,0x0195,vcb_standard_018f}, + {0x0190,0x0036,vcb_standard_0190}, + {0x0191,0x000c,vcb_standard_0191}, + {0x0192,0x0067,vcb_standard_0192}, + {0x0193,0x01db,vcb_standard_0193}, + {0x0194,0x002c,vcb_standard_0194}, + {0x0195,0x0042,vcb_standard_0195}, + {0x0196,0x0067,vcb_standard_0196}, + {0x0197,0x007c,vcb_standard_0197}, + {0x0198,0x01cb,vcb_standard_0198}, + {0x0199,0x00cb,vcb_standard_0199}, + {0x019a,0x0195,vcb_standard_019a}, + {0x019b,0x004e,vcb_standard_019b}, + {0x019c,0x00a7,vcb_standard_019c}, + {0x019d,0x007c,vcb_standard_019d}, + {0x019e,0x0007,vcb_standard_019e}, + {0x019f,0x004e,vcb_standard_019f}, + {0x01a0,0x0042,vcb_standard_01a0}, + {0x01a1,0x007c,vcb_standard_01a1}, + {0x01a2,0x0039,vcb_standard_01a2}, + {0x01a3,0x0035,vcb_standard_01a3}, + {0x01a4,0x0035,vcb_standard_01a4}, + {0x01a5,0x00a4,vcb_standard_01a5}, + {0x01a6,0x00a7,vcb_standard_01a6}, + {0x01a7,0x0017,vcb_standard_01a7}, + {0x01a8,0x0010,vcb_standard_01a8}, + {0x01a9,0x0035,vcb_standard_01a9}, + {0x01aa,0x0039,vcb_standard_01aa}, + {0x01ab,0x007d,vcb_standard_01ab}, + {0x01ac,0x0035,vcb_standard_01ac}, + {0x01ad,0x0147,vcb_standard_01ad}, + {0x01ae,0x0017,vcb_standard_01ae}, + {0x01af,0x0034,vcb_standard_01af}, + {0x01b0,0x00a0,vcb_standard_01b0}, + {0x01b1,0x004e,vcb_standard_01b1}, + {0x01b2,0x0067,vcb_standard_01b2}, + {0x01b3,0x0069,vcb_standard_01b3}, + {0x01b4,0x0069,vcb_standard_01b4}, + {0x01b5,0x0035,vcb_standard_01b5}, + {0x01b6,0x000e,vcb_standard_01b6}, + {0x01b7,0x01d3,vcb_standard_01b7}, + {0x01b8,0x0039,vcb_standard_01b8}, + {0x01b9,0x0147,vcb_standard_01b9}, + {0x01ba,0x007d,vcb_standard_01ba}, + {0x01bb,0x001a,vcb_standard_01bb}, + {0x01bc,0x0067,vcb_standard_01bc}, + {0x01bd,0x036a,vcb_standard_01bd}, + {0x01be,0x0042,vcb_standard_01be}, + {0x01bf,0x000c,vcb_standard_01bf}, + {0x01c0,0x0039,vcb_standard_01c0}, + {0x01c1,0x0147,vcb_standard_01c1}, + {0x01c2,0x0035,vcb_standard_01c2}, + {0x01c3,0x0035,vcb_standard_01c3}, + {0x01c4,0x00a0,vcb_standard_01c4}, + {0x01c5,0x007c,vcb_standard_01c5}, + {0x01c6,0x0036,vcb_standard_01c6}, + {0x01c7,0x00a0,vcb_standard_01c7}, + {0x01c8,0x0039,vcb_standard_01c8}, + {0x01c9,0x00a7,vcb_standard_01c9}, + {0x01ca,0x00a0,vcb_standard_01ca}, + {0x01cb,0x007c,vcb_standard_01cb}, + {0x01cc,0x0044,vcb_standard_01cc}, + {0x01cd,0x0014,vcb_standard_01cd}, + {0x01ce,0x0039,vcb_standard_01ce}, + {0x01cf,0x0017,vcb_standard_01cf}, + {0x01d0,0x036a,vcb_standard_01d0}, + {0x01d1,0x0091,vcb_standard_01d1}, + {0x01d2,0x001a,vcb_standard_01d2}, + {0x01d3,0x0035,vcb_standard_01d3}, + {0x01d4,0x0049,vcb_standard_01d4}, + {0x01d5,0x0035,vcb_standard_01d5}, + {0x01d6,0x001a,vcb_standard_01d6}, + {0x01d7,0x00a7,vcb_standard_01d7}, + {0x01d8,0x00a7,vcb_standard_01d8}, + {0x01d9,0x0069,vcb_standard_01d9}, + {0x01da,0x0027,vcb_standard_01da}, + {0x01db,0x036a,vcb_standard_01db}, + {0x01dc,0x002c,vcb_standard_01dc}, + {0x01dd,0x0036,vcb_standard_01dd}, + {0x01de,0x0024,vcb_standard_01de}, + {0x01df,0x0043,vcb_standard_01df}, + {0x01e0,0x002c,vcb_standard_01e0}, + {0x01e1,0x01d8,vcb_standard_01e1}, + {0x01e2,0x005d,vcb_standard_01e2}, + {0x01e3,0x0036,vcb_standard_01e3}, + {0x01e4,0x0042,vcb_standard_01e4}, + {0x01e5,0x0067,vcb_standard_01e5}, + {0x01e6,0x0067,vcb_standard_01e6}, + {0x01e7,0x00a7,vcb_standard_01e7}, + {0x01e8,0x0042,vcb_standard_01e8}, + {0x01e9,0x0069,vcb_standard_01e9}, + {0x01ea,0x00fa,vcb_standard_01ea}, + {0x01eb,0x006f,vcb_standard_01eb}, + {0x01ec,0x0035,vcb_standard_01ec}, + {0x01ed,0x00a0,vcb_standard_01ed}, + {0x01ee,0x0042,vcb_standard_01ee}, + {0x01ef,0x0035,vcb_standard_01ef}, + {0x01f0,0x000c,vcb_standard_01f0}, + {0x01f1,0x006f,vcb_standard_01f1}, + {0x01f2,0x0084,vcb_standard_01f2}, + {0x01f3,0x00fa,vcb_standard_01f3}, + {0x01f4,0x00f6,vcb_standard_01f4}, + {0x01f5,0x0024,vcb_standard_01f5}, + {0x01f6,0x0024,vcb_standard_01f6}, + {0x01f7,0x004e,vcb_standard_01f7}, + {0x01f8,0x0017,vcb_standard_01f8}, + {0x01f9,0x0035,vcb_standard_01f9}, + {0x01fa,0x0035,vcb_standard_01fa}, + {0x01fb,0x0035,vcb_standard_01fb}, + {0x01fc,0x0035,vcb_standard_01fc}, + {0x01fd,0x0085,vcb_standard_01fd}, + {0x01fe,0x0042,vcb_standard_01fe}, + {0x01ff,0x0035,vcb_standard_01ff}, + {0x0200,0x0030,vcb_standard_0200}, + {0x0201,0x001a,vcb_standard_0201}, + {0x0202,0x0042,vcb_standard_0202}, + {0x0203,0x0035,vcb_standard_0203}, + {0x0204,0x0067,vcb_standard_0204}, + {0x0205,0x007c,vcb_standard_0205}, + {0x0206,0x0035,vcb_standard_0206}, + {0x0207,0x0039,vcb_standard_0207}, + {0x0208,0x0042,vcb_standard_0208}, + {0x0209,0x001f,vcb_standard_0209}, + {0x020a,0x007d,vcb_standard_020a}, + {0x020b,0x01e0,vcb_standard_020b}, + {0x020c,0x01e0,vcb_standard_020c}, + {0x020d,0x0084,vcb_standard_020d}, + {0x020e,0x004e,vcb_standard_020e}, + {0x020f,0x0039,vcb_standard_020f}, + {0x0210,0x00a4,vcb_standard_0210}, + {0x0211,0x0014,vcb_standard_0211}, + {0x0212,0x002c,vcb_standard_0212}, + {0x0213,0x0053,vcb_standard_0213}, + {0x0214,0x0039,vcb_standard_0214}, + {0x0215,0x003b,vcb_standard_0215}, + {0x0216,0x0084,vcb_standard_0216}, + {0x0217,0x00a4,vcb_standard_0217}, + {0x0218,0x0035,vcb_standard_0218}, + {0x0219,0x007c,vcb_standard_0219}, + {0x021a,0x0027,vcb_standard_021a}, + {0x021b,0x0084,vcb_standard_021b}, + {0x021c,0x0031,vcb_standard_021c}, + {0x021d,0x0066,vcb_standard_021d}, + {0x021e,0x0039,vcb_standard_021e}, + {0x021f,0x004e,vcb_standard_021f}, + {0x0220,0x0039,vcb_standard_0220}, + {0x0221,0x006f,vcb_standard_0221}, + {0x0222,0x0039,vcb_standard_0222}, + {0x0223,0x0026,vcb_standard_0223}, + {0x0224,0x006c,vcb_standard_0224}, + {0x0225,0x001a,vcb_standard_0225}, + {0x0226,0x00a7,vcb_standard_0226}, + {0x0227,0x001f,vcb_standard_0227}, + {0x0228,0x0053,vcb_standard_0228}, + {0x0229,0x036a,vcb_standard_0229}, + {0x022a,0x004e,vcb_standard_022a}, + {0x022b,0x004e,vcb_standard_022b}, + {0x022c,0x0083,vcb_standard_022c}, + {0x022d,0x0069,vcb_standard_022d}, + {0x022e,0x0069,vcb_standard_022e}, + {0x022f,0x0069,vcb_standard_022f}, + {0x0230,0x004e,vcb_standard_0230}, + {0x0231,0x0067,vcb_standard_0231}, + {0x0232,0x0067,vcb_standard_0232}, + {0x0233,0x007c,vcb_standard_0233}, + {0x0234,0x000c,vcb_standard_0234}, + {0x0235,0x00a7,vcb_standard_0235}, + {0x0236,0x004e,vcb_standard_0236}, + {0x0237,0x0042,vcb_standard_0237}, + {0x0238,0x000f,vcb_standard_0238}, + {0x0239,0x007c,vcb_standard_0239}, + {0x023a,0x001a,vcb_standard_023a}, + {0x023b,0x006f,vcb_standard_023b}, + {0x023c,0x0035,vcb_standard_023c}, + {0x023d,0x0035,vcb_standard_023d}, + {0x023e,0x00a7,vcb_standard_023e}, + {0x023f,0x0035,vcb_standard_023f}, + {0x0240,0x036a,vcb_standard_0240}, + {0x0241,0x002c,vcb_standard_0241}, + {0x0242,0x0035,vcb_standard_0242}, + {0x0243,0x0034,vcb_standard_0243}, + {0x0244,0x0034,vcb_standard_0244}, + {0x0245,0x0035,vcb_standard_0245}, + {0x0246,0x0050,vcb_standard_0246}, + {0x0247,0x00a4,vcb_standard_0247}, + {0x0248,0x0084,vcb_standard_0248}, + {0x0249,0x0050,vcb_standard_0249}, + {0x024a,0x0042,vcb_standard_024a}, + {0x024b,0x00a4,vcb_standard_024b}, + {0x024c,0x00a7,vcb_standard_024c}, + {0x024d,0x0053,vcb_standard_024d}, + {0x024e,0x0039,vcb_standard_024e}, + {0x024f,0x0014,vcb_standard_024f}, + {0x0250,0x004e,vcb_standard_0250}, + {0x0251,0x000c,vcb_standard_0251}, + {0x0252,0x006f,vcb_standard_0252}, + {0x0253,0x0069,vcb_standard_0253}, + {0x0254,0x00a4,vcb_standard_0254}, + {0x0255,0x007c,vcb_standard_0255}, }; -static const uint8_t wvc_aotuv603_007b[] = { +static const uint8_t vcb_aotuv603_007b[] = { 0x42,0x06,0x28,0x72,0x52,0x4a,0x4a,0xad,0x16,0x0d,0x21,0xe5,0xa0,0xb4,0x1a,0x44,0x64,0x90,0x72,0x92,0x62,0x12,0x91,0x31,0x48,0x41,0x69,0xc1,0x53,0xc8,0x18,0xc4, 0x24,0xe5,0x8e,0x31,0x85,0x90,0x82,0x54,0x3b,0xe8,0x98,0x42,0x8a,0x51,0x0d,0x29,0x85,0x4c,0x29,0x05,0x35,0xd5,0x1c,0x43,0xc7,0x18,0xd4,0x98,0x93,0x70,0xa9,0x84, 0x52,0x03, }; -static const uint8_t wvc_aotuv603_007c[] = { +static const uint8_t vcb_aotuv603_007c[] = { 0x14,0x05,0x20,0x20,0x22,0x33,0x32,0x23,0x33,0x43,0x34,0x44,0x32,0x33,0xc4,0x43,0x24,0xb3,0x43,0x34,0x44,0x43,0xc4,0x54,0xcc,0x34,0x44,0x4c,0xc4,0x54,0x3a,0x33, 0xc4,0x43,0x34,0x44,0xd4,0x44,0x4c,0x43,0xc4,0x4c,0xd4,0x0c,0x00,0x00,0x01,0x0e,0x00,0x00,0x01,0x16,0x42, }; -static const uint8_t wvc_aotuv603_007d[] = { +static const uint8_t vcb_aotuv603_007d[] = { 0x14,0x27,0x28,0x41,0xc8,0x39,0xc4,0x18,0x84,0x88,0x31,0x08,0xa1,0x84,0x94,0x42,0x08,0x29,0x45,0x8c,0x41,0xc8,0x9c,0x93,0x92,0x39,0x27,0xa5,0x94,0xd2,0x5a,0x28, 0x25,0xb5,0x88,0x31,0x08,0x99,0x73,0x52,0x32,0xe7,0xa4,0x84,0x52,0x5a,0x2a,0xa5,0xb4,0x16,0x4a,0x69,0xad,0x94,0xd2,0x5a,0x28,0xa5,0xb5,0xd6,0x5a,0xad,0xa9,0xb5, 0x58,0x43,0x29,0xad,0x85,0x52,0x5a,0x2b,0xa5,0xb4,0x96,0x5a,0xab,0xb1,0xb5,0x56,0x63,0xc4,0x18,0x84,0xcc,0x39,0x29,0x99,0x73,0x52,0x4a,0x29,0xad,0x95,0x52,0x5a, @@ -4405,11 +4399,11 @@ static const uint8_t wvc_aotuv603_007d[] = { 0xb1,0xa4,0x14,0x63,0x8b,0xb1,0xd6,0x18,0x63,0xce,0xa9,0xb5,0x1a,0x5b,0x8c,0xb9,0xa6,0xd6,0x6a,0xad,0xb5,0xf6,0x1c,0x63,0x8d,0x3d,0xb5,0x56,0x6b,0x8b,0xb1,0xe6, 0x16,0x5b,0xad,0xb5,0xd6,0xde,0x6b,0x8e,0xbd,0x16,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_aotuv603_007e[] = { +static const uint8_t vcb_aotuv603_007e[] = { 0x12,0x05,0xa0,0x98,0xa9,0x32,0x43,0x1c,0xa2,0xaa,0x33,0xc4,0x21,0xaa,0xb2,0x43,0xac,0x2a,0xb3,0xbb,0xcc,0xaa,0x32,0xbb,0xcb,0xb4,0xb3,0x3b,0x44,0x4d,0xb3,0xbb, 0x43,0x4c,0x45,0xc4,0x4c,0x4d,0x55,0x44,0xcc,0x4c,0x55,0x0d,0x00,0x00,0x05,0x0e,0x00,0x00,0x01,0x36,0x68,0x4a,0x2c,0x0e,0x10, }; -static const uint8_t wvc_aotuv603_007f[] = { +static const uint8_t vcb_aotuv603_007f[] = { 0x12,0x12,0xa0,0x20,0xaa,0x32,0xbb,0x43,0xcc,0x54,0x55,0x25,0x22,0xab,0x33,0x44,0xc4,0x4c,0xd5,0x5d,0x22,0xaa,0xb2,0x3b,0x44,0xcc,0x54,0xdd,0x2d,0x2b,0xb3,0x3b, 0x44,0xc4,0x4c,0xd5,0xdd,0x2a,0x33,0xbb,0x43,0x44,0xcc,0x54,0xdd,0xb5,0xbb,0x3b,0x44,0xc4,0x4c,0x55,0xd5,0x5d,0xb3,0xbb,0x43,0x44,0xcc,0x54,0x55,0xdd,0x3d,0x44, 0x44,0xc4,0xcc,0x4c,0xd5,0xdd,0xdd,0x43,0x44,0x44,0xcc,0xcc,0x54,0xdd,0xdd,0x45,0x44,0xc4,0xcc,0xcc,0x54,0xd5,0x5d,0x66,0x44,0x44,0xcc,0xcc,0xd4,0x54,0xdd,0x65, @@ -4417,36 +4411,36 @@ static const uint8_t wvc_aotuv603_007f[] = { 0x65,0x66,0xd6,0xdd,0xdd,0xdd,0x5d,0x66,0x66,0xe6,0x6e,0xdd,0xdd,0xdd,0x5d,0x66,0x66,0x66,0xee,0x0e,0x00,0x00,0x07,0x0e,0x00,0x00,0x01,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_aotuv603_0080[] = { +static const uint8_t vcb_aotuv603_0080[] = { 0x14,0x05,0x20,0x98,0x21,0x33,0x32,0xa3,0x3b,0x43,0x34,0x4c,0xba,0xb3,0x44,0x4b,0xa4,0xbb,0xd3,0xbc,0x4c,0xcb,0x44,0xdc,0xdc,0xb5,0x4c,0xdc,0x4c,0x5d,0xba,0xbb, 0xcc,0x53,0x35,0xcd,0x5c,0xc5,0x5c,0x4b,0xcd,0x5d,0x5c,0x0c,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_aotuv603_0081[] = { +static const uint8_t vcb_aotuv603_0081[] = { 0x92,0x07,0xa0,0x20,0xaa,0x32,0xbb,0xbb,0xa3,0x2a,0x33,0xb3,0xbb,0x3b,0xaa,0x2a,0x33,0xbb,0xbb,0x2b,0x33,0xb3,0xbb,0xbb,0xbb,0x32,0x33,0xbb,0xbb,0xbb,0x33,0xb3, 0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x3b,0xc4,0xbb,0xbb,0xbb,0xbb,0x43,0xbc,0xbb,0xbb,0x3b,0x44,0xc4,0xbb,0xbb,0xbb,0x43,0x44,0x0c, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_aotuv603_0082[] = { +static const uint8_t vcb_aotuv603_0082[] = { 0x92,0x0a,0x20,0xa0,0x31,0xbb,0xbb,0xcb,0x54,0x9d,0x2a,0x33,0x44,0xc4,0x4c,0xd5,0xa9,0x32,0x43,0x44,0xcc,0x54,0xb5,0x3b,0x44,0xc4,0x4c,0xd5,0x5d,0x33,0xc3,0x4b, 0xcc,0x54,0xdd,0x3d,0x44,0xcc,0x4c,0xd5,0x5d,0xe6,0x43,0x4c,0xcc,0x54,0xdd,0x65,0x3e,0xc4,0x4c,0x55,0xd5,0x5d,0xe6,0x43,0xcc,0x54,0x5d,0xdd,0x65,0xce,0x4c,0xd5, 0xdd,0x5d,0xe6,0xee,0xcc,0x54,0xdd,0xdd,0x65,0xee,0x56,0xd5,0x5d,0x66,0xe6,0xee,0x6e,0x55,0xdd,0x65,0x66,0xee,0xee,0x0e,0x00,0xe0,0x09,0x0e,0x00,0x40,0x05,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_aotuv603_0083[] = { +static const uint8_t vcb_aotuv603_0083[] = { 0x92,0x01,0x0c,0x01,0x00,0x1c,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_aotuv603_0084[] = { +static const uint8_t vcb_aotuv603_0084[] = { 0x92,0x0a,0x20,0x98,0x31,0xbb,0xbb,0x43,0xcc,0x9c,0xaa,0x3b,0x44,0xc4,0x4c,0xcd,0xa9,0xba,0x43,0x44,0xcc,0x54,0xb5,0xbb,0xc4,0xcc,0x4c,0xd5,0x5d,0xbb,0xcb,0xcc, 0xcc,0x54,0xdd,0x3d,0xc4,0x4c,0x55,0xd5,0x5d,0xe6,0x43,0xcc,0x54,0x55,0xdd,0x65,0x3e,0x44,0x4d,0xd5,0x5d,0xe6,0xe6,0x43,0xcc,0x54,0xdd,0x65,0x66,0xc6,0x4c,0xd5, 0x5d,0x66,0xe6,0x6e,0xcc,0x54,0xdd,0x65,0x66,0xee,0x4e,0xd5,0x5d,0xe6,0xe6,0x6e,0xef,0x54,0xdd,0x65,0x6e,0xee,0xf6,0x0e,0x00,0x08,0x0d,0x0e,0x00,0x60,0x07,0x36, 0xac,0x8e,0x70,0x52,0x34,0x16,0x18, }; -static const uint8_t wvc_aotuv603_0085[] = { +static const uint8_t vcb_aotuv603_0085[] = { 0x92,0x07,0xa0,0x20,0x32,0x33,0x33,0xbb,0xa3,0x2a,0x33,0xb3,0xbb,0x3b,0xaa,0x32,0x33,0xbb,0xbb,0x33,0x33,0xb3,0xbb,0xbb,0x3b,0x33,0x33,0xbb,0xbb,0xbb,0x33,0xb3, 0xbb,0xbb,0xbb,0x3b,0x33,0xbb,0xbb,0xbb,0xbb,0xb3,0xbb,0xbb,0xbb,0xbb,0x3b,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_aotuv603_0086[] = { +static const uint8_t vcb_aotuv603_0086[] = { 0x12,0x0e,0x28,0x30,0x86,0x31,0xe7,0x18,0x83,0x4e,0x42,0x4a,0x0d,0x53,0xd0,0x41,0x08,0xa1,0x84,0x14,0x5a,0x68,0x14,0x73,0x0e,0x42,0x08,0xa5,0x94,0x94,0x5a,0x06, 0x9d,0x94,0x94,0x4a,0x49,0xa9,0xb5,0xd8,0x32,0xe7,0xa4,0x94,0x54,0x4a,0x4a,0xa9,0xb5,0xd8,0x41,0x48,0x29,0xa5,0x94,0x5a,0x8b,0x31,0xc6,0x0e,0x42,0x4a,0x29,0xa5, 0xd4,0x5a,0x8c,0xb1,0x76,0x10,0x4a,0x49,0xa9,0xa5,0x18,0x6b,0xac,0xb5,0x83,0x50,0x4a,0x4a,0xad,0xb5,0x16,0x63,0xad,0xa1,0x94,0x94,0x5a,0x8b,0x2d,0xc6,0x5a,0x73, @@ -4454,7 +4448,7 @@ static const uint8_t wvc_aotuv603_0086[] = { 0xc6,0x5a,0x73,0xcd,0xb9,0xf7,0xd4,0x5a,0x8c,0x31,0xd6,0x5a,0x73,0xce,0xbd,0x17,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_aotuv603_0087[] = { +static const uint8_t vcb_aotuv603_0087[] = { 0x92,0x1b,0x20,0x21,0x32,0xbb,0xbb,0x43,0x44,0x44,0x44,0x44,0x44,0xa4,0x2a,0xb3,0x3b,0x44,0x44,0x44,0x44,0xc4,0xcc,0x4c,0xaa,0x32,0xbb,0x43,0x44,0x44,0x44,0x44, 0x44,0x44,0x34,0xb3,0x3b,0x3c,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0x4c,0x33,0xbb,0x43,0x44,0x44,0x44,0x4c,0xcc,0x4c,0x4c,0xbc,0x3b,0x3c,0x44,0xc4,0xc4,0xcc,0xcc,0xcc, 0xcc,0xcc,0xbb,0x3b,0x44,0x44,0x44,0xcc,0xcc,0xcc,0xcc,0xcc,0x3c,0x44,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x43,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -4464,14 +4458,14 @@ static const uint8_t wvc_aotuv603_0087[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_aotuv603_0088[] = { +static const uint8_t vcb_aotuv603_0088[] = { 0x12,0x0e,0x20,0x20,0xc1,0x43,0x44,0x44,0x44,0x44,0x24,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0xb2,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x50,0x97,0x19,0x0e,0x80,0xd1,0x13,0x36,0xce,0xb0,0x92,0x74, 0x56,0x38,0x1a,0x1c, }; -static const uint8_t wvc_aotuv603_0089[] = { +static const uint8_t vcb_aotuv603_0089[] = { 0x92,0x16,0x28,0x30,0x86,0x31,0xc6,0x98,0x82,0x4c,0x3a,0x6b,0x31,0xd6,0xda,0x30,0x06,0x21,0x74,0xd0,0x49,0x48,0xa1,0x86,0x5a,0x62,0x6a,0x18,0x83,0x10,0x42,0x07, 0xa5,0xa4,0xd4,0x62,0x8b,0x35,0x67,0x10,0x4a,0x2a,0xa5,0x94,0xd4,0x62,0x8c,0x35,0xd8,0xdc,0x33,0x08,0xa5,0x94,0x52,0x4a,0x6a,0x31,0xd6,0x9a,0x73,0x31,0x1e,0x84, 0x54,0x52,0x4a,0x2d,0xb6,0x5a,0x7b,0xce,0xc1,0xe8,0x0e,0x42,0x29,0x29,0xa5,0x14,0x63,0xad,0x39,0xe7,0xde,0x8b,0x06,0x9d,0x94,0x94,0x5a,0xab,0x35,0xe7,0xde,0x73, @@ -4481,22 +4475,22 @@ static const uint8_t wvc_aotuv603_0089[] = { 0xc2,0xd6,0x9a,0x7b,0xf0,0xc5,0x18,0x61,0x84,0x31,0xc6,0xf7,0x5e,0x83,0x0f,0xba,0x17,0x23,0x8c,0x30,0xc2,0x18,0x23,0x8c,0xd0,0x3d,0x17,0x5d,0x84,0x2f,0xc6,0x18, 0x63,0x84,0xf1,0x45,0x18,0x00,0x72,0x23,0x1c,0x00,0x10,0x17,0x8c,0x24,0xa4,0xce,0x32,0xac,0x34,0xe2,0xc6,0x13,0x30,0x44,0x20,0x01, }; -static const uint8_t wvc_aotuv603_008a[] = { +static const uint8_t vcb_aotuv603_008a[] = { 0x11,0x03,0xa0,0x90,0x99,0x21,0x2a,0xaa,0xaa,0xaa,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xb3,0x3b,0xbb,0xbb,0xbb,0x0b,0x00,0x80,0x09,0x0e, 0x00,0x00,0x01,0x56,0xb0,0x2b,0xb3,0xb4,0x6a,0xa3,0xb8,0xa9,0x93,0xbc,0xe8,0x83,0xc0,0x27,0x74,0xc4,0x66,0x64,0xc8,0xa5,0x54,0xcc,0xe4,0x44,0xd0,0x23,0x35,0xd4, 0x62,0x25,0xd8,0xa1,0x15,0xdc,0xe0,0x05,0x60, }; -static const uint8_t wvc_aotuv603_008b[] = { +static const uint8_t vcb_aotuv603_008b[] = { 0x42,0x06,0xa8,0xa3,0x18,0x73,0x4f,0x4a,0x29,0xd5,0x39,0x08,0x29,0xe6,0xe4,0x6c,0xc7,0x98,0x83,0x16,0x73,0xd3,0xa1,0x42,0x88,0x49,0xab,0xc5,0x86,0x0c,0x11,0xc3, 0xa4,0xf5,0x58,0x3a,0x45,0x08,0x72,0x54,0x53,0x09,0x19,0x32,0x46,0x51,0x2d,0xa5,0x74,0x0a,0x21,0x25,0xb5,0x94,0x12,0x3a,0xc6,0x98,0xd4,0xd4,0x5a,0x4b,0xa5,0x94, 0xd6,0x03, }; -static const uint8_t wvc_aotuv603_0157[] = { +static const uint8_t vcb_aotuv603_0157[] = { 0x42,0x06,0xa8,0x61,0x10,0x42,0x07,0x25,0xf6,0xc8,0x20,0xc5,0x98,0x83,0xd6,0x2b,0x84,0x10,0x63,0x50,0x5a,0xce,0x14,0x32,0x48,0x39,0x28,0xb1,0x63,0x0c,0x21,0xc4, 0xa0,0xb4,0x8c,0x31,0x85,0x90,0x62,0xd2,0x3a,0xe7,0x18,0x43,0x48,0x41,0xea,0x20,0x74,0x4e,0x29,0xe4,0xa8,0xa4,0xd6,0x52,0x08,0x1d,0xb4,0x58,0x73,0xae,0xad,0xa5, 0x14,0x03, }; -static const uint8_t wvc_aotuv603_0159[] = { +static const uint8_t vcb_aotuv603_0159[] = { 0x14,0x27,0xe0,0x71,0x4e,0x6b,0x78,0x0f,0xef,0xe1,0x3d,0xbc,0x77,0xce,0x79,0x0d,0xef,0xe1,0x3d,0xc4,0x88,0x18,0xcf,0x39,0xed,0xe1,0x3d,0xbc,0x87,0x18,0x11,0x63, 0x7b,0x6f,0x46,0xdc,0x8a,0x7a,0xb1,0x33,0xf6,0x6e,0xef,0xc5,0x89,0x7a,0x51,0x2b,0xf6,0xc6,0xde,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xef,0xd5,0x8a, 0x5b,0x71,0x2f,0xf2,0x45,0xce,0xef,0xbd,0x5a,0x51,0x2b,0xee,0x45,0xce,0xc8,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0xbe,0x5b,0x71,0x2f,0x6e,0x45, @@ -4504,42 +4498,42 @@ static const uint8_t wvc_aotuv603_0159[] = { 0x18,0xf7,0x46,0xce,0xc8,0x19,0x37,0x23,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xbc,0x18,0xf7,0x46,0xce,0xc8,0x19,0x39,0x23,0xdf,0x17,0xe3,0xde,0xc8, 0x19,0x39,0x23,0x67,0xdc,0x1b,0x00,0x00,0x06,0x1c,0x00,0x00,0x02,0x4c,0x28,0x03,0x01, }; -static const uint8_t wvc_aotuv603_015a[] = { +static const uint8_t vcb_aotuv603_015a[] = { 0x12,0x05,0xe0,0x50,0x4a,0x4a,0xad,0xbd,0x87,0xb5,0xde,0x8b,0x11,0x6b,0xbd,0x17,0x23,0x5a,0x7b,0x71,0x4e,0xb4,0x16,0xe3,0x9c,0x78,0x2f,0xc6,0x5a,0xd1,0x5a,0x8c, 0xb5,0x02,0x00,0x10,0x00,0x00,0x0a,0x1c,0x00,0x00,0x02,0x6c,0xd0,0x94,0x58,0x1c,0x20, }; -static const uint8_t wvc_aotuv603_015b[] = { +static const uint8_t vcb_aotuv603_015b[] = { 0x12,0x12,0xe0,0x51,0x4a,0x4a,0x6b,0xad,0xd5,0xda,0x7b,0xef,0xc5,0x88,0xb5,0x5a,0x7b,0xef,0xbd,0x18,0xe7,0xac,0x13,0x6b,0xb5,0xf6,0xde,0x7b,0x31,0xce,0x39,0x27, 0xd6,0x7a,0x2f,0xc6,0x18,0xe7,0xac,0xb5,0x56,0xb4,0xf5,0x5e,0x8c,0x31,0xce,0x59,0x6b,0xad,0x68,0xed,0xbd,0x18,0xe7,0xac,0xb5,0xd6,0x7b,0xd1,0xda,0x7b,0x31,0xce, 0x59,0x6b,0xad,0xf7,0xa2,0xbd,0xf7,0x62,0x9c,0xb3,0xd6,0x7b,0x73,0x06,0xef,0xc5,0x38,0x67,0xad,0xf7,0xe6,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0e,0x1c,0x00,0x00,0x02,0x8c,0xa0,0x93,0x8c,0x2a,0x8b,0xb0,0xd1,0x84,0x0b,0x0f,0x40, }; -static const uint8_t wvc_aotuv603_015c[] = { +static const uint8_t vcb_aotuv603_015c[] = { 0x14,0x05,0x20,0x98,0x21,0xb3,0x32,0x9b,0xaa,0xd4,0xcc,0xd4,0xa9,0xca,0xd4,0xd4,0xa4,0x4c,0x5c,0xcd,0x5d,0xcb,0xdc,0xdd,0x65,0x36,0x4d,0xdd,0x5d,0xe6,0xd2,0xcc, 0x5d,0xdd,0x35,0xcd,0x65,0xde,0x5d,0x4b,0x5d,0xe6,0xdd,0x0d,0x00,0x60,0x07,0x0e,0x00,0x60,0x07,0x16,0x42, }; -static const uint8_t wvc_aotuv603_015d[] = { +static const uint8_t vcb_aotuv603_015d[] = { 0x92,0x07,0xa0,0x10,0xa9,0xaa,0x32,0x33,0xd3,0xcc,0x2a,0xb3,0xbb,0xbb,0xcc,0xac,0x32,0xbb,0xbb,0x53,0x55,0xb3,0xbb,0x3b,0x44,0x55,0x2d,0xbb,0xbb,0x43,0x54,0x55, 0xb3,0xbb,0xbb,0x3b,0x55,0x35,0xbb,0xbb,0x43,0x54,0xd5,0xbb,0xbb,0xbb,0x3b,0x55,0x55,0xbd,0xbb,0xbb,0x5b,0x55,0xd5,0xbb,0xbb,0xbb,0x55,0x55,0x35,0xbb,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_aotuv603_015e[] = { +static const uint8_t vcb_aotuv603_015e[] = { 0x92,0x0a,0xe0,0x70,0xce,0x5a,0xaf,0xbd,0x17,0xe3,0x9c,0x29,0xa5,0xd6,0x62,0x8c,0xb1,0xd6,0x7b,0x57,0x4a,0xad,0xc5,0x38,0x63,0xad,0xf7,0x6a,0xad,0xb5,0x18,0xe7, 0xac,0xf5,0x5e,0xad,0xb5,0x16,0xe3,0x9c,0xb5,0xde,0xab,0xd6,0xf7,0xe6,0xac,0xf5,0xde,0x9c,0xdd,0x1b,0xe3,0x9c,0xb5,0xde,0x9b,0x33,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0xc0,0x13,0x1c,0x00,0x80,0x0a,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_aotuv603_0160[] = { +static const uint8_t vcb_aotuv603_0160[] = { 0x92,0x0a,0x28,0x30,0x86,0x31,0xe7,0x9c,0x93,0x50,0x4a,0x84,0x10,0x63,0x10,0x4a,0x49,0xa5,0xa5,0x0a,0x21,0xc6,0x20,0x94,0x92,0x52,0x6b,0x4d,0x63,0x8c,0x41,0x28, 0x25,0xa5,0xd6,0x9a,0xc6,0x18,0x83,0x90,0x4a,0x4b,0xad,0x35,0x95,0x3a,0x27,0x25,0xa5,0xd6,0x62,0x6c,0xae,0x75,0x0e,0x42,0x4a,0xad,0xc5,0xd8,0x9c,0x34,0xa5,0x94, 0x94,0x5a,0x8b,0x31,0x4a,0x69,0x4a,0x29,0x29,0xb5,0x16,0x63,0x94,0xd2,0xd6,0x94,0x5a,0x8b,0x31,0xd6,0x28,0xa5,0xcf,0x29,0xb5,0x14,0x63,0xad,0x51,0x4a,0x29,0x65, 0x6c,0x2d,0xc6,0x5a,0xa3,0x94,0x52,0xca,0xd8,0x5a,0x8c,0xb5,0x16,0x00,0x10,0x1a,0x1c,0x00,0xc0,0x0e,0x6c,0x58,0x1d,0xe1,0xa4,0x68,0x2c,0x30, }; -static const uint8_t wvc_aotuv603_0161[] = { +static const uint8_t vcb_aotuv603_0161[] = { 0x92,0x07,0xa0,0x98,0xa9,0x32,0x33,0x33,0x43,0xc4,0x32,0x33,0xb3,0x3b,0x44,0xac,0x32,0x33,0xbb,0x43,0x44,0x33,0xb3,0xbb,0x3b,0x44,0x34,0x33,0xbb,0xbb,0x43,0x44, 0x33,0xb3,0xbb,0x3b,0x44,0x34,0x33,0x33,0xbb,0x43,0x44,0xb3,0x3b,0xb3,0x3b,0x44,0x44,0xbc,0x33,0xbb,0x43,0x44,0xc4,0x3b,0xb3,0x3b,0x44,0x44,0x34,0x33,0xbb,0x0b, 0x00,0x40,0x05,0x0e,0x00,0x00,0x01,0x36,0x8a,0x6c,0x4e,0x30,0x12,0x14, }; -static const uint8_t wvc_aotuv603_0162[] = { +static const uint8_t vcb_aotuv603_0162[] = { 0x12,0x0e,0x28,0x30,0x46,0x29,0xc6,0x18,0x73,0x0e,0x42,0x29,0x95,0x52,0xce,0x41,0xe8,0x1c,0x84,0x52,0x52,0xaa,0x10,0x72,0x0c,0x42,0xe7,0x20,0x94,0x92,0x52,0xf3, 0x9c,0x73,0x10,0x42,0x28,0x25,0x95,0x96,0x9a,0xe7,0x9c,0x83,0x10,0x42,0x29,0x29,0xb5,0xd6,0x5c,0x0b,0xa1,0x94,0x52,0x52,0x6a,0x2d,0xb6,0x26,0x63,0x08,0xa5,0x94, 0x92,0x52,0x6b,0x31,0x36,0xe7,0x44,0x08,0xa1,0x94,0x94,0x5a,0x8b,0xad,0x39,0x27,0x42,0xe8,0xa4,0xb4,0xd4,0x5a,0x8c,0xcd,0x39,0x19,0x4b,0x49,0xa9,0xb5,0x18,0x63, @@ -4547,7 +4541,7 @@ static const uint8_t wvc_aotuv603_0162[] = { 0xd6,0xd4,0x62,0x8c,0xb1,0xd6,0x28,0xa5,0x94,0x3a,0xb7,0x14,0x5b,0x8d,0xb9,0x16,0x00,0x4c,0x1e,0x1c,0x00,0xa0,0x12,0x6c,0x9c,0x61,0x25,0xe9,0xac,0x70,0x34,0x38, }; -static const uint8_t wvc_aotuv603_0163[] = { +static const uint8_t vcb_aotuv603_0163[] = { 0x92,0x1b,0xa0,0x98,0xa9,0x32,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x53,0x55,0xb3,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0xc4,0xd4,0x34,0xbb,0xbb,0x43,0x44,0x44,0x44, 0x44,0x44,0x54,0xd5,0xbb,0x3b,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x55,0xbd,0xbb,0x43,0x44,0x44,0x44,0x4c,0xcc,0xcc,0x54,0xd5,0x3b,0x44,0x44,0x44,0xc4,0xcc,0xcc, 0xcc,0x4c,0x55,0xbd,0x43,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0x54,0x55,0x44,0x44,0x44,0xc4,0xcc,0xcc,0xcc,0xcc,0x4c,0x55,0x55,0x45,0x44,0x44,0xcc,0xcc,0xcc,0xcc, @@ -4557,7 +4551,7 @@ static const uint8_t wvc_aotuv603_0163[] = { 0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0x54,0x55,0x55,0x55,0xd5,0xcc,0xcc,0xcc,0xcc,0xcc,0x4c,0x55,0x55,0x55,0x55,0x55,0xcd,0xcc,0xcc,0xcc,0xcc,0x0c, 0x00,0x40,0x07,0x0e,0x00,0x00,0x01,0x46,0x54,0x5a,0x88,0x9d,0x66,0x5c,0x79,0x04,0x8e,0x28,0x64,0x98,0x80,0x02, }; -static const uint8_t wvc_aotuv603_0164[] = { +static const uint8_t vcb_aotuv603_0164[] = { 0x12,0x12,0x20,0x18,0xc9,0xcb,0xcc,0xcc,0xcc,0xcc,0xcc,0xac,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x4a,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc, @@ -4565,7 +4559,7 @@ static const uint8_t wvc_aotuv603_0164[] = { 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x80,0xd1,0x19,0x0e,0x80,0xd1,0x13,0x46,0xd0,0x49,0x46,0x95, 0x45,0xd8,0x68,0xc2,0x85,0x07,0x20, }; -static const uint8_t wvc_aotuv603_0165[] = { +static const uint8_t vcb_aotuv603_0165[] = { 0x92,0x16,0x28,0x30,0x86,0x31,0xc6,0x18,0x73,0x4e,0x42,0x2a,0x31,0xd5,0x58,0x29,0xe5,0x9c,0x73,0x8e,0x41,0x47,0x21,0xa6,0xda,0x6a,0x8c,0x94,0x72,0xce,0x39,0xe7, 0x20,0xa4,0x14,0x53,0x8d,0x39,0x07,0xcf,0x39,0x07,0x21,0x74,0x14,0x5a,0x89,0xa9,0xb6,0x1a,0x83,0xe7,0x9c,0x83,0x10,0x42,0x29,0x29,0xc5,0x18,0x6b,0xcf,0xc1,0xb5, 0xce,0x41,0x28,0x25,0xa5,0x96,0x62,0x8b,0xad,0xc6,0xde,0x5a,0xe7,0x20,0x94,0x92,0x52,0x6b,0x31,0xd6,0x9a,0x73,0x10,0x42,0x84,0x10,0x52,0x6a,0xad,0xc5,0x18,0x7b, @@ -4575,614 +4569,617 @@ static const uint8_t wvc_aotuv603_0165[] = { 0x42,0x08,0x21,0x84,0x10,0x32,0xc4,0x96,0x63,0xef,0x41,0x08,0x21,0x84,0x10,0x42,0x08,0x1d,0x6c,0xcd,0xbd,0x07,0x1f,0x7c,0x10,0x42,0x08,0x21,0x84,0x10,0x36,0xe6, 0xde,0x83,0x0f,0x42,0x18,0x00,0x72,0x23,0x1c,0x00,0x10,0x17,0x8c,0x24,0xa4,0xce,0x32,0xac,0x34,0xe2,0xc6,0x13,0x30,0x44,0x20,0x01, }; -static const uint8_t wvc_aotuv603_0166[] = { +static const uint8_t vcb_aotuv603_0166[] = { 0x11,0x03,0x0c,0x01,0x40,0x10,0x08,0x18,0x00,0x00,0x13,0x1c,0x00,0x00,0x02,0xac,0x60,0x57,0x66,0x69,0xd5,0x46,0x71,0x53,0x27,0x79,0xd1,0x07,0x81,0x4f,0xe8,0x88, 0xcd,0xc8,0x90,0x4b,0xa9,0x98,0xc9,0x89,0xa0,0x47,0x6a,0xa8,0xc5,0x4a,0xb0,0x43,0x2b,0xb8,0xc1,0x0b,0xc0,0x00, }; -static const uint8_t wvc_aotuv603_0167[] = { +static const uint8_t vcb_aotuv603_0167[] = { 0x42,0x06,0x28,0x93,0x96,0x5a,0xcc,0xbd,0xe8,0xd2,0x39,0x07,0xa5,0xc5,0x1a,0x4c,0xc6,0x18,0x73,0xd2,0x72,0x31,0x19,0x43,0x48,0x39,0x89,0xb9,0x64,0x0a,0x19,0xa3, 0xa0,0xe5,0x94,0x31,0x64,0x88,0x61,0x14,0x5b,0xe8,0x18,0x32,0x06,0x49,0x4c,0x29,0x85,0x0c,0x21,0x04,0x2d,0xb6,0xd8,0x4a,0xe7,0x18,0xc4,0x5a,0x6b,0x8d,0x29,0x95, 0x12,0x03, }; -static const wvc_info wvc_list_aotuv603[] = { - {0x0000,0x0008,wvc_standard_00c2}, - {0x0001,0x000d,wvc_standard_00a6}, - {0x0002,0x001f,wvc_standard_010e}, - {0x0003,0x0008,wvc_standard_018e}, - {0x0004,0x000f,wvc_standard_0238}, - {0x0005,0x001f,wvc_standard_014d}, - {0x0006,0x0024,wvc_standard_0087}, - {0x0007,0x0084,wvc_standard_0043}, - {0x0008,0x0054,wvc_standard_0044}, - {0x0009,0x0014,wvc_standard_024f}, - {0x000a,0x0050,wvc_standard_0018}, - {0x000b,0x000c,wvc_standard_0251}, - {0x000c,0x001a,wvc_standard_0225}, - {0x000d,0x003b,wvc_standard_016a}, - {0x000e,0x000c,wvc_standard_01bf}, - {0x000f,0x001a,wvc_standard_0201}, - {0x0010,0x003b,wvc_standard_015d}, - {0x0011,0x0007,wvc_standard_00e5}, - {0x0012,0x002c,wvc_standard_01e0}, - {0x0013,0x002c,wvc_standard_0025}, - {0x0014,0x00a4,wvc_standard_0254}, - {0x0015,0x0004,wvc_standard_00a0}, - {0x0016,0x0006,wvc_standard_0007}, - {0x0017,0x000c,wvc_standard_0152}, - {0x0018,0x0024,wvc_standard_00b3}, - {0x0019,0x0084,wvc_standard_020d}, - {0x001a,0x0004,wvc_standard_00a0}, - {0x001b,0x0006,wvc_standard_0040}, - {0x001c,0x000c,wvc_standard_009e}, - {0x001d,0x001f,wvc_standard_0166}, - {0x001e,0x002c,wvc_standard_0051}, - {0x001f,0x00a4,wvc_standard_003b}, - {0x0020,0x0007,wvc_standard_0169}, - {0x0021,0x000d,wvc_standard_0061}, - {0x0022,0x001f,wvc_standard_0227}, - {0x0023,0x0008,wvc_standard_0068}, - {0x0024,0x000f,wvc_standard_004f}, - {0x0025,0x001f,wvc_standard_0209}, - {0x0026,0x0007,wvc_standard_019e}, - {0x0027,0x002c,wvc_standard_0125}, - {0x0028,0x002c,wvc_standard_00f7}, - {0x0029,0x0054,wvc_standard_0059}, - {0x002a,0x0014,wvc_standard_0211}, - {0x002b,0x0044,wvc_standard_012b}, - {0x002c,0x000c,wvc_standard_00fc}, - {0x002d,0x001a,wvc_standard_01d6}, - {0x002e,0x003b,wvc_standard_016c}, - {0x002f,0x000c,wvc_standard_0191}, - {0x0030,0x001a,wvc_standard_004e}, - {0x0031,0x003b,wvc_standard_0215}, - {0x0032,0x0007,wvc_standard_00bb}, - {0x0033,0x002c,wvc_standard_0194}, - {0x0034,0x002c,wvc_standard_002f}, - {0x0035,0x0054,wvc_standard_00ca}, - {0x0036,0x0014,wvc_standard_00ae}, - {0x0037,0x0050,wvc_standard_0249}, - {0x0038,0x000e,wvc_standard_01b6}, - {0x0039,0x001a,wvc_standard_0028}, - {0x003a,0x0031,wvc_standard_008f}, - {0x003b,0x000c,wvc_standard_00c0}, - {0x003c,0x001a,wvc_standard_023a}, - {0x003d,0x003b,wvc_standard_000e}, - {0x003e,0x000c,wvc_standard_0052}, - {0x003f,0x0007,wvc_standard_011c}, - {0x0040,0x00a4,wvc_standard_0210}, - {0x0041,0x002c,wvc_standard_0162}, - {0x0042,0x0054,wvc_standard_00c5}, - {0x0043,0x0014,wvc_standard_008e}, - {0x0044,0x0050,wvc_standard_0246}, - {0x0045,0x0014,wvc_standard_01cd}, - {0x0046,0x0050,wvc_standard_0073}, - {0x0047,0x000c,wvc_standard_01f0}, - {0x0048,0x001a,wvc_standard_00d2}, - {0x0049,0x003b,wvc_standard_0049}, - {0x004a,0x000c,wvc_standard_0097}, - {0x004b,0x001a,wvc_standard_0168}, - {0x004c,0x003b,wvc_standard_0039}, - {0x004d,0x000c,wvc_standard_0103}, - {0x004e,0x0007,wvc_standard_00e0}, - {0x004f,0x00a4,wvc_standard_01a5}, - {0x0050,0x002c,wvc_standard_015b}, - {0x0051,0x0054,wvc_standard_011f}, - {0x0052,0x0010,wvc_standard_01a8}, - {0x0053,0x0044,wvc_standard_0022}, - {0x0054,0x0014,wvc_standard_0108}, - {0x0055,0x0044,wvc_standard_01cc}, - {0x0056,0x000c,wvc_standard_0234}, - {0x0057,0x001a,wvc_standard_01bb}, - {0x0058,0x0031,wvc_standard_021c}, - {0x0059,0x000c,wvc_standard_003d}, - {0x005a,0x001a,wvc_standard_01d2}, - {0x005b,0x0031,wvc_standard_00eb}, - {0x005c,0x00a4,wvc_standard_0032}, - {0x005d,0x0005,wvc_standard_0151}, - {0x005e,0x0006,wvc_standard_0060}, - {0x005f,0x000c,wvc_standard_0054}, - {0x0060,0x0024,wvc_standard_0163}, - {0x0061,0x0035,wvc_standard_023d}, - {0x0062,0x0035,wvc_standard_0046}, - {0x0063,0x01db,wvc_standard_0193}, - {0x0064,0x01e0,wvc_standard_017a}, - {0x0065,0x0039,wvc_standard_01ce}, - {0x0066,0x007e,wvc_standard_0150}, - {0x0067,0x0017,wvc_standard_0089}, - {0x0068,0x0035,wvc_standard_01f9}, - {0x0069,0x0084,wvc_standard_0248}, - {0x006a,0x00f6,wvc_standard_00da}, - {0x006b,0x002c,wvc_standard_0011}, - {0x006c,0x0042,wvc_standard_017e}, - {0x006d,0x0035,wvc_standard_01d3}, - {0x006e,0x0035,wvc_standard_00f9}, - {0x006f,0x0195,wvc_standard_0128}, - {0x0070,0x0195,wvc_standard_014a}, - {0x0071,0x0039,wvc_standard_00be}, - {0x0072,0x0039,wvc_standard_0109}, - {0x0073,0x0040,wvc_standard_00c9}, - {0x0074,0x004e,wvc_standard_00e7}, - {0x0075,0x005d,wvc_standard_005b}, - {0x0076,0x004e,wvc_standard_0133}, - {0x0077,0x0084,wvc_standard_01f2}, - {0x0078,0x0084,wvc_standard_0135}, - {0x0079,0x00a7,wvc_standard_012c}, - {0x007a,0x0042,wvc_standard_01e4}, - {0x007b,0x0042,wvc_aotuv603_007b}, - {0x007c,0x0035,wvc_aotuv603_007c}, - {0x007d,0x0195,wvc_aotuv603_007d}, - {0x007e,0x0039,wvc_aotuv603_007e}, - {0x007f,0x00a7,wvc_aotuv603_007f}, - {0x0080,0x0035,wvc_aotuv603_0080}, - {0x0081,0x004e,wvc_aotuv603_0081}, - {0x0082,0x0067,wvc_aotuv603_0082}, - {0x0083,0x0011,wvc_aotuv603_0083}, - {0x0084,0x0067,wvc_aotuv603_0084}, - {0x0085,0x004e,wvc_aotuv603_0085}, - {0x0086,0x00a0,wvc_aotuv603_0086}, - {0x0087,0x00f6,wvc_aotuv603_0087}, - {0x0088,0x0084,wvc_aotuv603_0088}, - {0x0089,0x00fa,wvc_aotuv603_0089}, - {0x008a,0x0049,wvc_aotuv603_008a}, - {0x008b,0x0042,wvc_aotuv603_008b}, - {0x008c,0x0035,wvc_standard_01b5}, - {0x008d,0x0035,wvc_standard_003f}, - {0x008e,0x01de,wvc_standard_0070}, - {0x008f,0x0195,wvc_standard_018f}, - {0x0090,0x0039,wvc_standard_00d9}, - {0x0091,0x0083,wvc_standard_022c}, - {0x0092,0x0017,wvc_standard_01cf}, - {0x0093,0x0035,wvc_standard_01f9}, - {0x0094,0x0084,wvc_standard_00fd}, - {0x0095,0x00f6,wvc_standard_00d5}, - {0x0096,0x002c,wvc_standard_0212}, - {0x0097,0x0035,wvc_standard_0154}, - {0x0098,0x0035,wvc_standard_0001}, - {0x0099,0x01de,wvc_standard_0172}, - {0x009a,0x0147,wvc_standard_01ad}, - {0x009b,0x0039,wvc_standard_01aa}, - {0x009c,0x0039,wvc_standard_020f}, - {0x009d,0x0035,wvc_standard_0218}, - {0x009e,0x004e,wvc_standard_0050}, - {0x009f,0x005d,wvc_standard_01e2}, - {0x00a0,0x004e,wvc_standard_00d6}, - {0x00a1,0x0084,wvc_standard_0216}, - {0x00a2,0x0084,wvc_standard_0091}, - {0x00a3,0x00a7,wvc_standard_01d8}, - {0x00a4,0x0042,wvc_standard_01e8}, - {0x00a5,0x002c,wvc_standard_007b}, - {0x00a6,0x0035,wvc_standard_0056}, - {0x00a7,0x0035,wvc_standard_01c2}, - {0x00a8,0x01d7,wvc_standard_0184}, - {0x00a9,0x01e0,wvc_standard_020b}, - {0x00aa,0x0039,wvc_standard_005e}, - {0x00ab,0x0090,wvc_standard_0026}, - {0x00ac,0x0017,wvc_standard_0005}, - {0x00ad,0x0147,wvc_standard_0067}, - {0x00ae,0x0067,wvc_standard_01e5}, - {0x00af,0x0067,wvc_standard_0231}, - {0x00b0,0x002c,wvc_standard_00db}, - {0x00b1,0x002c,wvc_standard_007b}, - {0x00b2,0x0035,wvc_standard_0056}, - {0x00b3,0x0035,wvc_standard_01c2}, - {0x00b4,0x01d7,wvc_standard_0184}, - {0x00b5,0x01e0,wvc_standard_020b}, - {0x00b6,0x0039,wvc_standard_005e}, - {0x00b7,0x0090,wvc_standard_0026}, - {0x00b8,0x0017,wvc_standard_0005}, - {0x00b9,0x0027,wvc_standard_00ef}, - {0x00ba,0x0067,wvc_standard_01e5}, - {0x00bb,0x0067,wvc_standard_0231}, - {0x00bc,0x002c,wvc_standard_00db}, - {0x00bd,0x0024,wvc_standard_0149}, - {0x00be,0x0035,wvc_standard_0242}, - {0x00bf,0x0035,wvc_standard_0041}, - {0x00c0,0x01d5,wvc_standard_00e9}, - {0x00c1,0x0195,wvc_standard_019a}, - {0x00c2,0x0039,wvc_standard_0042}, - {0x00c3,0x008f,wvc_standard_00dd}, - {0x00c4,0x0017,wvc_standard_0116}, - {0x00c5,0x0039,wvc_standard_006b}, - {0x00c6,0x007c,wvc_standard_0219}, - {0x00c7,0x0067,wvc_standard_0155}, - {0x00c8,0x002c,wvc_standard_00ff}, - {0x00c9,0x0024,wvc_standard_003a}, - {0x00ca,0x0035,wvc_standard_0031}, - {0x00cb,0x0035,wvc_standard_004c}, - {0x00cc,0x01cf,wvc_standard_001d}, - {0x00cd,0x0195,wvc_standard_00e2}, - {0x00ce,0x0039,wvc_standard_005c}, - {0x00cf,0x0091,wvc_standard_00a5}, - {0x00d0,0x0017,wvc_standard_0116}, - {0x00d1,0x0039,wvc_standard_0207}, - {0x00d2,0x00a0,wvc_standard_0063}, - {0x00d3,0x00a7,wvc_standard_004a}, - {0x00d4,0x002c,wvc_standard_0072}, - {0x00d5,0x0024,wvc_standard_01de}, - {0x00d6,0x0035,wvc_standard_015f}, - {0x00d7,0x0035,wvc_standard_0183}, - {0x00d8,0x01d3,wvc_standard_00c1}, - {0x00d9,0x0195,wvc_standard_007d}, - {0x00da,0x0039,wvc_standard_0222}, - {0x00db,0x0091,wvc_standard_01d1}, - {0x00dc,0x0017,wvc_standard_0116}, - {0x00dd,0x0067,wvc_standard_0196}, - {0x00de,0x00a0,wvc_standard_01c7}, - {0x00df,0x00a7,wvc_standard_0014}, - {0x00e0,0x002c,wvc_standard_0241}, - {0x00e1,0x0042,wvc_standard_00e3}, - {0x00e2,0x0035,wvc_standard_0157}, - {0x00e3,0x0035,wvc_standard_018c}, - {0x00e4,0x01d3,wvc_standard_01b7}, - {0x00e5,0x0195,wvc_standard_0112}, - {0x00e6,0x0039,wvc_standard_004d}, - {0x00e7,0x0039,wvc_standard_024e}, - {0x00e8,0x0035,wvc_standard_01d5}, - {0x00e9,0x004e,wvc_standard_0236}, - {0x00ea,0x004e,wvc_standard_0048}, - {0x00eb,0x004e,wvc_standard_0093}, - {0x00ec,0x0067,wvc_standard_0096}, - {0x00ed,0x0084,wvc_standard_0004}, - {0x00ee,0x00a7,wvc_standard_0094}, - {0x00ef,0x0042,wvc_standard_0045}, - {0x00f0,0x0042,wvc_standard_0176}, - {0x00f1,0x0035,wvc_standard_00b5}, - {0x00f2,0x0035,wvc_standard_0107}, - {0x00f3,0x01cb,wvc_standard_0198}, - {0x00f4,0x0195,wvc_standard_0033}, - {0x00f5,0x0039,wvc_standard_01c0}, - {0x00f6,0x0039,wvc_standard_0220}, - {0x00f7,0x0035,wvc_standard_023f}, - {0x00f8,0x004e,wvc_standard_0230}, - {0x00f9,0x004e,wvc_standard_00de}, - {0x00fa,0x004e,wvc_standard_009f}, - {0x00fb,0x0084,wvc_standard_00a2}, - {0x00fc,0x0084,wvc_standard_021b}, - {0x00fd,0x00a7,wvc_standard_023e}, - {0x00fe,0x0042,wvc_standard_024a}, - {0x00ff,0x0042,wvc_standard_012a}, - {0x0100,0x0035,wvc_standard_01a3}, - {0x0101,0x0035,wvc_standard_001c}, - {0x0102,0x01cc,wvc_standard_016d}, - {0x0103,0x0195,wvc_standard_0092}, - {0x0104,0x0039,wvc_standard_00a7}, - {0x0105,0x0039,wvc_standard_0214}, - {0x0106,0x0035,wvc_standard_0098}, - {0x0107,0x004e,wvc_standard_0003}, - {0x0108,0x005d,wvc_standard_003e}, - {0x0109,0x004e,wvc_standard_019b}, - {0x010a,0x004e,wvc_standard_015a}, - {0x010b,0x007c,wvc_standard_01c5}, - {0x010c,0x0036,wvc_standard_013d}, - {0x010d,0x0042,wvc_standard_00e6}, - {0x010e,0x0042,wvc_standard_000f}, - {0x010f,0x0042,wvc_standard_0237}, - {0x0110,0x0035,wvc_standard_0175}, - {0x0111,0x0195,wvc_standard_0013}, - {0x0112,0x0039,wvc_standard_0090}, - {0x0113,0x00a7,wvc_standard_024c}, - {0x0114,0x0035,wvc_standard_002a}, - {0x0115,0x004e,wvc_standard_0102}, - {0x0116,0x0067,wvc_standard_01bc}, - {0x0117,0x0017,wvc_standard_0119}, - {0x0118,0x007c,wvc_standard_0111}, - {0x0119,0x004e,wvc_standard_0156}, - {0x011a,0x00a0,wvc_standard_00c3}, - {0x011b,0x00f6,wvc_standard_00ba}, - {0x011c,0x0039,wvc_standard_00ea}, - {0x011d,0x00fa,wvc_standard_01ea}, - {0x011e,0x0035,wvc_standard_00c8}, - {0x011f,0x0042,wvc_standard_0195}, - {0x0120,0x0042,wvc_standard_01be}, - {0x0121,0x0035,wvc_standard_0171}, - {0x0122,0x0147,wvc_standard_0142}, - {0x0123,0x0039,wvc_standard_012e}, - {0x0124,0x00a7,wvc_standard_01e7}, - {0x0125,0x0035,wvc_standard_01ac}, - {0x0126,0x004e,wvc_standard_0138}, - {0x0127,0x0067,wvc_standard_008b}, - {0x0128,0x0017,wvc_standard_0105}, - {0x0129,0x0067,wvc_standard_0077}, - {0x012a,0x004e,wvc_standard_00f5}, - {0x012b,0x00a0,wvc_standard_01ed}, - {0x012c,0x00f6,wvc_standard_00af}, - {0x012d,0x0084,wvc_standard_003c}, - {0x012e,0x00fa,wvc_standard_01f3}, - {0x012f,0x0043,wvc_standard_01df}, - {0x0130,0x002c,wvc_standard_01dc}, - {0x0131,0x0035,wvc_standard_0165}, - {0x0132,0x0035,wvc_standard_0147}, - {0x0133,0x01d8,wvc_standard_01e1}, - {0x0134,0x01e1,wvc_standard_002d}, - {0x0135,0x0039,wvc_standard_00d1}, - {0x0136,0x008d,wvc_standard_0121}, - {0x0137,0x0017,wvc_standard_01ae}, - {0x0138,0x0147,wvc_standard_01b9}, - {0x0139,0x0067,wvc_standard_014c}, - {0x013a,0x0067,wvc_standard_0085}, - {0x013b,0x0024,wvc_standard_0078}, - {0x013c,0x036a,wvc_standard_0240}, - {0x013d,0x0069,wvc_standard_022f}, - {0x013e,0x0024,wvc_standard_0065}, - {0x013f,0x0036,wvc_standard_015e}, - {0x0140,0x00a4,wvc_standard_005d}, - {0x0141,0x0035,wvc_standard_01ec}, - {0x0142,0x004e,wvc_standard_019f}, - {0x0143,0x006e,wvc_standard_0181}, - {0x0144,0x0017,wvc_standard_01a7}, - {0x0145,0x0035,wvc_standard_01f9}, - {0x0146,0x0084,wvc_standard_016b}, - {0x0147,0x00f6,wvc_standard_014f}, - {0x0148,0x0042,wvc_standard_015c}, - {0x0149,0x0042,wvc_standard_0202}, - {0x014a,0x036a,wvc_standard_008c}, - {0x014b,0x0069,wvc_standard_01b4}, - {0x014c,0x0024,wvc_standard_00b4}, - {0x014d,0x0036,wvc_standard_00b0}, - {0x014e,0x00a4,wvc_standard_0247}, - {0x014f,0x0035,wvc_standard_0137}, - {0x0150,0x004e,wvc_standard_022b}, - {0x0151,0x006f,wvc_standard_000d}, - {0x0152,0x0017,wvc_standard_007f}, - {0x0153,0x0067,wvc_standard_0009}, - {0x0154,0x0084,wvc_standard_011e}, - {0x0155,0x00f6,wvc_standard_0177}, - {0x0156,0x0042,wvc_standard_01ee}, - {0x0157,0x0042,wvc_aotuv603_0157}, - {0x0158,0x001a,wvc_standard_017c}, - {0x0159,0x00b1,wvc_aotuv603_0159}, - {0x015a,0x0031,wvc_aotuv603_015a}, - {0x015b,0x007a,wvc_aotuv603_015b}, - {0x015c,0x0035,wvc_aotuv603_015c}, - {0x015d,0x004e,wvc_aotuv603_015d}, - {0x015e,0x0053,wvc_aotuv603_015e}, - {0x015f,0x0017,wvc_standard_007f}, - {0x0160,0x007c,wvc_aotuv603_0160}, - {0x0161,0x004e,wvc_aotuv603_0161}, - {0x0162,0x00a0,wvc_aotuv603_0162}, - {0x0163,0x00f6,wvc_aotuv603_0163}, - {0x0164,0x00a7,wvc_aotuv603_0164}, - {0x0165,0x00fa,wvc_aotuv603_0165}, - {0x0166,0x0036,wvc_aotuv603_0166}, - {0x0167,0x0042,wvc_aotuv603_0167}, - {0x0168,0x036a,wvc_standard_0187}, - {0x0169,0x0069,wvc_standard_022d}, - {0x016a,0x0024,wvc_standard_01f5}, - {0x016b,0x0036,wvc_standard_017f}, - {0x016c,0x00a4,wvc_standard_0217}, - {0x016d,0x0035,wvc_standard_0106}, - {0x016e,0x004e,wvc_standard_022a}, - {0x016f,0x006c,wvc_standard_0224}, - {0x0170,0x0017,wvc_standard_0095}, - {0x0171,0x0035,wvc_standard_01f9}, - {0x0172,0x0084,wvc_standard_0062}, - {0x0173,0x00f6,wvc_standard_0182}, - {0x0174,0x0042,wvc_standard_012d}, - {0x0175,0x036a,wvc_standard_01bd}, - {0x0176,0x0066,wvc_standard_021d}, - {0x0177,0x0024,wvc_standard_01f5}, - {0x0178,0x0036,wvc_standard_0030}, - {0x0179,0x00a4,wvc_standard_00d0}, - {0x017a,0x0035,wvc_standard_008a}, - {0x017b,0x004e,wvc_standard_0086}, - {0x017c,0x006f,wvc_standard_00fb}, - {0x017d,0x0017,wvc_standard_007f}, - {0x017e,0x0067,wvc_standard_0123}, - {0x017f,0x00a0,wvc_standard_01c4}, - {0x0180,0x00f6,wvc_standard_002e}, - {0x0181,0x0042,wvc_standard_002b}, - {0x0182,0x0036,wvc_standard_013f}, - {0x0183,0x036a,wvc_standard_009b}, - {0x0184,0x0085,wvc_standard_013a}, - {0x0185,0x0069,wvc_standard_018a}, - {0x0186,0x0027,wvc_standard_011a}, - {0x0187,0x0039,wvc_standard_021e}, - {0x0188,0x00a7,wvc_standard_0226}, - {0x0189,0x0035,wvc_standard_014b}, - {0x018a,0x004e,wvc_standard_020e}, - {0x018b,0x006f,wvc_standard_00ec}, - {0x018c,0x0017,wvc_standard_0012}, - {0x018d,0x0067,wvc_standard_000c}, - {0x018e,0x007c,wvc_standard_0122}, - {0x018f,0x00a7,wvc_standard_0141}, - {0x0190,0x0042,wvc_standard_00c4}, - {0x0191,0x0036,wvc_standard_0167}, - {0x0192,0x036a,wvc_standard_0139}, - {0x0193,0x0085,wvc_standard_00ad}, - {0x0194,0x0069,wvc_standard_018a}, - {0x0195,0x0027,wvc_standard_010a}, - {0x0196,0x0039,wvc_standard_01b8}, - {0x0197,0x00a7,wvc_standard_00b9}, - {0x0198,0x0035,wvc_standard_01a9}, - {0x0199,0x004e,wvc_standard_0113}, - {0x019a,0x006f,wvc_standard_01eb}, - {0x019b,0x0017,wvc_standard_0173}, - {0x019c,0x0067,wvc_standard_0204}, - {0x019d,0x00a0,wvc_standard_01ca}, - {0x019e,0x00a7,wvc_standard_016f}, - {0x019f,0x0042,wvc_standard_008d}, - {0x01a0,0x0036,wvc_standard_01dd}, - {0x01a1,0x036a,wvc_standard_009b}, - {0x01a2,0x0085,wvc_standard_001a}, - {0x01a3,0x0069,wvc_standard_01b3}, - {0x01a4,0x0027,wvc_standard_010a}, - {0x01a5,0x0039,wvc_standard_01c8}, - {0x01a6,0x00a7,wvc_standard_0235}, - {0x01a7,0x0035,wvc_standard_0143}, - {0x01a8,0x004e,wvc_standard_001b}, - {0x01a9,0x006f,wvc_standard_00a8}, - {0x01aa,0x0017,wvc_standard_01f8}, - {0x01ab,0x0067,wvc_standard_017d}, - {0x01ac,0x00a0,wvc_standard_01b0}, - {0x01ad,0x00f6,wvc_standard_0079}, - {0x01ae,0x0042,wvc_standard_01fe}, - {0x01af,0x0036,wvc_standard_0066}, - {0x01b0,0x036a,wvc_standard_0064}, - {0x01b1,0x0085,wvc_standard_01fd}, - {0x01b2,0x0069,wvc_standard_0253}, - {0x01b3,0x0027,wvc_standard_0029}, - {0x01b4,0x0039,wvc_standard_0140}, - {0x01b5,0x00a7,wvc_standard_019c}, - {0x01b6,0x0035,wvc_standard_0143}, - {0x01b7,0x004e,wvc_standard_0037}, - {0x01b8,0x006f,wvc_standard_00aa}, - {0x01b9,0x0017,wvc_standard_0173}, - {0x01ba,0x0084,wvc_standard_0099}, - {0x01bb,0x00cb,wvc_standard_0199}, - {0x01bc,0x00f6,wvc_standard_010c}, - {0x01bd,0x0042,wvc_standard_0164}, - {0x01be,0x0042,wvc_standard_0208}, - {0x01bf,0x0030,wvc_standard_0200}, - {0x01c0,0x0111,wvc_standard_0120}, - {0x01c1,0x0034,wvc_standard_00bf}, - {0x01c2,0x007d,wvc_standard_01ba}, - {0x01c3,0x0035,wvc_standard_0245}, - {0x01c4,0x004e,wvc_standard_013b}, - {0x01c5,0x0053,wvc_standard_0036}, - {0x01c6,0x0017,wvc_standard_00f0}, - {0x01c7,0x007c,wvc_standard_013c}, - {0x01c8,0x004e,wvc_standard_0250}, - {0x01c9,0x00a0,wvc_standard_00d7}, - {0x01ca,0x00f6,wvc_standard_014e}, - {0x01cb,0x0067,wvc_standard_00e4}, - {0x01cc,0x007c,wvc_standard_0146}, - {0x01cd,0x0043,wvc_standard_00a3}, - {0x01ce,0x0042,wvc_standard_0055}, - {0x01cf,0x0036,wvc_standard_0189}, - {0x01d0,0x0030,wvc_standard_0076}, - {0x01d1,0x0111,wvc_standard_00a9}, - {0x01d2,0x0034,wvc_standard_0243}, - {0x01d3,0x007d,wvc_standard_01ab}, - {0x01d4,0x0035,wvc_standard_00b1}, - {0x01d5,0x004e,wvc_standard_00f3}, - {0x01d6,0x0053,wvc_standard_017b}, - {0x01d7,0x0017,wvc_standard_00f0}, - {0x01d8,0x007c,wvc_standard_0233}, - {0x01d9,0x004e,wvc_standard_00ce}, - {0x01da,0x00a0,wvc_standard_00d4}, - {0x01db,0x00f6,wvc_standard_005a}, - {0x01dc,0x0067,wvc_standard_0180}, - {0x01dd,0x007c,wvc_standard_0239}, - {0x01de,0x0043,wvc_standard_00a3}, - {0x01df,0x0042,wvc_standard_006c}, - {0x01e0,0x0036,wvc_standard_004b}, - {0x01e1,0x0030,wvc_standard_0074}, - {0x01e2,0x0111,wvc_standard_016e}, - {0x01e3,0x0034,wvc_standard_0243}, - {0x01e4,0x007d,wvc_standard_00df}, - {0x01e5,0x0035,wvc_standard_023c}, - {0x01e6,0x004e,wvc_standard_01b1}, - {0x01e7,0x0053,wvc_standard_0213}, - {0x01e8,0x0017,wvc_standard_00f0}, - {0x01e9,0x007c,wvc_standard_01a1}, - {0x01ea,0x004e,wvc_standard_007e}, - {0x01eb,0x00a0,wvc_standard_00e8}, - {0x01ec,0x00f6,wvc_standard_0021}, - {0x01ed,0x00a7,wvc_standard_007a}, - {0x01ee,0x00fa,wvc_standard_0126}, - {0x01ef,0x0035,wvc_standard_0010}, - {0x01f0,0x0042,wvc_standard_00c6}, - {0x01f1,0x0036,wvc_standard_01c6}, - {0x01f2,0x0030,wvc_standard_012f}, - {0x01f3,0x0111,wvc_standard_0145}, - {0x01f4,0x0034,wvc_standard_01af}, - {0x01f5,0x007d,wvc_standard_020a}, - {0x01f6,0x0035,wvc_standard_0115}, - {0x01f7,0x004e,wvc_standard_0020}, - {0x01f8,0x0053,wvc_standard_024d}, - {0x01f9,0x0017,wvc_standard_0024}, - {0x01fa,0x007c,wvc_standard_00ab}, - {0x01fb,0x004e,wvc_standard_006d}, - {0x01fc,0x00a0,wvc_standard_00ed}, - {0x01fd,0x00f6,wvc_standard_01f4}, - {0x01fe,0x00cd,wvc_standard_0015}, - {0x01ff,0x00fa,wvc_standard_0160}, - {0x0200,0x0035,wvc_standard_00b7}, - {0x0201,0x0042,wvc_standard_01a0}, - {0x0202,0x0036,wvc_standard_0190}, - {0x0203,0x036a,wvc_standard_0178}, - {0x0204,0x0069,wvc_standard_01e9}, - {0x0205,0x0024,wvc_standard_0179}, - {0x0206,0x0036,wvc_standard_006f}, - {0x0207,0x00a4,wvc_standard_024b}, - {0x0208,0x0035,wvc_standard_00d8}, - {0x0209,0x004e,wvc_standard_0101}, - {0x020a,0x006f,wvc_standard_023b}, - {0x020b,0x0017,wvc_standard_007f}, - {0x020c,0x0147,wvc_standard_00ac}, - {0x020d,0x007c,wvc_standard_0255}, - {0x020e,0x00a7,wvc_standard_00e1}, - {0x020f,0x0036,wvc_standard_0088}, - {0x0210,0x0036,wvc_standard_00f8}, - {0x0211,0x036a,wvc_standard_0229}, - {0x0212,0x0069,wvc_standard_0034}, - {0x0213,0x0027,wvc_standard_0023}, - {0x0214,0x0039,wvc_standard_013e}, - {0x0215,0x00a7,wvc_standard_0188}, - {0x0216,0x0035,wvc_standard_0203}, - {0x0217,0x004e,wvc_standard_011d}, - {0x0218,0x006f,wvc_standard_00f4}, - {0x0219,0x0017,wvc_standard_00d3}, - {0x021a,0x0039,wvc_standard_01a2}, - {0x021b,0x007c,wvc_standard_0153}, - {0x021c,0x00a7,wvc_standard_0038}, - {0x021d,0x0036,wvc_standard_0017}, - {0x021e,0x002c,wvc_standard_0129}, - {0x021f,0x036a,wvc_standard_009a}, - {0x0220,0x0069,wvc_standard_010d}, - {0x0221,0x0026,wvc_standard_0223}, - {0x0222,0x0036,wvc_standard_00b6}, - {0x0223,0x00a4,wvc_standard_00b8}, - {0x0224,0x0035,wvc_standard_01ff}, - {0x0225,0x004e,wvc_standard_0000}, - {0x0226,0x006f,wvc_standard_0221}, - {0x0227,0x0017,wvc_standard_007f}, - {0x0228,0x0067,wvc_standard_0130}, - {0x0229,0x007c,wvc_standard_01cb}, - {0x022a,0x00a7,wvc_standard_01c9}, - {0x022b,0x0036,wvc_standard_0158}, - {0x022c,0x002c,wvc_standard_00bd}, - {0x022d,0x036a,wvc_standard_01db}, - {0x022e,0x0069,wvc_standard_022e}, - {0x022f,0x0027,wvc_standard_021a}, - {0x0230,0x0039,wvc_standard_0002}, - {0x0231,0x00a7,wvc_standard_011b}, - {0x0232,0x0035,wvc_standard_0100}, - {0x0233,0x004e,wvc_standard_0008}, - {0x0234,0x006f,wvc_standard_00cd}, - {0x0235,0x0017,wvc_standard_010f}, - {0x0236,0x0067,wvc_standard_0192}, - {0x0237,0x007c,wvc_standard_019d}, - {0x0238,0x00a7,wvc_standard_0131}, - {0x0239,0x0036,wvc_standard_0075}, - {0x023a,0x0036,wvc_standard_01e3}, - {0x023b,0x036a,wvc_standard_00fe}, - {0x023c,0x0069,wvc_standard_01d9}, - {0x023d,0x0024,wvc_standard_0071}, - {0x023e,0x0036,wvc_standard_0019}, - {0x023f,0x00a4,wvc_standard_001e}, - {0x0240,0x0035,wvc_standard_01ef}, - {0x0241,0x004e,wvc_standard_00f6}, - {0x0242,0x006f,wvc_standard_0252}, - {0x0243,0x0017,wvc_standard_007f}, - {0x0244,0x0147,wvc_standard_01c1}, - {0x0245,0x0067,wvc_standard_00ee}, - {0x0246,0x00a7,wvc_standard_01d7}, - {0x0247,0x0036,wvc_standard_009d}, - {0x0248,0x0036,wvc_standard_0136}, - {0x0249,0x036a,wvc_standard_01d0}, - {0x024a,0x0069,wvc_standard_0034}, - {0x024b,0x0027,wvc_standard_01da}, - {0x024c,0x0039,wvc_standard_0016}, - {0x024d,0x00a7,wvc_standard_018d}, - {0x024e,0x0035,wvc_standard_0206}, - {0x024f,0x004e,wvc_standard_01f7}, - {0x0250,0x006f,wvc_standard_01f1}, - {0x0251,0x0017,wvc_standard_010f}, - {0x0252,0x0039,wvc_standard_00cc}, - {0x0253,0x007c,wvc_standard_0197}, - {0x0254,0x00a7,wvc_standard_00bc}, - {0x0255,0x0036,wvc_standard_00cb}, +static const vcb_info_t vcb_list_aotuv603[] = { + {0x0000,0x0008,vcb_standard_00c2}, + {0x0001,0x000d,vcb_standard_00a6}, + {0x0002,0x001f,vcb_standard_010e}, + {0x0003,0x0008,vcb_standard_018e}, + {0x0004,0x000f,vcb_standard_0238}, + {0x0005,0x001f,vcb_standard_014d}, + {0x0006,0x0024,vcb_standard_0087}, + {0x0007,0x0084,vcb_standard_0043}, + {0x0008,0x0054,vcb_standard_0044}, + {0x0009,0x0014,vcb_standard_024f}, + {0x000a,0x0050,vcb_standard_0018}, + {0x000b,0x000c,vcb_standard_0251}, + {0x000c,0x001a,vcb_standard_0225}, + {0x000d,0x003b,vcb_standard_016a}, + {0x000e,0x000c,vcb_standard_01bf}, + {0x000f,0x001a,vcb_standard_0201}, + {0x0010,0x003b,vcb_standard_015d}, + {0x0011,0x0007,vcb_standard_00e5}, + {0x0012,0x002c,vcb_standard_01e0}, + {0x0013,0x002c,vcb_standard_0025}, + {0x0014,0x00a4,vcb_standard_0254}, + {0x0015,0x0004,vcb_standard_00a0}, + {0x0016,0x0006,vcb_standard_0007}, + {0x0017,0x000c,vcb_standard_0152}, + {0x0018,0x0024,vcb_standard_00b3}, + {0x0019,0x0084,vcb_standard_020d}, + {0x001a,0x0004,vcb_standard_00a0}, + {0x001b,0x0006,vcb_standard_0040}, + {0x001c,0x000c,vcb_standard_009e}, + {0x001d,0x001f,vcb_standard_0166}, + {0x001e,0x002c,vcb_standard_0051}, + {0x001f,0x00a4,vcb_standard_003b}, + {0x0020,0x0007,vcb_standard_0169}, + {0x0021,0x000d,vcb_standard_0061}, + {0x0022,0x001f,vcb_standard_0227}, + {0x0023,0x0008,vcb_standard_0068}, + {0x0024,0x000f,vcb_standard_004f}, + {0x0025,0x001f,vcb_standard_0209}, + {0x0026,0x0007,vcb_standard_019e}, + {0x0027,0x002c,vcb_standard_0125}, + {0x0028,0x002c,vcb_standard_00f7}, + {0x0029,0x0054,vcb_standard_0059}, + {0x002a,0x0014,vcb_standard_0211}, + {0x002b,0x0044,vcb_standard_012b}, + {0x002c,0x000c,vcb_standard_00fc}, + {0x002d,0x001a,vcb_standard_01d6}, + {0x002e,0x003b,vcb_standard_016c}, + {0x002f,0x000c,vcb_standard_0191}, + {0x0030,0x001a,vcb_standard_004e}, + {0x0031,0x003b,vcb_standard_0215}, + {0x0032,0x0007,vcb_standard_00bb}, + {0x0033,0x002c,vcb_standard_0194}, + {0x0034,0x002c,vcb_standard_002f}, + {0x0035,0x0054,vcb_standard_00ca}, + {0x0036,0x0014,vcb_standard_00ae}, + {0x0037,0x0050,vcb_standard_0249}, + {0x0038,0x000e,vcb_standard_01b6}, + {0x0039,0x001a,vcb_standard_0028}, + {0x003a,0x0031,vcb_standard_008f}, + {0x003b,0x000c,vcb_standard_00c0}, + {0x003c,0x001a,vcb_standard_023a}, + {0x003d,0x003b,vcb_standard_000e}, + {0x003e,0x000c,vcb_standard_0052}, + {0x003f,0x0007,vcb_standard_011c}, + {0x0040,0x00a4,vcb_standard_0210}, + {0x0041,0x002c,vcb_standard_0162}, + {0x0042,0x0054,vcb_standard_00c5}, + {0x0043,0x0014,vcb_standard_008e}, + {0x0044,0x0050,vcb_standard_0246}, + {0x0045,0x0014,vcb_standard_01cd}, + {0x0046,0x0050,vcb_standard_0073}, + {0x0047,0x000c,vcb_standard_01f0}, + {0x0048,0x001a,vcb_standard_00d2}, + {0x0049,0x003b,vcb_standard_0049}, + {0x004a,0x000c,vcb_standard_0097}, + {0x004b,0x001a,vcb_standard_0168}, + {0x004c,0x003b,vcb_standard_0039}, + {0x004d,0x000c,vcb_standard_0103}, + {0x004e,0x0007,vcb_standard_00e0}, + {0x004f,0x00a4,vcb_standard_01a5}, + {0x0050,0x002c,vcb_standard_015b}, + {0x0051,0x0054,vcb_standard_011f}, + {0x0052,0x0010,vcb_standard_01a8}, + {0x0053,0x0044,vcb_standard_0022}, + {0x0054,0x0014,vcb_standard_0108}, + {0x0055,0x0044,vcb_standard_01cc}, + {0x0056,0x000c,vcb_standard_0234}, + {0x0057,0x001a,vcb_standard_01bb}, + {0x0058,0x0031,vcb_standard_021c}, + {0x0059,0x000c,vcb_standard_003d}, + {0x005a,0x001a,vcb_standard_01d2}, + {0x005b,0x0031,vcb_standard_00eb}, + {0x005c,0x00a4,vcb_standard_0032}, + {0x005d,0x0005,vcb_standard_0151}, + {0x005e,0x0006,vcb_standard_0060}, + {0x005f,0x000c,vcb_standard_0054}, + {0x0060,0x0024,vcb_standard_0163}, + {0x0061,0x0035,vcb_standard_023d}, + {0x0062,0x0035,vcb_standard_0046}, + {0x0063,0x01db,vcb_standard_0193}, + {0x0064,0x01e0,vcb_standard_017a}, + {0x0065,0x0039,vcb_standard_01ce}, + {0x0066,0x007e,vcb_standard_0150}, + {0x0067,0x0017,vcb_standard_0089}, + {0x0068,0x0035,vcb_standard_01f9}, + {0x0069,0x0084,vcb_standard_0248}, + {0x006a,0x00f6,vcb_standard_00da}, + {0x006b,0x002c,vcb_standard_0011}, + {0x006c,0x0042,vcb_standard_017e}, + {0x006d,0x0035,vcb_standard_01d3}, + {0x006e,0x0035,vcb_standard_00f9}, + {0x006f,0x0195,vcb_standard_0128}, + {0x0070,0x0195,vcb_standard_014a}, + {0x0071,0x0039,vcb_standard_00be}, + {0x0072,0x0039,vcb_standard_0109}, + {0x0073,0x0040,vcb_standard_00c9}, + {0x0074,0x004e,vcb_standard_00e7}, + {0x0075,0x005d,vcb_standard_005b}, + {0x0076,0x004e,vcb_standard_0133}, + {0x0077,0x0084,vcb_standard_01f2}, + {0x0078,0x0084,vcb_standard_0135}, + {0x0079,0x00a7,vcb_standard_012c}, + {0x007a,0x0042,vcb_standard_01e4}, + {0x007b,0x0042,vcb_aotuv603_007b}, + {0x007c,0x0035,vcb_aotuv603_007c}, + {0x007d,0x0195,vcb_aotuv603_007d}, + {0x007e,0x0039,vcb_aotuv603_007e}, + {0x007f,0x00a7,vcb_aotuv603_007f}, + {0x0080,0x0035,vcb_aotuv603_0080}, + {0x0081,0x004e,vcb_aotuv603_0081}, + {0x0082,0x0067,vcb_aotuv603_0082}, + {0x0083,0x0011,vcb_aotuv603_0083}, + {0x0084,0x0067,vcb_aotuv603_0084}, + {0x0085,0x004e,vcb_aotuv603_0085}, + {0x0086,0x00a0,vcb_aotuv603_0086}, + {0x0087,0x00f6,vcb_aotuv603_0087}, + {0x0088,0x0084,vcb_aotuv603_0088}, + {0x0089,0x00fa,vcb_aotuv603_0089}, + {0x008a,0x0049,vcb_aotuv603_008a}, + {0x008b,0x0042,vcb_aotuv603_008b}, + {0x008c,0x0035,vcb_standard_01b5}, + {0x008d,0x0035,vcb_standard_003f}, + {0x008e,0x01de,vcb_standard_0070}, + {0x008f,0x0195,vcb_standard_018f}, + {0x0090,0x0039,vcb_standard_00d9}, + {0x0091,0x0083,vcb_standard_022c}, + {0x0092,0x0017,vcb_standard_01cf}, + {0x0093,0x0035,vcb_standard_01f9}, + {0x0094,0x0084,vcb_standard_00fd}, + {0x0095,0x00f6,vcb_standard_00d5}, + {0x0096,0x002c,vcb_standard_0212}, + {0x0097,0x0035,vcb_standard_0154}, + {0x0098,0x0035,vcb_standard_0001}, + {0x0099,0x01de,vcb_standard_0172}, + {0x009a,0x0147,vcb_standard_01ad}, + {0x009b,0x0039,vcb_standard_01aa}, + {0x009c,0x0039,vcb_standard_020f}, + {0x009d,0x0035,vcb_standard_0218}, + {0x009e,0x004e,vcb_standard_0050}, + {0x009f,0x005d,vcb_standard_01e2}, + {0x00a0,0x004e,vcb_standard_00d6}, + {0x00a1,0x0084,vcb_standard_0216}, + {0x00a2,0x0084,vcb_standard_0091}, + {0x00a3,0x00a7,vcb_standard_01d8}, + {0x00a4,0x0042,vcb_standard_01e8}, + {0x00a5,0x002c,vcb_standard_007b}, + {0x00a6,0x0035,vcb_standard_0056}, + {0x00a7,0x0035,vcb_standard_01c2}, + {0x00a8,0x01d7,vcb_standard_0184}, + {0x00a9,0x01e0,vcb_standard_020b}, + {0x00aa,0x0039,vcb_standard_005e}, + {0x00ab,0x0090,vcb_standard_0026}, + {0x00ac,0x0017,vcb_standard_0005}, + {0x00ad,0x0147,vcb_standard_0067}, + {0x00ae,0x0067,vcb_standard_01e5}, + {0x00af,0x0067,vcb_standard_0231}, + {0x00b0,0x002c,vcb_standard_00db}, + {0x00b1,0x002c,vcb_standard_007b}, + {0x00b2,0x0035,vcb_standard_0056}, + {0x00b3,0x0035,vcb_standard_01c2}, + {0x00b4,0x01d7,vcb_standard_0184}, + {0x00b5,0x01e0,vcb_standard_020b}, + {0x00b6,0x0039,vcb_standard_005e}, + {0x00b7,0x0090,vcb_standard_0026}, + {0x00b8,0x0017,vcb_standard_0005}, + {0x00b9,0x0027,vcb_standard_00ef}, + {0x00ba,0x0067,vcb_standard_01e5}, + {0x00bb,0x0067,vcb_standard_0231}, + {0x00bc,0x002c,vcb_standard_00db}, + {0x00bd,0x0024,vcb_standard_0149}, + {0x00be,0x0035,vcb_standard_0242}, + {0x00bf,0x0035,vcb_standard_0041}, + {0x00c0,0x01d5,vcb_standard_00e9}, + {0x00c1,0x0195,vcb_standard_019a}, + {0x00c2,0x0039,vcb_standard_0042}, + {0x00c3,0x008f,vcb_standard_00dd}, + {0x00c4,0x0017,vcb_standard_0116}, + {0x00c5,0x0039,vcb_standard_006b}, + {0x00c6,0x007c,vcb_standard_0219}, + {0x00c7,0x0067,vcb_standard_0155}, + {0x00c8,0x002c,vcb_standard_00ff}, + {0x00c9,0x0024,vcb_standard_003a}, + {0x00ca,0x0035,vcb_standard_0031}, + {0x00cb,0x0035,vcb_standard_004c}, + {0x00cc,0x01cf,vcb_standard_001d}, + {0x00cd,0x0195,vcb_standard_00e2}, + {0x00ce,0x0039,vcb_standard_005c}, + {0x00cf,0x0091,vcb_standard_00a5}, + {0x00d0,0x0017,vcb_standard_0116}, + {0x00d1,0x0039,vcb_standard_0207}, + {0x00d2,0x00a0,vcb_standard_0063}, + {0x00d3,0x00a7,vcb_standard_004a}, + {0x00d4,0x002c,vcb_standard_0072}, + {0x00d5,0x0024,vcb_standard_01de}, + {0x00d6,0x0035,vcb_standard_015f}, + {0x00d7,0x0035,vcb_standard_0183}, + {0x00d8,0x01d3,vcb_standard_00c1}, + {0x00d9,0x0195,vcb_standard_007d}, + {0x00da,0x0039,vcb_standard_0222}, + {0x00db,0x0091,vcb_standard_01d1}, + {0x00dc,0x0017,vcb_standard_0116}, + {0x00dd,0x0067,vcb_standard_0196}, + {0x00de,0x00a0,vcb_standard_01c7}, + {0x00df,0x00a7,vcb_standard_0014}, + {0x00e0,0x002c,vcb_standard_0241}, + {0x00e1,0x0042,vcb_standard_00e3}, + {0x00e2,0x0035,vcb_standard_0157}, + {0x00e3,0x0035,vcb_standard_018c}, + {0x00e4,0x01d3,vcb_standard_01b7}, + {0x00e5,0x0195,vcb_standard_0112}, + {0x00e6,0x0039,vcb_standard_004d}, + {0x00e7,0x0039,vcb_standard_024e}, + {0x00e8,0x0035,vcb_standard_01d5}, + {0x00e9,0x004e,vcb_standard_0236}, + {0x00ea,0x004e,vcb_standard_0048}, + {0x00eb,0x004e,vcb_standard_0093}, + {0x00ec,0x0067,vcb_standard_0096}, + {0x00ed,0x0084,vcb_standard_0004}, + {0x00ee,0x00a7,vcb_standard_0094}, + {0x00ef,0x0042,vcb_standard_0045}, + {0x00f0,0x0042,vcb_standard_0176}, + {0x00f1,0x0035,vcb_standard_00b5}, + {0x00f2,0x0035,vcb_standard_0107}, + {0x00f3,0x01cb,vcb_standard_0198}, + {0x00f4,0x0195,vcb_standard_0033}, + {0x00f5,0x0039,vcb_standard_01c0}, + {0x00f6,0x0039,vcb_standard_0220}, + {0x00f7,0x0035,vcb_standard_023f}, + {0x00f8,0x004e,vcb_standard_0230}, + {0x00f9,0x004e,vcb_standard_00de}, + {0x00fa,0x004e,vcb_standard_009f}, + {0x00fb,0x0084,vcb_standard_00a2}, + {0x00fc,0x0084,vcb_standard_021b}, + {0x00fd,0x00a7,vcb_standard_023e}, + {0x00fe,0x0042,vcb_standard_024a}, + {0x00ff,0x0042,vcb_standard_012a}, + {0x0100,0x0035,vcb_standard_01a3}, + {0x0101,0x0035,vcb_standard_001c}, + {0x0102,0x01cc,vcb_standard_016d}, + {0x0103,0x0195,vcb_standard_0092}, + {0x0104,0x0039,vcb_standard_00a7}, + {0x0105,0x0039,vcb_standard_0214}, + {0x0106,0x0035,vcb_standard_0098}, + {0x0107,0x004e,vcb_standard_0003}, + {0x0108,0x005d,vcb_standard_003e}, + {0x0109,0x004e,vcb_standard_019b}, + {0x010a,0x004e,vcb_standard_015a}, + {0x010b,0x007c,vcb_standard_01c5}, + {0x010c,0x0036,vcb_standard_013d}, + {0x010d,0x0042,vcb_standard_00e6}, + {0x010e,0x0042,vcb_standard_000f}, + {0x010f,0x0042,vcb_standard_0237}, + {0x0110,0x0035,vcb_standard_0175}, + {0x0111,0x0195,vcb_standard_0013}, + {0x0112,0x0039,vcb_standard_0090}, + {0x0113,0x00a7,vcb_standard_024c}, + {0x0114,0x0035,vcb_standard_002a}, + {0x0115,0x004e,vcb_standard_0102}, + {0x0116,0x0067,vcb_standard_01bc}, + {0x0117,0x0017,vcb_standard_0119}, + {0x0118,0x007c,vcb_standard_0111}, + {0x0119,0x004e,vcb_standard_0156}, + {0x011a,0x00a0,vcb_standard_00c3}, + {0x011b,0x00f6,vcb_standard_00ba}, + {0x011c,0x0039,vcb_standard_00ea}, + {0x011d,0x00fa,vcb_standard_01ea}, + {0x011e,0x0035,vcb_standard_00c8}, + {0x011f,0x0042,vcb_standard_0195}, + {0x0120,0x0042,vcb_standard_01be}, + {0x0121,0x0035,vcb_standard_0171}, + {0x0122,0x0147,vcb_standard_0142}, + {0x0123,0x0039,vcb_standard_012e}, + {0x0124,0x00a7,vcb_standard_01e7}, + {0x0125,0x0035,vcb_standard_01ac}, + {0x0126,0x004e,vcb_standard_0138}, + {0x0127,0x0067,vcb_standard_008b}, + {0x0128,0x0017,vcb_standard_0105}, + {0x0129,0x0067,vcb_standard_0077}, + {0x012a,0x004e,vcb_standard_00f5}, + {0x012b,0x00a0,vcb_standard_01ed}, + {0x012c,0x00f6,vcb_standard_00af}, + {0x012d,0x0084,vcb_standard_003c}, + {0x012e,0x00fa,vcb_standard_01f3}, + {0x012f,0x0043,vcb_standard_01df}, + {0x0130,0x002c,vcb_standard_01dc}, + {0x0131,0x0035,vcb_standard_0165}, + {0x0132,0x0035,vcb_standard_0147}, + {0x0133,0x01d8,vcb_standard_01e1}, + {0x0134,0x01e1,vcb_standard_002d}, + {0x0135,0x0039,vcb_standard_00d1}, + {0x0136,0x008d,vcb_standard_0121}, + {0x0137,0x0017,vcb_standard_01ae}, + {0x0138,0x0147,vcb_standard_01b9}, + {0x0139,0x0067,vcb_standard_014c}, + {0x013a,0x0067,vcb_standard_0085}, + {0x013b,0x0024,vcb_standard_0078}, + {0x013c,0x036a,vcb_standard_0240}, + {0x013d,0x0069,vcb_standard_022f}, + {0x013e,0x0024,vcb_standard_0065}, + {0x013f,0x0036,vcb_standard_015e}, + {0x0140,0x00a4,vcb_standard_005d}, + {0x0141,0x0035,vcb_standard_01ec}, + {0x0142,0x004e,vcb_standard_019f}, + {0x0143,0x006e,vcb_standard_0181}, + {0x0144,0x0017,vcb_standard_01a7}, + {0x0145,0x0035,vcb_standard_01f9}, + {0x0146,0x0084,vcb_standard_016b}, + {0x0147,0x00f6,vcb_standard_014f}, + {0x0148,0x0042,vcb_standard_015c}, + {0x0149,0x0042,vcb_standard_0202}, + {0x014a,0x036a,vcb_standard_008c}, + {0x014b,0x0069,vcb_standard_01b4}, + {0x014c,0x0024,vcb_standard_00b4}, + {0x014d,0x0036,vcb_standard_00b0}, + {0x014e,0x00a4,vcb_standard_0247}, + {0x014f,0x0035,vcb_standard_0137}, + {0x0150,0x004e,vcb_standard_022b}, + {0x0151,0x006f,vcb_standard_000d}, + {0x0152,0x0017,vcb_standard_007f}, + {0x0153,0x0067,vcb_standard_0009}, + {0x0154,0x0084,vcb_standard_011e}, + {0x0155,0x00f6,vcb_standard_0177}, + {0x0156,0x0042,vcb_standard_01ee}, + {0x0157,0x0042,vcb_aotuv603_0157}, + {0x0158,0x001a,vcb_standard_017c}, + {0x0159,0x00b1,vcb_aotuv603_0159}, + {0x015a,0x0031,vcb_aotuv603_015a}, + {0x015b,0x007a,vcb_aotuv603_015b}, + {0x015c,0x0035,vcb_aotuv603_015c}, + {0x015d,0x004e,vcb_aotuv603_015d}, + {0x015e,0x0053,vcb_aotuv603_015e}, + {0x015f,0x0017,vcb_standard_007f}, + {0x0160,0x007c,vcb_aotuv603_0160}, + {0x0161,0x004e,vcb_aotuv603_0161}, + {0x0162,0x00a0,vcb_aotuv603_0162}, + {0x0163,0x00f6,vcb_aotuv603_0163}, + {0x0164,0x00a7,vcb_aotuv603_0164}, + {0x0165,0x00fa,vcb_aotuv603_0165}, + {0x0166,0x0036,vcb_aotuv603_0166}, + {0x0167,0x0042,vcb_aotuv603_0167}, + {0x0168,0x036a,vcb_standard_0187}, + {0x0169,0x0069,vcb_standard_022d}, + {0x016a,0x0024,vcb_standard_01f5}, + {0x016b,0x0036,vcb_standard_017f}, + {0x016c,0x00a4,vcb_standard_0217}, + {0x016d,0x0035,vcb_standard_0106}, + {0x016e,0x004e,vcb_standard_022a}, + {0x016f,0x006c,vcb_standard_0224}, + {0x0170,0x0017,vcb_standard_0095}, + {0x0171,0x0035,vcb_standard_01f9}, + {0x0172,0x0084,vcb_standard_0062}, + {0x0173,0x00f6,vcb_standard_0182}, + {0x0174,0x0042,vcb_standard_012d}, + {0x0175,0x036a,vcb_standard_01bd}, + {0x0176,0x0066,vcb_standard_021d}, + {0x0177,0x0024,vcb_standard_01f5}, + {0x0178,0x0036,vcb_standard_0030}, + {0x0179,0x00a4,vcb_standard_00d0}, + {0x017a,0x0035,vcb_standard_008a}, + {0x017b,0x004e,vcb_standard_0086}, + {0x017c,0x006f,vcb_standard_00fb}, + {0x017d,0x0017,vcb_standard_007f}, + {0x017e,0x0067,vcb_standard_0123}, + {0x017f,0x00a0,vcb_standard_01c4}, + {0x0180,0x00f6,vcb_standard_002e}, + {0x0181,0x0042,vcb_standard_002b}, + {0x0182,0x0036,vcb_standard_013f}, + {0x0183,0x036a,vcb_standard_009b}, + {0x0184,0x0085,vcb_standard_013a}, + {0x0185,0x0069,vcb_standard_018a}, + {0x0186,0x0027,vcb_standard_011a}, + {0x0187,0x0039,vcb_standard_021e}, + {0x0188,0x00a7,vcb_standard_0226}, + {0x0189,0x0035,vcb_standard_014b}, + {0x018a,0x004e,vcb_standard_020e}, + {0x018b,0x006f,vcb_standard_00ec}, + {0x018c,0x0017,vcb_standard_0012}, + {0x018d,0x0067,vcb_standard_000c}, + {0x018e,0x007c,vcb_standard_0122}, + {0x018f,0x00a7,vcb_standard_0141}, + {0x0190,0x0042,vcb_standard_00c4}, + {0x0191,0x0036,vcb_standard_0167}, + {0x0192,0x036a,vcb_standard_0139}, + {0x0193,0x0085,vcb_standard_00ad}, + {0x0194,0x0069,vcb_standard_018a}, + {0x0195,0x0027,vcb_standard_010a}, + {0x0196,0x0039,vcb_standard_01b8}, + {0x0197,0x00a7,vcb_standard_00b9}, + {0x0198,0x0035,vcb_standard_01a9}, + {0x0199,0x004e,vcb_standard_0113}, + {0x019a,0x006f,vcb_standard_01eb}, + {0x019b,0x0017,vcb_standard_0173}, + {0x019c,0x0067,vcb_standard_0204}, + {0x019d,0x00a0,vcb_standard_01ca}, + {0x019e,0x00a7,vcb_standard_016f}, + {0x019f,0x0042,vcb_standard_008d}, + {0x01a0,0x0036,vcb_standard_01dd}, + {0x01a1,0x036a,vcb_standard_009b}, + {0x01a2,0x0085,vcb_standard_001a}, + {0x01a3,0x0069,vcb_standard_01b3}, + {0x01a4,0x0027,vcb_standard_010a}, + {0x01a5,0x0039,vcb_standard_01c8}, + {0x01a6,0x00a7,vcb_standard_0235}, + {0x01a7,0x0035,vcb_standard_0143}, + {0x01a8,0x004e,vcb_standard_001b}, + {0x01a9,0x006f,vcb_standard_00a8}, + {0x01aa,0x0017,vcb_standard_01f8}, + {0x01ab,0x0067,vcb_standard_017d}, + {0x01ac,0x00a0,vcb_standard_01b0}, + {0x01ad,0x00f6,vcb_standard_0079}, + {0x01ae,0x0042,vcb_standard_01fe}, + {0x01af,0x0036,vcb_standard_0066}, + {0x01b0,0x036a,vcb_standard_0064}, + {0x01b1,0x0085,vcb_standard_01fd}, + {0x01b2,0x0069,vcb_standard_0253}, + {0x01b3,0x0027,vcb_standard_0029}, + {0x01b4,0x0039,vcb_standard_0140}, + {0x01b5,0x00a7,vcb_standard_019c}, + {0x01b6,0x0035,vcb_standard_0143}, + {0x01b7,0x004e,vcb_standard_0037}, + {0x01b8,0x006f,vcb_standard_00aa}, + {0x01b9,0x0017,vcb_standard_0173}, + {0x01ba,0x0084,vcb_standard_0099}, + {0x01bb,0x00cb,vcb_standard_0199}, + {0x01bc,0x00f6,vcb_standard_010c}, + {0x01bd,0x0042,vcb_standard_0164}, + {0x01be,0x0042,vcb_standard_0208}, + {0x01bf,0x0030,vcb_standard_0200}, + {0x01c0,0x0111,vcb_standard_0120}, + {0x01c1,0x0034,vcb_standard_00bf}, + {0x01c2,0x007d,vcb_standard_01ba}, + {0x01c3,0x0035,vcb_standard_0245}, + {0x01c4,0x004e,vcb_standard_013b}, + {0x01c5,0x0053,vcb_standard_0036}, + {0x01c6,0x0017,vcb_standard_00f0}, + {0x01c7,0x007c,vcb_standard_013c}, + {0x01c8,0x004e,vcb_standard_0250}, + {0x01c9,0x00a0,vcb_standard_00d7}, + {0x01ca,0x00f6,vcb_standard_014e}, + {0x01cb,0x0067,vcb_standard_00e4}, + {0x01cc,0x007c,vcb_standard_0146}, + {0x01cd,0x0043,vcb_standard_00a3}, + {0x01ce,0x0042,vcb_standard_0055}, + {0x01cf,0x0036,vcb_standard_0189}, + {0x01d0,0x0030,vcb_standard_0076}, + {0x01d1,0x0111,vcb_standard_00a9}, + {0x01d2,0x0034,vcb_standard_0243}, + {0x01d3,0x007d,vcb_standard_01ab}, + {0x01d4,0x0035,vcb_standard_00b1}, + {0x01d5,0x004e,vcb_standard_00f3}, + {0x01d6,0x0053,vcb_standard_017b}, + {0x01d7,0x0017,vcb_standard_00f0}, + {0x01d8,0x007c,vcb_standard_0233}, + {0x01d9,0x004e,vcb_standard_00ce}, + {0x01da,0x00a0,vcb_standard_00d4}, + {0x01db,0x00f6,vcb_standard_005a}, + {0x01dc,0x0067,vcb_standard_0180}, + {0x01dd,0x007c,vcb_standard_0239}, + {0x01de,0x0043,vcb_standard_00a3}, + {0x01df,0x0042,vcb_standard_006c}, + {0x01e0,0x0036,vcb_standard_004b}, + {0x01e1,0x0030,vcb_standard_0074}, + {0x01e2,0x0111,vcb_standard_016e}, + {0x01e3,0x0034,vcb_standard_0243}, + {0x01e4,0x007d,vcb_standard_00df}, + {0x01e5,0x0035,vcb_standard_023c}, + {0x01e6,0x004e,vcb_standard_01b1}, + {0x01e7,0x0053,vcb_standard_0213}, + {0x01e8,0x0017,vcb_standard_00f0}, + {0x01e9,0x007c,vcb_standard_01a1}, + {0x01ea,0x004e,vcb_standard_007e}, + {0x01eb,0x00a0,vcb_standard_00e8}, + {0x01ec,0x00f6,vcb_standard_0021}, + {0x01ed,0x00a7,vcb_standard_007a}, + {0x01ee,0x00fa,vcb_standard_0126}, + {0x01ef,0x0035,vcb_standard_0010}, + {0x01f0,0x0042,vcb_standard_00c6}, + {0x01f1,0x0036,vcb_standard_01c6}, + {0x01f2,0x0030,vcb_standard_012f}, + {0x01f3,0x0111,vcb_standard_0145}, + {0x01f4,0x0034,vcb_standard_01af}, + {0x01f5,0x007d,vcb_standard_020a}, + {0x01f6,0x0035,vcb_standard_0115}, + {0x01f7,0x004e,vcb_standard_0020}, + {0x01f8,0x0053,vcb_standard_024d}, + {0x01f9,0x0017,vcb_standard_0024}, + {0x01fa,0x007c,vcb_standard_00ab}, + {0x01fb,0x004e,vcb_standard_006d}, + {0x01fc,0x00a0,vcb_standard_00ed}, + {0x01fd,0x00f6,vcb_standard_01f4}, + {0x01fe,0x00cd,vcb_standard_0015}, + {0x01ff,0x00fa,vcb_standard_0160}, + {0x0200,0x0035,vcb_standard_00b7}, + {0x0201,0x0042,vcb_standard_01a0}, + {0x0202,0x0036,vcb_standard_0190}, + {0x0203,0x036a,vcb_standard_0178}, + {0x0204,0x0069,vcb_standard_01e9}, + {0x0205,0x0024,vcb_standard_0179}, + {0x0206,0x0036,vcb_standard_006f}, + {0x0207,0x00a4,vcb_standard_024b}, + {0x0208,0x0035,vcb_standard_00d8}, + {0x0209,0x004e,vcb_standard_0101}, + {0x020a,0x006f,vcb_standard_023b}, + {0x020b,0x0017,vcb_standard_007f}, + {0x020c,0x0147,vcb_standard_00ac}, + {0x020d,0x007c,vcb_standard_0255}, + {0x020e,0x00a7,vcb_standard_00e1}, + {0x020f,0x0036,vcb_standard_0088}, + {0x0210,0x0036,vcb_standard_00f8}, + {0x0211,0x036a,vcb_standard_0229}, + {0x0212,0x0069,vcb_standard_0034}, + {0x0213,0x0027,vcb_standard_0023}, + {0x0214,0x0039,vcb_standard_013e}, + {0x0215,0x00a7,vcb_standard_0188}, + {0x0216,0x0035,vcb_standard_0203}, + {0x0217,0x004e,vcb_standard_011d}, + {0x0218,0x006f,vcb_standard_00f4}, + {0x0219,0x0017,vcb_standard_00d3}, + {0x021a,0x0039,vcb_standard_01a2}, + {0x021b,0x007c,vcb_standard_0153}, + {0x021c,0x00a7,vcb_standard_0038}, + {0x021d,0x0036,vcb_standard_0017}, + {0x021e,0x002c,vcb_standard_0129}, + {0x021f,0x036a,vcb_standard_009a}, + {0x0220,0x0069,vcb_standard_010d}, + {0x0221,0x0026,vcb_standard_0223}, + {0x0222,0x0036,vcb_standard_00b6}, + {0x0223,0x00a4,vcb_standard_00b8}, + {0x0224,0x0035,vcb_standard_01ff}, + {0x0225,0x004e,vcb_standard_0000}, + {0x0226,0x006f,vcb_standard_0221}, + {0x0227,0x0017,vcb_standard_007f}, + {0x0228,0x0067,vcb_standard_0130}, + {0x0229,0x007c,vcb_standard_01cb}, + {0x022a,0x00a7,vcb_standard_01c9}, + {0x022b,0x0036,vcb_standard_0158}, + {0x022c,0x002c,vcb_standard_00bd}, + {0x022d,0x036a,vcb_standard_01db}, + {0x022e,0x0069,vcb_standard_022e}, + {0x022f,0x0027,vcb_standard_021a}, + {0x0230,0x0039,vcb_standard_0002}, + {0x0231,0x00a7,vcb_standard_011b}, + {0x0232,0x0035,vcb_standard_0100}, + {0x0233,0x004e,vcb_standard_0008}, + {0x0234,0x006f,vcb_standard_00cd}, + {0x0235,0x0017,vcb_standard_010f}, + {0x0236,0x0067,vcb_standard_0192}, + {0x0237,0x007c,vcb_standard_019d}, + {0x0238,0x00a7,vcb_standard_0131}, + {0x0239,0x0036,vcb_standard_0075}, + {0x023a,0x0036,vcb_standard_01e3}, + {0x023b,0x036a,vcb_standard_00fe}, + {0x023c,0x0069,vcb_standard_01d9}, + {0x023d,0x0024,vcb_standard_0071}, + {0x023e,0x0036,vcb_standard_0019}, + {0x023f,0x00a4,vcb_standard_001e}, + {0x0240,0x0035,vcb_standard_01ef}, + {0x0241,0x004e,vcb_standard_00f6}, + {0x0242,0x006f,vcb_standard_0252}, + {0x0243,0x0017,vcb_standard_007f}, + {0x0244,0x0147,vcb_standard_01c1}, + {0x0245,0x0067,vcb_standard_00ee}, + {0x0246,0x00a7,vcb_standard_01d7}, + {0x0247,0x0036,vcb_standard_009d}, + {0x0248,0x0036,vcb_standard_0136}, + {0x0249,0x036a,vcb_standard_01d0}, + {0x024a,0x0069,vcb_standard_0034}, + {0x024b,0x0027,vcb_standard_01da}, + {0x024c,0x0039,vcb_standard_0016}, + {0x024d,0x00a7,vcb_standard_018d}, + {0x024e,0x0035,vcb_standard_0206}, + {0x024f,0x004e,vcb_standard_01f7}, + {0x0250,0x006f,vcb_standard_01f1}, + {0x0251,0x0017,vcb_standard_010f}, + {0x0252,0x0039,vcb_standard_00cc}, + {0x0253,0x007c,vcb_standard_0197}, + {0x0254,0x00a7,vcb_standard_00bc}, + {0x0255,0x0036,vcb_standard_00cb}, }; -#endif /* _WWISE_VORBIS_DATA_H_ */ +static const int vcb_list_count_standard = sizeof(vcb_list_standard) / sizeof(vcb_list_standard[0]); +static const int vcb_list_count_aotuv603 = sizeof(vcb_list_aotuv603) / sizeof(vcb_list_aotuv603[0]); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/mio_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/mio_decoder.c new file mode 100644 index 000000000..6c62f9547 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/mio_decoder.c @@ -0,0 +1,181 @@ +#include "coding.h" +#include "../base/decode_state.h" +#include "../base/codec_info.h" +#include "libs/mio_xerisa.h" +//#include "Source/reader_get.h" +#include "../util/io_callback_sf.h" + + +/* opaque struct */ +typedef struct { + MIOFile* miofile; + MIODecoder* miodec; + MIOContext* mioctx; + + /* current buf */ + void* sbuf; + int samples; + int channels; + int fmtsize; + + io_callback_t cb; + io_priv_t io_priv; + + int start_offset; +} mio_codec_data; + + +static void free_mio(void* priv_data) { + mio_codec_data* data = priv_data; + if (!data) return; + + MIOFile_Close(data->miofile); + MIODecoder_Close(data->miodec); + MIOContext_Close(data->mioctx); + ERI_eriCloseLibrary(); + free(data); +} + +void* init_mio(STREAMFILE* sf, int* p_loop_start) { + ERI_eriInitializeLibrary(); + + mio_codec_data* data = calloc(1, sizeof(mio_codec_data)); + if (!data) return NULL; + + io_callbacks_set_sf(&data->cb, &data->io_priv); + data->io_priv.offset = 0; + data->io_priv.sf = sf; //temp, will be updated later + + data->miofile = MIOFile_Open(); + if (!data->miofile) goto fail; + + if (MIOFile_Initialize(data->miofile, &data->cb)) + goto fail; + + data->miodec = MIODecoder_Open(); + if (!data->miodec) goto fail; + + if (MIODecoder_Initialize(data->miodec, &data->miofile->mioih)) + goto fail; + + data->mioctx = MIOContext_Open(); + if (!data->mioctx) goto fail; + + data->start_offset = data->io_priv.offset; + + //TODO: lowest quality files allow 8-bit PCM + if (data->miofile->mioih.dwBitsPerSample == 8) { + goto fail; + } + + //TODO: improve get info from libs + if (p_loop_start) { + *p_loop_start = data->miofile->mioih.rewindPoint; + } + + return data; +fail: + free_mio(data); + return NULL; +} + +static bool read_frame(mio_codec_data* data, STREAMFILE* sf) { + + data->io_priv.sf = sf; + //data->io_priv.offset = ...; // persists between calls + + // read new packet into buffer + int err = MIOFile_NextPacket(data->miofile, &data->cb); + if (err == eslErrEof) + return false; + if (err) { + VGM_LOG("MIO: decode packet error\n"); + return false; + } + + // current block is keyframe and can be used to seek/decode start + // number depends on coding mode but usually 1 keyframe per 3-7 non-keyframe blocks (~32768 samples per block) + //if (data->miofile->miodh.bytFlags & MIO_LEAD_BLOCK) { + // ... + //} + + return true; +} + +static bool decode_frame(mio_codec_data* data, sbuf_t* sbuf) { + + // calculate current buffer size + void* ptrWaveBuf = MIOFile_GetCurrentWaveBuffer(data->miofile); + if (!ptrWaveBuf) { + VGM_LOG("MIO: buffer error\n"); + return false; + } + + // pass buffer to context (bitreader) + MIOContext_AttachInputFile(data->mioctx, data->miofile->packet, data->miofile->packet_size); + + // convert data into samples + if (MIODecoder_DecodeSound(data->miodec, data->mioctx, &data->miofile->miodh, ptrWaveBuf)) { + VGM_LOG("MIO: decode error\n"); + return false; + } + + //int bufferCount = MIOFile_GetCurrentWaveBufferCount(hnd->miofile); + int samples = data->miofile->miodh.dwSampleCount; + int channels = data->miofile->mioih.dwChannelCount; + sfmt_t format = SFMT_S16; + //int fmtsize = data->miofile->mioih.dwBitsPerSample / 8; + //if (fmtsize == 8) + // format = SFMT_S8; + + sbuf_init(sbuf, format, ptrWaveBuf, samples, channels); + sbuf->filled = samples; + + return true; +} + + +bool decode_frame_mio(VGMSTREAM* v) { + VGMSTREAMCHANNEL* vs = &v->ch[0]; + mio_codec_data* data = v->codec_data; + decode_state_t* ds = v->decode_state; + + bool ok = read_frame(data, vs->streamfile); + if (!ok) + return false; + + ok = decode_frame(data, &ds->sbuf); + if (!ok) + return false; + + return true; +} + +static void reset_mio(void* priv_data) { + mio_codec_data* data = priv_data; + if (!data) return; + + data->io_priv.offset = data->start_offset; + + MIOContext_FlushBuffer(data->mioctx); + MIOFile_Reset(data->miofile, &data->cb); +} + +static void seek_mio(VGMSTREAM* v, int32_t num_sample) { + mio_codec_data* data = v->codec_data; + decode_state_t* ds = v->decode_state; + if (!data) return; + + reset_mio(data); + + // (due to implicit encode delay the above is byte-exact equivalent vs a discard loop) + ds->discard = num_sample; +} + +const codec_info_t mio_decoder = { + .sample_type = SFMT_S16, + .decode_frame = decode_frame_mio, + .free = free_mio, + .reset = reset_mio, + .seek = seek_mio, +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/speex_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/speex_decoder.c index 85186f0f0..67b5ed75d 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/speex_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/speex_decoder.c @@ -1,82 +1,92 @@ #include "coding.h" -#include "coding_utils_samples.h" +#include "../base/decode_state.h" +#include "../base/codec_info.h" #ifdef VGM_USE_SPEEX #include "speex/speex.h" #define SPEEX_MAX_FRAME_SIZE 0x100 /* frame sizes are stored in a byte */ #define SPEEX_MAX_FRAME_SAMPLES 640 /* nb=160, wb/uwb=320*2 */ +#define SPEEX_MAX_CHANNELS 1 /* nb=160, wb/uwb=320*2 */ #define SPEEX_CTL_OK 0 /* -1=request unknown, -2=invalid param */ #define SPEEX_DECODE_OK 0 /* -1 for end of stream, -2 corrupt stream */ -typedef enum { EA, TORUS } type_t; +typedef enum { EA, TORUS } speex_type_t; /* opaque struct */ -struct speex_codec_data { - type_t type; +typedef struct { + speex_type_t type; /* config */ int channels; - int samples_discard; int encoder_delay; + int samples_discard; uint8_t buf[SPEEX_MAX_FRAME_SIZE]; int frame_size; - int16_t* samples; + short pbuf[SPEEX_MAX_FRAME_SAMPLES * SPEEX_MAX_CHANNELS]; int frame_samples; /* frame state */ - s16buf_t sbuf; - - void* state; + void* handle; SpeexBits bits; -}; +} speex_codec_data; -/* raw SPEEX */ -static speex_codec_data* init_speex(type_t type, int channels) { +static void free_speex(void* priv_data) { + speex_codec_data* data = priv_data; + if (!data) + return; + + if (data->handle) { + speex_decoder_destroy(data->handle); + speex_bits_destroy(&data->bits); + } + + free(data); +} + + +// raw-ish SPEEX (without Ogg) +static speex_codec_data* init_speex(speex_type_t type, int channels) { int res, sample_rate; speex_codec_data* data = NULL; + // not seen, unknown layout (known cases use xN mono decoders) + if (channels > SPEEX_MAX_CHANNELS) + return NULL; data = calloc(1, sizeof(speex_codec_data)); if (!data) goto fail; data->type = type; - - //TODO: unknown layout (known samples are mono, EA: N decoders, Torus: N too?) data->channels = channels; - if (channels != 1) - goto fail; - /* Modes: narrowband=nb, wideband=wb, ultrawideband=uwb modes. - * EASpeex seem to always use uwb so use that for now until config is needed. - * Examples normally use &speex_*_mode but export seem problematic? */ - data->state = speex_decoder_init(speex_lib_get_mode(SPEEX_MODEID_UWB)); - if (!data->state) goto fail; + // Modes: narrowband=nb, wideband=wb, ultrawideband=uwb modes. + // Known decoders seem to always use uwb so use that for now until config is needed. + // Examples normally use &speex_*_mode but exports seem problematic? + data->handle = speex_decoder_init(speex_lib_get_mode(SPEEX_MODEID_UWB)); + if (!data->handle) goto fail; speex_bits_init(&data->bits); - res = speex_decoder_ctl(data->state, SPEEX_GET_FRAME_SIZE, &data->frame_samples); + res = speex_decoder_ctl(data->handle, SPEEX_GET_FRAME_SIZE, &data->frame_samples); if (res != SPEEX_CTL_OK) goto fail; if (data->frame_samples > SPEEX_MAX_FRAME_SAMPLES) goto fail; - /* forced in EA's code, doesn't seem to affect decoding (all EAAC headers use this rate too) */ + // forced in EA's code, doesn't seem to affect decoding (all EAAC headers use this rate too) sample_rate = 32000; - res = speex_decoder_ctl(data->state, SPEEX_SET_SAMPLING_RATE, &sample_rate); + res = speex_decoder_ctl(data->handle, SPEEX_SET_SAMPLING_RATE, &sample_rate); if (res != SPEEX_CTL_OK) goto fail; /* default "latency" for EASpeex */ data->encoder_delay = 509; data->samples_discard = data->encoder_delay; - data->samples = malloc(channels * data->frame_samples * sizeof(int16_t)); - if (!data->samples) goto fail; - return data; fail: @@ -84,38 +94,27 @@ fail: return NULL; } -speex_codec_data* init_speex_ea(int channels) { +void* init_speex_ea(int channels) { return init_speex(EA, channels); } -speex_codec_data* init_speex_torus(int channels) { +void* init_speex_torus(int channels) { return init_speex(TORUS, channels); } static int decode_frame(speex_codec_data* data) { - int res; - - data->sbuf.samples = data->samples; - data->sbuf.channels = 1; - data->sbuf.filled = 0; - speex_bits_read_from(&data->bits, (const char*)data->buf, data->frame_size); - res = speex_decode_int(data->state, &data->bits, data->sbuf.samples); - if (res != SPEEX_DECODE_OK) goto fail; + // speex_decode() returns samples (F32), but internally speex decodes into pcm16 + int res = speex_decode_int(data->handle, &data->bits, data->pbuf); + if (res != SPEEX_DECODE_OK) return -1; - data->sbuf.filled = data->frame_samples; - - return 1; -fail: - return 0; + return data->frame_samples; } -/* for simple style speex (seen in EA-Speex and libspeex's sampledec.c) */ -static int read_frame(speex_codec_data* data, VGMSTREAMCHANNEL* stream) { - size_t bytes; - +// for simple style speex (seen in EA-Speex and libspeex's sampledec.c) +static bool read_frame(speex_codec_data* data, VGMSTREAMCHANNEL* stream) { switch(data->type) { case EA: data->frame_size = read_u8(stream->offset, stream->streamfile); @@ -128,87 +127,71 @@ static int read_frame(speex_codec_data* data, VGMSTREAMCHANNEL* stream) { default: break; } - if (data->frame_size == 0) goto fail; + if (data->frame_size == 0) + return false; - bytes = read_streamfile(data->buf, stream->offset, data->frame_size, stream->streamfile); + size_t bytes = read_streamfile(data->buf, stream->offset, data->frame_size, stream->streamfile); stream->offset += data->frame_size; - if (bytes != data->frame_size) goto fail; - return 1; -fail: - return 0; + if (bytes != data->frame_size) + return false; + + return true; } -void decode_speex(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do) { - VGMSTREAMCHANNEL* stream = &vgmstream->ch[0]; - speex_codec_data* data = vgmstream->codec_data; - int ok; +static bool decode_frame_speex(VGMSTREAM* v) { + VGMSTREAMCHANNEL* stream = &v->ch[0]; + speex_codec_data* data = v->codec_data; + decode_state_t* ds = v->decode_state; + bool ok = read_frame(data, stream); + if (!ok) return false; - while (samples_to_do > 0) { - s16buf_t* sbuf = &data->sbuf; + int samples = decode_frame(data); + if (samples < 0) return false; - if (sbuf->filled <= 0) { - ok = read_frame(data, stream); - if (!ok) goto fail; + sbuf_init_s16(&ds->sbuf, data->pbuf, samples, data->channels); + ds->sbuf.filled = ds->sbuf.samples; - ok = decode_frame(data); - if (!ok) goto fail; - } - - if (data->samples_discard) - s16buf_discard(&outbuf, sbuf, &data->samples_discard); - else - s16buf_consume(&outbuf, sbuf, &samples_to_do); + if (data->samples_discard) { + ds->discard += data->samples_discard; + data->samples_discard = 0; } - return; - -fail: - /* on error just put some 0 samples */ - VGM_LOG("SPEEX: decode fail at %x, missing %i samples\n", (uint32_t)stream->offset, samples_to_do); - s16buf_silence(&outbuf, &samples_to_do, data->channels); + return true; } - -void reset_speex(speex_codec_data* data) { - int res; - - if (!data) return; - - res = speex_decoder_ctl(data->state, SPEEX_RESET_STATE, NULL); - if (res != SPEEX_CTL_OK) goto fail; - - data->sbuf.filled = 0; - data->samples_discard = data->encoder_delay; - - return; -fail: - return; /* ? */ -} - -void seek_speex(VGMSTREAM* vgmstream, int32_t num_sample) { - speex_codec_data* data = vgmstream->codec_data; - if (!data) return; - - reset_speex(data); - data->samples_discard += num_sample; - - /* loop offsets are set during decode; force them to stream start so discard works */ - if (vgmstream->loop_ch) - vgmstream->loop_ch[0].offset = vgmstream->loop_ch[0].channel_start_offset; -} - -void free_speex(speex_codec_data* data) { +static void reset_speex(void* priv_data) { + speex_codec_data* data = priv_data; if (!data) return; - if (data->state) { - speex_decoder_destroy(data->state); - speex_bits_destroy(&data->bits); - } + int res = speex_decoder_ctl(data->handle, SPEEX_RESET_STATE, NULL); + if (res != SPEEX_CTL_OK) + return; //??? - free(data->samples); - free(data); + data->samples_discard = data->encoder_delay; } + +static void seek_speex(VGMSTREAM* v, int32_t num_sample) { + decode_state_t* ds = v->decode_state; + speex_codec_data* data = v->codec_data; + if (!data) return; + + reset_speex(data); + + ds->discard = num_sample; + + // loop offsets are set during decode; force them to stream start so discard works + if (v->loop_ch) + v->loop_ch[0].offset = v->loop_ch[0].channel_start_offset; +} + +const codec_info_t speex_decoder = { + .sample_type = SFMT_S16, + .decode_frame = decode_frame_speex, + .free = free_speex, + .reset = reset_speex, + .seek = seek_speex, +}; #endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/tac_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/tac_decoder.c index ad0c21a18..63cdee892 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/tac_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/tac_decoder.c @@ -1,34 +1,31 @@ #include "coding.h" -#include "coding_utils_samples.h" -#if VGM_TEST_DECODER +#include "../base/codec_info.h" #include "../base/decode_state.h" -#endif #include "libs/tac_lib.h" /* opaque struct */ -struct tac_codec_data { - /* config */ - int channels; - int samples_discard; - int encoder_delay; - +typedef struct { uint8_t buf[TAC_BLOCK_SIZE]; bool feed_block; off_t offset; - int16_t samples[TAC_FRAME_SAMPLES * TAC_CHANNELS]; - int frame_samples; - - /* frame state */ - s16buf_t sbuf; + float fbuf[TAC_FRAME_SAMPLES * TAC_CHANNELS]; + int discard; void* handle; -}; +} tac_codec_data; +static void free_tac(void* priv_data) { + tac_codec_data* data = priv_data; + if (!data) + return; -/* raw SPEEX */ -tac_codec_data* init_tac(STREAMFILE* sf) { + tac_free(data->handle); + free(data); +} + +void* init_tac(STREAMFILE* sf) { tac_codec_data* data = NULL; int bytes; @@ -40,13 +37,8 @@ tac_codec_data* init_tac(STREAMFILE* sf) { data->handle = tac_init(data->buf, bytes); if (!data->handle) goto fail; - data->feed_block = false; /* ok to use current block */ + data->feed_block = false; // ok to use first block data->offset = bytes; - data->channels = TAC_CHANNELS; - data->frame_samples = TAC_FRAME_SAMPLES; - - data->encoder_delay = 0; - data->samples_discard = data->encoder_delay; return data; fail: @@ -55,130 +47,86 @@ fail: } -static bool decode_frame(tac_codec_data* data) { - int err; - - data->sbuf.samples = data->samples; - data->sbuf.channels = data->channels; - data->sbuf.filled = 0; - - err = tac_decode_frame(data->handle, data->buf); +static int decode_frame(tac_codec_data* data) { + int err = tac_decode_frame(data->handle, data->buf); if (err == TAC_PROCESS_NEXT_BLOCK) { data->feed_block = true; - return true; + return 0; } if (err == TAC_PROCESS_DONE) { VGM_LOG("TAC: process done (EOF) %i\n", err); - return false; /* shouldn't reach this */ + return -1; // shouldn't reach this } if (err != TAC_PROCESS_OK) { VGM_LOG("TAC: process error %i\n", err); - return false; + return -1; } - - tac_get_samples_pcm16(data->handle, data->sbuf.samples); - data->sbuf.filled = data->frame_samples; - - return true; + tac_get_samples_float(data->handle, data->fbuf); + return TAC_FRAME_SAMPLES; } static bool read_frame(tac_codec_data* data, STREAMFILE* sf) { - /* new block must be read only when signaled by lib */ + // new block must be read only when signaled by lib (a single block has N frames) if (!data->feed_block) return true; int bytes = read_streamfile(data->buf, data->offset, sizeof(data->buf), sf); data->offset += bytes; data->feed_block = 0; - if (bytes <= 0) return false; /* can read less that buf near EOF */ + if (bytes <= 0) return false; // will read less that buf near EOF return true; } -void decode_tac(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do) { - VGMSTREAMCHANNEL* stream = &vgmstream->ch[0]; - tac_codec_data* data = vgmstream->codec_data; - bool ok; +bool decode_frame_tac(VGMSTREAM* v) { + VGMSTREAMCHANNEL* stream = &v->ch[0]; + tac_codec_data* data = v->codec_data; + bool ok = read_frame(data, stream->streamfile); + if (!ok) + return false; - while (samples_to_do > 0) { - s16buf_t* sbuf = &data->sbuf; + decode_state_t* ds = v->decode_state; - if (sbuf->filled <= 0) { - ok = read_frame(data, stream->streamfile); - if (!ok) goto fail; + int samples = decode_frame(data); + if (samples < 0) + return false; - ok = decode_frame(data); - if (!ok) goto fail; - } - - if (data->samples_discard) - s16buf_discard(&outbuf, sbuf, &data->samples_discard); - else - s16buf_consume(&outbuf, sbuf, &samples_to_do); - } - - return; - -fail: - /* on error just put some 0 samples */ - VGM_LOG("TAC: decode fail at %x, missing %i samples\n", (uint32_t)data->offset, samples_to_do); - s16buf_silence(&outbuf, &samples_to_do, data->sbuf.channels); -} - -#if VGM_TEST_DECODER -bool decode_tac_frame(VGMSTREAM* vgmstream) { - VGMSTREAMCHANNEL* stream = &vgmstream->ch[0]; - tac_codec_data* data = vgmstream->codec_data; - decode_state_t* ds = vgmstream->decode_state; - - sbuf_init_s16(&ds->sbuf, data->samples, TAC_FRAME_SAMPLES, vgmstream->channels); - - bool ok; - - ok = read_frame(data, stream->streamfile); - if (!ok) return false; - - ok = decode_frame(data); - if (!ok) return false; - - ds->sbuf.filled = TAC_FRAME_SAMPLES; //TODO call sbuf_fill(samples); + sbuf_init_f32(&ds->sbuf, data->fbuf, samples, v->channels); + ds->sbuf.filled = samples; // copy and let decoder handle - if (data->samples_discard) { - ds->discard = data->samples_discard; - data->samples_discard = 0; + if (data->discard) { + ds->discard += data->discard; + data->discard = 0; } return true; } -#endif - -void reset_tac(tac_codec_data* data) { +static void reset_tac(void* priv_data) { + tac_codec_data* data = priv_data; if (!data) return; tac_reset(data->handle); data->feed_block = true; data->offset = 0x00; - data->sbuf.filled = 0; - data->samples_discard = data->encoder_delay; } -void seek_tac(tac_codec_data* data, int32_t num_sample) { +static void seek_tac(VGMSTREAM* v, int32_t num_sample) { + tac_codec_data* data = v->codec_data; int32_t loop_sample; - const tac_header_t* hdr; if (!data) return; - hdr = tac_get_header(data->handle); + const tac_header_t* hdr = tac_get_header(data->handle); loop_sample = (hdr->loop_frame - 1) * TAC_FRAME_SAMPLES + hdr->loop_discard; if (loop_sample == num_sample) { @@ -186,23 +134,22 @@ void seek_tac(tac_codec_data* data, int32_t num_sample) { data->feed_block = true; data->offset = hdr->loop_offset; - data->sbuf.filled = 0; - data->samples_discard = hdr->loop_discard; + data->discard = hdr->loop_discard; } else { tac_reset(data->handle); data->feed_block = true; data->offset = 0x00; - data->sbuf.filled = 0; - data->samples_discard = num_sample; + data->discard = num_sample; } } -void free_tac(tac_codec_data* data) { - if (!data) - return; - - tac_free(data->handle); - free(data); -} +const codec_info_t tac_decoder = { + .sample_type = SFMT_F32, + .decode_frame = decode_frame_tac, + .free = free_tac, + .reset = reset_tac, + .seek = seek_tac, + //frame_samples = 1024, +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/ubi_mpeg_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/ubi_mpeg_decoder.c new file mode 100644 index 000000000..0e7ffd04f --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/ubi_mpeg_decoder.c @@ -0,0 +1,207 @@ + +#include "coding.h" +#include "../base/decode_state.h" +#include "../base/codec_info.h" +#include "libs/ubi_mpeg_helpers.h" + +#define MINIMP3_FLOAT_OUTPUT +//#define MINIMP3_NO_SIMD +#define MINIMP3_IMPLEMENTATION +#include "libs/minimp3.h" + +//TODO: needed for smoother segments, but not sure if block samples counts this +// (usually blocks' frames have more samples than defined but not always; maybe should output delay's samples at EOF) +#define UBIMPEG_INITIAL_DISCARD 480 //observed +#define UBIMPEG_SAMPLES_PER_FRAME 1152 +#define UBIMPEG_MAX_CHANNELS 2 +#define UBIMPEG_INPUT_LIMIT 0x400 //enough for 2 stereo + mono frames + + +/* opaque struct */ +typedef struct { + bool is_sur2; + bool is_sur1; + + bitstream_t is; + mp3dec_t mp3d; + mp3dec_frame_info_t info; + + uint8_t ibuf[0x2000]; // big enough to limit re-reading + uint8_t obuf[0x400]; // at least ~300 + uint8_t rbuf[0x400]; // at least 300 * 2 + float fbuf[UBIMPEG_SAMPLES_PER_FRAME * UBIMPEG_MAX_CHANNELS]; + + int initial_discard; +} ubimpeg_codec_data; + + +static void free_ubimpeg(void* priv_data) { + ubimpeg_codec_data* data = priv_data; + if (!data) return; + + free(data); +} + +void* init_ubimpeg(uint32_t mode) { + ubimpeg_codec_data* data = NULL; + + data = calloc(1, sizeof(ubimpeg_codec_data)); + if (!data) goto fail; + + // data may start with 'surround mode' flag, otherwise a regular frame with a Ubi-MPEG sync + if (mode == get_id32be("2RUS")) { + data->is_sur2 = true; + } + else if (mode == get_id32be("1RUS")) { + data->is_sur1 = true; + VGM_LOG("UBI-MPEG: 1RUS found\n"); + goto fail; + } + else if ((mode >> 20) != 0xFFF) { + VGM_LOG("UBI-MPEG: unknown format %x\n", mode); + goto fail; + } + + data->initial_discard = UBIMPEG_INITIAL_DISCARD; + + bm_setup(&data->is, data->ibuf, 0); + mp3dec_init(&data->mp3d); + + return data; +fail: + free_ubimpeg(data); + return NULL; +} + + +// Ubi-MPEG is made to keep all data in memory, since frames go one after another. +// Here we ensure that buf is filled enough for the reader, and move data around if needed +// (maybe should make a circular buf bitreader but seems a bit too particular). +static bool setup_input_bitstream(VGMSTREAM* v) { + ubimpeg_codec_data* data = v->codec_data; + VGMSTREAMCHANNEL* vs = &v->ch[0]; + + //TODO maybe should clamp to block size, but overreads should result in sync error as new blocks start with samples (technically could match) + + // on init should read buf size + int read_size = sizeof(data->ibuf); + int pos = 0; + + if (data->is.bufsize > 0) { + uint32_t ibuf_offset = bm_pos(&data->is) / 8; + uint32_t ibuf_left = read_size - ibuf_offset; + + // move buf to beginning + setup to fill it fully + if (ibuf_left < UBIMPEG_INPUT_LIMIT) { + int ibuf_bitpos = bm_pos(&data->is) % 8; + + memmove(data->ibuf, data->ibuf + ibuf_offset, ibuf_left); + bm_setup(&data->is, data->ibuf, ibuf_left); + bm_skip(&data->is, ibuf_bitpos); + + pos = ibuf_left; + read_size -= ibuf_left; + } + else { + // enough data in buf + return true; + } + } + + int bytes = read_streamfile(data->ibuf + pos, vs->offset, read_size, vs->streamfile); + + bm_fill(&data->is, bytes); + vs->offset += bytes; + + return true; +} + +static int read_frame_ubimpeg(VGMSTREAM* v) { + ubimpeg_codec_data* data = v->codec_data; + + // prepare and read data for the bitstream, if needed + setup_input_bitstream(v) ; + + // convert input data into 1 regular mpeg frame + bitstream_t os = {0}; + bm_setup(&os, data->obuf, sizeof(data->obuf)); + + int obuf_size = ubimpeg_transform_frame(&data->is, &os); + if (!obuf_size) return 0; + + // TODO: handle correctly + // Ubi-MPEG (MP2) mixes 1 stereo frame + 1 mono frame coefs before synth to (presumably) emulate M/S stereo from MP3. + // Ignoring the mono frame usually sounds ok enough (as good as 160kbps JS MP2 by 1998 encoders can sound) but + // sometimes stereo frames only have data for left channel and need the mono frame to complete R. + if (data->is_sur1 || data->is_sur2) { + // consume next frame (should be mono) in a separate buffer as otherwise confuses minimp3 + bm_setup(&os, data->rbuf, sizeof(data->rbuf)); + ubimpeg_transform_frame(&data->is, &os); + } + + return obuf_size; +} + +bool decode_frame_ubimpeg(VGMSTREAM* v) { + int obuf_size = read_frame_ubimpeg(v); + if (!obuf_size) { + return false; + } + + decode_state_t* ds = v->decode_state; + ubimpeg_codec_data* data = v->codec_data; + + int samples = mp3dec_decode_frame(&data->mp3d, data->obuf, obuf_size, data->fbuf, &data->info); + if (samples < 0) { + return false; + } + + // TODO: voice .bnm + Ubi-MPEG sets 2 channels but uses mono frames (no xRUS). Possibly the MPEG engine + // only handle stereo, maybe should dupe L>R. sbuf copying handles this correctly. + // todo fix + if (data->info.channels != v->channels) { + VGM_LOG_ONCE("UBI MPEG: mismatched channels %i vs %i\n", data->info.channels, v->channels); + //return false; + } + + sbuf_init_flt(&ds->sbuf, data->fbuf, samples, data->info.channels); + ds->sbuf.filled = samples; + + if (data->initial_discard) { + ds->discard += data->initial_discard; + data->initial_discard = 0; + } + + return true; +} + +static void reset_ubimpeg(void* priv_data) { + ubimpeg_codec_data* data = priv_data; + if (!data) return; + + data->initial_discard = UBIMPEG_INITIAL_DISCARD; + + bm_setup(&data->is, data->ibuf, 0); + mp3dec_init(&data->mp3d); +} + +static void seek_ubimpeg(VGMSTREAM* v, int32_t num_sample) { + ubimpeg_codec_data* data = v->codec_data; + decode_state_t* ds = v->decode_state; + if (!data) return; + + reset_ubimpeg(data); + + ds->discard = num_sample; + if (v->loop_ch) { + v->loop_ch[0].offset = v->loop_ch[0].channel_start_offset; + } +} + +const codec_info_t ubimpeg_decoder = { + .sample_type = SFMT_FLT, + .decode_frame = decode_frame_ubimpeg, + .free = free_ubimpeg, + .reset = reset_ubimpeg, + .seek = seek_ubimpeg, +}; diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.c b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.c index 3514682f2..ae071954b 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.c @@ -1,12 +1,31 @@ #include +#include "../base/decode_state.h" +#include "../base/sbuf.h" +#include "../base/codec_info.h" #include "coding.h" #include "vorbis_custom_decoder.h" #ifdef VGM_USE_VORBIS -#define VORBIS_DEFAULT_BUFFER_SIZE 0x8000 /* should be at least the size of the setup header, ~0x2000 */ +#define VORBIS_CALL_SAMPLES 1024 // allowed frame 'blocksizes' range from 2^6 ~ 2^13 (64 ~ 8192) but we can return partial samples +#define VORBIS_DEFAULT_BUFFER_SIZE 0x8000 // at least the size of the setup header, ~0x2000 -static void pcm_convert_float_to_16(sample_t* outbuf, int samples_to_do, float** pcm, int channels); + +void free_vorbis_custom(void* priv_data) { + vorbis_custom_codec_data* data = priv_data; + if (!data) + return; + + /* internal decoder cleanup */ + vorbis_block_clear(&data->vb); + vorbis_dsp_clear(&data->vd); + vorbis_comment_clear(&data->vc); + vorbis_info_clear(&data->vi); + + free(data->buffer); + free(data->fbuf); + free(data); +} /** * Inits a vorbis stream of some custom variety. @@ -51,9 +70,11 @@ vorbis_custom_codec_data* init_vorbis_custom(STREAMFILE* sf, off_t start_offset, case VORBIS_SK: ok = vorbis_custom_setup_init_sk(sf, start_offset, data); break; case VORBIS_VID1: ok = vorbis_custom_setup_init_vid1(sf, start_offset, data); break; case VORBIS_AWC: ok = vorbis_custom_setup_init_awc(sf, start_offset, data); break; - default: goto fail; + case VORBIS_OOR: ok = vorbis_custom_setup_init_oor(sf, start_offset, data); break; + default: ok = false; break; } - if(!ok) goto fail; + if(!ok) + goto fail; data->op.b_o_s = 0; /* end of fake headers */ @@ -63,6 +84,9 @@ vorbis_custom_codec_data* init_vorbis_custom(STREAMFILE* sf, off_t start_offset, /* write output */ + config->channels = data->config.channels; + config->sample_rate = data->config.sample_rate; + config->last_granule = data->config.last_granule; config->data_start_offset = data->config.data_start_offset; if (!data->config.stream_end) { @@ -77,154 +101,175 @@ fail: return NULL; } -/* Decodes Vorbis packets into a libvorbis sample buffer, and copies them to outbuf */ -void decode_vorbis_custom(VGMSTREAM* vgmstream, sample_t* outbuf, int32_t samples_to_do, int channels) { - VGMSTREAMCHANNEL *stream = &vgmstream->ch[0]; - vorbis_custom_codec_data* data = vgmstream->codec_data; - //data->op.packet = data->buffer;/* implicit from init */ - int samples_done = 0; +static bool read_packet(VGMSTREAM* v) { + VGMSTREAMCHANNEL* stream = &v->ch[0]; + vorbis_custom_codec_data* data = v->codec_data; - while (samples_done < samples_to_do) { + // extra EOF check + // (may need to drain samples? not a thing in vorbis due to packet types?) + if (stream->offset >= data->config.stream_end) + return false; - if (data->samples_full) { /* read more samples */ - int samples_to_get; - float **pcm; - - /* get PCM samples from libvorbis buffers */ - samples_to_get = vorbis_synthesis_pcmout(&data->vd, &pcm); - if (!samples_to_get) { - data->samples_full = 0; /* request more if empty*/ - continue; - } - - if (data->samples_to_discard) { - /* discard samples for looping */ - if (samples_to_get > data->samples_to_discard) - samples_to_get = data->samples_to_discard; - data->samples_to_discard -= samples_to_get; - } - else { - /* get max samples and convert from Vorbis float pcm to 16bit pcm */ - if (samples_to_get > samples_to_do - samples_done) - samples_to_get = samples_to_do - samples_done; - pcm_convert_float_to_16(outbuf + samples_done * channels, samples_to_get, pcm, data->vi.channels); - samples_done += samples_to_get; - } - - /* mark consumed samples from the buffer - * (non-consumed samples are returned in next vorbis_synthesis_pcmout calls) */ - vorbis_synthesis_read(&data->vd, samples_to_get); - } - else { /* read more data */ - int ok, rc; - - /* extra EOF check */ - if (stream->offset >= data->config.stream_end) { - /* may need to drain samples? (not a thing in vorbis due to packet types?) */ - goto decode_fail; - } - - /* not actually needed, but feels nicer */ - data->op.granulepos += samples_to_do; /* can be changed next if desired */ - data->op.packetno++; - - /* read/transform data into the ogg_packet buffer and advance offsets */ - switch(data->type) { - case VORBIS_FSB: ok = vorbis_custom_parse_packet_fsb(stream, data); break; - case VORBIS_WWISE: ok = vorbis_custom_parse_packet_wwise(stream, data); break; - case VORBIS_OGL: ok = vorbis_custom_parse_packet_ogl(stream, data); break; - case VORBIS_SK: ok = vorbis_custom_parse_packet_sk(stream, data); break; - case VORBIS_VID1: ok = vorbis_custom_parse_packet_vid1(stream, data); break; - case VORBIS_AWC: ok = vorbis_custom_parse_packet_awc(stream, data); break; - default: goto decode_fail; - } - if(!ok) { - goto decode_fail; - } - - - /* parse the fake ogg packet into a logical vorbis block */ - rc = vorbis_synthesis(&data->vb,&data->op); - if (rc == OV_ENOTAUDIO) { - VGM_LOG("Vorbis: not an audio packet (size=0x%x) @ %x\n",(size_t)data->op.bytes,(uint32_t)stream->offset); - //VGM_LOGB(data->op.packet, (size_t)data->op.bytes,0); - continue; /* rarely happens, seems ok? */ - } else if (rc != 0) goto decode_fail; - - /* finally decode the logical block into samples */ - rc = vorbis_synthesis_blockin(&data->vd,&data->vb); - if (rc != 0) goto decode_fail; /* ? */ - - - data->samples_full = 1; - } + // read/transform data into the ogg_packet buffer and advance offsets + bool ok; + switch(data->type) { + case VORBIS_FSB: ok = vorbis_custom_parse_packet_fsb(stream, data); break; + case VORBIS_WWISE: ok = vorbis_custom_parse_packet_wwise(stream, data); break; + case VORBIS_OGL: ok = vorbis_custom_parse_packet_ogl(stream, data); break; + case VORBIS_SK: ok = vorbis_custom_parse_packet_sk(stream, data); break; + case VORBIS_VID1: ok = vorbis_custom_parse_packet_vid1(stream, data); break; + case VORBIS_AWC: ok = vorbis_custom_parse_packet_awc(stream, data); break; + case VORBIS_OOR: ok = vorbis_custom_parse_packet_oor(stream, data); break; + default: ok = false; break; } - return; - -decode_fail: - /* on error just put some 0 samples */ - VGM_LOG("VORBIS: decode fail at %x, missing %i samples\n", (uint32_t)stream->offset, (samples_to_do - samples_done)); - memset(outbuf + samples_done * channels, 0, (samples_to_do - samples_done) * channels * sizeof(sample_t)); + return ok; } -/* converts from internal Vorbis format to standard PCM (mostly from Xiph's decoder_example.c) */ -static void pcm_convert_float_to_16(sample_t* outbuf, int samples_to_do, float** pcm, int channels) { - int ch, s; - sample_t* ptr; - float* channel; +static bool decode_frame(VGMSTREAM* v) { + decode_state_t* ds = v->decode_state; + vorbis_custom_codec_data* data = v->codec_data; + int rc; - /* convert float PCM (multichannel float array, with pcm[0]=ch0, pcm[1]=ch1, pcm[2]=ch0, etc) - * to 16 bit signed PCM ints (host order) and interleave + fix clipping */ - for (ch = 0; ch < channels; ch++) { - /* channels should be in standard order unlike Ogg Vorbis (at least in FSB) */ - ptr = outbuf + ch; - channel = pcm[ch]; - for (s = 0; s < samples_to_do; s++) { - int val = (int)floor(channel[s] * 32767.0f + 0.5f); - if (val > 32767) val = 32767; - else if (val < -32768) val = -32768; - - *ptr = val; - ptr += channels; - } + // parse the fake ogg packet into a logical vorbis block + rc = vorbis_synthesis(&data->vb, &data->op); + if (rc == OV_ENOTAUDIO) { + // rarely happens, seems ok? + VGM_LOG("Vorbis: not an audio packet (size=0x%x) @ %x\n", (size_t)data->op.bytes, (uint32_t)v->ch[0].offset); + ds->sbuf.filled = 0; + return true; + } + else if (rc != 0) { + return false; } + + // finally decode the logical vorbis block into samples + rc = vorbis_synthesis_blockin(&data->vd,&data->vb); + if (rc != 0) return false; /* ? */ + + data->op.packetno++; + + return true; } -/* ********************************************** */ +static int copy_samples(VGMSTREAM* v) { + decode_state_t* ds = v->decode_state; + vorbis_custom_codec_data* data = v->codec_data; -void free_vorbis_custom(vorbis_custom_codec_data* data) { - if (!data) - return; + //TODO: helper? + //TODO: maybe should init in init_vorbis_custom but right now not all vorbises pass channels + if (data->fbuf == NULL) { + data->fbuf = malloc(VORBIS_CALL_SAMPLES * sizeof(float) * v->channels); + if (!data->fbuf) return -1; + } - /* internal decoder cleanup */ - vorbis_block_clear(&data->vb); - vorbis_dsp_clear(&data->vd); - vorbis_comment_clear(&data->vc); - vorbis_info_clear(&data->vi); + // get PCM samples from libvorbis buffers + float** pcm; + int samples = vorbis_synthesis_pcmout(&data->vd, &pcm); + if (samples > VORBIS_CALL_SAMPLES) + samples = VORBIS_CALL_SAMPLES; - free(data->buffer); - free(data); + // no more samples in vorbis's buffer + if (samples == 0) + return 0; + + // vorbis's planar buffer to interleaved buffer + sbuf_init_flt(&ds->sbuf, data->fbuf, samples, v->channels); + ds->sbuf.filled = samples; + sbuf_interleave(&ds->sbuf, pcm); + + // mark consumed samples from the buffer + // (non-consumed samples are returned in next vorbis_synthesis_pcmout calls) + vorbis_synthesis_read(&data->vd, samples); + + // TODO: useful? + //data->op.granulepos += samples; // not actually needed + + if (data->current_discard) { + ds->discard += data->current_discard; + data->current_discard = 0; + } + + return samples; } -void reset_vorbis_custom(VGMSTREAM* vgmstream) { - vorbis_custom_codec_data *data = vgmstream->codec_data; +static bool decode_frame_vorbis_custom(VGMSTREAM* v) { + // vorbis may hold samples, return them first + int ret = copy_samples(v); + if (ret < 0) return false; + if (ret > 0) return true; + + // handle new frame + bool read = read_packet(v); + if (!read) + return false; + + // decode current frame + bool decoded = decode_frame(v); + if (!decoded) + return false; + + // samples will be copied next call + return true; +} + +static void reset_vorbis_custom(void* priv_data) { + vorbis_custom_codec_data* data = priv_data; if (!data) return; vorbis_synthesis_restart(&data->vd); - data->samples_to_discard = 0; + data->current_discard = 0; + data->current_packet = 0; + data->packet_count = 0; + data->flags = 0; } -void seek_vorbis_custom(VGMSTREAM* vgmstream, int32_t num_sample) { - vorbis_custom_codec_data *data = vgmstream->codec_data; +static void seek_vorbis_custom(VGMSTREAM* v, int32_t num_sample) { + vorbis_custom_codec_data* data = v->codec_data; if (!data) return; /* Seeking is provided by the Ogg layer, so with custom vorbis we'd need seek tables instead. * To avoid having to parse different formats we'll just discard until the expected sample */ - vorbis_synthesis_restart(&data->vd); - data->samples_to_discard = num_sample; - if (vgmstream->loop_ch) - vgmstream->loop_ch[0].offset = vgmstream->loop_ch[0].channel_start_offset; + reset_vorbis_custom(data); + data->current_discard = num_sample; + if (v->loop_ch) + v->loop_ch[0].offset = v->loop_ch[0].channel_start_offset; } +int32_t vorbis_custom_get_samples(VGMSTREAM* v) { + vorbis_custom_codec_data* data = v->codec_data; + + //TODO improve (would need to change a bunch) + VGMSTREAMCHANNEL* stream = &v->ch[0]; + uint32_t temp = stream->offset; + + // read packets + sum samples (info from revorb: https://yirkha.fud.cz/progs/foobar2000/revorb.cpp) + int prev_blocksize = 0; + int32_t samples = 0; + while (true) { + bool ok = read_packet(v); + if (!ok || data->op.bytes == 0) //EOF probably + break; + + // get blocksize (somewhat similar to samples-per-frame, but must be adjusted) + int blocksize = vorbis_packet_blocksize(&data->vi, &data->op); + if (prev_blocksize) + samples += (prev_blocksize + blocksize) / 4; + prev_blocksize = blocksize; + } + + reset_vorbis_custom(data); + stream->offset = temp; + + return samples; +} + +const codec_info_t vorbis_custom_decoder = { + .sample_type = SFMT_FLT, + .decode_frame = decode_frame_vorbis_custom, + .free = free_vorbis_custom, + .reset = reset_vorbis_custom, + .seek = seek_vorbis_custom, +}; + #endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.h b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.h index d7a7f9e4c..afb43a8ba 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.h +++ b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_decoder.h @@ -8,6 +8,8 @@ #ifdef VGM_USE_VORBIS #include +#define MAX_PACKET_SIZES 160 // max 256 in theory, observed max is ~65, rarely ~130 in + /* custom Vorbis without Ogg layer */ struct vorbis_custom_codec_data { vorbis_info vi; /* stream settings */ @@ -18,24 +20,28 @@ struct vorbis_custom_codec_data { uint8_t* buffer; /* internal raw data buffer */ size_t buffer_size; + float* fbuf; - size_t samples_to_discard; /* for looping purposes */ - int samples_full; /* flag, samples available in vorbis buffers */ + int current_discard; /* for looping purposes */ vorbis_custom_t type; /* Vorbis subtype */ vorbis_custom_config config; /* config depending on the mode */ + /* Wwise Vorbis: saved data to reconstruct modified packets */ uint8_t mode_blockflag[64+1]; /* max 6b+1; flags 'n stuff */ int mode_bits; /* bits to store mode_number */ uint8_t prev_blockflag; /* blockflag in the last decoded packet */ - /* Ogg-style Vorbis: packet within a page */ + + /* OOR/OggS: current page info (state) */ int current_packet; + int packet_count; + uint16_t packet_size[MAX_PACKET_SIZES]; + uint8_t flags; + /* reference for page/blocks */ off_t block_offset; size_t block_size; - - int prev_block_samples; /* count for optimization */ }; @@ -45,6 +51,7 @@ int vorbis_custom_setup_init_ogl(STREAMFILE* sf, off_t start_offset, vorbis_cust int vorbis_custom_setup_init_sk(STREAMFILE* sf, off_t start_offset, vorbis_custom_codec_data* data); int vorbis_custom_setup_init_vid1(STREAMFILE* sf, off_t start_offset, vorbis_custom_codec_data* data); int vorbis_custom_setup_init_awc(STREAMFILE* sf, off_t start_offset, vorbis_custom_codec_data* data); +int vorbis_custom_setup_init_oor(STREAMFILE* sf, off_t start_offset, vorbis_custom_codec_data* data); int vorbis_custom_parse_packet_fsb(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data); int vorbis_custom_parse_packet_wwise(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data); @@ -52,12 +59,15 @@ int vorbis_custom_parse_packet_ogl(VGMSTREAMCHANNEL* stream, vorbis_custom_codec int vorbis_custom_parse_packet_sk(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data); int vorbis_custom_parse_packet_vid1(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data); int vorbis_custom_parse_packet_awc(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data); +int vorbis_custom_parse_packet_oor(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data); /* other utils to make/parse vorbis stuff */ int build_header_comment(uint8_t* buf, int bufsize); int build_header_identification(uint8_t* buf, int bufsize, vorbis_custom_config* cfg); -void load_blocksizes(vorbis_custom_config* cfg, int blocksize_short, int blocksize_long); +int vorbis_get_blocksize_exp(int blocksize); bool load_header_packet(STREAMFILE* sf, vorbis_custom_codec_data* data, uint32_t packet_size, int packet_skip, uint32_t* p_offset); -#endif/* VGM_USE_VORBIS */ -#endif/*_VORBIS_CUSTOM_DECODER_H_ */ + +#endif + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils.c b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils.c index f9368f9ee..f15a9bae2 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils.c @@ -1,6 +1,7 @@ #include "vorbis_custom_decoder.h" #ifdef VGM_USE_VORBIS + int build_header_comment(uint8_t* buf, int bufsize) { int bytes = 0x19; @@ -22,6 +23,7 @@ int build_header_identification(uint8_t* buf, int bufsize, vorbis_custom_config* if (bytes > bufsize) return 0; + // long (bigger frames) + short (smaller frames) blocksizes (samples per frame) uint8_t blocksizes = (cfg->blocksize_0_exp << 4) | (cfg->blocksize_1_exp); put_u8 (buf+0x00, 0x01); /* packet_type (id) */ @@ -46,35 +48,19 @@ bool make_header_identification(vorbis_custom_codec_data* data, vorbis_custom_co return true; } -void load_blocksizes(vorbis_custom_config* cfg, int blocksize_short, int blocksize_long) { - uint8_t exp_blocksize_0, exp_blocksize_1; - - /* guetto log2 for allowed blocksizes (2-exp), could be improved */ - switch(blocksize_long) { - case 64: exp_blocksize_0 = 6; break; - case 128: exp_blocksize_0 = 7; break; - case 256: exp_blocksize_0 = 8; break; - case 512: exp_blocksize_0 = 9; break; - case 1024: exp_blocksize_0 = 10; break; - case 2048: exp_blocksize_0 = 11; break; - case 4096: exp_blocksize_0 = 12; break; - case 8192: exp_blocksize_0 = 13; break; - default: exp_blocksize_0 = 0; +// basic log2 for allowed blocksizes (2-exp) +int vorbis_get_blocksize_exp(int blocksize) { + switch(blocksize) { + case 64: return 6; + case 128: return 7; + case 256: return 8; + case 512: return 9; + case 1024: return 10; + case 2048: return 11; + case 4096: return 12; + case 8192: return 13; + default: return 0; } - switch(blocksize_short) { - case 64: exp_blocksize_1 = 6; break; - case 128: exp_blocksize_1 = 7; break; - case 256: exp_blocksize_1 = 8; break; - case 512: exp_blocksize_1 = 9; break; - case 1024: exp_blocksize_1 = 10; break; - case 2048: exp_blocksize_1 = 11; break; - case 4096: exp_blocksize_1 = 12; break; - case 8192: exp_blocksize_1 = 13; break; - default: exp_blocksize_1 = 0; - } - - cfg->blocksize_0_exp = exp_blocksize_0; - cfg->blocksize_1_exp = exp_blocksize_1; } bool load_header_packet(STREAMFILE* sf, vorbis_custom_codec_data* data, uint32_t packet_size, int packet_skip, uint32_t* p_offset) { @@ -90,4 +76,5 @@ bool load_header_packet(STREAMFILE* sf, vorbis_custom_codec_data* data, uint32_t fail: return false; } -#endif/* VGM_USE_VORBIS */ \ No newline at end of file + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_fsb.c b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_fsb.c index d44bcb744..ded334f40 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_fsb.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_fsb.c @@ -3,9 +3,9 @@ #ifdef VGM_USE_VORBIS #include -#define FSB_VORBIS_USE_PRECOMPILED_FVS 1 /* if enabled vgmstream weights ~600kb more but doesn't need external .fvs packets */ -#if FSB_VORBIS_USE_PRECOMPILED_FVS -#include "vorbis_custom_data_fsb.h" +// if enabled vgmstream weights ~600kb more but doesn't need external setup packets +#ifndef VGM_DISABLE_CODEBOOKS +#include "libs/vorbis_codebooks_fsb.h" #endif @@ -15,11 +15,6 @@ static int build_header_setup(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf); -#if !(FSB_VORBIS_USE_PRECOMPILED_FVS) -static int load_fvs_file(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf); -#endif -static int load_fvs_array(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf); - /* **************************************************************************** */ /* EXTERNAL API */ @@ -32,11 +27,13 @@ static int load_fvs_array(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREA * fsb-vorbis-extractor (https://github.com/tmiasko/fsb-vorbis-extractor). */ int vorbis_custom_setup_init_fsb(STREAMFILE* sf, off_t start_offset, vorbis_custom_codec_data* data) { - vorbis_custom_config cfg = data->config; + vorbis_custom_config* cfg = &data->config; - load_blocksizes(&cfg, 256, 2048); /* FSB default */ + // load FSB default blocksizes + cfg->blocksize_0_exp = vorbis_get_blocksize_exp(2048); //long + cfg->blocksize_1_exp = vorbis_get_blocksize_exp(256); //short - data->op.bytes = build_header_identification(data->buffer, data->buffer_size, &cfg); + data->op.bytes = build_header_identification(data->buffer, data->buffer_size, cfg); if (vorbis_synthesis_headerin(&data->vi, &data->vc, &data->op) != 0) /* identification packet */ goto fail; @@ -44,7 +41,7 @@ int vorbis_custom_setup_init_fsb(STREAMFILE* sf, off_t start_offset, vorbis_cust if (vorbis_synthesis_headerin(&data->vi, &data->vc, &data->op) != 0) /* comment packet */ goto fail; - data->op.bytes = build_header_setup(data->buffer, data->buffer_size, cfg.setup_id, sf); + data->op.bytes = build_header_setup(data->buffer, data->buffer_size, cfg->setup_id, sf); if (vorbis_synthesis_headerin(&data->vi, &data->vc, &data->op) != 0) /* setup packet */ goto fail; @@ -77,27 +74,7 @@ fail: /* INTERNAL HELPERS */ /* **************************************************************************** */ -static int build_header_setup(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf) { - int bytes; - - /* try to locate from the precompiled list */ - bytes = load_fvs_array(buf, bufsize, setup_id, sf); - if (bytes) - return bytes; - -#if !(FSB_VORBIS_USE_PRECOMPILED_FVS) - /* try to load from external files */ - bytes = load_fvs_file(buf, bufsize, setup_id, sf); - if (bytes) - return bytes; -#endif - - /* not found */ - VGM_LOG("FSB Vorbis: setup_id %08x not found\n", setup_id); - return 0; -} - -#if !(FSB_VORBIS_USE_PRECOMPILED_FVS) +#ifdef VGM_DISABLE_CODEBOOKS static int load_fvs_file(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf) { STREAMFILE* sf_setup = NULL; @@ -143,22 +120,22 @@ fail: } #endif -static int load_fvs_array(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf) { -#if FSB_VORBIS_USE_PRECOMPILED_FVS - int i, list_length; +static int build_header_setup(uint8_t* buf, size_t bufsize, uint32_t setup_id, STREAMFILE* sf) { + int bytes; - list_length = sizeof(fvs_list) / sizeof(fvs_info); - for (i=0; i < list_length; i++) { - if (fvs_list[i].id == setup_id) { - if (fvs_list[i].size > bufsize) goto fail; - /* found: copy data as-is */ - memcpy(buf,fvs_list[i].setup, fvs_list[i].size); - return fvs_list[i].size; - } - } - -fail: +#ifndef VGM_DISABLE_CODEBOOKS + // locate from precompiled list + bytes = vcb_load_codebook_array(buf, bufsize, setup_id, vcb_list, vcb_list_count); + if (bytes) + return bytes; +#else + // load from external files + bytes = load_fvs_file(buf, bufsize, setup_id, sf); + if (bytes) + return bytes; #endif + + VGM_LOG("FSB Vorbis: setup_id %08x not found\n", setup_id); return 0; } diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_oor.c b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_oor.c new file mode 100644 index 000000000..8516422d7 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_oor.c @@ -0,0 +1,237 @@ +#include "vorbis_custom_decoder.h" + +#ifdef VGM_USE_VORBIS +#include +#include "libs/oor_helpers.h" + +// if enabled vgmstream weights ~20kb more +#ifndef VGM_DISABLE_CODEBOOKS +#include "libs/vorbis_codebooks_oor.h" +#endif + + + +// read current page's info and save it to persist between decode calls +static int read_page_info(vorbis_custom_codec_data* data, STREAMFILE* sf, uint32_t page_offset) { + + // bitreader data + uint8_t buf[0x200]; // variable but shouldn't need to be bigger than this + int buf_size = sizeof(buf); + + //TODO: this will overread a bit; it's possible to load beginning + calc size + load rest, but to simplify... + int bytes = read_streamfile(buf, page_offset, buf_size, sf); + if (bytes != buf_size) return false; + + bitstream_t is_tmp; + bitstream_t* is = &is_tmp; + bm_setup(is, buf, bytes); + + // oor bitstream info + oor_page_t page = {0}; + oor_size_t size = {0}; + + oor_read_page(is, &page); + oor_read_size(is, &size); + if (!oor_validate_audio_page(&page, &size, NULL)) + return 0; + + if (size.packet_count >= MAX_PACKET_SIZES) { + VGM_LOG("OOR: packet count %i bigger than observed max (report)\n", size.packet_count); + return 0; + } + + //TODO: maybe put into a separate struct + data->flags = page.flags; + data->packet_count = size.packet_count; + for (int i = 0; i < size.packet_count; i++) { + data->packet_size[i] = size.base_packet_size + size.variable_packet_size[i]; + } + + int page_size = bm_pos(is) / 8; // aligned + return page_size; +} + +// Reads a single packet, which may be split into multiple pages (much like OggS). +// returns current packet size but also advances offsets, given it may need to read multiple pages. +static int read_packet(uint8_t* buf, int buf_size, vorbis_custom_codec_data* data, STREAMFILE* sf, uint32_t* p_offset) { + int read_size = 0; + + // handle split packets: (similar to vorbis?) + // - OOR_FLAG_CONTINUED and is last packet of a page: packet is joined with next packet + // - OOR_FLAG_PARTIAL and is first packet of a page: packet is joined with prev packet + // - otherwise: read normally + // in OOR, packets may be split like full-size (curr page) + 0-size (next page), or splitsetup packet + + while (true) { + + // OOR allows 0-sized packets marked as partial, but not sure if prev packet can be 0 + //if ((data->flags & OOR_FLAG_CONTINUED) && read_size == 0) + // return 0; + + // new page + if (data->current_packet == 0) { + + // no new pages after flag is set + if (data->flags & OOR_FLAG_EOS) + return 0; + + int page_size = read_page_info(data, sf, *p_offset); + if (!page_size) return 0; + + *p_offset += page_size; + + if (data->packet_count == 0) { + VGM_LOG("OOR: empty page found\n"); + return 0; + } + } + + // read chunk to buf (note that size 0 is valid in rare cases) + int packet_size = data->packet_size[data->current_packet]; + data->current_packet++; + + if (data->current_packet == data->packet_count) + data->current_packet = 0; + + if (read_size + packet_size > buf_size) { + VGM_LOG("OOR: packet too big\n"); + return 0; + } + + int bytes = read_streamfile(buf + read_size, *p_offset, packet_size, sf); + if (bytes != packet_size) + return 0; + + *p_offset += packet_size; + read_size += packet_size; + + // packet with continued flag must be merged with next packet (typically in next page) + bool is_last = data->current_packet == 0; // was reset above + if (!(is_last && (data->flags & OOR_FLAG_PARTIAL))) + break; + } + + return read_size; +} + +// read header info (1st page) and extract info to init Vorbis +static int read_header_packet(vorbis_custom_codec_data* data, STREAMFILE* sf, uint32_t* p_offset) { + + // bitreader data + uint8_t* buf = data->buffer; + int hdr_size = 0x20; // variable but should be smaller + if (hdr_size > data->buffer_size) + return 0; + + int bytes = read_streamfile(buf, *p_offset, hdr_size, sf); + if (bytes != hdr_size) return 0; + + bitstream_t is = {0}; + bm_setup(&is, buf, bytes); + + // oor bitstream info + oor_page_t page = {0}; + oor_header_t hdr = {0}; + + // header page + oor_read_page(&is, &page); + oor_read_header(&is, &hdr); + if (!oor_validate_header_page(&page, &hdr)) + return 0; + + // load info for header (also used for output) + vorbis_custom_config* cfg = &data->config; + cfg->channels = hdr.channels; + cfg->sample_rate = hdr.sample_rate; + cfg->blocksize_0_exp = hdr.blocksize0_exp; + cfg->blocksize_1_exp = hdr.blocksize1_exp; + cfg->last_granule = hdr.last_granule; + + uint32_t packet_size = (bm_pos(&is) / 8); + *p_offset += packet_size; + return packet_size; +} + +// read setup info (2nd page) and load codebooks info buf +static int build_header_setup(uint8_t* buf, int buf_size, vorbis_custom_codec_data* data, STREAMFILE* sf, uint32_t* p_offset) { + + // setup info packet + int info_size = read_packet(buf, buf_size, data, sf, p_offset); + if (!info_size) return 0; + + if (info_size != 0x01) //fixed mini-packet + return 0; + bitstream_t is = {0}; + bm_setup(&is, data->buffer, info_size); + + oor_setup_t setup = {0}; + oor_read_setup(&is, &setup); + + + // paste missing info + if (buf_size <= 0x07) + return 0; + put_u8 (buf+0x00, 0x05); // packet_type (setup) + memcpy (buf+0x01, "vorbis", 6); // id + + // read actual codebook based on prev mini-packet + int setup_size; + if (setup.codebook_id) { +#ifndef VGM_DISABLE_CODEBOOKS + // load setup from data in executables + setup_size = vcb_load_codebook_array(buf + 0x07, buf_size - 0x07, setup.codebook_id, vcb_list, vcb_list_count); + if (!setup_size) return 0; +#else + setup_size = 0; +#endif + // next packet is always 0 when codebook id is set + int empty_size = read_packet(buf + 0x07 + setup_size, buf_size - 0x07 - setup_size, data, sf, p_offset); + if (empty_size != 0) return 0; + } + else { + // load setup from data in file + setup_size = read_packet(buf + 0x07, buf_size - 0x07, data, sf, p_offset); + if (!setup_size) return 0; + } + + return 0x07 + setup_size; +} + + +int vorbis_custom_setup_init_oor(STREAMFILE* sf, off_t start_offset, vorbis_custom_codec_data* data) { + int ret; + uint32_t offset = start_offset; + + // header + int head_size = read_header_packet(data, sf, &offset); + if (!head_size) return false; + + // identification packet + data->op.bytes = build_header_identification(data->buffer, data->buffer_size, &data->config); + ret = vorbis_synthesis_headerin(&data->vi, &data->vc, &data->op); + if (ret != 0) return false; + + // comment packet + data->op.bytes = build_header_comment(data->buffer, data->buffer_size); + ret = vorbis_synthesis_headerin(&data->vi, &data->vc, &data->op); + if (ret != 0) return false; + + // setup packet + data->op.bytes = build_header_setup(data->buffer, data->buffer_size, data, sf, &offset); + ret = vorbis_synthesis_headerin(&data->vi, &data->vc, &data->op); + if (ret != 0) return false; + + data->config.data_start_offset = offset; + return true; +} + +int vorbis_custom_parse_packet_oor(VGMSTREAMCHANNEL* stream, vorbis_custom_codec_data* data) { + uint32_t offset = stream->offset; + + data->op.bytes = read_packet(data->buffer, data->buffer_size, data, stream->streamfile, &offset); + stream->offset = offset; + + return data->op.bytes != 0; +} + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_wwise.c b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_wwise.c index 510b0611c..8b2ef1574 100644 --- a/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_wwise.c +++ b/Frameworks/vgmstream/vgmstream/src/coding/vorbis_custom_utils_wwise.c @@ -4,9 +4,9 @@ #include #include "../util/bitstream_lsb.h" -#define WWISE_VORBIS_USE_PRECOMPILED_WVC 1 /* if enabled vgmstream weights ~150kb more but doesn't need external .wvc packets */ -#if WWISE_VORBIS_USE_PRECOMPILED_WVC -#include "vorbis_custom_data_wwise.h" +// if enabled vgmstream weights ~150kb more but doesn't need external packets +#ifndef VGM_DISABLE_CODEBOOKS +#include "libs/vorbis_codebooks_wwise.h" #endif @@ -30,11 +30,7 @@ static size_t rebuild_setup(uint8_t* obuf, size_t obufsize, wpacket_t* wp, STREA static int ww2ogg_generate_vorbis_packet(bitstream_t* ow, bitstream_t* iw, wpacket_t* wp, vorbis_custom_codec_data* data); static int ww2ogg_generate_vorbis_setup(bitstream_t* ow, bitstream_t* iw, vorbis_custom_codec_data* data, size_t packet_size, STREAMFILE* sf); -static int load_wvc(uint8_t* ibuf, size_t ibufsize, uint32_t codebook_id, wwise_setup_t setup_type, STREAMFILE* sf); -#if !(WWISE_VORBIS_USE_PRECOMPILED_WVC) -static int load_wvc_file(uint8_t* buf, size_t bufsize, uint32_t codebook_id, STREAMFILE* sf); -#endif -static int load_wvc_array(uint8_t* buf, size_t bufsize, uint32_t codebook_id, wwise_setup_t setup_type); +static int load_codebooks(uint8_t* ibuf, size_t ibufsize, uint32_t codebook_id, wwise_setup_t setup_type, STREAMFILE* sf); /* **************************************************************************** */ @@ -676,7 +672,7 @@ static int ww2ogg_codebook_library_rebuild_by_id(bitstream_t* ow, uint32_t codeb size_t cb_size; bitstream_t iw; - cb_size = load_wvc(ibuf,ibufsize, codebook_id, setup_type, sf); + cb_size = load_codebooks(ibuf,ibufsize, codebook_id, setup_type, sf); if (cb_size == 0) goto fail; bl_setup(&iw, ibuf, ibufsize); @@ -1083,28 +1079,7 @@ fail: /* INTERNAL UTILS */ /* **************************************************************************** */ -/* loads an external Wwise Vorbis Codebooks file (wvc) referenced by ID and returns size */ -static int load_wvc(uint8_t* ibuf, size_t ibufsize, uint32_t codebook_id, wwise_setup_t setup_type, STREAMFILE* sf) { - size_t bytes; - - /* try to locate from the precompiled list */ - bytes = load_wvc_array(ibuf, ibufsize, codebook_id, setup_type); - if (bytes) - return bytes; - -#if !(WWISE_VORBIS_USE_PRECOMPILED_WVC) - /* try to load from external file (ignoring type, just use file if found) */ - bytes = load_wvc_file(ibuf, ibufsize, codebook_id, sf); - if (bytes) - return bytes; -#endif - - /* not found */ - VGM_LOG("Wwise Vorbis: codebook_id %04x not found\n", codebook_id); - return 0; -} - -#if !(WWISE_VORBIS_USE_PRECOMPILED_WVC) +#ifdef VGM_DISABLE_CODEBOOKS static int load_wvc_file(uint8_t* buf, size_t bufsize, uint32_t codebook_id, STREAMFILE* sf) { STREAMFILE* sf_setup = NULL; size_t wvc_size = 0; @@ -1149,36 +1124,25 @@ fail: } #endif -static int load_wvc_array(uint8_t* buf, size_t bufsize, uint32_t codebook_id, wwise_setup_t setup_type) { -#if WWISE_VORBIS_USE_PRECOMPILED_WVC +/* loads an external Wwise Vorbis Codebooks file (wvc) referenced by ID and returns size */ +static int load_codebooks(uint8_t* ibuf, size_t ibufsize, uint32_t codebook_id, wwise_setup_t setup_type, STREAMFILE* sf) { + int bytes; - /* get pointer to array */ - { - int i, list_length; - const wvc_info * wvc_list; +#ifndef VGM_DISABLE_CODEBOOKS - switch (setup_type) { - case WWV_EXTERNAL_CODEBOOKS: - wvc_list = wvc_list_standard; - list_length = sizeof(wvc_list_standard) / sizeof(wvc_info); - break; - case WWV_AOTUV603_CODEBOOKS: - wvc_list = wvc_list_aotuv603; - list_length = sizeof(wvc_list_standard) / sizeof(wvc_info); - break; - default: - goto fail; - } - - for (i=0; i < list_length; i++) { - if (wvc_list[i].id == codebook_id) { - if (wvc_list[i].size > bufsize) goto fail; - /* found: copy data as-is */ - memcpy(buf,wvc_list[i].codebook, wvc_list[i].size); - return wvc_list[i].size; - } - } + // locate from precompiled list + switch (setup_type) { + case WWV_EXTERNAL_CODEBOOKS: + bytes = vcb_load_codebook_array(ibuf, ibufsize, codebook_id, vcb_list_standard, vcb_list_count_standard); + break; + case WWV_AOTUV603_CODEBOOKS: + bytes = vcb_load_codebook_array(ibuf, ibufsize, codebook_id, vcb_list_aotuv603, vcb_list_count_aotuv603); + break; + default: + return 0; } + if (bytes) + return bytes; // this can be used with 1:1 dump of the codebook file #if 0 @@ -1204,8 +1168,14 @@ static int load_wvc_array(uint8_t* buf, size_t bufsize, uint32_t codebook_id, ww } #endif -fail: +#else + // load from external files + bytes = load_wvc_file(ibuf, ibufsize, codebook_id, sf); + if (bytes) + return bytes; #endif + + VGM_LOG("Wwise Vorbis: codebook_id %04x not found\n", codebook_id); return 0; } diff --git a/Frameworks/vgmstream/vgmstream/src/formats.c b/Frameworks/vgmstream/vgmstream/src/formats.c index 0c07791fd..2a273d0b7 100644 --- a/Frameworks/vgmstream/vgmstream/src/formats.c +++ b/Frameworks/vgmstream/vgmstream/src/formats.c @@ -350,6 +350,7 @@ static const char* extension_list[] = { "mi4", //fake extension for .mib (renamed, to be removed) "mib", "mic", + "mio", "mnstr", "mogg", //"m4a", //common @@ -418,6 +419,7 @@ static const char* extension_list[] = { "ogv", "oma", //FFmpeg/not parsed (ATRAC3/ATRAC3PLUS/MP3/LPCM/WMA) "omu", + "oor", "opu", //"opus", //common "opusx", @@ -667,7 +669,6 @@ static const char* extension_list[] = { "wic", //txth/reserved [Road Rash (SAT)-videos] "wip", //txth/reserved [Colin McRae DiRT (PC)] "wlv", //txth/reserved [ToeJam & Earl III: Mission to Earth (DC)] - "wmus", //fake extension (to be removed) "wp2", "wpd", "wsd", @@ -924,7 +925,9 @@ static const coding_info coding_info_list[] = { {coding_TAC, "tri-Ace Codec"}, {coding_ICE_RANGE, "Inti Creates Range Codec"}, {coding_ICE_DCT, "Inti Creates DCT Codec"}, - {coding_KA1A, "Koei Tecmo KA1A Codec"}, + {coding_KA1A, "Koei Tecmo KA1A"}, + {coding_UBI_MPEG, "Ubisoft MPEG"}, + {coding_MIO, "Entis MIO"}, #ifdef VGM_USE_VORBIS {coding_OGG_VORBIS, "Ogg Vorbis"}, @@ -1178,7 +1181,6 @@ static const meta_info meta_info_list[] = { {meta_PS2_SND, "Might and Magic SSND Header"}, {meta_SMSS, "Treasure SMSS header"}, {meta_ADS_MIDWAY, "Midway ADS header"}, - {meta_PS2_MCG, "Gunvari MCG Header"}, {meta_ZSD, "Konami ZSD header"}, {meta_REDSPARK, "RedSpark header"}, {meta_RAGE_AUD, "Rockstar AUD header"}, @@ -1214,7 +1216,7 @@ static const meta_info meta_info_list[] = { {meta_WB, "Triangle Service .WB header"}, {meta_S14, "Namco .S14 raw header"}, {meta_SSS, "Namco .SSS raw header"}, - {meta_PS2_GCM, "Namco GCM header"}, + {meta_MCG, "Namco MCG header"}, {meta_SMPL, "Skonec SMPL header"}, {meta_MSA, "Success .MSA header"}, {meta_VOI, "Irem .VOI header"}, @@ -1250,7 +1252,6 @@ static const meta_info meta_info_list[] = { {meta_LSF_N1NJ4N, "Gizmondo Studios Helsingborg LSF header"}, {meta_XWAV, "feelplus XWAV header"}, {meta_RAW_SNDS, "PC .snds raw header"}, - {meta_PS2_WMUS, "assumed The Warriors Sony ADPCM by .wmus extension"}, {meta_HYPERSCAN_KVAG, "Mattel Hyperscan KVAG"}, {meta_PSND, "Polarbit PSND header"}, {meta_ADP_WILDFIRE, "Wildfire ADP! header"}, @@ -1473,7 +1474,9 @@ static const meta_info meta_info_list[] = { {meta_XABP, "cavia XABp header"}, {meta_I3DS, "Codemasters i3DS header"}, {meta_AXHD, "Angel Studios AXHD header"}, - {meta_SHAA, "Nintendo Alarmo SHAA header"} + {meta_SHAA, "Nintendo SHAA header"}, + {meta_OOR, "age .OOR header"}, + {meta_MIO, "Entis .MIO header"}, }; void get_vgmstream_coding_description(VGMSTREAM* vgmstream, char* out, size_t out_size) { diff --git a/Frameworks/vgmstream/vgmstream/src/libvgmstream.h b/Frameworks/vgmstream/vgmstream/src/libvgmstream.h index 2cc9eba8c..89dc3c850 100644 --- a/Frameworks/vgmstream/vgmstream/src/libvgmstream.h +++ b/Frameworks/vgmstream/vgmstream/src/libvgmstream.h @@ -18,9 +18,9 @@ * This may make the API a bit odd, will probably improve later. Probably. * * Notes: - * - now there is an API, internals (vgmstream.h) may change in the future so avoid accesing them + * - now there is an API, internals (vgmstream.h) will change in the future so avoid accesing them * - some details described in the API may not happen at the moment (defined for future changes) - * - uses long-winded libvgmstream_* names since internals alredy use the vgmstream_* 'namespace', #define as needed + * - uses long-winded libvgmstream_* names since internals alredy use the vgmstream_* 'namespace', #define if needed * - c-strings should be in UTF-8 */ @@ -71,20 +71,20 @@ LIBVGMSTREAM_API uint32_t libvgmstream_get_version(void); /*****************************************************************************/ /* DECODE */ -/* interleaved samples: buf[0]=ch0, buf[1]=ch1, buf[2]=ch0, buf[3]=ch0, ... */ -typedef enum { - LIBVGMSTREAM_SAMPLE_PCM16 = 1, - LIBVGMSTREAM_SAMPLE_PCM24 = 2, - LIBVGMSTREAM_SAMPLE_PCM32 = 3, - LIBVGMSTREAM_SAMPLE_FLOAT = 4, -} libvgmstream_sample_t; +/* available sample formats, interleaved: buf[0]=ch0, buf[1]=ch1, buf[2]=ch0, buf[3]=ch0, ... */ +typedef enum { + LIBVGMSTREAM_SFMT_PCM16 = 1, + //LIBVGMSTREAM_SFMT_PCM24 = 2, + //LIBVGMSTREAM_SFMT_PCM32 = 3, + LIBVGMSTREAM_SFMT_FLOAT = 4, +} libvgmstream_sfmt_t; /* current song info, may be copied around (values are info-only) */ typedef struct { /* main (always set) */ int channels; // output channels int sample_rate; // output sample rate - libvgmstream_sample_t sample_type; // output buffer's sample type + libvgmstream_sfmt_t sample_format; // output buffer's sample type int sample_size; // derived from sample_type (pcm16=0x02, float=0x04, etc) /* extra info (may be 0 if not known or not relevant) */ @@ -126,8 +126,8 @@ typedef struct { // query description and since libvgmstream returns its own copy it shouldn't be too much of a problem // ** (may be separated later) - int format_id; // when reopening subfiles or similar formats without checking other all possible formats - // ** this value WILL change without warning between vgmstream versions/commits, but usually only add + int format_id; // current format's ID (can be set when reopening streams to load a particular format) + // ** this value WILL change without warning between vgmstream versions/commits } libvgmstream_format_t; @@ -165,6 +165,7 @@ LIBVGMSTREAM_API void libvgmstream_free(libvgmstream_t* lib); /* configures how vgmstream behaves internally when playing a file */ typedef struct { + bool disable_config_override; // ignore forced (TXTP) config bool allow_play_forever; // must allow manually as some cases a TXTP may set loop forever but client may not handle it @@ -174,46 +175,39 @@ typedef struct { bool really_force_loop; // forces full loops (0..samples) even if file has loop points bool ignore_fade; // don't fade after N loops and play remaning stream (for files with outros) - double loop_count; // target loops (values like 1.5 are ok) + double loop_count; // target loops (values like 1.5 are ok); defaults to 1; set to -1 to remove the loop section double fade_time; // fade period after target loops double fade_delay; // fade delay after target loops + int stereo_track; // forces vgmstream to decode one 2ch+2ch+2ch... 'track' and discard other channels, where 0 = disabled, 1..N = Nth track int auto_downmix_channels; // downmix if vgmstream's channels are higher than value // ** for players that can only handle N channels // ** this type of downmixing is very simplistic and not recommended - bool force_pcm16; // forces output buffer to be remixed into PCM16 - bool force_float; // forces output buffer to be remixed into float + libvgmstream_sfmt_t force_sfmt; // forces output buffer to be remixed into some sample format + + //int format_id; // force a format (for example when loading new subsong of the same archive, for a minuscule speed up) + // // ** only applies when called before _open_stream } libvgmstream_config_t; -/* pass default config, that will be applied to song on open - * - invalid config or complex cases (ex. some TXTP) may ignore these settings - * - should be called without a song loaded (before _open or after _close) - * - without config vgmstream will decode the current stream once +/* optionally pass config to apply to next _open_stream (or current stream if already loaded and not setup previously) + * - some settings may be ignored in invalid or complex cases (ex. TXTP with pre-configured options) + * - once config is applied to current stream new _setup calls only apply to next _open_stream + * - pass NULL to clear current config + * - remember config may change format info like channels or output format (recheck if calling after loading song) */ LIBVGMSTREAM_API void libvgmstream_setup(libvgmstream_t* lib, libvgmstream_config_t* cfg); -/* configures how vgmstream opens the format */ -typedef struct { - libstreamfile_t* libsf; // custom IO streamfile that provides reader info for vgmstream - // ** not needed after _open and should be closed, as vgmstream re-opens its own SFs internally as needed - - int subsong_index; // target subsong (1..N) or 0 = default/first - // ** to check if a file has subsongs, _open first + check format->total_subsongs (then _open 2nd, 3rd, etc) - - int format_id; // force a format (for example when loading new subsong of the same archive) - - int stereo_track; // forces vgmstream to decode one 2ch+2ch+2ch... 'track' and discard other channels, where 0 = disabled, 1..N = Nth track - -} libvgmstream_options_t; - /* Opens file based on config and prepares it to play if supported. * - returns < 0 on error (file not recognised, invalid subsong index, etc) * - will close currently loaded song if needed + * - libsf (custom IO) is not needed after _open and should be closed, as vgmstream re-opens as needed + * - subsong can be 1..N or 0 = default/first + * ** to check if a file has subsongs, _open default + check format->total_subsongs (then _open Nth) */ -LIBVGMSTREAM_API int libvgmstream_open_stream(libvgmstream_t* lib, libvgmstream_options_t* open_options); +LIBVGMSTREAM_API int libvgmstream_open_stream(libvgmstream_t* lib, libstreamfile_t* libsf, int subsong); /* Closes current song; may still use libvgmstream to open other songs */ @@ -222,6 +216,7 @@ LIBVGMSTREAM_API void libvgmstream_close_stream(libvgmstream_t* lib); /* Decodes next batch of samples * - vgmstream supplies its own buffer, updated on lib->decoder->* values (may change between calls) + * - on last call will return samples + set flag lib->decoder->done (must handle last buf before quitting) * - returns < 0 on error */ LIBVGMSTREAM_API int libvgmstream_render(libvgmstream_t* lib); @@ -248,6 +243,10 @@ LIBVGMSTREAM_API void libvgmstream_seek(libvgmstream_t* lib, int64_t sample); LIBVGMSTREAM_API void libvgmstream_reset(libvgmstream_t* lib); +/* Helper: calls _init + _setup + _open_stream + */ +LIBVGMSTREAM_API libvgmstream_t* libvgmstream_create(libstreamfile_t* libsf, int subsong, libvgmstream_config_t* cfg); + /*****************************************************************************/ /* HELPERS */ @@ -259,29 +258,25 @@ typedef enum { LIBVGMSTREAM_LOG_LEVEL_NONE = 100, } libvgmstream_loglevel_t; -typedef struct { - libvgmstream_loglevel_t level; // log level - void (*callback)(int level, const char* str); // log callback - bool stdout_callback; // use default log callback rather than user supplied -} libvgmstream_log_t; - /* Defines a global log callback, as vgmstream sometimes communicates format issues to the user. * - note that log is currently set globally rather than per libvgmstream_t + * - call with LOG_LEVEL_NONE to disable current callback + * - call with NULL callback to use default stdout callback */ -LIBVGMSTREAM_API void libvgmstream_set_log(libvgmstream_log_t* cfg); +LIBVGMSTREAM_API void libvgmstream_set_log(libvgmstream_loglevel_t level, void (*callback)(int level, const char* str)); /* Returns a list of supported extensions (WARNING: it's pretty big), such as "adx", "dsp", etc. * Mainly for plugins that want to know which extensions are supported. * - returns NULL if no size is provided */ -LIBVGMSTREAM_API const char** libvgmstream_get_extensions(size_t* size); +LIBVGMSTREAM_API const char** libvgmstream_get_extensions(int* size); /* Same as above, buf returns a list what vgmstream considers "common" formats (such as "wav", "ogg"), * which usually one doesn't want to associate to vgmstream. * - returns NULL if no size is provided */ -LIBVGMSTREAM_API const char** libvgmstream_get_common_extensions(size_t* size); +LIBVGMSTREAM_API const char** libvgmstream_get_common_extensions(int* size); typedef struct { @@ -301,7 +296,7 @@ LIBVGMSTREAM_API bool libvgmstream_is_valid(const char* filename, libvgmstream_v typedef struct { - bool force_title; // TODO: what was this for? + bool force_title; // force stream name as title (by default it may be hiddedn if file has no subsongs) bool subsong_range; // print a range of possible subsongs after title 'filename#1~N' bool remove_extension; // remove extension from passed filename bool remove_archive; // remove '(archive)|(subfile)' format of some plugins @@ -350,11 +345,13 @@ LIBVGMSTREAM_API void libvgmstream_tags_find(libvgmstream_tags_t* tags, const ch /* Extracts next valid tag in tagfile to key/val. * - returns false if no more tags are found (meant to be called repeatedly until false) - * - key/values are trimmed of beginning/end whitespaces and values are in UTF-8 + * - key/values are trimmed of beginning/end whitespaces and values are UTF-8 */ LIBVGMSTREAM_API bool libvgmstream_tags_next_tag(libvgmstream_tags_t* tags); -/* Closes tags. */ +/* Closes tags. + * - passed libsf is not closed + */ LIBVGMSTREAM_API void libvgmstream_tags_free(libvgmstream_tags_t* tags); diff --git a/Frameworks/vgmstream/vgmstream/src/libvgmstream_streamfile.h b/Frameworks/vgmstream/vgmstream/src/libvgmstream_streamfile.h index dd52a373f..626831899 100644 --- a/Frameworks/vgmstream/vgmstream/src/libvgmstream_streamfile.h +++ b/Frameworks/vgmstream/vgmstream/src/libvgmstream_streamfile.h @@ -3,44 +3,33 @@ #include "libvgmstream.h" /* vgmstream's IO API, defined as a "streamfile" ('SF'). - * - * vgmstream mostly assumes there is an underlying filesystem (as usual in games), plus given video game formats are + * + * vgmstream mostly assumes there is an underlying filesystem (as usual in games), plus given video game formats are * often ill-defined it needs extra ops to handle edge cases: seeking + reading from arbitrary offsets, opening companion * files, filename/size tests, etc. - * + * * If your case is too different you may still create a partial streamfile: returning a fake filename, only handling "open" * that reopens itself (same filename), etc. Simpler formats should work fine. */ -enum { - LIBSTREAMFILE_SEEK_SET = 0, - LIBSTREAMFILE_SEEK_CUR = 1, - LIBSTREAMFILE_SEEK_END = 2, - //LIBSTREAMFILE_SEEK_GET_OFFSET = 3, - //LIBSTREAMFILE_SEEK_GET_SIZE = 5, -}; - // should be "libvgmstream_streamfile_t" but it was getting unwieldly typedef struct libstreamfile_t { //uint32_t flags; // info flags for vgmstream void* user_data; // any internal structure - /* read 'length' data at internal offset to 'dst' + /* read 'length' data at 'offset' to 'dst' * - assumes 0 = failure/EOF + * - note that vgmstream needs to seek + read from arbitrary offset (non-linearly) fairly often */ - int (*read)(void* user_data, uint8_t* dst, int dst_size); - - /* seek to offset - * - note that vgmstream needs to seek + read fairly often (to be optimized someday) - */ - int64_t (*seek)(void* user_data, int64_t offset, int whence); + int (*read)(void* user_data, uint8_t* dst, int64_t offset, int length); /* get max offset (typically for checks or sample calculations) */ int64_t (*get_size)(void* user_data); - /* get current filename (used to open same or other streamfiles and heuristics; no need to be a real path) + /* get current filename + * - used to open same or other streamfiles and heuristics; no need to be a real path but extension matters */ const char* (*get_name)(void* user_data); @@ -49,13 +38,14 @@ typedef struct libstreamfile_t { */ struct libstreamfile_t* (*open)(void* user_data, const char* filename); - /* free current SF */ + /* free current SF + */ void (*close)(struct libstreamfile_t* libsf); } libstreamfile_t; -/* helper */ +/* helpers */ static inline void libstreamfile_close(libstreamfile_t* libsf) { if (!libsf || !libsf->close) return; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/2dx.c b/Frameworks/vgmstream/vgmstream/src/meta/2dx.c new file mode 100644 index 000000000..26e15a490 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/meta/2dx.c @@ -0,0 +1,57 @@ +#include "meta.h" +#include "../coding/coding.h" +#include "../layout/layout.h" + + +/* .2dx - Konami/Bemani beatmania IIDX container [beatmania IIDX 9th Style (AC) - beatmania IIDX 15 DJ TROOPERS (AC)] */ +VGMSTREAM* init_vgmstream_2dx(STREAMFILE* sf) { + VGMSTREAM* vgmstream = NULL; + STREAMFILE* temp_sf = NULL; + int target_subsong = sf->stream_index, total_subsongs; + uint32_t meta_offset, table_offset, subfile_offset, subfile_size; + + + /* checks */ + if (!check_extensions(sf, "2dx")) + goto fail; + + /* Check for leftover crypto header */ + /* + if (read_u32be(0x00, sf) == 0x25654E63 || //IIDX 9th Style + read_u32be(0x00, sf) == 0x25653130 || //IIDX 10th Style + read_u32be(0x00, sf) == 0x25653131 || //IIDX 11 RED + read_u32be(0x00, sf) == 0x25653132 || //IIDX 12 HAPPY SKY + read_u32be(0x00, sf) == 0x25686964 || //IIDX 15 DJ TROOPERS + read_u32be(0x00, sf) == 0x25694F30) //IIDX 16 EMPRESS + meta_offset = 0x18; + else */ + meta_offset = 0x10; + table_offset = meta_offset + 0x38; + + if (target_subsong == 0) target_subsong = 1; + total_subsongs = read_u32le(meta_offset + 0x4,sf); + if (target_subsong > total_subsongs) + goto fail; + + subfile_offset = read_u32le(table_offset + 0x04 * (target_subsong - 1), sf); + subfile_size = read_u32le(subfile_offset + 0x8,sf) + 0x18; + + temp_sf = setup_subfile_streamfile(sf, subfile_offset, subfile_size, "2dx9"); + if (!temp_sf) goto fail; + + temp_sf->stream_index = 1; + vgmstream = init_vgmstream_2dx9(temp_sf); + if (!vgmstream) goto fail; + + if (vgmstream->num_streams > 1) + goto fail; + vgmstream->num_streams = total_subsongs; + + close_streamfile(temp_sf); + return vgmstream; + +fail: + close_streamfile(temp_sf); + close_vgmstream(vgmstream); + return NULL; +} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/aifc.c b/Frameworks/vgmstream/vgmstream/src/meta/aifc.c index 34fc6aa01..4ae8fd28d 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/aifc.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/aifc.c @@ -70,27 +70,27 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { off_t start_offset = 0, coef_offset = 0; uint32_t aifx_size, file_size; coding_t coding_type = 0; - int channels = 0, sample_count = 0, sample_size = 0, sample_rate = 0; - int interleave = 0; - int loop_flag = 0; - int32_t loop_start = 0, loop_end = 0; - - int is_aiff_ext = 0, is_aifc_ext = 0, is_aiff = 0, is_aifc = 0; - int fver_found = 0, comm_found = 0, data_found = 0; - off_t mark_offset = 0, inst_offset = 0; /* checks */ if (!is_id32be(0x00,sf, "FORM")) return NULL; + int channels = 0, sample_count = 0, sample_size = 0, sample_rate = 0; + int interleave = 0; + int loop_flag = 0; + int32_t loop_start = 0, loop_end = 0; + off_t mark_offset = 0, inst_offset = 0; + + bool is_aiff_ext = false, is_aifc_ext = false, is_aiff = false, is_aifc = false; + /* .aif: common (AIFF or AIFC) * .wav: SimCity 3000 (Mac) (both AIFF and AIFC) * .aiff: rare and actually AIFC (maybe renamed AIFF too) [Cro-Mag Rally (Mac)] * (extensionless): Doom (3DO) - * + * * .aifc: renamed AIFC? - * .afc: ? + * .afc: Waialae Country Club (3D0), Star Wars: Anakin's Speedway (PC) * .cbd2: M2 games * .bgm: Super Street Fighter II Turbo (3DO) * .fda: Homeworld 2 (PC) @@ -106,14 +106,14 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { * .mpc: The Godfather (PC) (writercredit.mpc) */ if (check_extensions(sf, "aif,laif,wav,lwav,aiff,laiff,")) { - is_aifc_ext = 1; - is_aiff_ext = 1; + is_aifc_ext = true; + is_aiff_ext = true; } else if (check_extensions(sf, "aifc,laifc,afc,cbd2,bgm,fda,n64,xa,caf")) { - is_aifc_ext = 1; + is_aifc_ext = true; } else if (check_extensions(sf, "acm,adp,ai,pcm,vp6,mpc,lmpc")) { - is_aiff_ext = 1; + is_aiff_ext = true; } else { return NULL; @@ -125,15 +125,15 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { /* AIFF originally allowed only PCM (non-compressed) audio, so newer AIFC was added, * though some AIFF with other codecs exist */ if (is_id32be(0x08,sf, "AIFC")) { - if (!is_aifc_ext) goto fail; - is_aifc = 1; + if (!is_aifc_ext) return NULL; + is_aifc = true; } else if (is_id32be(0x08,sf, "AIFF")) { - if (!is_aiff_ext) goto fail; - is_aiff = 1; + if (!is_aiff_ext) return NULL; + is_aiff = true; } else { - goto fail; + return NULL; } /* some games have wonky sizes, selectively fix to catch bad rips and new mutations */ @@ -146,31 +146,34 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { if (aifx_size + 0x08 != file_size) { vgm_logi("AIFF: wrong reported size %x + 0x8 vs file size %x\n", aifx_size, file_size); - goto fail; + return NULL; } /* read through chunks to verify format and find metadata */ { + bool fver_found = false, comm_found = false, data_found = false; off_t offset = 0x0c; /* start with first chunk within FORM */ while (offset < file_size) { uint32_t chunk_type = read_u32be(offset + 0x00,sf); uint32_t chunk_size = read_u32be(offset + 0x04,sf); - /* chunks must be padded to an even number of bytes but chunk - * size does not include that padding */ + offset += 0x08; + if (offset + chunk_size > file_size) { + VGM_LOG("AIFF: wrong chunk_size %x + %x\n", (int)offset, chunk_size); + return NULL; + } + + // Chunks must be padded to an even number of bytes but chunk size does not include that padding. + // Last chunk it may not be padded so handle after offset check (some tools only?) [Anakin's Speedway (PC)] if (chunk_size % 2) chunk_size++; - offset += 0x08; - if (offset + chunk_size > file_size) - goto fail; - switch(chunk_type) { case 0x46564552: /* "FVER" (version info, officially required but some odd game ommits it [Cro-Mag Rally (Mac)]) */ if (fver_found) goto fail; if (is_aiff) goto fail; /* plain AIFF shouldn't have */ - fver_found = 1; + fver_found = true; if (chunk_size != 4) goto fail; @@ -181,7 +184,7 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { case 0x434F4D4D: /* "COMM" (main header) */ if (comm_found) goto fail; - comm_found = 1; + comm_found = true; channels = read_u16be(offset + 0x00,sf); sample_count = read_u32be(offset + 0x02,sf); /* sample_frames in theory, depends on codec */ @@ -220,9 +223,10 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { case 0x434F4D50: { /* "COMP" (generic compression) */ uint8_t name_size = read_u8(offset + 0x16, sf); - if (is_str("Relic Codec v1.6", name_size, offset + 0x17, sf)) { + if (is_str("Relic Codec v1.6", name_size, offset + 0x17, sf)) { /* Homeworld 2 (PC) */ coding_type = coding_RELIC; sample_count = sample_count * 512; + sample_rate = 44100; // fixed output } else { goto fail; @@ -235,7 +239,14 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { coding_type = coding_VADPCM; /* N64 tools don't create FVER, but it's required by the spec (could skip the check though) */ - fver_found = 1; + fver_found = true; + break; + } + + case 0x76696D61: { /* "vima" [Star Wars Anakin's Speedway (PC), Star Wars Early Learning Activity Center (PC)] */ + /* "Variable IMA 16 bit" */ + coding_type = coding_IMUSE; + sample_rate = 22050; // field has garbage (like part of the name) consistently break; } @@ -267,7 +278,7 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { case 0x53534E44: /* "SSND" (main data) */ case 0x4150434D: /* "APCM" (main data for XA) */ if (data_found) goto fail; - data_found = 1; + data_found = true; /* 00: offset (for aligment, usually 0) * 04: block size (ex. XA: 0x914) */ @@ -315,16 +326,17 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { offset += chunk_size; } + + if (is_aifc) { + if (/*!fver_found ||*/ !comm_found || !data_found) + goto fail; + } + else if (is_aiff) { + if (!comm_found || !data_found) + goto fail; + } } - if (is_aifc) { - if (/*!fver_found ||*/ !comm_found || !data_found) - goto fail; - } - else if (is_aiff) { - if (!comm_found || !data_found) - goto fail; - } /* read loop points */ if (inst_offset && mark_offset) { @@ -399,8 +411,6 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { vgmstream->codec_data = init_relic(channels, bitrate, sample_rate); if (!vgmstream->codec_data) goto fail; vgmstream->layout_type = layout_none; - - vgmstream->sample_rate = 44100; /* fixed output */ break; } @@ -421,6 +431,13 @@ VGMSTREAM* init_vgmstream_aifc(STREAMFILE* sf) { //vgmstream->num_samples = vadpcm_bytes_to_samples(data_size, channels); /* unneeded */ break; + case coding_IMUSE: { + vgmstream->codec_data = init_imuse_aifc(sf, start_offset, channels); + if (!vgmstream->codec_data) goto fail; + vgmstream->layout_type = layout_none; + break; + } + default: vgmstream->layout_type = (channels > 1) ? layout_interleave : layout_none; vgmstream->interleave_block_size = interleave; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/baf.c b/Frameworks/vgmstream/vgmstream/src/meta/baf.c index eb38bce02..53c390ef2 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/baf.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/baf.c @@ -4,27 +4,25 @@ /* .BAF - Bizarre Creations bank file [Blur (PS3), Project Gotham Racing 4 (X360), Geometry Wars (PC)] */ -VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { - VGMSTREAM * vgmstream = NULL; +VGMSTREAM* init_vgmstream_baf(STREAMFILE* sf) { + VGMSTREAM* vgmstream = NULL; + char bank_name[0x22+1], stream_name[0x20+1], file_name[STREAM_NAME_SIZE]; off_t start_offset, header_offset, name_offset; size_t stream_size; uint32_t channel_count, sample_rate, num_samples, version, codec, tracks; - int loop_flag, total_subsongs, target_subsong = sf->stream_index; + int big_endian, loop_flag, total_subsongs, target_subsong = sf->stream_index; read_u32_t read_u32; /* checks */ if (!is_id32be(0x00, sf, "BANK")) - goto fail; + return NULL; if (!check_extensions(sf, "baf")) - goto fail; + return NULL; /* use BANK size to check endianness */ - if (guess_endian32(0x04,sf)) { - read_u32 = read_u32be; - } else { - read_u32 = read_u32le; - } + big_endian = guess_endian32(0x04, sf); + read_u32 = big_endian ? read_u32be : read_u32le; /* 0x04: bank size */ version = read_u32(0x08,sf); @@ -69,7 +67,7 @@ VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { tracks = 0; switch(codec) { - case 0x03: /* PCM16LE */ + case 0x03: /* PCM16 */ switch(version) { case 0x03: /* Geometry Wars (PC) */ sample_rate = read_u32(header_offset+0x38, sf); @@ -81,7 +79,13 @@ VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { case 0x04: /* Project Gotham Racing 4 (X360) */ sample_rate = read_u32(header_offset+0x3c, sf); channel_count = read_u32(header_offset+0x44, sf); - loop_flag = read_u8(header_offset+0x4b, sf); + loop_flag = read_u8(header_offset+0x4b, sf); + break; + + case 0x05: /* Blur 2 (X360) */ + sample_rate = read_u32(header_offset+0x40, sf); + channel_count = read_u32(header_offset+0x48, sf); + loop_flag = read_u8(header_offset+0x50, sf) != 0; break; default: @@ -93,14 +97,14 @@ VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { case 0x07: /* PSX ADPCM (0x21 frame size) */ if (version == 0x04 && read_u32(header_offset + 0x3c, sf) != 0) { - /* Blur (Prototype) (PS3) */ + /* The Club (PS3), Blur (Prototype) (PS3) */ sample_rate = read_u32(header_offset+0x3c, sf); channel_count = read_u32(header_offset+0x44, sf); loop_flag = read_u8(header_offset+0x4b, sf); /* mini-header at the start of the stream */ - num_samples = read_u32le(start_offset+0x04, sf) / 0x02; /* PCM size? */ - start_offset += read_u32le(start_offset+0x00, sf); + num_samples = read_u32le(start_offset+0x04, sf) / channel_count; + start_offset += read_u32le(start_offset+0x00, sf); /* 0x08 */ break; } @@ -117,14 +121,16 @@ VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { channel_count = channel_count * tracks; } break; + default: goto fail; } break; case 0x08: /* XMA1 */ + case 0x09: /* XMA2 */ switch(version) { - case 0x04: /* Project Gotham Racing (X360) */ + case 0x04: /* Project Gotham Racing 4 (X360) */ sample_rate = read_u32(header_offset+0x3c, sf); channel_count = read_u32(header_offset+0x44, sf); loop_flag = read_u8(header_offset+0x54, sf) != 0; @@ -160,7 +166,7 @@ VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { switch(codec) { case 0x03: - vgmstream->coding_type = coding_PCM16LE; + vgmstream->coding_type = big_endian ? coding_PCM16BE : coding_PCM16LE; vgmstream->layout_type = layout_interleave; vgmstream->interleave_block_size = 0x02; @@ -179,44 +185,73 @@ VGMSTREAM * init_vgmstream_baf(STREAMFILE *sf) { vgmstream->loop_end_sample = num_samples; break; - #ifdef VGM_USE_FFMPEG - case 0x08: { - vgmstream->codec_data = init_ffmpeg_xma1_raw(sf, start_offset, stream_size, vgmstream->channels, vgmstream->sample_rate, 0); - if (!vgmstream->codec_data) goto fail; - vgmstream->coding_type = coding_FFmpeg; - vgmstream->layout_type = layout_none; +#ifdef VGM_USE_FFMPEG + case 0x08: + case 0x09: { + int is_xma1 = (codec == 0x08); + int block_size = 0x10000; /* need to manually find sample offsets, it was a thing with XMA1 */ { ms_sample_data msd = {0}; - msd.xma_version = 1; + msd.xma_version = is_xma1 ? 1 : 2; msd.channels = channel_count; msd.data_offset = start_offset; msd.data_size = stream_size; msd.loop_flag = loop_flag; - msd.loop_start_b = read_u32(header_offset+0x4c, sf); - msd.loop_end_b = read_u32(header_offset+0x50, sf); - msd.loop_start_subframe = (read_u8(header_offset+0x55, sf) >> 0) & 0x0f; - msd.loop_end_subframe = (read_u8(header_offset+0x55, sf) >> 4) & 0x0f; + + switch(version) { + case 0x04: + msd.loop_start_b = read_u32(header_offset+0x4c, sf); + msd.loop_end_b = read_u32(header_offset+0x50, sf); + msd.loop_start_subframe = (read_u8(header_offset+0x55, sf) >> 0) & 0x0f; + msd.loop_end_subframe = (read_u8(header_offset+0x55, sf) >> 4) & 0x0f; + break; + + case 0x05: + msd.loop_start_b = read_u32(header_offset+0x50, sf); + msd.loop_end_b = read_u32(header_offset+0x54, sf); + msd.loop_start_subframe = (read_u8(header_offset+0x59, sf) >> 0) & 0x0f; + msd.loop_end_subframe = (read_u8(header_offset+0x59, sf) >> 4) & 0x0f; + break; + + default: + goto fail; + } xma_get_samples(&msd, sf); - vgmstream->num_samples = msd.num_samples; /* also at 0x58, but unreliable? */ + vgmstream->coding_type = coding_FFmpeg; + vgmstream->layout_type = layout_none; + + vgmstream->num_samples = msd.num_samples; /* also at 0x58(v4)/0x5C(v5) for XMA1, but unreliable? */ vgmstream->loop_start_sample = msd.loop_start_sample; vgmstream->loop_end_sample = msd.loop_end_sample; + + vgmstream->codec_data = is_xma1 + ? init_ffmpeg_xma1_raw(sf, start_offset, stream_size, vgmstream->channels, vgmstream->sample_rate, 0) + : init_ffmpeg_xma2_raw(sf, start_offset, stream_size, vgmstream->num_samples, vgmstream->channels, vgmstream->sample_rate, block_size, 0); + if (!vgmstream->codec_data) goto fail; } xma_fix_raw_samples_ch(vgmstream, sf, start_offset, stream_size, channel_count, 1,1); break; } - #endif +#endif default: VGM_LOG("BAF: unknown codec %x\n", codec); goto fail; } - read_string(vgmstream->stream_name,0x20+1, name_offset,sf); + read_string(bank_name, sizeof(bank_name), (version == 0x03) ? 0x11 : 0x12, sf); + read_string(stream_name, sizeof(stream_name), name_offset, sf); + get_streamfile_basename(sf, file_name, STREAM_NAME_SIZE); + + if (bank_name[0] && strcmp(file_name, bank_name) != 0) + snprintf(vgmstream->stream_name, STREAM_NAME_SIZE, "%s/%s", bank_name, stream_name); + else + snprintf(vgmstream->stream_name, STREAM_NAME_SIZE, "%s", stream_name); if (!vgmstream_open_stream(vgmstream, sf, start_offset)) diff --git a/Frameworks/vgmstream/vgmstream/src/meta/bnk_sony.c b/Frameworks/vgmstream/vgmstream/src/meta/bnk_sony.c index 32e52f8f6..0067615bd 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/bnk_sony.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/bnk_sony.c @@ -724,8 +724,10 @@ static bool process_names(STREAMFILE* sf, bnk_header_t* h) { /* searches the chunk until it finds the target name/index, or breaks at empty name */ while (read_u8(stream_name_offset, sf)) { /* in case it goes somewhere out of bounds unexpectedly */ - if (((read_u8(stream_name_offset + 0x00, sf) + read_u8(stream_name_offset + 0x04, sf) + - read_u8(stream_name_offset + 0x08, sf) + read_u8(stream_name_offset + 0x0C, sf)) & 0x1F) != i) + if (((read_u8(stream_name_offset + 0x00, sf) + + read_u8(stream_name_offset + 0x04, sf) + + read_u8(stream_name_offset + 0x08, sf) + + read_u8(stream_name_offset + 0x0C, sf)) & 0x1F) != i) goto fail; if (read_u16(stream_name_offset + 0x10, sf) == table4_entry_id) { read_string(h->stream_name, STREAM_NAME_SIZE, stream_name_offset, sf); @@ -735,7 +737,7 @@ static bool process_names(STREAMFILE* sf, bnk_header_t* h) { stream_name_offset += 0x14; } } - //goto fail; /* didn't find any valid index? */ + goto fail; /* didn't find any valid index? */ loop_break: break; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/compresswave.c b/Frameworks/vgmstream/vgmstream/src/meta/compresswave.c index c8b16d1fa..8dbbafbb2 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/compresswave.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/compresswave.c @@ -10,17 +10,16 @@ VGMSTREAM* init_vgmstream_compresswave(STREAMFILE *sf) { /* checks */ - if (!check_extensions(sf, "cwav")) - goto fail; - if (!is_id64be(0x00,sf, "CmpWave\0")) - goto fail; + return NULL; + if (!check_extensions(sf, "cwav")) + return NULL; channels = 2; /* always, header channels is internal config */ start_offset = 0x00; - loop_flag = 1; //read_u8(0x430, sf) != 0; /* wrong count, see below */ - /* codec allows to use a cipher value, not seen */ - /* there is also title and artist, but default to "UnTitled" / "NoName" */ + loop_flag = true; //read_u8(0x430, sf) != 0; /* wrong count, see below */ + // codec allows to use a cipher value, not seen + // there is also title and artist, but default to "UnTitled" / "NoName" /* build the VGMSTREAM */ @@ -28,10 +27,9 @@ VGMSTREAM* init_vgmstream_compresswave(STREAMFILE *sf) { if (!vgmstream) goto fail; vgmstream->meta_type = meta_COMPRESSWAVE; - vgmstream->sample_rate = 44100; /* always, header rate is internal config */ - /* in PCM bytes */ - vgmstream->num_samples = read_u64le(0x418, sf) / sizeof(int16_t) / channels; - /* known files have wrong loop values and just repeat */ + vgmstream->sample_rate = 44100; // always, header rate is internal config + vgmstream->num_samples = read_u64le(0x418, sf) / sizeof(int16_t) / channels; // in PCM bytes + // known files have wrong loop values and just repeat vgmstream->loop_start_sample = 0; //read_u64le(0x420, sf) / sizeof(int16_t) / channels; vgmstream->loop_end_sample = vgmstream->num_samples; //read_u64le(0x428, sf) / sizeof(int16_t) / channels; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/fsb5.c b/Frameworks/vgmstream/vgmstream/src/meta/fsb5.c index cdbbf8133..adac4acc0 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/fsb5.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/fsb5.c @@ -385,6 +385,7 @@ VGMSTREAM* init_vgmstream_fsb5(STREAMFILE* sf) { mpeg_custom_config cfg = {0}; cfg.fsb_padding = (vgmstream->channels > 2 ? 16 : 4); /* observed default */ + cfg.data_size = fsb5.stream_offset + fsb5.stream_size; vgmstream->codec_data = init_mpeg_custom(sb, fsb5.stream_offset, &vgmstream->coding_type, vgmstream->channels, MPEG_FSB, &cfg); if (!vgmstream->codec_data) goto fail; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/fsb_keys.h b/Frameworks/vgmstream/vgmstream/src/meta/fsb_keys.h index 4b1cbabca..e1b2b859d 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/fsb_keys.h +++ b/Frameworks/vgmstream/vgmstream/src/meta/fsb_keys.h @@ -70,6 +70,7 @@ static const fsbkey_info fsbkey_list[] = { { MODE_FSB5, FSBKEY_ADD("3cfe772db5b55b806541d3faf894020e") }, // Final Fantasy XV: War for Eos (Android) { MODE_FSB5, FSBKEY_ADD("aj#$kLucf2lh}eqh") }, // Forza Motorsport 2023 (PC) { MODE_FSB4, FSBKEY_ADD("dpdjeoqkr") }, // AirRider CrazyRacing (PC) + { MODE_FSB5, FSBKEY_ADD("weareAbsolutelyUnsure2018") }, // Wanderstop (PC) /* some games use a key per file, generated from the filename * (could add all of them but there are a lot of songs, so external .fsbkey are probably better) */ diff --git a/Frameworks/vgmstream/vgmstream/src/meta/hca.c b/Frameworks/vgmstream/vgmstream/src/meta/hca.c index ee815ce74..c54c71924 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/hca.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/hca.c @@ -111,7 +111,7 @@ VGMSTREAM* init_vgmstream_hca_subkey(STREAMFILE* sf, uint16_t subkey) { /* Assumed mappings; seems correct vs Atom Viewer, that lists L/R/C/LFE/LS/RS and downmixes HCAs like that. * USM HCA's seem to be L/R/SL/SR/C/LFE though (probably reordered at USM level, no detection done in Atom Viewer). */ - { + if (vgmstream->channels <= 8) { // 8 is max but just in case static const uint32_t hca_mappings[] = { 0, mapping_MONO, diff --git a/Frameworks/vgmstream/vgmstream/src/meta/hca_keys.h b/Frameworks/vgmstream/vgmstream/src/meta/hca_keys.h index 07ae29b6b..491883a2f 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/hca_keys.h +++ b/Frameworks/vgmstream/vgmstream/src/meta/hca_keys.h @@ -518,6 +518,7 @@ static const hcakey_info hcakey_list[] = { {0x0c59613fc788cec7}, // music_0210025 {0xf61a0cfac4072903}, // music_0210026 {0xa316e41cc9303921}, // music_0210027 + {0x61933afefe5f14c3}, // music_0210028 {0x15bb78c31db0a0b6}, // music_0220001 {0x59b1257242c40109}, // music_0220002 {0xdb402bd08d522f34}, // music_0220003 @@ -711,6 +712,7 @@ static const hcakey_info hcakey_list[] = { {0x9f37cb27968428fa}, // music_0610027 {0x36024c4a109520ec}, // music_0610028 {0x758ad666ba171bd7}, // music_0610029 + {0xe3c90dcaed524e49}, // music_0610030 {0x8258ddd6a1d0849b}, // music_0620001 {0x1dd21a1244ca12f1}, // music_0620002 {0xfdec74b23d8b494b}, // music_0620003 @@ -1267,6 +1269,11 @@ static const hcakey_info hcakey_list[] = { {0x34c0f6db642145a0}, // music_5050307 {0xb7ecea9165c448da}, // music_5050308 {0xa5e9bd945c5caf2c}, // music_5050309 + {0x91ff4aedae9ce2c3}, // music_5050313 + {0xeaaa417505d65dd1}, // music_5050322 + {0x591899d025c3beb7}, // music_5050323 + {0xa57678c62ef99124}, // music_5050324 + {0x925f360a8ccb4c32}, // music_5050325 {0x52c250eade92393b}, // music_9010001 {0xf66e6bb5b0599b07}, // music_9010002 {0x8582b5a60dbbf948}, // music_9010003 @@ -1529,6 +1536,9 @@ static const hcakey_info hcakey_list[] = { // Freedom Wars Remastered (Switch) {3258660547165106863}, // 2D391680A55B32AF + // Suikoden I & II HD Remaster (PC) + {14510296783270449627u}, // C95EEE0BA85411DB + }; #endif diff --git a/Frameworks/vgmstream/vgmstream/src/meta/imuse.c b/Frameworks/vgmstream/vgmstream/src/meta/imuse.c index c974a7179..323f71b1b 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/imuse.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/imuse.c @@ -136,7 +136,7 @@ VGMSTREAM* init_vgmstream_imuse(STREAMFILE* sf) { vgmstream->coding_type = coding_IMUSE; vgmstream->layout_type = layout_none; - vgmstream->codec_data = init_imuse(sf, channels); + vgmstream->codec_data = init_imuse_mcomp(sf, channels); if (!vgmstream->codec_data) goto fail; if (name_offset > 0) diff --git a/Frameworks/vgmstream/vgmstream/src/meta/kraw.c b/Frameworks/vgmstream/vgmstream/src/meta/kraw.c index a14a2146c..a6e11481c 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/kraw.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/kraw.c @@ -1,64 +1,32 @@ #include "meta.h" -#include "../util.h" +#include "../coding/coding.h" +#include "../util/meta_utils.h" -/* KRAW (from Geometry Wars - Galaxies) */ -VGMSTREAM * init_vgmstream_kraw(STREAMFILE *streamFile) { - VGMSTREAM * vgmstream = NULL; - char filename[PATH_LIMIT]; - off_t start_offset; - int loop_flag = 0; - int channel_count; +/* KRAW - from Geometry Wars: Galaxies (Wii) */ +VGMSTREAM* init_vgmstream_kraw(STREAMFILE* sf) { - /* check extension, case insensitive */ - streamFile->get_name(streamFile,filename,sizeof(filename)); - if (strcasecmp("kraw",filename_extension(filename))) goto fail; + /* checks */ + if (!is_id32be(0x00,sf, "kRAW")) + return NULL; + // .kRAW: actual extension + if (!check_extensions(sf, "kraw")) + return NULL; - /* check header */ - if (read_32bitBE(0x00,streamFile) != 0x6B524157) /* "kRAW" */ - goto fail; + meta_header_t h = {0}; + h.data_size = read_u32be(0x04,sf); - loop_flag = 0; - channel_count = 1; - - /* build the VGMSTREAM */ - vgmstream = allocate_vgmstream(channel_count,loop_flag); - if (!vgmstream) goto fail; + h.meta = meta_KRAW; - /* fill in the vital statistics */ - start_offset = 0x8; - vgmstream->channels = channel_count; - vgmstream->sample_rate = 32000; - vgmstream->coding_type = coding_PCM16BE; - vgmstream->num_samples = read_32bitBE(0x04,streamFile)/2/channel_count; - if (loop_flag) { - vgmstream->loop_start_sample = 0; - vgmstream->loop_end_sample = read_32bitBE(0x04,streamFile)/2/channel_count; - } + h.stream_offset = 0x08; + h.channels = 1; + h.sample_rate = 32000; + h.num_samples = pcm16_bytes_to_samples(h.data_size, h.channels); + h.allow_dual_stereo = true; - vgmstream->layout_type = layout_none; - vgmstream->meta_type = meta_KRAW; - vgmstream->allow_dual_stereo = 1; + h.coding = coding_PCM16BE; + h.layout = layout_none; + h.open_stream = true; + h.sf = sf; - /* open the file for reading */ - { - int i; - STREAMFILE * file; - file = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE); - if (!file) goto fail; - for (i=0;ich[i].streamfile = file; - - vgmstream->ch[i].channel_start_offset= - vgmstream->ch[i].offset=start_offset+ - vgmstream->interleave_block_size*i; - - } - } - - return vgmstream; - - /* clean up anything we may have opened */ -fail: - if (vgmstream) close_vgmstream(vgmstream); - return NULL; + return alloc_metastream(&h); } diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ktsr.c b/Frameworks/vgmstream/vgmstream/src/meta/ktsr.c index 1517d8b99..2af316d0f 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/ktsr.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/ktsr.c @@ -512,7 +512,6 @@ static bool parse_ktsr_subfile(ktsr_header_t* ktsr, STREAMFILE* sf, uint32_t off ktsr->stream_sizes[0] = read_u32le(offset + 0x38, sf); } ktsr->is_external = true; -VGM_LOG("k=%x\n", ktsr->codec_value); break; case 0x41FDBD4E: /* internal [Attack on Titan: Wings of Freedom (Vita)] */ diff --git a/Frameworks/vgmstream/vgmstream/src/meta/lp_ap_lep.c b/Frameworks/vgmstream/vgmstream/src/meta/lp_ap_lep.c index bf5231735..9e1d5ab25 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/lp_ap_lep.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/lp_ap_lep.c @@ -8,7 +8,7 @@ VGMSTREAM* init_vgmstream_lp_ap_lep(STREAMFILE* sf) { STREAMFILE* temp_sf = NULL; off_t start_offset; int loop_flag, channels, sample_rate, interleave; - int32_t data_size, loop_start; + uint32_t data_size, loop_start, loop_end; uint32_t id; @@ -25,23 +25,47 @@ VGMSTREAM* init_vgmstream_lp_ap_lep(STREAMFILE* sf) { switch (id) { case 0x41502020: /* "AP " */ case 0x4C502020: /* "LP " */ + data_size = read_u32le(0x04,sf); // end offset after header sample_rate = read_u32le(0x08,sf); interleave = read_u32le(0x0c,sf); - loop_start = read_u32le(0x14,sf); - data_size = read_u32le(0x18,sf); - start_offset = read_u32le(0x1C,sf); + // 10: pan/volume? + loop_start = read_u32le(0x14,sf); // absolute + loop_end = read_u32le(0x18,sf); // end offset after header + start_offset= read_u32le(0x1C,sf); // after header + + // tweak values considering (applies to both PS-ADPCM and PCM): + // - start_offset with PCM starts 0x20 before data, so must be after header (not a blank frame) + // - end offset after 0x20 usually ends when padding (0xFF) starts + // - loop end is usually the same except in PCM + // - loop start is always aligned to 0x800 (meaning no loop/0 uses 0x800 w/ start offset 0x7E0 + 0x20) + // * in PS-ADPCM start after header points to a regular frame, a bit odd since PS-ADPCM should start with blank frames + // but correct as LEP starts at 0x800 without them + start_offset += 0x20; + data_size += 0x20; + loop_end += 0x20; + data_size -= start_offset; + loop_end -= start_offset; + loop_start -= start_offset; break; - case 0x4C455020: /* "LEP " */ - data_size = read_u32le(0x08,sf); + case 0x4C455020: /* "LEP " (memory data?) */ + // 04: config? + data_size = read_u32le(0x08,sf); // within stream + // 10: pan/volume? sample_rate = read_u16le(0x12,sf); - loop_start = read_u32le(0x58,sf); + loop_start = read_u32le(0x58,sf); // within stream? + // 5c: loop start? + // 60+: related to loop? + + // not sure if loops are absolute, but since values are not 0x800-aligned like AP/LP assuming it's not + + loop_end = data_size; interleave = 0x10; start_offset = 0x800; break; default: - goto fail; + return NULL; } loop_flag = loop_start != 0; @@ -61,9 +85,9 @@ VGMSTREAM* init_vgmstream_lp_ap_lep(STREAMFILE* sf) { vgmstream->layout_type = layout_interleave; vgmstream->interleave_block_size = interleave; - vgmstream->num_samples = pcm_bytes_to_samples(data_size, channels, 16); - vgmstream->loop_start_sample = pcm_bytes_to_samples(loop_start, channels, 16); - vgmstream->loop_end_sample = vgmstream->num_samples; + vgmstream->num_samples = pcm16_bytes_to_samples(data_size, channels); + vgmstream->loop_start_sample = pcm16_bytes_to_samples(loop_start, channels); + vgmstream->loop_end_sample = pcm16_bytes_to_samples(loop_end, channels); temp_sf = setup_lp_streamfile(sf, start_offset); /* encrypted/obfuscated PCM */ if (!temp_sf) goto fail; @@ -77,7 +101,7 @@ VGMSTREAM* init_vgmstream_lp_ap_lep(STREAMFILE* sf) { vgmstream->num_samples = ps_bytes_to_samples(data_size, channels); vgmstream->loop_start_sample = ps_bytes_to_samples(loop_start, channels); - vgmstream->loop_end_sample = vgmstream->num_samples; + vgmstream->loop_end_sample = ps_bytes_to_samples(loop_end, channels); break; default: diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ps2_gcm.c b/Frameworks/vgmstream/vgmstream/src/meta/mcg.c similarity index 89% rename from Frameworks/vgmstream/vgmstream/src/meta/ps2_gcm.c rename to Frameworks/vgmstream/vgmstream/src/meta/mcg.c index 96025f7c7..16f6f4db5 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/ps2_gcm.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/mcg.c @@ -2,8 +2,8 @@ #include "../util.h" #include "../coding/coding.h" -/* .GCM - from PS2 Namco games [Gunvari Collection + Time Crisis (PS2), NamCollection (PS2)] */ -VGMSTREAM* init_vgmstream_ps2_gcm(STREAMFILE* sf) { +/* MCG - from PS2 Namco games [Gunvari Collection + Time Crisis (PS2), NamCollection (PS2)] */ +VGMSTREAM* init_vgmstream_mcg(STREAMFILE* sf) { VGMSTREAM* vgmstream = NULL; uint32_t start_offset, name_offset; uint32_t vagp_l_offset, vagp_r_offset, track_size, data_size, channel_size; @@ -12,11 +12,10 @@ VGMSTREAM* init_vgmstream_ps2_gcm(STREAMFILE* sf) { /* checks */ if (!is_id32be(0x00,sf, "MCG\0")) - goto fail; - - /* .gcm: actual extension */ + return NULL; + // .gcm: actual extension if (!check_extensions(sf, "gcm")) - goto fail; + return NULL; /* format is two v4 "VAGp" headers then interleaved data (even for 6ch files) */ @@ -59,7 +58,7 @@ VGMSTREAM* init_vgmstream_ps2_gcm(STREAMFILE* sf) { vgmstream = allocate_vgmstream(channels, 0); if (!vgmstream) goto fail; - vgmstream->meta_type = meta_PS2_GCM; + vgmstream->meta_type = meta_MCG; vgmstream->sample_rate = sample_rate; vgmstream->num_samples = ps_bytes_to_samples(channel_size, 1); vgmstream->coding_type = coding_PSX; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/meta.h b/Frameworks/vgmstream/vgmstream/src/meta/meta.h index 3f1e9d800..1c916e7b7 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/meta.h +++ b/Frameworks/vgmstream/vgmstream/src/meta/meta.h @@ -366,8 +366,6 @@ VGMSTREAM* init_vgmstream_smss(STREAMFILE* sf); VGMSTREAM* init_vgmstream_ads_midway(STREAMFILE* sf); -VGMSTREAM * init_vgmstream_ps2_mcg(STREAMFILE *streamFile); - VGMSTREAM * init_vgmstream_zsd(STREAMFILE *streamFile); VGMSTREAM * init_vgmstream_vgs_ps(STREAMFILE *streamFile); @@ -431,7 +429,7 @@ VGMSTREAM* init_vgmstream_wb(STREAMFILE* sf); VGMSTREAM* init_vgmstream_raw_s14_sss(STREAMFILE* sf); -VGMSTREAM * init_vgmstream_ps2_gcm(STREAMFILE* streamFile); +VGMSTREAM * init_vgmstream_mcg(STREAMFILE* streamFile); VGMSTREAM* init_vgmstream_smpl(STREAMFILE* sf); @@ -490,8 +488,6 @@ VGMSTREAM * init_vgmstream_xwav_old(STREAMFILE* sf); VGMSTREAM * init_vgmstream_raw_snds(STREAMFILE* streamFile); -VGMSTREAM * init_vgmstream_ps2_wmus(STREAMFILE* streamFile); - VGMSTREAM * init_vgmstream_hyperscan_kvag(STREAMFILE* streamFile); VGMSTREAM* init_vgmstream_psnd(STREAMFILE* sf); @@ -1032,4 +1028,10 @@ VGMSTREAM* init_vgmstream_shaa(STREAMFILE* sf); VGMSTREAM* init_vgmstream_undefind(STREAMFILE* sf); +VGMSTREAM* init_vgmstream_oor(STREAMFILE* sf); + +VGMSTREAM* init_vgmstream_mio(STREAMFILE* sf); + +VGMSTREAM* init_vgmstream_2dx(STREAMFILE* sf); + #endif diff --git a/Frameworks/vgmstream/vgmstream/src/meta/mio.c b/Frameworks/vgmstream/vgmstream/src/meta/mio.c new file mode 100644 index 000000000..f0e00d8ab --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/meta/mio.c @@ -0,0 +1,57 @@ +#include "meta.h" +#include "../coding/coding.h" + + +/* .MIO - Entis's 'Music Interleaved and Orthogonal transformed' [HAYABUSA (PC), Rakuen no Kantai (PC/Android)] */ +VGMSTREAM* init_vgmstream_mio(STREAMFILE* sf) { + VGMSTREAM* vgmstream = NULL; + uint32_t start_offset; + + /* checks */ + if (!is_id64be(0x00,sf, "Entis\x1a\x00\x00")) + return NULL; + // all of Entis's formats have long text descriptors, will be re-checked during codec init + if (!is_id64be(0x10,sf, "Music In")) + return NULL; + + if (!check_extensions(sf,"mio")) + return NULL; + + + // get info (abridged), could use lib though + int channels = read_s32le(0x90,sf); + int sample_rate = 44100; // there is input rate at 0x94 put output is fixed + int32_t num_samples = read_s32le(0xA0,sf); + + // loops are in UTF16 tags, kinda annoying to read so get from lib below + int32_t loop_start = 0; + bool loop_flag = 1; //(loop_start > 0); + + start_offset = 0x00; + + + /* build the VGMSTREAM */ + vgmstream = allocate_vgmstream(channels, loop_flag); + if (!vgmstream) goto fail; + + vgmstream->meta_type = meta_MIO; + vgmstream->sample_rate = sample_rate; + vgmstream->num_samples = num_samples; + + // .mio has multiple modes (lapped/huffman/lossless) but not that interesting to print as info + vgmstream->codec_data = init_mio(sf, &loop_start); + if (!vgmstream->codec_data) goto fail; + vgmstream->coding_type = coding_MIO; + vgmstream->layout_type = layout_none; + + vgmstream->loop_start_sample = loop_start; + vgmstream->loop_end_sample = num_samples; + vgmstream->loop_flag = (loop_start >= 0); + + if (!vgmstream_open_stream(vgmstream, sf, start_offset)) + goto fail; + return vgmstream; +fail: + close_vgmstream(vgmstream); + return NULL; +} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ngc_dsp_std.c b/Frameworks/vgmstream/vgmstream/src/meta/ngc_dsp_std.c index c48e710c1..96089aef8 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/ngc_dsp_std.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/ngc_dsp_std.c @@ -1446,7 +1446,7 @@ VGMSTREAM* init_vgmstream_dsp_wiivoice(STREAMFILE* sf) { } -/* WIIADPCM - Exient wrapper [Need for Speed: Hot Pursuit (Wii), Angry Birds: Star Wars (WiiU)] */ +/* WIIADPCM - Exient wrapper [Need for Speed: Hot Pursuit (Wii), Angry Birds: Star Wars (Wii/WiiU)] */ VGMSTREAM* init_vgmstream_dsp_wiiadpcm(STREAMFILE* sf) { dsp_meta dspm = {0}; @@ -1456,18 +1456,33 @@ VGMSTREAM* init_vgmstream_dsp_wiiadpcm(STREAMFILE* sf) { if (!check_extensions(sf, "adpcm")) return NULL; - dspm.interleave = read_u32be(0x08,sf); /* interleave offset */ - /* 0x0c: NFS = 0 when RAM (2 DSP headers), interleave size when stream (2 WIIADPCM headers) - * AB = 0 (2 WIIADPCM headers) */ + // no good flag so use v2's loop+type as other values are easy to mistake + int test = read_u32be(0x2c,sf); + if (!(test == 0x00010000 || test == 0x00000000)) { + // V1 (NFSHP) + // 08: ch2 offset + // 0c: real interleave in streams (xN WIIADPCM headers), null in memory audio (xN DSP headers) + dspm.header_offset = 0x10; + dspm.max_channels = 2; + } + else { + // V2 (ABSW) + // 08-18: chN offset + // 1c: real interleave in streams (xN WIIADPCM headers), null in memory audio (xN DSP headers) + // (interleave may be set in mono too) + dspm.header_offset = 0x20; + dspm.max_channels = 6; + } - dspm.channels = (dspm.interleave ? 2 : 1); - dspm.max_channels = 2; - - if (read_u32be(0x10,sf) != 0) - dspm.header_offset = 0x10; /* NFSHP */ - else - dspm.header_offset = 0x20; /* ABSW */ + dspm.channels = 1; + for (int i = 0; i < dspm.max_channels - 1; i++) { + uint32_t offset = read_u32be(0x08 + i * 0x04, sf); + if (!offset) + break; + dspm.channels += 1; + } + dspm.interleave = read_u32be(0x08,sf); // use first channel offset as interleave if (dspm.interleave) dspm.interleave -= dspm.header_offset; dspm.interleave_first_skip = 0x60 + dspm.header_offset; @@ -1476,7 +1491,6 @@ VGMSTREAM* init_vgmstream_dsp_wiiadpcm(STREAMFILE* sf) { dspm.header_spacing = dspm.interleave; dspm.start_offset = dspm.header_offset + 0x60; - dspm.meta_type = meta_DSP_WIIADPCM; return init_vgmstream_dsp_common(sf, &dspm); } diff --git a/Frameworks/vgmstream/vgmstream/src/meta/oor.c b/Frameworks/vgmstream/vgmstream/src/meta/oor.c new file mode 100644 index 000000000..483075422 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/meta/oor.c @@ -0,0 +1,100 @@ +#include "meta.h" +#include "../util.h" +#include "../coding/coding.h" + + +static bool is_oor(STREAMFILE* sf); + +/* .OOR ("OptimizedObsforR") - rUGP/AGES engine audio [Muv-Luv (multi), Liberation Maiden SIN (PS3/Vita)] */ +VGMSTREAM* init_vgmstream_oor(STREAMFILE* sf) { + VGMSTREAM* vgmstream = NULL; + vorbis_custom_codec_data* data = NULL; + off_t start_offset; + + + /* checks */ + if (read_u8(0x00, sf) != 0x08 && read_u32be(0x00, sf) != 0x48000000) //v0 and v1 first page headers + return NULL; + if (!check_extensions(sf, "oor")) + return NULL; + + // bitpacked header, should fail during on init with bad data but do minor validations to skip some allocs + if (!is_oor(sf)) + return NULL; + +#ifdef VGM_USE_VORBIS + vorbis_custom_config cfg = {0}; //loads info on success + + data = init_vorbis_custom(sf, 0x00, VORBIS_OOR, &cfg); + if (!data) return NULL; + + start_offset = cfg.data_start_offset; + + /* build the VGMSTREAM */ + vgmstream = allocate_vgmstream(cfg.channels, 0); + if (!vgmstream) goto fail; + + vgmstream->meta_type = meta_OOR; + vgmstream->sample_rate = cfg.sample_rate; + vgmstream->num_samples = cfg.last_granule; + + vgmstream->layout_type = layout_none; + vgmstream->coding_type = coding_VORBIS_custom; + vgmstream->codec_data = data; + data = NULL; + + if (!vgmstream_open_stream(vgmstream, sf, start_offset)) + goto fail; + + //TODO: improve + // v0 files don't set last granule (must be done after opening streamfiles) + if (!cfg.last_granule) + vgmstream->num_samples = vorbis_custom_get_samples(vgmstream); +#else + goto fail; +#endif + + return vgmstream; +fail: + free_vorbis_custom(data); + close_vgmstream(vgmstream); + return NULL; +} + +// OOR is bitpacked but try to determine if bytes look like a .oor (will fail later if we picked a wrong candidate). +static bool is_oor(STREAMFILE* sf) { + static uint8_t empty_granule[0x09]; + uint8_t data[0x10] = {0}; + + read_streamfile(data, 0x00, sizeof(data), sf); + + int page_version; + int head_pos; + if (data[0x00] == 0x48 && memcmp(data + 0x01, empty_granule, 9) == 0) { + // V1: bits 01 0010 00 + granule + header + head_pos = 0x0A; + page_version = 1; + } + else if (data[0x00] == 0x08) { + // V0: bits 00 0010 00 + header + head_pos = 0x01; + page_version = 0; + } + else { + return false; + } + + uint16_t head = (data[head_pos] << 8) | data[head_pos+1]; + int version = (head >> 14) & 0x03; //2b + int channels = (head >> 11) & 0x07; //3b + int sr_selector = (head >> 9) & 0x03; //3b + int srate = (head >> 1) & 0xFF; //3b + + if (version != page_version || channels == 0) + return false; + + if (sr_selector == 3 && srate > 10) + return false; + + return true; +} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ps2_mcg.c b/Frameworks/vgmstream/vgmstream/src/meta/ps2_mcg.c deleted file mode 100644 index ba3eaec94..000000000 --- a/Frameworks/vgmstream/vgmstream/src/meta/ps2_mcg.c +++ /dev/null @@ -1,67 +0,0 @@ -#include "meta.h" -#include "../util.h" - -/* GUN (Gunvari Streams) */ -VGMSTREAM * init_vgmstream_ps2_mcg(STREAMFILE *streamFile) { - VGMSTREAM * vgmstream = NULL; - char filename[PATH_LIMIT]; - off_t start_offset; - int loop_flag = 0; - int channel_count; - - /* check extension, case insensitive */ - streamFile->get_name(streamFile,filename,sizeof(filename)); - if (strcasecmp("mcg",filename_extension(filename))) goto fail; - - /* check header */ - if (!((read_32bitBE(0x00,streamFile) == 0x4D434700) && - (read_32bitBE(0x20,streamFile) == 0x56414770) && - (read_32bitBE(0x50,streamFile) == 0x56414770))) - goto fail; - - loop_flag = (read_32bitLE(0x34,streamFile)!=0); - channel_count = 2; - - /* build the VGMSTREAM */ - vgmstream = allocate_vgmstream(channel_count,loop_flag); - if (!vgmstream) goto fail; - - /* fill in the vital statistics */ - start_offset = 0x80; - vgmstream->channels = channel_count; - vgmstream->sample_rate = read_32bitBE(0x30,streamFile); - vgmstream->coding_type = coding_PSX; - vgmstream->num_samples = read_32bitBE(0x2C,streamFile)/16*14*channel_count; - vgmstream->layout_type = layout_interleave; - vgmstream->interleave_block_size = read_32bitLE(0x14,streamFile); - vgmstream->meta_type = meta_PS2_MCG; - - if (vgmstream->loop_flag) - { - vgmstream->loop_start_sample = read_32bitLE(0x34,streamFile); - vgmstream->loop_end_sample = vgmstream->num_samples; - } - - /* open the file for reading */ - { - int i; - STREAMFILE * file; - file = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE); - if (!file) goto fail; - for (i=0;ich[i].streamfile = file; - - vgmstream->ch[i].channel_start_offset= - vgmstream->ch[i].offset=start_offset+ - vgmstream->interleave_block_size*i; - - } - } - - return vgmstream; - - /* clean up anything we may have opened */ -fail: - if (vgmstream) close_vgmstream(vgmstream); - return NULL; -} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ps2_va3.c b/Frameworks/vgmstream/vgmstream/src/meta/ps2_va3.c deleted file mode 100644 index bd911bc27..000000000 --- a/Frameworks/vgmstream/vgmstream/src/meta/ps2_va3.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "meta.h" -#include "../coding/coding.h" - - -/* VA3 - Konami / Sony Atrac3 Container [PS2 DDR Supernova 2 Arcade] */ -VGMSTREAM * init_vgmstream_va3(STREAMFILE *streamFile) { - VGMSTREAM * vgmstream = NULL; - off_t start_offset; - int loop_flag, channel_count; - uint32_t data_size; - - /* check extension, case insensitive */ - if (!check_extensions(streamFile, "va3")) - goto fail; - - if (read_32bitBE(0x00, streamFile) != 0x21334156) /* "!3AV" */ - goto fail; - - /* va3 header */ - start_offset = 0x800; - data_size = read_32bitLE(0x04, streamFile);// get_streamfile_size(streamFile) - start_offset; - // pretty sure 0x4 LE 32 bit is some sort of filesize... - - loop_flag = 0; - //0x18 is 1... what is this? - channel_count = 2; - - - /* build the VGMSTREAM */ - vgmstream = allocate_vgmstream(channel_count, loop_flag); - if (!vgmstream) goto fail; - - vgmstream->meta_type = meta_VA3; - vgmstream->sample_rate = read_32bitLE(0x14, streamFile); - vgmstream->num_samples = read_32bitLE(0x08, streamFile); - vgmstream->channels = channel_count; - -#ifdef VGM_USE_FFMPEG - { - int block_align, encoder_delay; - - block_align = 0xC0 * vgmstream->channels; - encoder_delay = 0; //todo - - vgmstream->codec_data = init_ffmpeg_atrac3_raw(streamFile, start_offset,data_size, vgmstream->num_samples,vgmstream->channels,vgmstream->sample_rate, block_align, encoder_delay); - if (!vgmstream->codec_data) goto fail; - vgmstream->coding_type = coding_FFmpeg; - vgmstream->layout_type = layout_none; - } -#else - goto fail; -#endif - - /* open the file for reading */ - if (!vgmstream_open_stream(vgmstream, streamFile, start_offset)) - goto fail; - return vgmstream; - -fail: - close_vgmstream(vgmstream); - return NULL; -} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ps2_wmus.c b/Frameworks/vgmstream/vgmstream/src/meta/ps2_wmus.c deleted file mode 100644 index 209b8e4c4..000000000 --- a/Frameworks/vgmstream/vgmstream/src/meta/ps2_wmus.c +++ /dev/null @@ -1,102 +0,0 @@ -#include "meta.h" -#include "../util.h" - -//#include -//#include - -/* WMUS - Arbitrary extension chosen for The Warriors (PS2) */ - -VGMSTREAM * init_vgmstream_ps2_wmus(STREAMFILE *streamFile) -{ - VGMSTREAM * vgmstream = NULL; - char filename[PATH_LIMIT]; - - int loop_flag = 1; - int channel_count; - off_t start_offset; - int i; - - int blockCount; - int shortBlockSize; - int lastBlockLocation; - - char filenameWHED[PATH_LIMIT]; - STREAMFILE * streamFileWHED = NULL; - - //_TCHAR szBuffer[100]; - - /* check extension, case insensitive */ - streamFile->get_name(streamFile,filename,sizeof(filename)); - - if (strcasecmp("wmus",filename_extension(filename))) - { - goto fail; - } - - /* check for .WHED file */ - strcpy(filenameWHED, filename); - strcpy(filenameWHED + strlen(filenameWHED) - 4, "WHED"); - - streamFileWHED = streamFile->open(streamFile, filenameWHED, STREAMFILE_DEFAULT_BUFFER_SIZE); - if (!streamFileWHED) - { - goto fail; - } - - /* check loopand channel */ - loop_flag = 1; - channel_count = read_32bitLE(0x14, streamFileWHED); - - /* build the VGMSTREAM */ - vgmstream = allocate_vgmstream(channel_count, loop_flag); - if (!vgmstream) - { - goto fail; - } - - /* fill in the vital statistics */ - vgmstream->channels = channel_count; - vgmstream->sample_rate = read_32bitLE(0x04, streamFileWHED); - - vgmstream->coding_type = coding_PSX; - - vgmstream->interleave_block_size = read_32bitLE(0x18, streamFileWHED); - blockCount = read_32bitLE(0x1C, streamFileWHED) * channel_count; - shortBlockSize = read_32bitLE(0x20, streamFileWHED); - - vgmstream->num_samples = (vgmstream->interleave_block_size * blockCount) / 16 / channel_count * 28; - vgmstream->loop_start_sample = 0; - - lastBlockLocation = (vgmstream->interleave_block_size * blockCount) - (vgmstream->interleave_block_size - shortBlockSize); - vgmstream->loop_end_sample = lastBlockLocation / 16 / channel_count * 28; - - //_stprintf(szBuffer, _T("%x"), lastBlockLocation); - //MessageBox(NULL, szBuffer, _T("Foo"), MB_OK); - - - vgmstream->layout_type = layout_interleave; - vgmstream->meta_type = meta_PS2_WMUS; - - start_offset = 0; - - /* open the file for reading by each channel */ - { - for (i=0;ich[i].streamfile = streamFile->open(streamFile,filename,STREAMFILE_DEFAULT_BUFFER_SIZE); - - if (!vgmstream->ch[i].streamfile) goto fail; - - vgmstream->ch[i].channel_start_offset= - vgmstream->ch[i].offset= - (off_t)(start_offset+vgmstream->interleave_block_size*i); - } - } - - return vgmstream; - - /* clean up anything we may have opened */ -fail: - if (streamFileWHED) close_streamfile(streamFileWHED); - if (vgmstream) close_vgmstream(vgmstream); - return NULL; -} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/tac.c b/Frameworks/vgmstream/vgmstream/src/meta/tac.c index 1a01c97cf..6c88331ff 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/tac.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/tac.c @@ -4,65 +4,62 @@ /* tri-Ace codec file [Star Ocean 3 (PS2), Valkyrie Profile 2 (PS2), Radiata Stories (PS2)] */ VGMSTREAM* init_vgmstream_tac(STREAMFILE* sf) { VGMSTREAM* vgmstream = NULL; - int loop_flag, channel_count; - uint16_t loop_frame, frame_count, loop_discard, frame_last; - uint32_t info_offset, loop_offset, stream_size, file_size; + int loop_flag, channels; off_t start_offset; /* checks */ + // file is validated on decoder init, catch simple errors (see tac_decoder_lib.h for full header) + uint32_t info_offset = read_u32le(0x00,sf); + if (info_offset < 0x20 || info_offset > 0x4E000) /* offset points to value inside first "block" */ + return NULL; + /* (extensionless): bigfiles have no known names (libs calls mention "St*" and "Sac*" though) * .aac: fake for convenience given it's a tri-Ace AAC's grandpa (but don't use unless you must) * .pk3/.20: extremely ugly fake extensions randomly given by an old extractor, *DON'T* */ if (!check_extensions(sf, ",aac,laac")) - goto fail; - /* file is validated on decoder init, early catch of simple errors (see tac_decoder_lib.h for full header) */ - info_offset = read_u32le(0x00,sf); - if (info_offset > 0x4E000 || info_offset < 0x20) /* offset points to value inside first "block" */ - goto fail; - loop_frame = read_u16le(0x08,sf); - loop_discard = read_u16le(0x0a,sf); - frame_count = read_u16le(0x0c,sf); - frame_last = read_u16le(0x0e,sf); - loop_offset = read_u32le(0x10,sf); - stream_size = read_u32le(0x14,sf); + return NULL; + + uint16_t loop_frame = read_u16le(0x08,sf); + uint16_t loop_discard = read_u16le(0x0a,sf); + uint16_t frame_count = read_u16le(0x0c,sf); + uint16_t frame_last = read_u16le(0x0e,sf); + uint32_t loop_offset = read_u32le(0x10,sf); + uint32_t stream_size = read_u32le(0x14,sf); if (stream_size % 0x4E000 != 0) /* multiple of blocks */ - goto fail; + return NULL; /* actual file can truncate last block */ - file_size = get_streamfile_size(sf); + uint32_t file_size = get_streamfile_size(sf); if (file_size > stream_size || file_size < stream_size - 0x4E000) - goto fail; + return NULL; - channel_count = 2; /* always stereo */ - loop_flag = (loop_offset != stream_size); /* actual check may be loop_frame > 0? */ - start_offset = 0; + channels = 2; // always stereo + loop_flag = (loop_offset != stream_size); // actual check may be loop_frame > 0? + start_offset = 0; // handled internally /* build the VGMSTREAM */ - vgmstream = allocate_vgmstream(channel_count, loop_flag); + vgmstream = allocate_vgmstream(channels, loop_flag); if (!vgmstream) goto fail; vgmstream->meta_type = meta_TAC; vgmstream->sample_rate = 48000; - /* Frame at count/loop outputs less than full 1024 samples (thus loop or count-1 + extra). - * A few files may pop when looping, but this seems to match game/emulator. */ + // Frame at count/loop outputs less than full 1024 samples (thus loop or count-1 + extra). + // A few files may pop when looping, but this seems to match game/emulator. vgmstream->num_samples = (frame_count - 1) * 1024 + (frame_last + 1); vgmstream->loop_start_sample = (loop_frame - 1) * 1024 + loop_discard; vgmstream->loop_end_sample = vgmstream->num_samples; - { - vgmstream->codec_data = init_tac(sf); - if (!vgmstream->codec_data) goto fail; - vgmstream->coding_type = coding_TAC; - vgmstream->layout_type = layout_none; - } + vgmstream->codec_data = init_tac(sf); + if (!vgmstream->codec_data) goto fail; + vgmstream->coding_type = coding_TAC; + vgmstream->layout_type = layout_none; if (!vgmstream_open_stream(vgmstream, sf, start_offset)) goto fail; return vgmstream; - fail: close_vgmstream(vgmstream); return NULL; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/txtp.c b/Frameworks/vgmstream/vgmstream/src/meta/txtp.c index cb736f7cc..579f876fd 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/txtp.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/txtp.c @@ -78,6 +78,11 @@ void txtp_copy_config(play_config_t* dst, play_config_t* src) { if (!src->config_set) return; + // "no loops" (intro only) and "ignore fade" can't work due to how decoding works, must use @body-* macros + if (src->loop_count_set && src->loop_count == 0 && src->ignore_fade) { + src->ignore_fade = false; + } + dst->config_set = 1; copy_flag(&dst->play_forever, &src->play_forever); copy_flag(&dst->ignore_fade, &src->ignore_fade); @@ -94,22 +99,6 @@ void txtp_copy_config(play_config_t* dst, play_config_t* src) { copy_time(&dst->body_time_set, &dst->body_time, &dst->body_time_s, &src->body_time_set, &src->body_time, &src->body_time_s); } -#if 0 -static void init_config(VGMSTREAM* vgmstream) { - play_config_t* cfg = &vgmstream->config; - - //todo only on segmented/layered? - if (cfg->play_forever - cfg->loop_count_set || cfg->fade_time_set || cfg->fade_delay_set || - cfg->pad_begin_set || cfg->pad_end_set || cfg->trim_begin_set || cfg->trim_end_set || - cfg->body_time_set) { - VGM_LOG("setup!\n"); - - } -} -#endif - - void txtp_add_mixing(txtp_entry_t* entry, txtp_mix_data_t* mix, txtp_mix_t command) { if (entry->mixing_count + 1 > TXTP_MIXING_MAX) { VGM_LOG("TXTP: too many mixes\n"); diff --git a/Frameworks/vgmstream/vgmstream/src/meta/txtp.h b/Frameworks/vgmstream/vgmstream/src/meta/txtp.h index cdec14df8..09f7103ba 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/txtp.h +++ b/Frameworks/vgmstream/vgmstream/src/meta/txtp.h @@ -21,6 +21,11 @@ #define TXTP_GROUP_REPEAT 'R' #define TXTP_POSITION_LOOPS 'L' +#define TXTP_BODY_INTRO 1 +#define TXTP_BODY_MAIN 2 +#define TXTP_BODY_OUTRO 3 + + /* mixing info */ typedef enum { MIX_SWAP, @@ -104,6 +109,8 @@ typedef struct { double trim_second; int32_t trim_sample; + int body_mode; + } txtp_entry_t; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/txtp_parser.c b/Frameworks/vgmstream/vgmstream/src/meta/txtp_parser.c index 0f6ff132e..020cc1d7d 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/txtp_parser.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/txtp_parser.c @@ -384,6 +384,8 @@ static void add_settings(txtp_entry_t* current, txtp_entry_t* entry, const char* current->loop_anchor_start = entry->loop_anchor_start; current->loop_anchor_end = entry->loop_anchor_end; + + current->body_mode = entry->body_mode; } //TODO use @@ -708,6 +710,16 @@ static void parse_params(txtp_entry_t* entry, char* params) { txtp_add_mixing(entry, &mix, MACRO_DOWNMIX); } + else if (strcmp(command,"@body-intro") == 0) { + entry->body_mode = TXTP_BODY_INTRO; + VGM_LOG("body: %x\n", entry->body_mode); + } + else if (strcmp(command,"@body-main") == 0) { + entry->body_mode = TXTP_BODY_MAIN; + } + else if (strcmp(command,"@body-outro") == 0) { + entry->body_mode = TXTP_BODY_OUTRO; + } else if (params[nc] == ' ') { //;VGM_LOG("TXTP: comment\n"); break; /* comment, ignore rest */ @@ -1019,7 +1031,9 @@ static int parse_keyval(txtp_header_t* txtp, const char* key, const char* val) { } else { - goto fail; + // in rare cases a filename may contain a (blah=blah.blah), but it's hard to distinguish + // from key=val + setting with dots. Signal unknown command to treat it like a file (should fail later). + return -1; } return 1; @@ -1066,9 +1080,11 @@ txtp_header_t* txtp_parse(STREAMFILE* sf) { /* try key/val (ignores lead/trail spaces, # may be commands or comments) */ ok = sscanf(line, " %[^ \t#=] = %[^\t\r\n] ", key,val); if (ok == 2) { /* key=val */ - if (!parse_keyval(txtp, key, val)) /* read key/val */ - goto fail; - continue; + int ret = parse_keyval(txtp, key, val); /* read key/val */ + if (ret == 0) goto fail; + if (ret > 0) + continue; + // ret < 0: try to handle as filename below } /* must be a filename (only remove spaces from start/end, as filenames con contain mid spaces/#/etc) */ diff --git a/Frameworks/vgmstream/vgmstream/src/meta/txtp_process.c b/Frameworks/vgmstream/vgmstream/src/meta/txtp_process.c index 83fbcb65b..a46fd491a 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/txtp_process.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/txtp_process.c @@ -13,6 +13,51 @@ /*******************************************************************************/ +static void apply_settings_body(VGMSTREAM* vgmstream, txtp_entry_t* entry) { + // tweak playable part, which only makes sense + + VGM_LOG("tesst: %i,%i\n", entry->body_mode , vgmstream->loop_flag); + + if (!entry->body_mode || !vgmstream->loop_flag) + return; + + entry->config.fade_time_set = false; + entry->config.fade_delay_set = false; + entry->config.ignore_fade = false; + entry->config.ignore_loop = true; + + switch(entry->body_mode) { + case TXTP_BODY_INTRO: + if (vgmstream->loop_start_sample == 0) + return; + entry->trim_set = true; + entry->trim_sample = vgmstream->loop_start_sample; + + entry->config.config_set = true; + break; + + case TXTP_BODY_MAIN: + entry->config.trim_begin_set = true; + entry->config.trim_begin = vgmstream->loop_start_sample; + entry->trim_set = true; + entry->trim_sample = vgmstream->loop_end_sample; + + entry->config.config_set = true; + break; + + case TXTP_BODY_OUTRO: + if (vgmstream->loop_end_sample >= vgmstream->num_samples) + return; + entry->config.trim_begin_set = true; + entry->config.trim_begin = vgmstream->loop_end_sample; + + entry->config.config_set = true; + break; + default: + break; + } +} + static void apply_settings(VGMSTREAM* vgmstream, txtp_entry_t* current) { /* base settings */ @@ -36,6 +81,8 @@ static void apply_settings(VGMSTREAM* vgmstream, txtp_entry_t* current) { vgmstream_force_loop(vgmstream, current->loop_install_set, current->loop_start_sample, current->loop_end_sample); } + apply_settings_body(vgmstream, current); + if (current->trim_set) { if (current->trim_second != 0.0) { /* trim sample can become 0 here when second is too small (rounded) */ diff --git a/Frameworks/vgmstream/vgmstream/src/meta/ubi_sb.c b/Frameworks/vgmstream/vgmstream/src/meta/ubi_sb.c index 03c5877c3..0c4d391c2 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/ubi_sb.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/ubi_sb.c @@ -1011,7 +1011,11 @@ static VGMSTREAM* init_vgmstream_ubi_sb_base(ubi_sb_header* sb, STREAMFILE* sf_h vgmstream->layout_type = layout_interleave; vgmstream->interleave_block_size = 0x02; - if (vgmstream->num_samples == 0) { /* happens in .bnm */ + // in .bnm samples may be null, or PCM size (similar to Ubi-MPEG) + if (sb->is_bnm) + vgmstream->num_samples = 0; + + if (vgmstream->num_samples == 0) { vgmstream->num_samples = pcm_bytes_to_samples(sb->stream_size, sb->channels, 16); vgmstream->loop_end_sample = vgmstream->num_samples; } @@ -1221,14 +1225,44 @@ static VGMSTREAM* init_vgmstream_ubi_sb_base(ubi_sb_header* sb, STREAMFILE* sf_h } break; - case FMT_MPDX: - /* a custom, chunked MPEG format (sigh) - * 0x00: samples? (related to size) - * 0x04: "2RUS" (apparently "1RUS" for mono files) - * Rest is a MPEG-like sync but not an actual MPEG header? (DLLs do refer it as MPEG) - * Files may have multiple "2RUS" or just a big one - * A companion .csb has some not-too-useful info */ - goto fail; + case FMT_MPDX: { + /* custom MPEG (.MPD, .MPU. MPX, internal, etc): + * 0x00: samples + * 0x04: optional ID for 'surround' config ("2RUS" or "1RUS" or none) + * Data is custom-ish MP2 packets with odd surround modes + * - .MPX have multiple small streams pasted together (subsongs in .bnm point to each) + * - .MPD has 1 big-ish stream + * A companion .csb has sequence info (maybe before compiled to .bnm) + */ + + int32_t block_samples = read_s32le(start_offset + 0x00, sf_data); + uint32_t mode = read_u32be(start_offset + 0x04, sf_data); + start_offset += 0x04; + if ((mode & 0x00FFFFFF) == get_id32be("\0RUS")) + start_offset += 0x04; + + // for some reason num_samples is either size of PCM or 0 + if (sb->num_samples && block_samples * sizeof(short) * sb->channels != sb->num_samples) { + VGM_LOG("UBI SB: wrong MPEG block samples found block=%i vs total=%i\n", block_samples, sb->num_samples); + goto fail; + } + + //TODO: needed for smoother segments, but not sure if block samples counts this + // (usually blocks' frames have more samples than defined but not always; maybe should output delay's samples at EOF) + int encoder_delay = 480; //observed + + vgmstream->num_samples = block_samples - encoder_delay; + vgmstream->loop_end_sample = block_samples - encoder_delay; + if (sb->loop_start) { + vgmstream->loop_start_sample = sb->loop_start / sizeof(short) / sb->channels; + } + + vgmstream->codec_data = init_ubimpeg(mode); + if (!vgmstream->codec_data) goto fail; + vgmstream->coding_type = coding_UBI_MPEG; + vgmstream->layout_type = layout_none; + break; + } default: VGM_LOG("UBI SB: unknown codec\n"); @@ -1236,7 +1270,7 @@ static VGMSTREAM* init_vgmstream_ubi_sb_base(ubi_sb_header* sb, STREAMFILE* sf_h } /* open the actual for decoding (sf_data can be an internal or external stream) */ - if ( !vgmstream_open_stream(vgmstream, sf_data, start_offset) ) + if (!vgmstream_open_stream(vgmstream, sf_data, start_offset)) goto fail; return vgmstream; @@ -3071,10 +3105,10 @@ static int config_sb_version(ubi_sb_header* sb, STREAMFILE* sf) { sb->version = 0x00000000; } - /* Tonic Touble beta has garbage instead of version */ + /* Tonic Touble Special Edition has garbage instead of version */ if (sb->is_bnm && sb->version > 0x00000000 && sb->platform == UBI_PC) { - if (check_project_file(sf, "ED_MAIN.LCB", 0)) { - is_ttse_pc = 1; + if (check_project_file(sf, "ED_MAIN.LCB", 0) || check_project_file(sf, "../ED_MAIN.LCB", 0)) { + is_ttse_pc = true; sb->version = 0x00000000; } } diff --git a/Frameworks/vgmstream/vgmstream/src/meta/va3.c b/Frameworks/vgmstream/vgmstream/src/meta/va3.c new file mode 100644 index 000000000..be8542eec --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/meta/va3.c @@ -0,0 +1,59 @@ +#include "meta.h" +#include "../coding/coding.h" + + +/* VA3 - from Konami games [Dance Dance Revolution Supernova 2 (Arcade)] */ +VGMSTREAM* init_vgmstream_va3(STREAMFILE* sf) { + VGMSTREAM* vgmstream = NULL; + off_t start_offset; + int loop_flag, channels; + uint32_t data_size; + + /* checks */ + if (!is_id32be(0x00, sf, "!3AV")) + return NULL; + // .va3: actual extension + if (!check_extensions(sf, "va3")) + return NULL; + + start_offset = 0x800; + data_size = read_u32le(0x04, sf); + loop_flag = 0; + channels = 2; + + //0c: null (loops?) + //10: null (loops?) + //18: flag? (always 1) + //1c: always 0x0200 (channels?) + //20: always 100 (volume?) + + + /* build the VGMSTREAM */ + vgmstream = allocate_vgmstream(channels, loop_flag); + if (!vgmstream) goto fail; + + vgmstream->meta_type = meta_VA3; + vgmstream->num_samples = read_s32le(0x08, sf); + vgmstream->sample_rate = read_s32le(0x14, sf); + +#ifdef VGM_USE_FFMPEG + { + int block_align = 0xC0 * vgmstream->channels; + int encoder_delay = 0; //TODO + + vgmstream->codec_data = init_ffmpeg_atrac3_raw(sf, start_offset,data_size, vgmstream->num_samples,vgmstream->channels,vgmstream->sample_rate, block_align, encoder_delay); + if (!vgmstream->codec_data) goto fail; + vgmstream->coding_type = coding_FFmpeg; + vgmstream->layout_type = layout_none; + } +#else + goto fail; +#endif + + if (!vgmstream_open_stream(vgmstream, sf, start_offset)) + goto fail; + return vgmstream; +fail: + close_vgmstream(vgmstream); + return NULL; +} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/vag.c b/Frameworks/vgmstream/vgmstream/src/meta/vag.c index cd179e369..fc2919cee 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/vag.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/vag.c @@ -28,8 +28,9 @@ VGMSTREAM* init_vgmstream_vag(STREAMFILE* sf) { * .snd: Alien Breed (Vita) * .svg: ModernGroove: Ministry of Sound Edition (PS2) * (extensionless): The Urbz (PS2), The Sims series (PS2) - * .wav: Sniper Elite (PS2), The Simpsons Game (PS2/PSP) */ - if (!check_extensions(sf,"vag,swag,str,vig,l,r,vas,xa2,snd,svg,,wav,lwav")) + * .wav: Sniper Elite (PS2), The Simpsons Game (PS2/PSP) + * .msv: Casper and the Ghostly Trio (PS2), Earache Extreme Metal Racing (PS2) */ + if (!check_extensions(sf,"vag,swag,str,vig,l,r,vas,xa2,snd,svg,,wav,lwav,msv")) return NULL; file_size = get_streamfile_size(sf); diff --git a/Frameworks/vgmstream/vgmstream/src/meta/vas_kceo.c b/Frameworks/vgmstream/vgmstream/src/meta/vas_kceo.c index 90497234a..79a64e68e 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/vas_kceo.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/vas_kceo.c @@ -226,8 +226,6 @@ VGMSTREAM* init_vgmstream_vas_kceo_container(STREAMFILE* sf) { } } else if (read_u32le(0x00, sf) == 0x800) { /* Xbox/PC (start?) */ -VGM_STEP(); - total_subsongs = read_s32le(0x04, sf); if (target_subsong == 0) target_subsong = 1; if (target_subsong < 0 || target_subsong > total_subsongs || total_subsongs < 1) goto fail; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/vig_kces.c b/Frameworks/vgmstream/vgmstream/src/meta/vig_kces.c index ecc29a36d..82cc86ac8 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/vig_kces.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/vig_kces.c @@ -13,7 +13,7 @@ VGMSTREAM* init_vgmstream_vig_kces(STREAMFILE* sf) { /* checks */ if (read_u32be(0x00,sf) != 0x01006408) return NULL; - /* .vig: actual extension from DDR exes */ + /* .vig: actual extension from AC versions + PS2 exes */ if (!check_extensions(sf, "vig")) return NULL; diff --git a/Frameworks/vgmstream/vgmstream/src/meta/xavs.c b/Frameworks/vgmstream/vgmstream/src/meta/xavs.c index 6e4643264..3f29d0de8 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/xavs.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/xavs.c @@ -1,87 +1,87 @@ -#include "meta.h" -#include "../coding/coding.h" -#include "../layout/layout.h" -#include "xavs_streamfile.h" - -/* XAVS - Reflections audio and video+audio container [Stuntman (PS2)] */ -VGMSTREAM * init_vgmstream_xavs(STREAMFILE *streamFile) { - VGMSTREAM * vgmstream = NULL; - off_t start_offset; - int loop_flag, channel_count; - int total_subsongs, target_subsong = streamFile->stream_index; - STREAMFILE *temp_streamFile = NULL; - - - /* checks */ - if (!check_extensions(streamFile, "xav")) - goto fail; - if (read_32bitBE(0x00, streamFile) != 0x58415653) /* "XAVS" */ - goto fail; - - loop_flag = 0; - channel_count = 2; - start_offset = 0x00; - - /* 0x04: 16b width + height (0 if file has no video) */ - /* 0x08: related to video (0 if file has no video) */ - total_subsongs = read_16bitLE(0x0c, streamFile); - /* 0x0c: volume? (0x50, 0x4e) */ - /* 0x10: biggest video chunk? (0 if file has no video) */ - /* 0x14: biggest audio chunk? */ - - if (target_subsong == 0) target_subsong = 1; - if (target_subsong > total_subsongs || total_subsongs <= 0) goto fail; - - /* could use a blocked layout, but this needs interleaved PCM within blocks which can't be done ATM */ - temp_streamFile = setup_xavs_streamfile(streamFile, 0x18, target_subsong - 1); - if (!temp_streamFile) goto fail; - - - /* build the VGMSTREAM */ - vgmstream = allocate_vgmstream(channel_count, loop_flag); - if (!vgmstream) goto fail; - - vgmstream->meta_type = meta_XAVS; - vgmstream->num_streams = total_subsongs; - - vgmstream->coding_type = coding_PCM16LE; - vgmstream->layout_type = layout_interleave; - - /* no apparent flags, most videos use 0x41 but not all */ - { - off_t offset = 0x18; - while (offset < get_streamfile_size(streamFile)) { - uint32_t chunk_id = read_32bitLE(offset+0x00, streamFile) & 0xFF; - uint32_t chunk_size = read_32bitLE(offset+0x00, streamFile) >> 8; - - if ((chunk_id & 0xF0) == 0x40) { - vgmstream->sample_rate = 48000; - vgmstream->interleave_block_size = 0x200; - break; - } else if ((chunk_id & 0xF0) == 0x60) { - vgmstream->sample_rate = 24000; - vgmstream->interleave_block_size = 0x100; - break; - } else if (chunk_id == 0x56) { - offset += 0x04 + chunk_size; - } else if (chunk_id == 0x21) { - offset += 0x04; - } else { - goto fail; - } - } - } - - vgmstream->num_samples = pcm_bytes_to_samples(get_streamfile_size(temp_streamFile), channel_count, 16); - - if (!vgmstream_open_stream(vgmstream,temp_streamFile,start_offset)) - goto fail; - - close_streamfile(temp_streamFile); - return vgmstream; - -fail: - close_streamfile(temp_streamFile); - close_vgmstream(vgmstream); - return NULL; -} +#include "meta.h" +#include "../coding/coding.h" +#include "../layout/layout.h" +#include "xavs_streamfile.h" + +/* XAVS - Reflections audio and video+audio container [Stuntman (PS2)] */ +VGMSTREAM* init_vgmstream_xavs(STREAMFILE* sf) { + VGMSTREAM* vgmstream = NULL; + STREAMFILE* temp_sf = NULL; + off_t start_offset; + int loop_flag, channels; + int total_subsongs, target_subsong = sf->stream_index; + + + /* checks */ + if (!is_id32be(0x00, sf, "XAVS")) + return NULL; + if (!check_extensions(sf, "xav")) + return NULL; + + loop_flag = 0; + channels = 2; + start_offset = 0x00; + + /* 0x04: 16b width + height (0 if file has no video) */ + /* 0x08: related to video (0 if file has no video) */ + total_subsongs = read_u16le(0x0c, sf); + /* 0x0c: volume? (0x50, 0x4e) */ + /* 0x10: biggest video chunk? (0 if file has no video) */ + /* 0x14: biggest audio chunk? */ + + if (target_subsong == 0) target_subsong = 1; + if (target_subsong > total_subsongs || total_subsongs <= 0) goto fail; + + /* could use a blocked layout, but this needs interleaved PCM within blocks which can't be done ATM */ + temp_sf = setup_xavs_streamfile(sf, 0x18, target_subsong - 1); + if (!temp_sf) goto fail; + + + /* build the VGMSTREAM */ + vgmstream = allocate_vgmstream(channels, loop_flag); + if (!vgmstream) goto fail; + + vgmstream->meta_type = meta_XAVS; + vgmstream->num_streams = total_subsongs; + + vgmstream->coding_type = coding_PCM16LE; + vgmstream->layout_type = layout_interleave; + + /* no apparent flags, most videos use 0x41 but not all */ + { + off_t offset = 0x18; + while (offset < get_streamfile_size(sf)) { + uint32_t chunk_id = read_u32le(offset+0x00, sf) & 0xFF; + uint32_t chunk_size = read_u32le(offset+0x00, sf) >> 8; + + if ((chunk_id & 0xF0) == 0x40) { + vgmstream->sample_rate = 48000; + vgmstream->interleave_block_size = 0x200; + break; + } else if ((chunk_id & 0xF0) == 0x60) { + vgmstream->sample_rate = 24000; + vgmstream->interleave_block_size = 0x100; + break; + } else if (chunk_id == 0x56) { + offset += 0x04 + chunk_size; + } else if (chunk_id == 0x21) { + offset += 0x04; + } else { + goto fail; + } + } + } + + vgmstream->num_samples = pcm_bytes_to_samples(get_streamfile_size(temp_sf), channels, 16); + + if (!vgmstream_open_stream(vgmstream, temp_sf, start_offset)) + goto fail; + + close_streamfile(temp_sf); + return vgmstream; + +fail: + close_streamfile(temp_sf); + close_vgmstream(vgmstream); + return NULL; +} diff --git a/Frameworks/vgmstream/vgmstream/src/meta/xsh_xsd_xss.c b/Frameworks/vgmstream/vgmstream/src/meta/xsh_xsd_xss.c index 4e9a80e0a..e8b8119d2 100644 --- a/Frameworks/vgmstream/vgmstream/src/meta/xsh_xsd_xss.c +++ b/Frameworks/vgmstream/vgmstream/src/meta/xsh_xsd_xss.c @@ -7,28 +7,27 @@ VGMSTREAM* init_vgmstream_xsh_xsd_xss(STREAMFILE* sf) { VGMSTREAM* vgmstream = NULL; STREAMFILE* sf_body = NULL; uint32_t offset; - uint32_t stream_type, stream_offset, stream_size; - uint32_t name_offset, name_size; - uint32_t flags; - int32_t num_samples; - int version = 0; int loop_flag, channels, codec, sample_rate; - int total_subsongs, target_subsong = sf->stream_index; /* checks */ - if (!check_extensions(sf, "xsh")) - goto fail; - - version = read_u32le(0x00, sf); - + uint32_t version = read_u32le(0x00, sf); + if (version < 0x009D || version > 0x101) + return NULL; if (read_u32le(0x04, sf) != 0) - goto fail; + return NULL; - total_subsongs = read_u32le(0x08, sf); + if (!check_extensions(sf, "xsh")) + return NULL; + + int total_subsongs = read_u32le(0x08, sf); + int target_subsong = sf->stream_index; if (target_subsong == 0) target_subsong = 1; if (target_subsong < 0 || target_subsong > total_subsongs || total_subsongs < 1) goto fail; + uint32_t stream_type, stream_offset, stream_size, flags; + uint32_t name_offset, name_size; + int32_t num_samples; switch(version) { case 0x009D: /* Spider-Man 2002 (Xbox) */ offset = 0x0c + (target_subsong-1) * 0x60; @@ -74,22 +73,23 @@ VGMSTREAM* init_vgmstream_xsh_xsd_xss(STREAMFILE* sf) { break; default: - goto fail; + return NULL; } - loop_flag = 0; + // full loop flag (ex. Spider-Man city_e.XSH#7,22) + loop_flag = (flags & 0x01) != 0; - if (stream_type < 0 || stream_type > 2) - goto fail; + if (stream_type > 2) + return NULL; - /* 0x00: floats x4 (volume/pan/etc? usually 1.0, 1.0, 10.0, 10.0) */ + // 0x00: floats x4 (volume/pan/etc? usually 1.0, 1.0, 10.0, 10.0) codec = read_u16le(offset + 0x10,sf); channels = read_u16le(offset + 0x12,sf); sample_rate = read_u32le(offset + 0x14,sf); - /* 0x18: avg bitrate */ - /* 0x1c: block size */ - /* 0x1e: bps */ - /* 0x20: 2? */ + // 0x18: avg bitrate + // 0x1c: block size + // 0x1e: bps + // 0x20: 2? if (stream_type == 0) { vgmstream = init_vgmstream_silence_container(total_subsongs); @@ -120,6 +120,11 @@ VGMSTREAM* init_vgmstream_xsh_xsd_xss(STREAMFILE* sf) { vgmstream->num_streams = total_subsongs; read_string(vgmstream->stream_name, name_size, name_offset,sf); + // external .xss shouldn't have loop info though + if (loop_flag && !vgmstream->loop_flag) { + vgmstream_force_loop(vgmstream, loop_flag, 0, vgmstream->num_samples); + } + close_streamfile(sf_body); return vgmstream; //break; @@ -138,7 +143,6 @@ VGMSTREAM* init_vgmstream_xsh_xsd_xss(STREAMFILE* sf) { default: goto fail; } - } else { sf_body = open_streamfile_by_ext(sf,"xsd"); @@ -167,6 +171,8 @@ VGMSTREAM* init_vgmstream_xsh_xsd_xss(STREAMFILE* sf) { num_samples = xbox_ima_bytes_to_samples(stream_size, channels); vgmstream->num_samples = num_samples; + vgmstream->loop_start_sample = 0; + vgmstream->loop_end_sample = num_samples; break; } diff --git a/Frameworks/vgmstream/vgmstream/src/util/bitstream_msb.h b/Frameworks/vgmstream/vgmstream/src/util/bitstream_msb.h index 224fdb988..13bb4097c 100644 --- a/Frameworks/vgmstream/vgmstream/src/util/bitstream_msb.h +++ b/Frameworks/vgmstream/vgmstream/src/util/bitstream_msb.h @@ -6,17 +6,19 @@ /* Simple bitreader for MPEG/standard bit style, in 'most significant byte' (MSB) format. * Example: with 0x1234 = 00010010 00110100, reading 5b + 6b = 00010 010001 * (first upper 5b, then next lower 3b and next upper 3b = 6b) - * Kept in .h since it's slightly faster (compiler can optimize statics better using default compile flags). */ + * Kept in .h since it's slightly faster (compiler can optimize statics better using default compile flags). + * Assumes bufs aren't that big (probable max ~0x20000000) + */ typedef struct { - uint8_t* buf; /* buffer to read/write */ - size_t bufsize; /* max size */ - size_t b_max; /* max size in bits */ - uint32_t b_off; /* current offset in bits inside buffer */ + uint8_t* buf; // buffer to read/write + uint32_t bufsize; // max size + uint32_t b_max; // max size in bits + uint32_t b_off; // current offset in bits inside buffer } bitstream_t; /* convenience util */ -static inline void bm_setup(bitstream_t* bs, uint8_t* buf, size_t bufsize) { +static inline void bm_setup(bitstream_t* bs, uint8_t* buf, uint32_t bufsize) { bs->buf = buf; bs->bufsize = bufsize; bs->b_max = bufsize * 8; @@ -136,6 +138,14 @@ fail: return 0; } +static inline uint32_t bm_read(bitstream_t* ib, uint32_t bits) { + uint32_t value; + int res = bm_get(ib, bits, &value); + if (!res) + return 0; + return value; +} + /* Write bits (max 32) to buf and update the bit offset. Order is BE (MSB). */ static inline int bm_put(bitstream_t* ob, uint32_t bits, uint32_t value) { uint32_t shift, pos; diff --git a/Frameworks/vgmstream/vgmstream/src/util/io_callback.h b/Frameworks/vgmstream/vgmstream/src/util/io_callback.h new file mode 100644 index 000000000..97b10bf8c --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/util/io_callback.h @@ -0,0 +1,16 @@ +#ifndef _IO_CALLBACK_H_ +#define _IO_CALLBACK_H_ + +#include + +#define IO_CALLBACK_SEEK_SET 0 +#define IO_CALLBACK_SEEK_CUR 1 +#define IO_CALLBACK_SEEK_END 2 +typedef struct { + void* arg; + int64_t (*read)(void* dst, int size, int n, void* arg); + int64_t (*seek)(void* arg, int64_t offset, int whence); + int64_t (*tell)(void* arg); +} io_callback_t; + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/util/io_callback_sf.c b/Frameworks/vgmstream/vgmstream/src/util/io_callback_sf.c new file mode 100644 index 000000000..fbf4a8117 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/util/io_callback_sf.c @@ -0,0 +1,53 @@ +#include "io_callback_sf.h" +#include + +static int64_t io_sf_read(void* dst, int size, int n, void* arg) { + io_priv_t* io = arg; + + int bytes_read = read_streamfile(dst, io->offset, size * n, io->sf); + int items_read = bytes_read / size; + io->offset += bytes_read; + + return items_read; +} + +static int64_t io_sf_seek(void* arg, int64_t offset, int whence) { + io_priv_t* io = arg; + + int64_t base_offset; + switch (whence) { + case IO_CALLBACK_SEEK_SET: + base_offset = 0; + break; + case IO_CALLBACK_SEEK_CUR: + base_offset = io->offset; + break; + case IO_CALLBACK_SEEK_END: + base_offset = get_streamfile_size(io->sf); + break; + default: + return -1; + } + + int64_t new_offset = base_offset + offset; + if (new_offset < 0 /*|| new_offset > get_streamfile_size(config->sf)*/) { + return -1; /* unseekable */ + } + else { + io->offset = new_offset; + return 0; + } +} + +static int64_t io_sf_tell(void* arg) { + io_priv_t* io = arg; + + return io->offset; +} + +void io_callbacks_set_sf(io_callback_t* cb, io_priv_t* arg) { + cb->arg = arg; + cb->read = io_sf_read; + cb->seek = io_sf_seek; + cb->tell = io_sf_tell; +} diff --git a/Frameworks/vgmstream/vgmstream/src/util/io_callback_sf.h b/Frameworks/vgmstream/vgmstream/src/util/io_callback_sf.h new file mode 100644 index 000000000..48875e0df --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/util/io_callback_sf.h @@ -0,0 +1,16 @@ +#ifndef _IO_CALLBACK_SF_H_ +#define _IO_CALLBACK_SF_H_ + +#include "io_callback.h" +#include "../streamfile.h" +#include +#include + +typedef struct { + STREAMFILE* sf; + int64_t offset; +} io_priv_t; + +void io_callbacks_set_sf(io_callback_t* cb, io_priv_t* arg); + +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/util/log.c b/Frameworks/vgmstream/vgmstream/src/util/log.c index acb7be83a..40d969250 100644 --- a/Frameworks/vgmstream/vgmstream/src/util/log.c +++ b/Frameworks/vgmstream/vgmstream/src/util/log.c @@ -15,6 +15,7 @@ logger_t log_impl = {0}; //void* log = &log_impl; enum { + LOG_LEVEL_NONE = 0, LOG_LEVEL_INFO = 1, LOG_LEVEL_DEBUG = 2, LOG_LEVEL_ALL = 100, @@ -30,6 +31,11 @@ void vgm_log_set_callback(void* ctx_p, int level, int type, void* callback) { ctx->level = level; + if (level == LOG_LEVEL_NONE) { + ctx->callback = NULL; + return; + } + switch(type) { case 0: ctx->callback = callback; diff --git a/Frameworks/vgmstream/vgmstream/src/util/vorbis_codebooks.c b/Frameworks/vgmstream/vgmstream/src/util/vorbis_codebooks.c new file mode 100644 index 000000000..1d648f481 --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/util/vorbis_codebooks.c @@ -0,0 +1,20 @@ +#include "vorbis_codebooks.h" + + +int vcb_load_codebook_array(uint8_t* buf, int buf_size, uint32_t setup_id, const vcb_info_t* list, int list_length) { + + for (int i = 0; i < list_length; i++) { + + if (list[i].id != setup_id) + continue; + + if (list[i].size > buf_size) // can't handle + return 0; + + // found: copy data as-is + memcpy(buf, list[i].codebooks, list[i].size); + return list[i].size; + } + + return 0; +} diff --git a/Frameworks/vgmstream/vgmstream/src/util/vorbis_codebooks.h b/Frameworks/vgmstream/vgmstream/src/util/vorbis_codebooks.h new file mode 100644 index 000000000..323398c5a --- /dev/null +++ b/Frameworks/vgmstream/vgmstream/src/util/vorbis_codebooks.h @@ -0,0 +1,17 @@ +#ifndef _VORBIS_CODEBOOKS_H_ +#define _VORBIS_CODEBOOKS_H_ + +#include +#include "../streamfile.h" + + +typedef struct { + uint32_t id; + uint32_t size; + const uint8_t* codebooks; +} vcb_info_t; + + +int vcb_load_codebook_array(uint8_t* buf, int buf_size, uint32_t setup_id, const vcb_info_t* list, int list_length); +//, STREAMFILE* sf +#endif diff --git a/Frameworks/vgmstream/vgmstream/src/vgmstream_init.c b/Frameworks/vgmstream/vgmstream/src/vgmstream_init.c index 122d99fcd..ce9c48de1 100644 --- a/Frameworks/vgmstream/vgmstream/src/vgmstream_init.c +++ b/Frameworks/vgmstream/vgmstream/src/vgmstream_init.c @@ -141,7 +141,6 @@ init_vgmstream_t init_vgmstream_functions[] = { init_vgmstream_nds_rrds, init_vgmstream_smss, init_vgmstream_ads_midway, - init_vgmstream_ps2_mcg, init_vgmstream_zsd, init_vgmstream_vgs_ps, init_vgmstream_redspark, @@ -175,7 +174,7 @@ init_vgmstream_t init_vgmstream_functions[] = { init_vgmstream_ngc_dsp_aaap, init_vgmstream_wb, init_vgmstream_bnsf, - init_vgmstream_ps2_gcm, + init_vgmstream_mcg, init_vgmstream_smpl, init_vgmstream_msa, init_vgmstream_voi, @@ -518,13 +517,15 @@ init_vgmstream_t init_vgmstream_functions[] = { init_vgmstream_axhd, init_vgmstream_shaa, init_vgmstream_undefind, + init_vgmstream_oor, + init_vgmstream_mio, + init_vgmstream_2dx, /* lower priority metas (no clean header identity, somewhat ambiguous, or need extension/companion file to identify) */ init_vgmstream_agsc, init_vgmstream_scd_pcm, init_vgmstream_vas_kceo, init_vgmstream_vas_kceo_container, - init_vgmstream_ps2_wmus, init_vgmstream_mib_mih, init_vgmstream_mjb_mjh, init_vgmstream_mic_koei, diff --git a/Frameworks/vgmstream/vgmstream/src/vgmstream_types.h b/Frameworks/vgmstream/vgmstream/src/vgmstream_types.h index 53082275f..f7c3876f4 100644 --- a/Frameworks/vgmstream/vgmstream/src/vgmstream_types.h +++ b/Frameworks/vgmstream/vgmstream/src/vgmstream_types.h @@ -139,25 +139,28 @@ typedef enum { coding_ONGAKUKAN_ADPCM, /* Ongakukan 4-bit ADPCM */ coding_EA_MT, /* Electronic Arts MicroTalk (linear-predictive speech codec) */ + coding_CIRCUS_VQ, /* Circus VQ */ - coding_RELIC, /* Relic Codec (DCT-based) */ - coding_CRI_HCA, /* CRI High Compression Audio (MDCT-based) */ - coding_TAC, /* tri-Ace Codec (MDCT-based) */ + coding_RELIC, /* Relic Codec (transform-based) */ + coding_CRI_HCA, /* CRI High Compression Audio (transform-based) */ + coding_TAC, /* tri-Ace Codec (transform-based) */ coding_ICE_RANGE, /* Inti Creates "range" codec */ coding_ICE_DCT, /* Inti Creates "DCT" codec */ coding_KA1A, /* Koei Tecmo codec (transform-based) */ + coding_UBI_MPEG, /* Ubisoft MPEG codec (transform-based) */ + coding_MIO, /* Entis MIO codec (transform-based) */ #ifdef VGM_USE_VORBIS - coding_OGG_VORBIS, /* Xiph Vorbis with Ogg layer (MDCT-based) */ - coding_VORBIS_custom, /* Xiph Vorbis with custom layer (MDCT-based) */ + coding_OGG_VORBIS, /* Xiph Vorbis with Ogg layer (transform-based) */ + coding_VORBIS_custom, /* Xiph Vorbis with custom layer (transform-based) */ #endif #ifdef VGM_USE_MPEG - coding_MPEG_custom, /* MPEG audio with custom features (MDCT-based) */ + coding_MPEG_custom, /* MPEG audio with custom features (transform-based) */ coding_MPEG_ealayer3, /* EALayer3, custom MPEG frames */ - coding_MPEG_layer1, /* MP1 MPEG audio (MDCT-based) */ - coding_MPEG_layer2, /* MP2 MPEG audio (MDCT-based) */ - coding_MPEG_layer3, /* MP3 MPEG audio (MDCT-based) */ + coding_MPEG_layer1, /* MP1 MPEG audio (transform-based) */ + coding_MPEG_layer2, /* MP2 MPEG audio (transform-based) */ + coding_MPEG_layer3, /* MP3 MPEG audio (transform-based) */ #endif #ifdef VGM_USE_G7221 @@ -434,15 +437,14 @@ typedef enum { meta_P2BT_MOVE_VISA, meta_GBTS, meta_NGC_DSP_IADP, /* Gamecube Interleave DSP */ - meta_PS2_MCG, /* Gunvari MCG Files (was name .GCM on disk) */ meta_ZSD, /* Dragon Booster ZSD */ meta_REDSPARK, /* "RedSpark" RSD (MadWorld) */ meta_RAGE_AUD, /* Rockstar AUD - MC:LA, GTA IV */ meta_NDS_HWAS, /* Spider-Man 3, Tony Hawk's Downhill Jam, possibly more... */ meta_NGC_LPS, /* Rave Master (Groove Adventure Rave)(GC) */ - meta_NAOMI_ADPCM, /* NAOMI/NAOMI2 ARcade games */ - meta_SD9, /* beatmaniaIIDX16 - EMPRESS (Arcade) */ - meta_2DX9, /* beatmaniaIIDX16 - EMPRESS (Arcade) */ + meta_NAOMI_ADPCM, /* NAOMI/NAOMI2 Arcade games */ + meta_SD9, /* Konami/Bemani Arcade Games */ + meta_2DX9, /* beatmania IIDX Arcade Games */ meta_PS2_VGV, /* Rune: Viking Warlord */ meta_GCUB, meta_MAXIS_XA, /* Sim City 3000 (PC) */ @@ -460,7 +462,7 @@ typedef enum { meta_WB, meta_S14, /* raw Siren 14, 24kbit mono */ meta_SSS, /* raw Siren 14, 48kbit stereo */ - meta_PS2_GCM, /* NamCollection */ + meta_MCG, meta_SMPL, meta_MSA, meta_VOI, @@ -495,7 +497,6 @@ typedef enum { meta_LSF_N1NJ4N, /* .lsf n1nj4n Fastlane Street Racing (iPhone) */ meta_XWAV, meta_RAW_SNDS, - meta_PS2_WMUS, /* The Warriors (PS2) */ meta_HYPERSCAN_KVAG, /* Hyperscan KVAG/BVG */ meta_PSND, meta_ADP_WILDFIRE, @@ -717,7 +718,9 @@ typedef enum { meta_XABP, meta_I3DS, meta_AXHD, - meta_SHAA /* Nintendo Alarmo SHAA */ + meta_SHAA, + meta_OOR, + meta_MIO, } meta_t; #endif