%% @doc HPACK Huffman Encoding Table (RFC 7541 Appendix B)
%%
%% Each entry is {Symbol, Code, BitLength}
%%
-ifndef(H2_HPACK_HUFFMAN_HRL).
-define(H2_HPACK_HUFFMAN_HRL, 1).

%% Huffman encoding table: {Symbol, HuffmanCode, BitLength}
-define(HUFFMAN_ENCODE_TABLE, [
    {  0, 16#1ff8, 13},
    {  1, 16#7fffd8, 23},
    {  2, 16#fffffe2, 28},
    {  3, 16#fffffe3, 28},
    {  4, 16#fffffe4, 28},
    {  5, 16#fffffe5, 28},
    {  6, 16#fffffe6, 28},
    {  7, 16#fffffe7, 28},
    {  8, 16#fffffe8, 28},
    {  9, 16#ffffea, 24},
    { 10, 16#3ffffffc, 30},
    { 11, 16#fffffe9, 28},
    { 12, 16#fffffea, 28},
    { 13, 16#3ffffffd, 30},
    { 14, 16#fffffeb, 28},
    { 15, 16#fffffec, 28},
    { 16, 16#fffffed, 28},
    { 17, 16#fffffee, 28},
    { 18, 16#fffffef, 28},
    { 19, 16#ffffff0, 28},
    { 20, 16#ffffff1, 28},
    { 21, 16#ffffff2, 28},
    { 22, 16#3ffffffe, 30},
    { 23, 16#ffffff3, 28},
    { 24, 16#ffffff4, 28},
    { 25, 16#ffffff5, 28},
    { 26, 16#ffffff6, 28},
    { 27, 16#ffffff7, 28},
    { 28, 16#ffffff8, 28},
    { 29, 16#ffffff9, 28},
    { 30, 16#ffffffa, 28},
    { 31, 16#ffffffb, 28},
    { 32, 16#14, 6},        %% ' ' (space)
    { 33, 16#3f8, 10},      %% '!'
    { 34, 16#3f9, 10},      %% '"'
    { 35, 16#ffa, 12},      %% '#'
    { 36, 16#1ff9, 13},     %% '$'
    { 37, 16#15, 6},        %% '%'
    { 38, 16#f8, 8},        %% '&'
    { 39, 16#7fa, 11},      %% '''
    { 40, 16#3fa, 10},      %% '('
    { 41, 16#3fb, 10},      %% ')'
    { 42, 16#f9, 8},        %% '*'
    { 43, 16#7fb, 11},      %% '+'
    { 44, 16#fa, 8},        %% ','
    { 45, 16#16, 6},        %% '-'
    { 46, 16#17, 6},        %% '.'
    { 47, 16#18, 6},        %% '/'
    { 48, 16#0, 5},         %% '0'
    { 49, 16#1, 5},         %% '1'
    { 50, 16#2, 5},         %% '2'
    { 51, 16#19, 6},        %% '3'
    { 52, 16#1a, 6},        %% '4'
    { 53, 16#1b, 6},        %% '5'
    { 54, 16#1c, 6},        %% '6'
    { 55, 16#1d, 6},        %% '7'
    { 56, 16#1e, 6},        %% '8'
    { 57, 16#1f, 6},        %% '9'
    { 58, 16#5c, 7},        %% ':'
    { 59, 16#fb, 8},        %% ';'
    { 60, 16#7ffc, 15},     %% '<'
    { 61, 16#20, 6},        %% '='
    { 62, 16#ffb, 12},      %% '>'
    { 63, 16#3fc, 10},      %% '?'
    { 64, 16#1ffa, 13},     %% '@'
    { 65, 16#21, 6},        %% 'A'
    { 66, 16#5d, 7},        %% 'B'
    { 67, 16#5e, 7},        %% 'C'
    { 68, 16#5f, 7},        %% 'D'
    { 69, 16#60, 7},        %% 'E'
    { 70, 16#61, 7},        %% 'F'
    { 71, 16#62, 7},        %% 'G'
    { 72, 16#63, 7},        %% 'H'
    { 73, 16#64, 7},        %% 'I'
    { 74, 16#65, 7},        %% 'J'
    { 75, 16#66, 7},        %% 'K'
    { 76, 16#67, 7},        %% 'L'
    { 77, 16#68, 7},        %% 'M'
    { 78, 16#69, 7},        %% 'N'
    { 79, 16#6a, 7},        %% 'O'
    { 80, 16#6b, 7},        %% 'P'
    { 81, 16#6c, 7},        %% 'Q'
    { 82, 16#6d, 7},        %% 'R'
    { 83, 16#6e, 7},        %% 'S'
    { 84, 16#6f, 7},        %% 'T'
    { 85, 16#70, 7},        %% 'U'
    { 86, 16#71, 7},        %% 'V'
    { 87, 16#72, 7},        %% 'W'
    { 88, 16#fc, 8},        %% 'X'
    { 89, 16#73, 7},        %% 'Y'
    { 90, 16#fd, 8},        %% 'Z'
    { 91, 16#1ffb, 13},     %% '['
    { 92, 16#7fff0, 19},    %% '\'
    { 93, 16#1ffc, 13},     %% ']'
    { 94, 16#3ffc, 14},     %% '^'
    { 95, 16#22, 6},        %% '_'
    { 96, 16#7ffd, 15},     %% '`'
    { 97, 16#3, 5},         %% 'a'
    { 98, 16#23, 6},        %% 'b'
    { 99, 16#4, 5},         %% 'c'
    {100, 16#24, 6},        %% 'd'
    {101, 16#5, 5},         %% 'e'
    {102, 16#25, 6},        %% 'f'
    {103, 16#26, 6},        %% 'g'
    {104, 16#27, 6},        %% 'h'
    {105, 16#6, 5},         %% 'i'
    {106, 16#74, 7},        %% 'j'
    {107, 16#75, 7},        %% 'k'
    {108, 16#28, 6},        %% 'l'
    {109, 16#29, 6},        %% 'm'
    {110, 16#2a, 6},        %% 'n'
    {111, 16#7, 5},         %% 'o'
    {112, 16#2b, 6},        %% 'p'
    {113, 16#76, 7},        %% 'q'
    {114, 16#2c, 6},        %% 'r'
    {115, 16#8, 5},         %% 's'
    {116, 16#9, 5},         %% 't'
    {117, 16#2d, 6},        %% 'u'
    {118, 16#77, 7},        %% 'v'
    {119, 16#78, 7},        %% 'w'
    {120, 16#79, 7},        %% 'x'
    {121, 16#7a, 7},        %% 'y'
    {122, 16#7b, 7},        %% 'z'
    {123, 16#7ffe, 15},     %% '{'
    {124, 16#7fc, 11},      %% '|'
    {125, 16#3ffd, 14},     %% '}'
    {126, 16#1ffd, 13},     %% '~'
    {127, 16#ffffffc, 28},
    {128, 16#fffe6, 20},
    {129, 16#3fffd2, 22},
    {130, 16#fffe7, 20},
    {131, 16#fffe8, 20},
    {132, 16#3fffd3, 22},
    {133, 16#3fffd4, 22},
    {134, 16#3fffd5, 22},
    {135, 16#7fffd9, 23},
    {136, 16#3fffd6, 22},
    {137, 16#7fffda, 23},
    {138, 16#7fffdb, 23},
    {139, 16#7fffdc, 23},
    {140, 16#7fffdd, 23},
    {141, 16#7fffde, 23},
    {142, 16#ffffeb, 24},
    {143, 16#7fffdf, 23},
    {144, 16#ffffec, 24},
    {145, 16#ffffed, 24},
    {146, 16#3fffd7, 22},
    {147, 16#7fffe0, 23},
    {148, 16#ffffee, 24},
    {149, 16#7fffe1, 23},
    {150, 16#7fffe2, 23},
    {151, 16#7fffe3, 23},
    {152, 16#7fffe4, 23},
    {153, 16#1fffdc, 21},
    {154, 16#3fffd8, 22},
    {155, 16#7fffe5, 23},
    {156, 16#3fffd9, 22},
    {157, 16#7fffe6, 23},
    {158, 16#7fffe7, 23},
    {159, 16#ffffef, 24},
    {160, 16#3fffda, 22},
    {161, 16#1fffdd, 21},
    {162, 16#fffe9, 20},
    {163, 16#3fffdb, 22},
    {164, 16#3fffdc, 22},
    {165, 16#7fffe8, 23},
    {166, 16#7fffe9, 23},
    {167, 16#1fffde, 21},
    {168, 16#7fffea, 23},
    {169, 16#3fffdd, 22},
    {170, 16#3fffde, 22},
    {171, 16#fffff0, 24},
    {172, 16#1fffdf, 21},
    {173, 16#3fffdf, 22},
    {174, 16#7fffeb, 23},
    {175, 16#7fffec, 23},
    {176, 16#1fffe0, 21},
    {177, 16#1fffe1, 21},
    {178, 16#3fffe0, 22},
    {179, 16#1fffe2, 21},
    {180, 16#7fffed, 23},
    {181, 16#3fffe1, 22},
    {182, 16#7fffee, 23},
    {183, 16#7fffef, 23},
    {184, 16#fffea, 20},
    {185, 16#3fffe2, 22},
    {186, 16#3fffe3, 22},
    {187, 16#3fffe4, 22},
    {188, 16#7ffff0, 23},
    {189, 16#3fffe5, 22},
    {190, 16#3fffe6, 22},
    {191, 16#7ffff1, 23},
    {192, 16#3ffffe0, 26},
    {193, 16#3ffffe1, 26},
    {194, 16#fffeb, 20},
    {195, 16#7fff1, 19},
    {196, 16#3fffe7, 22},
    {197, 16#7ffff2, 23},
    {198, 16#3fffe8, 22},
    {199, 16#1ffffec, 25},
    {200, 16#3ffffe2, 26},
    {201, 16#3ffffe3, 26},
    {202, 16#3ffffe4, 26},
    {203, 16#7ffffde, 27},
    {204, 16#7ffffdf, 27},
    {205, 16#3ffffe5, 26},
    {206, 16#fffff1, 24},
    {207, 16#1ffffed, 25},
    {208, 16#7fff2, 19},
    {209, 16#1fffe3, 21},
    {210, 16#3ffffe6, 26},
    {211, 16#7ffffe0, 27},
    {212, 16#7ffffe1, 27},
    {213, 16#3ffffe7, 26},
    {214, 16#7ffffe2, 27},
    {215, 16#fffff2, 24},
    {216, 16#1fffe4, 21},
    {217, 16#1fffe5, 21},
    {218, 16#3ffffe8, 26},
    {219, 16#3ffffe9, 26},
    {220, 16#ffffffd, 28},
    {221, 16#7ffffe3, 27},
    {222, 16#7ffffe4, 27},
    {223, 16#7ffffe5, 27},
    {224, 16#fffec, 20},
    {225, 16#fffff3, 24},
    {226, 16#fffed, 20},
    {227, 16#1fffe6, 21},
    {228, 16#3fffe9, 22},
    {229, 16#1fffe7, 21},
    {230, 16#1fffe8, 21},
    {231, 16#7ffff3, 23},
    {232, 16#3fffea, 22},
    {233, 16#3fffeb, 22},
    {234, 16#1ffffee, 25},
    {235, 16#1ffffef, 25},
    {236, 16#fffff4, 24},
    {237, 16#fffff5, 24},
    {238, 16#3ffffea, 26},
    {239, 16#7ffff4, 23},
    {240, 16#3ffffeb, 26},
    {241, 16#7ffffe6, 27},
    {242, 16#3ffffec, 26},
    {243, 16#3ffffed, 26},
    {244, 16#7ffffe7, 27},
    {245, 16#7ffffe8, 27},
    {246, 16#7ffffe9, 27},
    {247, 16#7ffffea, 27},
    {248, 16#7ffffeb, 27},
    {249, 16#ffffffe, 28},
    {250, 16#7ffffec, 27},
    {251, 16#7ffffed, 27},
    {252, 16#7ffffee, 27},
    {253, 16#7ffffef, 27},
    {254, 16#7fffff0, 27},
    {255, 16#3ffffee, 26},
    {256, 16#3fffffff, 30}  %% EOS (End of String)
]).

-endif.
