ffi-hydrogen 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.gitignore +3 -0
 - data/Rakefile +6 -26
 - data/bin/console +2 -2
 - data/ext/ffi/hydrogen/Rakefile +32 -0
 - data/{vendor → ext/ffi/hydrogen}/main.c +7 -3
 - data/ffi-hydrogen.gemspec +3 -1
 - data/lib/ffi/hydrogen.rb +7 -5
 - data/vendor/README.md +1 -0
 - data/vendor/stringencoders/src/modp_b64_data.h +26 -26
 - data/vendor/stringencoders/src/modp_b64_gen.c +2 -2
 - data/vendor/stringencoders/src/modp_b64r_data.h +25 -25
 - data/vendor/stringencoders/src/modp_b64w_data.h +25 -25
 - metadata +19 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 7d282b422b7e1d13983ab90d1484dc3b74ad8fa3eae7640cef6e819ae2cd24f3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 6f8f83e9490c8de43377137eadde0d049ac7cf84077fa73337bd16462b1fa5b9
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 84888ff5bb0ca444e451d288792211388d70910453c14fc49379cd32f0c24f561930c666d29440300cdff44fab9b232eee05618ed4dcc07d378928ea30b3d04c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 306407c680073693b90944009fc24a4fa5b0d54b0aec3f02919f9683375116070a8b2486c661d36447ea348b9c118e40d26f6efefd59c2e1422f139b9d7e800e
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,39 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "bundler/gem_tasks"
         
     | 
| 
       2 
     | 
    
         
            -
            require "ffi"
         
     | 
| 
       3 
2 
     | 
    
         
             
            require "rspec/core/rake_task"
         
     | 
| 
       4 
3 
     | 
    
         
             
            require "rubocop/rake_task"
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              puts "#{cmd}"
         
     | 
| 
       8 
     | 
    
         
            -
              ret = system(cmd)
         
     | 
| 
       9 
     | 
    
         
            -
              raise "ERROR: '#{cmd}' failed" unless ret
         
     | 
| 
       10 
     | 
    
         
            -
              ret
         
     | 
| 
       11 
     | 
    
         
            -
            end
         
     | 
| 
      
 5 
     | 
    
         
            +
            import "ext/ffi/hydrogen/Rakefile"
         
     | 
| 
       12 
6 
     | 
    
         | 
| 
       13 
7 
     | 
    
         
             
            RSpec::Core::RakeTask.new(:spec)
         
     | 
| 
       14 
8 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            desc "Run RuboCop"
         
     | 
| 
       16 
     | 
    
         
            -
            task :rubocop do
         
     | 
| 
       17 
     | 
    
         
            -
              RuboCop::RakeTask.new
         
     | 
| 
       18 
     | 
    
         
            -
            end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
9 
     | 
    
         
             
            desc "Compile shared library"
         
     | 
| 
       21 
10 
     | 
    
         
             
            task :compile do
         
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                " -Wmissing-declarations -Wnested-externs -Wno-unknown-pragmas"\
         
     | 
| 
       25 
     | 
    
         
            -
                " -Wpointer-arith -Wredundant-decls -Wstrict-prototypes -Wswitch-enum"\
         
     | 
| 
       26 
     | 
    
         
            -
                " -Wno-type-limits"
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              cflags = "-O3 -march=native -fPIC -fno-exceptions #{wflags}"
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              # main.o: main.c
         
     | 
| 
       31 
     | 
    
         
            -
              #   $(CC) -c $(CFLAGS) $< -o $@
         
     | 
| 
       32 
     | 
    
         
            -
              sys("cc -c #{cflags} vendor/main.c -o vendor/main.o")
         
     | 
| 
      
 11 
     | 
    
         
            +
              Rake::Task[:compile_shared].invoke
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
       33 
13 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
               
     | 
| 
      
 14 
     | 
    
         
            +
            desc "Run RuboCop"
         
     | 
| 
      
 15 
     | 
    
         
            +
            task :rubocop do
         
     | 
| 
      
 16 
     | 
    
         
            +
              RuboCop::RakeTask.new
         
     | 
| 
       37 
17 
     | 
    
         
             
            end
         
     | 
| 
       38 
18 
     | 
    
         | 
| 
       39 
19 
     | 
    
         
             
            desc "Run all benchmarks"
         
     | 
    
        data/bin/console
    CHANGED
    
    | 
         @@ -7,8 +7,8 @@ require "ffi/hydrogen" 
     | 
|
| 
       7 
7 
     | 
    
         
             
            # with your gem easier. You can also use a different console, if you like.
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            # (If you use this, don't forget to add pry to your Gemfile!)
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
            require "pry"
         
     | 
| 
      
 11 
     | 
    
         
            +
            Pry.start
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            require "irb"
         
     | 
| 
       14 
14 
     | 
    
         
             
            IRB.start(__FILE__)
         
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "ffi"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            def sys(cmd)
         
     | 
| 
      
 4 
     | 
    
         
            +
              puts "#{cmd}"
         
     | 
| 
      
 5 
     | 
    
         
            +
              ret = system(cmd)
         
     | 
| 
      
 6 
     | 
    
         
            +
              raise "ERROR: '#{cmd}' failed" unless ret
         
     | 
| 
      
 7 
     | 
    
         
            +
              ret
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            desc "Compile shared library"
         
     | 
| 
      
 11 
     | 
    
         
            +
            task :compile_shared do
         
     | 
| 
      
 12 
     | 
    
         
            +
              wflags = "-Wall -Wextra -Wmissing-prototypes -Wdiv-by-zero"\
         
     | 
| 
      
 13 
     | 
    
         
            +
                " -Wbad-function-cast -Wcast-align -Wcast-qual -Wfloat-equal"\
         
     | 
| 
      
 14 
     | 
    
         
            +
                " -Wmissing-declarations -Wnested-externs -Wno-unknown-pragmas"\
         
     | 
| 
      
 15 
     | 
    
         
            +
                " -Wpointer-arith -Wredundant-decls -Wstrict-prototypes -Wswitch-enum"\
         
     | 
| 
      
 16 
     | 
    
         
            +
                " -Wno-type-limits"
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              cflags = "-O3 -march=native -fPIC -fno-exceptions #{wflags}"
         
     | 
| 
      
 19 
     | 
    
         
            +
              cwd = ::File.expand_path(::File.dirname(__FILE__))
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              ::Dir.chdir(cwd) do
         
     | 
| 
      
 22 
     | 
    
         
            +
                # main.o: main.c
         
     | 
| 
      
 23 
     | 
    
         
            +
                #   $(CC) -c $(CFLAGS) $< -o $@
         
     | 
| 
      
 24 
     | 
    
         
            +
                sys("cc -c #{cflags} main.c -o main.o")
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                # main.dylib: main.o
         
     | 
| 
      
 27 
     | 
    
         
            +
                # 	$(CC) $< -shared -o $@
         
     | 
| 
      
 28 
     | 
    
         
            +
                sys("cc main.o -shared -o main.#{::FFI::Platform::LIBSUFFIX}")
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            task :default => [:compile_shared]
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #include <stdio.h>
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            #include "libhydrogen/hydrogen.c"
         
     | 
| 
       4 
     | 
    
         
            -
            #include "stringencoders/src/modp_b64.c"
         
     | 
| 
      
 3 
     | 
    
         
            +
            #include "../../../vendor/libhydrogen/hydrogen.c"
         
     | 
| 
      
 4 
     | 
    
         
            +
            #include "../../../vendor/stringencoders/src/modp_b64.c"
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            /**
         
     | 
| 
       7 
7 
     | 
    
         
             
             * Encrypts and encodes a message using hydro_secretbox_encrypt and
         
     | 
| 
         @@ -89,7 +89,11 @@ size_t decode_decrypt(char* dest, const void* message, size_t message_len, 
     | 
|
| 
       89 
89 
     | 
    
         
             
                                  const uint8_t key[hydro_secretbox_KEYBYTES]) {
         
     | 
| 
       90 
90 
     | 
    
         
             
              int max_decoded_len = modp_b64_decode_len(message_len);
         
     | 
| 
       91 
91 
     | 
    
         
             
              char* decoded[max_decoded_len];
         
     | 
| 
       92 
     | 
    
         
            -
               
     | 
| 
      
 92 
     | 
    
         
            +
              size_t decoded_len = modp_b64_decode(decoded, message, message_len);
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
              if (decoded_len == 0 || decoded_len == (size_t)-1) {
         
     | 
| 
      
 95 
     | 
    
         
            +
                return 0;
         
     | 
| 
      
 96 
     | 
    
         
            +
              }
         
     | 
| 
       93 
97 
     | 
    
         | 
| 
       94 
98 
     | 
    
         
             
              // TODO I'm making the assumption that a char* is a safe substitute for the
         
     | 
| 
       95 
99 
     | 
    
         
             
              // uint8_t* as expected by hydro_secretbox_decrypt. Make sure this is
         
     | 
    
        data/ffi-hydrogen.gemspec
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            Gem::Specification.new do |spec|
         
     | 
| 
       5 
5 
     | 
    
         
             
              spec.name          = "ffi-hydrogen"
         
     | 
| 
       6 
     | 
    
         
            -
              spec.version       = "0.1. 
     | 
| 
      
 6 
     | 
    
         
            +
              spec.version       = "0.1.2"
         
     | 
| 
       7 
7 
     | 
    
         
             
              spec.authors       = ["Marcos Minond"]
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.email         = ["marcos.minond@mx.com"]
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
         @@ -16,6 +16,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       16 
16 
     | 
    
         
             
                `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
       17 
17 
     | 
    
         
             
              end
         
     | 
| 
       18 
18 
     | 
    
         
             
              spec.bindir        = "exe"
         
     | 
| 
      
 19 
     | 
    
         
            +
              spec.extensions    = "ext/ffi/hydrogen/Rakefile"
         
     | 
| 
       19 
20 
     | 
    
         
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       20 
21 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
         @@ -24,6 +25,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       24 
25 
     | 
    
         
             
              spec.add_development_dependency "benchmark-ips", "~> 2.7.2"
         
     | 
| 
       25 
26 
     | 
    
         
             
              spec.add_development_dependency "bundler", "~> 1.16"
         
     | 
| 
       26 
27 
     | 
    
         
             
              spec.add_development_dependency "mad_rubocop"
         
     | 
| 
      
 28 
     | 
    
         
            +
              spec.add_development_dependency "pry"
         
     | 
| 
       27 
29 
     | 
    
         
             
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
       28 
30 
     | 
    
         
             
              spec.add_development_dependency "rbnacl", "~> 6.0"
         
     | 
| 
       29 
31 
     | 
    
         
             
              spec.add_development_dependency "rspec", "~> 3.0"
         
     | 
    
        data/lib/ffi/hydrogen.rb
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ module FFI 
     | 
|
| 
       10 
10 
     | 
    
         
             
                HEADERBYTES = 36
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                gem_base = ::File.join(::File.dirname(__FILE__), "..", "..")
         
     | 
| 
       13 
     | 
    
         
            -
                ffi_lib "#{gem_base}/ 
     | 
| 
      
 13 
     | 
    
         
            +
                ffi_lib "#{gem_base}/ext/ffi/hydrogen/main.#{::FFI::Platform::LIBSUFFIX}"
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                # void hydro_secretbox_keygen(uint8_t key[hydro_secretbox_KEYBYTES])
         
     | 
| 
       16 
16 
     | 
    
         
             
                attach_function :_hydro_secretbox_keygen, :hydro_secretbox_keygen, [:pointer], :void
         
     | 
| 
         @@ -52,7 +52,7 @@ module FFI 
     | 
|
| 
       52 
52 
     | 
    
         
             
                    create_context(context) do |context_ptr|
         
     | 
| 
       53 
53 
     | 
    
         
             
                      create_string_and_buffer(text, max_len) do |text_ptr, buff_ptr|
         
     | 
| 
       54 
54 
     | 
    
         
             
                        size = _encrypt_encode(buff_ptr, text_ptr, text_len, message_id, context_ptr, key_ptr)
         
     | 
| 
       55 
     | 
    
         
            -
                        result = buff_ptr.get_bytes(0, size)
         
     | 
| 
      
 55 
     | 
    
         
            +
                        result = buff_ptr.get_bytes(0, size) if size != 0
         
     | 
| 
       56 
56 
     | 
    
         
             
                      end
         
     | 
| 
       57 
57 
     | 
    
         
             
                    end
         
     | 
| 
       58 
58 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -68,8 +68,10 @@ module FFI 
     | 
|
| 
       68 
68 
     | 
    
         
             
                  create_key(key) do |key_ptr|
         
     | 
| 
       69 
69 
     | 
    
         
             
                    create_context(context) do |context_ptr|
         
     | 
| 
       70 
70 
     | 
    
         
             
                      create_string_and_buffer(text, max_len) do |text_ptr, buff_ptr|
         
     | 
| 
      
 71 
     | 
    
         
            +
                        # binding.pry
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
       71 
73 
     | 
    
         
             
                        size = _decode_decrypt(buff_ptr, text_ptr, text_len, message_id, context_ptr, key_ptr)
         
     | 
| 
       72 
     | 
    
         
            -
                        result = buff_ptr.get_bytes(0, size)
         
     | 
| 
      
 74 
     | 
    
         
            +
                        result = buff_ptr.get_bytes(0, size) if size != 0
         
     | 
| 
       73 
75 
     | 
    
         
             
                      end
         
     | 
| 
       74 
76 
     | 
    
         
             
                    end
         
     | 
| 
       75 
77 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -84,7 +86,7 @@ module FFI 
     | 
|
| 
       84 
86 
     | 
    
         | 
| 
       85 
87 
     | 
    
         
             
                  create_string_and_buffer(text, buff_len) do |text_ptr, buff_ptr|
         
     | 
| 
       86 
88 
     | 
    
         
             
                    size = ::FFI::Hydrogen._modp_b64_encode(buff_ptr, text_ptr, text_len)
         
     | 
| 
       87 
     | 
    
         
            -
                    encoded = buff_ptr.get_bytes(0, size)
         
     | 
| 
      
 89 
     | 
    
         
            +
                    encoded = buff_ptr.get_bytes(0, size) if size != 0
         
     | 
| 
       88 
90 
     | 
    
         
             
                  end
         
     | 
| 
       89 
91 
     | 
    
         | 
| 
       90 
92 
     | 
    
         
             
                  encoded
         
     | 
| 
         @@ -97,7 +99,7 @@ module FFI 
     | 
|
| 
       97 
99 
     | 
    
         | 
| 
       98 
100 
     | 
    
         
             
                  create_string_and_buffer(text, buff_len) do |text_ptr, buff_ptr|
         
     | 
| 
       99 
101 
     | 
    
         
             
                    size = ::FFI::Hydrogen._modp_b64_decode(buff_ptr, text_ptr, text_len)
         
     | 
| 
       100 
     | 
    
         
            -
                    decoded = buff_ptr.get_bytes(0, size)
         
     | 
| 
      
 102 
     | 
    
         
            +
                    decoded = buff_ptr.get_bytes(0, size) if size != 0
         
     | 
| 
       101 
103 
     | 
    
         
             
                  end
         
     | 
| 
       102 
104 
     | 
    
         | 
| 
       103 
105 
     | 
    
         
             
                  decoded
         
     | 
    
        data/vendor/README.md
    CHANGED
    
    
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #include "modp_stdint.h"
         
     | 
| 
       2 
2 
     | 
    
         
             
            #define CHAR62 '-'
         
     | 
| 
       3 
3 
     | 
    
         
             
            #define CHAR63 '_'
         
     | 
| 
       4 
     | 
    
         
            -
            #define CHARPAD ' 
     | 
| 
      
 4 
     | 
    
         
            +
            #define CHARPAD 'p'
         
     | 
| 
       5 
5 
     | 
    
         
             
            static const uint8_t e0[256] = {
         
     | 
| 
       6 
6 
     | 
    
         
             
                'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C',
         
     | 
| 
       7 
7 
     | 
    
         
             
                'C', 'C', 'D', 'D', 'D', 'D', 'E', 'E', 'E', 'E',
         
     | 
| 
         @@ -19,7 +19,7 @@ static const uint8_t e0[256] = { 
     | 
|
| 
       19 
19 
     | 
    
         
             
                'g', 'g', 'h', 'h', 'h', 'h', 'i', 'i', 'i', 'i',
         
     | 
| 
       20 
20 
     | 
    
         
             
                'j', 'j', 'j', 'j', 'k', 'k', 'k', 'k', 'l', 'l',
         
     | 
| 
       21 
21 
     | 
    
         
             
                'l', 'l', 'm', 'm', 'm', 'm', 'n', 'n', 'n', 'n',
         
     | 
| 
       22 
     | 
    
         
            -
                'o', 'o', 'o', 'o', ' 
     | 
| 
      
 22 
     | 
    
         
            +
                'o', 'o', 'o', 'o', '~', '~', '~', '~', 'q', 'q',
         
     | 
| 
       23 
23 
     | 
    
         
             
                'q', 'q', 'r', 'r', 'r', 'r', 's', 's', 's', 's',
         
     | 
| 
       24 
24 
     | 
    
         
             
                't', 't', 't', 't', 'u', 'u', 'u', 'u', 'v', 'v',
         
     | 
| 
       25 
25 
     | 
    
         
             
                'v', 'v', 'w', 'w', 'w', 'w', 'x', 'x', 'x', 'x',
         
     | 
| 
         @@ -35,26 +35,26 @@ static const uint8_t e1[256] = { 
     | 
|
| 
       35 
35 
     | 
    
         
             
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
         
     | 
| 
       36 
36 
     | 
    
         
             
                'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
         
     | 
| 
       37 
37 
     | 
    
         
             
                'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
         
     | 
| 
       38 
     | 
    
         
            -
                'o', ' 
     | 
| 
      
 38 
     | 
    
         
            +
                'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
         
     | 
| 
       39 
39 
     | 
    
         
             
                'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
         
     | 
| 
       40 
40 
     | 
    
         
             
                '8', '9', '-', '_', 'A', 'B', 'C', 'D', 'E', 'F',
         
     | 
| 
       41 
41 
     | 
    
         
             
                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
         
     | 
| 
       42 
42 
     | 
    
         
             
                'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       43 
43 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
         
     | 
| 
       44 
     | 
    
         
            -
                'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 44 
     | 
    
         
            +
                'k', 'l', 'm', 'n', 'o', '~', 'q', 'r', 's', 't',
         
     | 
| 
       45 
45 
     | 
    
         
             
                'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
         
     | 
| 
       46 
46 
     | 
    
         
             
                '4', '5', '6', '7', '8', '9', '-', '_', 'A', 'B',
         
     | 
| 
       47 
47 
     | 
    
         
             
                'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         
     | 
| 
       48 
48 
     | 
    
         
             
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
         
     | 
| 
       49 
49 
     | 
    
         
             
                'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
         
     | 
| 
       50 
     | 
    
         
            -
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 50 
     | 
    
         
            +
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '~',
         
     | 
| 
       51 
51 
     | 
    
         
             
                'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       52 
52 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         
     | 
| 
       53 
53 
     | 
    
         
             
                '-', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
         
     | 
| 
       54 
54 
     | 
    
         
             
                'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
         
     | 
| 
       55 
55 
     | 
    
         
             
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
         
     | 
| 
       56 
56 
     | 
    
         
             
                'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         
     | 
| 
       57 
     | 
    
         
            -
                'm', 'n', 'o', ' 
     | 
| 
      
 57 
     | 
    
         
            +
                'm', 'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v',
         
     | 
| 
       58 
58 
     | 
    
         
             
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
         
     | 
| 
       59 
59 
     | 
    
         
             
                '6', '7', '8', '9', '-', '_'
         
     | 
| 
       60 
60 
     | 
    
         
             
            };
         
     | 
| 
         @@ -63,26 +63,26 @@ static const uint8_t e2[256] = { 
     | 
|
| 
       63 
63 
     | 
    
         
             
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
         
     | 
| 
       64 
64 
     | 
    
         
             
                'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
         
     | 
| 
       65 
65 
     | 
    
         
             
                'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
         
     | 
| 
       66 
     | 
    
         
            -
                'o', ' 
     | 
| 
      
 66 
     | 
    
         
            +
                'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
         
     | 
| 
       67 
67 
     | 
    
         
             
                'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
         
     | 
| 
       68 
68 
     | 
    
         
             
                '8', '9', '-', '_', 'A', 'B', 'C', 'D', 'E', 'F',
         
     | 
| 
       69 
69 
     | 
    
         
             
                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
         
     | 
| 
       70 
70 
     | 
    
         
             
                'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       71 
71 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
         
     | 
| 
       72 
     | 
    
         
            -
                'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 72 
     | 
    
         
            +
                'k', 'l', 'm', 'n', 'o', '~', 'q', 'r', 's', 't',
         
     | 
| 
       73 
73 
     | 
    
         
             
                'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
         
     | 
| 
       74 
74 
     | 
    
         
             
                '4', '5', '6', '7', '8', '9', '-', '_', 'A', 'B',
         
     | 
| 
       75 
75 
     | 
    
         
             
                'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         
     | 
| 
       76 
76 
     | 
    
         
             
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
         
     | 
| 
       77 
77 
     | 
    
         
             
                'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
         
     | 
| 
       78 
     | 
    
         
            -
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 78 
     | 
    
         
            +
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '~',
         
     | 
| 
       79 
79 
     | 
    
         
             
                'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       80 
80 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         
     | 
| 
       81 
81 
     | 
    
         
             
                '-', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
         
     | 
| 
       82 
82 
     | 
    
         
             
                'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
         
     | 
| 
       83 
83 
     | 
    
         
             
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
         
     | 
| 
       84 
84 
     | 
    
         
             
                'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         
     | 
| 
       85 
     | 
    
         
            -
                'm', 'n', 'o', ' 
     | 
| 
      
 85 
     | 
    
         
            +
                'm', 'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v',
         
     | 
| 
       86 
86 
     | 
    
         
             
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
         
     | 
| 
       87 
87 
     | 
    
         
             
                '6', '7', '8', '9', '-', '_'
         
     | 
| 
       88 
88 
     | 
    
         
             
            };
         
     | 
| 
         @@ -112,10 +112,10 @@ static const uint32_t d0[256] = { 
     | 
|
| 
       112 
112 
     | 
    
         
             
                0x00640000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00fc0000,
         
     | 
| 
       113 
113 
     | 
    
         
             
                0x01ffffff, 0x00680000, 0x006c0000, 0x00700000, 0x00740000, 0x00780000,
         
     | 
| 
       114 
114 
     | 
    
         
             
                0x007c0000, 0x00800000, 0x00840000, 0x00880000, 0x008c0000, 0x00900000,
         
     | 
| 
       115 
     | 
    
         
            -
                0x00940000, 0x00980000, 0x009c0000, 0x00a00000,  
     | 
| 
      
 115 
     | 
    
         
            +
                0x00940000, 0x00980000, 0x009c0000, 0x00a00000, 0x01ffffff, 0x00a80000,
         
     | 
| 
       116 
116 
     | 
    
         
             
                0x00ac0000, 0x00b00000, 0x00b40000, 0x00b80000, 0x00bc0000, 0x00c00000,
         
     | 
| 
       117 
117 
     | 
    
         
             
                0x00c40000, 0x00c80000, 0x00cc0000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       118 
     | 
    
         
            -
                 
     | 
| 
      
 118 
     | 
    
         
            +
                0x00a40000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       119 
119 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       120 
120 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       121 
121 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -159,10 +159,10 @@ static const uint32_t d1[256] = { 
     | 
|
| 
       159 
159 
     | 
    
         
             
                0x00019000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0003f000,
         
     | 
| 
       160 
160 
     | 
    
         
             
                0x01ffffff, 0x0001a000, 0x0001b000, 0x0001c000, 0x0001d000, 0x0001e000,
         
     | 
| 
       161 
161 
     | 
    
         
             
                0x0001f000, 0x00020000, 0x00021000, 0x00022000, 0x00023000, 0x00024000,
         
     | 
| 
       162 
     | 
    
         
            -
                0x00025000, 0x00026000, 0x00027000, 0x00028000,  
     | 
| 
      
 162 
     | 
    
         
            +
                0x00025000, 0x00026000, 0x00027000, 0x00028000, 0x01ffffff, 0x0002a000,
         
     | 
| 
       163 
163 
     | 
    
         
             
                0x0002b000, 0x0002c000, 0x0002d000, 0x0002e000, 0x0002f000, 0x00030000,
         
     | 
| 
       164 
164 
     | 
    
         
             
                0x00031000, 0x00032000, 0x00033000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       165 
     | 
    
         
            -
                 
     | 
| 
      
 165 
     | 
    
         
            +
                0x00029000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       166 
166 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       167 
167 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       168 
168 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -206,10 +206,10 @@ static const uint32_t d2[256] = { 
     | 
|
| 
       206 
206 
     | 
    
         
             
                0x00000640, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00000fc0,
         
     | 
| 
       207 
207 
     | 
    
         
             
                0x01ffffff, 0x00000680, 0x000006c0, 0x00000700, 0x00000740, 0x00000780,
         
     | 
| 
       208 
208 
     | 
    
         
             
                0x000007c0, 0x00000800, 0x00000840, 0x00000880, 0x000008c0, 0x00000900,
         
     | 
| 
       209 
     | 
    
         
            -
                0x00000940, 0x00000980, 0x000009c0, 0x00000a00,  
     | 
| 
      
 209 
     | 
    
         
            +
                0x00000940, 0x00000980, 0x000009c0, 0x00000a00, 0x01ffffff, 0x00000a80,
         
     | 
| 
       210 
210 
     | 
    
         
             
                0x00000ac0, 0x00000b00, 0x00000b40, 0x00000b80, 0x00000bc0, 0x00000c00,
         
     | 
| 
       211 
211 
     | 
    
         
             
                0x00000c40, 0x00000c80, 0x00000cc0, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       212 
     | 
    
         
            -
                 
     | 
| 
      
 212 
     | 
    
         
            +
                0x00000a40, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       213 
213 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       214 
214 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       215 
215 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -253,10 +253,10 @@ static const uint32_t d3[256] = { 
     | 
|
| 
       253 
253 
     | 
    
         
             
                0x00000019, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0000003f,
         
     | 
| 
       254 
254 
     | 
    
         
             
                0x01ffffff, 0x0000001a, 0x0000001b, 0x0000001c, 0x0000001d, 0x0000001e,
         
     | 
| 
       255 
255 
     | 
    
         
             
                0x0000001f, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024,
         
     | 
| 
       256 
     | 
    
         
            -
                0x00000025, 0x00000026, 0x00000027, 0x00000028,  
     | 
| 
      
 256 
     | 
    
         
            +
                0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x01ffffff, 0x0000002a,
         
     | 
| 
       257 
257 
     | 
    
         
             
                0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030,
         
     | 
| 
       258 
258 
     | 
    
         
             
                0x00000031, 0x00000032, 0x00000033, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       259 
     | 
    
         
            -
                 
     | 
| 
      
 259 
     | 
    
         
            +
                0x00000029, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       260 
260 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       261 
261 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       262 
262 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -305,10 +305,10 @@ static const uint32_t d0[256] = { 
     | 
|
| 
       305 
305 
     | 
    
         
             
                0x00000064, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x000000fc,
         
     | 
| 
       306 
306 
     | 
    
         
             
                0x01ffffff, 0x00000068, 0x0000006c, 0x00000070, 0x00000074, 0x00000078,
         
     | 
| 
       307 
307 
     | 
    
         
             
                0x0000007c, 0x00000080, 0x00000084, 0x00000088, 0x0000008c, 0x00000090,
         
     | 
| 
       308 
     | 
    
         
            -
                0x00000094, 0x00000098, 0x0000009c, 0x000000a0,  
     | 
| 
      
 308 
     | 
    
         
            +
                0x00000094, 0x00000098, 0x0000009c, 0x000000a0, 0x01ffffff, 0x000000a8,
         
     | 
| 
       309 
309 
     | 
    
         
             
                0x000000ac, 0x000000b0, 0x000000b4, 0x000000b8, 0x000000bc, 0x000000c0,
         
     | 
| 
       310 
310 
     | 
    
         
             
                0x000000c4, 0x000000c8, 0x000000cc, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       311 
     | 
    
         
            -
                 
     | 
| 
      
 311 
     | 
    
         
            +
                0x000000a4, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       312 
312 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       313 
313 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       314 
314 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -352,10 +352,10 @@ static const uint32_t d1[256] = { 
     | 
|
| 
       352 
352 
     | 
    
         
             
                0x00009001, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0000f003,
         
     | 
| 
       353 
353 
     | 
    
         
             
                0x01ffffff, 0x0000a001, 0x0000b001, 0x0000c001, 0x0000d001, 0x0000e001,
         
     | 
| 
       354 
354 
     | 
    
         
             
                0x0000f001, 0x00000002, 0x00001002, 0x00002002, 0x00003002, 0x00004002,
         
     | 
| 
       355 
     | 
    
         
            -
                0x00005002, 0x00006002, 0x00007002, 0x00008002,  
     | 
| 
      
 355 
     | 
    
         
            +
                0x00005002, 0x00006002, 0x00007002, 0x00008002, 0x01ffffff, 0x0000a002,
         
     | 
| 
       356 
356 
     | 
    
         
             
                0x0000b002, 0x0000c002, 0x0000d002, 0x0000e002, 0x0000f002, 0x00000003,
         
     | 
| 
       357 
357 
     | 
    
         
             
                0x00001003, 0x00002003, 0x00003003, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       358 
     | 
    
         
            -
                 
     | 
| 
      
 358 
     | 
    
         
            +
                0x00009002, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       359 
359 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       360 
360 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       361 
361 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -399,10 +399,10 @@ static const uint32_t d2[256] = { 
     | 
|
| 
       399 
399 
     | 
    
         
             
                0x00400600, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00c00f00,
         
     | 
| 
       400 
400 
     | 
    
         
             
                0x01ffffff, 0x00800600, 0x00c00600, 0x00000700, 0x00400700, 0x00800700,
         
     | 
| 
       401 
401 
     | 
    
         
             
                0x00c00700, 0x00000800, 0x00400800, 0x00800800, 0x00c00800, 0x00000900,
         
     | 
| 
       402 
     | 
    
         
            -
                0x00400900, 0x00800900, 0x00c00900, 0x00000a00,  
     | 
| 
      
 402 
     | 
    
         
            +
                0x00400900, 0x00800900, 0x00c00900, 0x00000a00, 0x01ffffff, 0x00800a00,
         
     | 
| 
       403 
403 
     | 
    
         
             
                0x00c00a00, 0x00000b00, 0x00400b00, 0x00800b00, 0x00c00b00, 0x00000c00,
         
     | 
| 
       404 
404 
     | 
    
         
             
                0x00400c00, 0x00800c00, 0x00c00c00, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       405 
     | 
    
         
            -
                 
     | 
| 
      
 405 
     | 
    
         
            +
                0x00400a00, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       406 
406 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       407 
407 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       408 
408 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -446,10 +446,10 @@ static const uint32_t d3[256] = { 
     | 
|
| 
       446 
446 
     | 
    
         
             
                0x00190000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x003f0000,
         
     | 
| 
       447 
447 
     | 
    
         
             
                0x01ffffff, 0x001a0000, 0x001b0000, 0x001c0000, 0x001d0000, 0x001e0000,
         
     | 
| 
       448 
448 
     | 
    
         
             
                0x001f0000, 0x00200000, 0x00210000, 0x00220000, 0x00230000, 0x00240000,
         
     | 
| 
       449 
     | 
    
         
            -
                0x00250000, 0x00260000, 0x00270000, 0x00280000,  
     | 
| 
      
 449 
     | 
    
         
            +
                0x00250000, 0x00260000, 0x00270000, 0x00280000, 0x01ffffff, 0x002a0000,
         
     | 
| 
       450 
450 
     | 
    
         
             
                0x002b0000, 0x002c0000, 0x002d0000, 0x002e0000, 0x002f0000, 0x00300000,
         
     | 
| 
       451 
451 
     | 
    
         
             
                0x00310000, 0x00320000, 0x00330000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       452 
     | 
    
         
            -
                 
     | 
| 
      
 452 
     | 
    
         
            +
                0x00290000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       453 
453 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       454 
454 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       455 
455 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -32,11 +32,11 @@ static uint8_t b64chars[64] = { 
     | 
|
| 
       32 
32 
     | 
    
         
             
                'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
         
     | 
| 
       33 
33 
     | 
    
         
             
                'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       34 
34 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
         
     | 
| 
       35 
     | 
    
         
            -
                'n', 'o', ' 
     | 
| 
      
 35 
     | 
    
         
            +
                'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       36 
36 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'
         
     | 
| 
       37 
37 
     | 
    
         
             
            };
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            static uint8_t padchar = ' 
     | 
| 
      
 39 
     | 
    
         
            +
            static uint8_t padchar = 'p';
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            static void printStart(void)
         
     | 
| 
       42 
42 
     | 
    
         
             
            {
         
     | 
| 
         @@ -19,7 +19,7 @@ static const uint8_t e0[256] = { 
     | 
|
| 
       19 
19 
     | 
    
         
             
                'g', 'g', 'h', 'h', 'h', 'h', 'i', 'i', 'i', 'i',
         
     | 
| 
       20 
20 
     | 
    
         
             
                'j', 'j', 'j', 'j', 'k', 'k', 'k', 'k', 'l', 'l',
         
     | 
| 
       21 
21 
     | 
    
         
             
                'l', 'l', 'm', 'm', 'm', 'm', 'n', 'n', 'n', 'n',
         
     | 
| 
       22 
     | 
    
         
            -
                'o', 'o', 'o', 'o', ' 
     | 
| 
      
 22 
     | 
    
         
            +
                'o', 'o', 'o', 'o', '~', '~', '~', '~', 'q', 'q',
         
     | 
| 
       23 
23 
     | 
    
         
             
                'q', 'q', 'r', 'r', 'r', 'r', 's', 's', 's', 's',
         
     | 
| 
       24 
24 
     | 
    
         
             
                't', 't', 't', 't', 'u', 'u', 'u', 'u', 'v', 'v',
         
     | 
| 
       25 
25 
     | 
    
         
             
                'v', 'v', 'w', 'w', 'w', 'w', 'x', 'x', 'x', 'x',
         
     | 
| 
         @@ -35,26 +35,26 @@ static const uint8_t e1[256] = { 
     | 
|
| 
       35 
35 
     | 
    
         
             
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
         
     | 
| 
       36 
36 
     | 
    
         
             
                'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
         
     | 
| 
       37 
37 
     | 
    
         
             
                'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
         
     | 
| 
       38 
     | 
    
         
            -
                'o', ' 
     | 
| 
      
 38 
     | 
    
         
            +
                'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
         
     | 
| 
       39 
39 
     | 
    
         
             
                'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
         
     | 
| 
       40 
40 
     | 
    
         
             
                '8', '9', '-', '_', 'A', 'B', 'C', 'D', 'E', 'F',
         
     | 
| 
       41 
41 
     | 
    
         
             
                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
         
     | 
| 
       42 
42 
     | 
    
         
             
                'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       43 
43 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
         
     | 
| 
       44 
     | 
    
         
            -
                'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 44 
     | 
    
         
            +
                'k', 'l', 'm', 'n', 'o', '~', 'q', 'r', 's', 't',
         
     | 
| 
       45 
45 
     | 
    
         
             
                'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
         
     | 
| 
       46 
46 
     | 
    
         
             
                '4', '5', '6', '7', '8', '9', '-', '_', 'A', 'B',
         
     | 
| 
       47 
47 
     | 
    
         
             
                'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         
     | 
| 
       48 
48 
     | 
    
         
             
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
         
     | 
| 
       49 
49 
     | 
    
         
             
                'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
         
     | 
| 
       50 
     | 
    
         
            -
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 50 
     | 
    
         
            +
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '~',
         
     | 
| 
       51 
51 
     | 
    
         
             
                'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       52 
52 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         
     | 
| 
       53 
53 
     | 
    
         
             
                '-', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
         
     | 
| 
       54 
54 
     | 
    
         
             
                'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
         
     | 
| 
       55 
55 
     | 
    
         
             
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
         
     | 
| 
       56 
56 
     | 
    
         
             
                'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         
     | 
| 
       57 
     | 
    
         
            -
                'm', 'n', 'o', ' 
     | 
| 
      
 57 
     | 
    
         
            +
                'm', 'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v',
         
     | 
| 
       58 
58 
     | 
    
         
             
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
         
     | 
| 
       59 
59 
     | 
    
         
             
                '6', '7', '8', '9', '-', '_'
         
     | 
| 
       60 
60 
     | 
    
         
             
            };
         
     | 
| 
         @@ -63,26 +63,26 @@ static const uint8_t e2[256] = { 
     | 
|
| 
       63 
63 
     | 
    
         
             
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
         
     | 
| 
       64 
64 
     | 
    
         
             
                'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
         
     | 
| 
       65 
65 
     | 
    
         
             
                'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
         
     | 
| 
       66 
     | 
    
         
            -
                'o', ' 
     | 
| 
      
 66 
     | 
    
         
            +
                'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
         
     | 
| 
       67 
67 
     | 
    
         
             
                'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
         
     | 
| 
       68 
68 
     | 
    
         
             
                '8', '9', '-', '_', 'A', 'B', 'C', 'D', 'E', 'F',
         
     | 
| 
       69 
69 
     | 
    
         
             
                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
         
     | 
| 
       70 
70 
     | 
    
         
             
                'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       71 
71 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
         
     | 
| 
       72 
     | 
    
         
            -
                'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 72 
     | 
    
         
            +
                'k', 'l', 'm', 'n', 'o', '~', 'q', 'r', 's', 't',
         
     | 
| 
       73 
73 
     | 
    
         
             
                'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
         
     | 
| 
       74 
74 
     | 
    
         
             
                '4', '5', '6', '7', '8', '9', '-', '_', 'A', 'B',
         
     | 
| 
       75 
75 
     | 
    
         
             
                'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         
     | 
| 
       76 
76 
     | 
    
         
             
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
         
     | 
| 
       77 
77 
     | 
    
         
             
                'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
         
     | 
| 
       78 
     | 
    
         
            -
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 78 
     | 
    
         
            +
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '~',
         
     | 
| 
       79 
79 
     | 
    
         
             
                'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       80 
80 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         
     | 
| 
       81 
81 
     | 
    
         
             
                '-', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
         
     | 
| 
       82 
82 
     | 
    
         
             
                'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
         
     | 
| 
       83 
83 
     | 
    
         
             
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
         
     | 
| 
       84 
84 
     | 
    
         
             
                'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         
     | 
| 
       85 
     | 
    
         
            -
                'm', 'n', 'o', ' 
     | 
| 
      
 85 
     | 
    
         
            +
                'm', 'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v',
         
     | 
| 
       86 
86 
     | 
    
         
             
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
         
     | 
| 
       87 
87 
     | 
    
         
             
                '6', '7', '8', '9', '-', '_'
         
     | 
| 
       88 
88 
     | 
    
         
             
            };
         
     | 
| 
         @@ -112,10 +112,10 @@ static const uint32_t d0[256] = { 
     | 
|
| 
       112 
112 
     | 
    
         
             
                0x00640000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00fc0000,
         
     | 
| 
       113 
113 
     | 
    
         
             
                0x01ffffff, 0x00680000, 0x006c0000, 0x00700000, 0x00740000, 0x00780000,
         
     | 
| 
       114 
114 
     | 
    
         
             
                0x007c0000, 0x00800000, 0x00840000, 0x00880000, 0x008c0000, 0x00900000,
         
     | 
| 
       115 
     | 
    
         
            -
                0x00940000, 0x00980000, 0x009c0000, 0x00a00000,  
     | 
| 
      
 115 
     | 
    
         
            +
                0x00940000, 0x00980000, 0x009c0000, 0x00a00000, 0x01ffffff, 0x00a80000,
         
     | 
| 
       116 
116 
     | 
    
         
             
                0x00ac0000, 0x00b00000, 0x00b40000, 0x00b80000, 0x00bc0000, 0x00c00000,
         
     | 
| 
       117 
117 
     | 
    
         
             
                0x00c40000, 0x00c80000, 0x00cc0000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       118 
     | 
    
         
            -
                 
     | 
| 
      
 118 
     | 
    
         
            +
                0x00a40000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       119 
119 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       120 
120 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       121 
121 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -159,10 +159,10 @@ static const uint32_t d1[256] = { 
     | 
|
| 
       159 
159 
     | 
    
         
             
                0x00019000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0003f000,
         
     | 
| 
       160 
160 
     | 
    
         
             
                0x01ffffff, 0x0001a000, 0x0001b000, 0x0001c000, 0x0001d000, 0x0001e000,
         
     | 
| 
       161 
161 
     | 
    
         
             
                0x0001f000, 0x00020000, 0x00021000, 0x00022000, 0x00023000, 0x00024000,
         
     | 
| 
       162 
     | 
    
         
            -
                0x00025000, 0x00026000, 0x00027000, 0x00028000,  
     | 
| 
      
 162 
     | 
    
         
            +
                0x00025000, 0x00026000, 0x00027000, 0x00028000, 0x01ffffff, 0x0002a000,
         
     | 
| 
       163 
163 
     | 
    
         
             
                0x0002b000, 0x0002c000, 0x0002d000, 0x0002e000, 0x0002f000, 0x00030000,
         
     | 
| 
       164 
164 
     | 
    
         
             
                0x00031000, 0x00032000, 0x00033000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       165 
     | 
    
         
            -
                 
     | 
| 
      
 165 
     | 
    
         
            +
                0x00029000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       166 
166 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       167 
167 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       168 
168 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -206,10 +206,10 @@ static const uint32_t d2[256] = { 
     | 
|
| 
       206 
206 
     | 
    
         
             
                0x00000640, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00000fc0,
         
     | 
| 
       207 
207 
     | 
    
         
             
                0x01ffffff, 0x00000680, 0x000006c0, 0x00000700, 0x00000740, 0x00000780,
         
     | 
| 
       208 
208 
     | 
    
         
             
                0x000007c0, 0x00000800, 0x00000840, 0x00000880, 0x000008c0, 0x00000900,
         
     | 
| 
       209 
     | 
    
         
            -
                0x00000940, 0x00000980, 0x000009c0, 0x00000a00,  
     | 
| 
      
 209 
     | 
    
         
            +
                0x00000940, 0x00000980, 0x000009c0, 0x00000a00, 0x01ffffff, 0x00000a80,
         
     | 
| 
       210 
210 
     | 
    
         
             
                0x00000ac0, 0x00000b00, 0x00000b40, 0x00000b80, 0x00000bc0, 0x00000c00,
         
     | 
| 
       211 
211 
     | 
    
         
             
                0x00000c40, 0x00000c80, 0x00000cc0, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       212 
     | 
    
         
            -
                 
     | 
| 
      
 212 
     | 
    
         
            +
                0x00000a40, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       213 
213 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       214 
214 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       215 
215 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -253,10 +253,10 @@ static const uint32_t d3[256] = { 
     | 
|
| 
       253 
253 
     | 
    
         
             
                0x00000019, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0000003f,
         
     | 
| 
       254 
254 
     | 
    
         
             
                0x01ffffff, 0x0000001a, 0x0000001b, 0x0000001c, 0x0000001d, 0x0000001e,
         
     | 
| 
       255 
255 
     | 
    
         
             
                0x0000001f, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024,
         
     | 
| 
       256 
     | 
    
         
            -
                0x00000025, 0x00000026, 0x00000027, 0x00000028,  
     | 
| 
      
 256 
     | 
    
         
            +
                0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x01ffffff, 0x0000002a,
         
     | 
| 
       257 
257 
     | 
    
         
             
                0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030,
         
     | 
| 
       258 
258 
     | 
    
         
             
                0x00000031, 0x00000032, 0x00000033, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       259 
     | 
    
         
            -
                 
     | 
| 
      
 259 
     | 
    
         
            +
                0x00000029, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       260 
260 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       261 
261 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       262 
262 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -305,10 +305,10 @@ static const uint32_t d0[256] = { 
     | 
|
| 
       305 
305 
     | 
    
         
             
                0x00000064, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x000000fc,
         
     | 
| 
       306 
306 
     | 
    
         
             
                0x01ffffff, 0x00000068, 0x0000006c, 0x00000070, 0x00000074, 0x00000078,
         
     | 
| 
       307 
307 
     | 
    
         
             
                0x0000007c, 0x00000080, 0x00000084, 0x00000088, 0x0000008c, 0x00000090,
         
     | 
| 
       308 
     | 
    
         
            -
                0x00000094, 0x00000098, 0x0000009c, 0x000000a0,  
     | 
| 
      
 308 
     | 
    
         
            +
                0x00000094, 0x00000098, 0x0000009c, 0x000000a0, 0x01ffffff, 0x000000a8,
         
     | 
| 
       309 
309 
     | 
    
         
             
                0x000000ac, 0x000000b0, 0x000000b4, 0x000000b8, 0x000000bc, 0x000000c0,
         
     | 
| 
       310 
310 
     | 
    
         
             
                0x000000c4, 0x000000c8, 0x000000cc, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       311 
     | 
    
         
            -
                 
     | 
| 
      
 311 
     | 
    
         
            +
                0x000000a4, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       312 
312 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       313 
313 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       314 
314 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -352,10 +352,10 @@ static const uint32_t d1[256] = { 
     | 
|
| 
       352 
352 
     | 
    
         
             
                0x00009001, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0000f003,
         
     | 
| 
       353 
353 
     | 
    
         
             
                0x01ffffff, 0x0000a001, 0x0000b001, 0x0000c001, 0x0000d001, 0x0000e001,
         
     | 
| 
       354 
354 
     | 
    
         
             
                0x0000f001, 0x00000002, 0x00001002, 0x00002002, 0x00003002, 0x00004002,
         
     | 
| 
       355 
     | 
    
         
            -
                0x00005002, 0x00006002, 0x00007002, 0x00008002,  
     | 
| 
      
 355 
     | 
    
         
            +
                0x00005002, 0x00006002, 0x00007002, 0x00008002, 0x01ffffff, 0x0000a002,
         
     | 
| 
       356 
356 
     | 
    
         
             
                0x0000b002, 0x0000c002, 0x0000d002, 0x0000e002, 0x0000f002, 0x00000003,
         
     | 
| 
       357 
357 
     | 
    
         
             
                0x00001003, 0x00002003, 0x00003003, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       358 
     | 
    
         
            -
                 
     | 
| 
      
 358 
     | 
    
         
            +
                0x00009002, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       359 
359 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       360 
360 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       361 
361 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -399,10 +399,10 @@ static const uint32_t d2[256] = { 
     | 
|
| 
       399 
399 
     | 
    
         
             
                0x00400600, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00c00f00,
         
     | 
| 
       400 
400 
     | 
    
         
             
                0x01ffffff, 0x00800600, 0x00c00600, 0x00000700, 0x00400700, 0x00800700,
         
     | 
| 
       401 
401 
     | 
    
         
             
                0x00c00700, 0x00000800, 0x00400800, 0x00800800, 0x00c00800, 0x00000900,
         
     | 
| 
       402 
     | 
    
         
            -
                0x00400900, 0x00800900, 0x00c00900, 0x00000a00,  
     | 
| 
      
 402 
     | 
    
         
            +
                0x00400900, 0x00800900, 0x00c00900, 0x00000a00, 0x01ffffff, 0x00800a00,
         
     | 
| 
       403 
403 
     | 
    
         
             
                0x00c00a00, 0x00000b00, 0x00400b00, 0x00800b00, 0x00c00b00, 0x00000c00,
         
     | 
| 
       404 
404 
     | 
    
         
             
                0x00400c00, 0x00800c00, 0x00c00c00, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       405 
     | 
    
         
            -
                 
     | 
| 
      
 405 
     | 
    
         
            +
                0x00400a00, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       406 
406 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       407 
407 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       408 
408 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -446,10 +446,10 @@ static const uint32_t d3[256] = { 
     | 
|
| 
       446 
446 
     | 
    
         
             
                0x00190000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x003f0000,
         
     | 
| 
       447 
447 
     | 
    
         
             
                0x01ffffff, 0x001a0000, 0x001b0000, 0x001c0000, 0x001d0000, 0x001e0000,
         
     | 
| 
       448 
448 
     | 
    
         
             
                0x001f0000, 0x00200000, 0x00210000, 0x00220000, 0x00230000, 0x00240000,
         
     | 
| 
       449 
     | 
    
         
            -
                0x00250000, 0x00260000, 0x00270000, 0x00280000,  
     | 
| 
      
 449 
     | 
    
         
            +
                0x00250000, 0x00260000, 0x00270000, 0x00280000, 0x01ffffff, 0x002a0000,
         
     | 
| 
       450 
450 
     | 
    
         
             
                0x002b0000, 0x002c0000, 0x002d0000, 0x002e0000, 0x002f0000, 0x00300000,
         
     | 
| 
       451 
451 
     | 
    
         
             
                0x00310000, 0x00320000, 0x00330000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       452 
     | 
    
         
            -
                 
     | 
| 
      
 452 
     | 
    
         
            +
                0x00290000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       453 
453 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       454 
454 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       455 
455 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -19,7 +19,7 @@ static const uint8_t e0[256] = { 
     | 
|
| 
       19 
19 
     | 
    
         
             
                'g', 'g', 'h', 'h', 'h', 'h', 'i', 'i', 'i', 'i',
         
     | 
| 
       20 
20 
     | 
    
         
             
                'j', 'j', 'j', 'j', 'k', 'k', 'k', 'k', 'l', 'l',
         
     | 
| 
       21 
21 
     | 
    
         
             
                'l', 'l', 'm', 'm', 'm', 'm', 'n', 'n', 'n', 'n',
         
     | 
| 
       22 
     | 
    
         
            -
                'o', 'o', 'o', 'o', ' 
     | 
| 
      
 22 
     | 
    
         
            +
                'o', 'o', 'o', 'o', '~', '~', '~', '~', 'q', 'q',
         
     | 
| 
       23 
23 
     | 
    
         
             
                'q', 'q', 'r', 'r', 'r', 'r', 's', 's', 's', 's',
         
     | 
| 
       24 
24 
     | 
    
         
             
                't', 't', 't', 't', 'u', 'u', 'u', 'u', 'v', 'v',
         
     | 
| 
       25 
25 
     | 
    
         
             
                'v', 'v', 'w', 'w', 'w', 'w', 'x', 'x', 'x', 'x',
         
     | 
| 
         @@ -35,26 +35,26 @@ static const uint8_t e1[256] = { 
     | 
|
| 
       35 
35 
     | 
    
         
             
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
         
     | 
| 
       36 
36 
     | 
    
         
             
                'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
         
     | 
| 
       37 
37 
     | 
    
         
             
                'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
         
     | 
| 
       38 
     | 
    
         
            -
                'o', ' 
     | 
| 
      
 38 
     | 
    
         
            +
                'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
         
     | 
| 
       39 
39 
     | 
    
         
             
                'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
         
     | 
| 
       40 
40 
     | 
    
         
             
                '8', '9', '-', '_', 'A', 'B', 'C', 'D', 'E', 'F',
         
     | 
| 
       41 
41 
     | 
    
         
             
                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
         
     | 
| 
       42 
42 
     | 
    
         
             
                'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       43 
43 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
         
     | 
| 
       44 
     | 
    
         
            -
                'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 44 
     | 
    
         
            +
                'k', 'l', 'm', 'n', 'o', '~', 'q', 'r', 's', 't',
         
     | 
| 
       45 
45 
     | 
    
         
             
                'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
         
     | 
| 
       46 
46 
     | 
    
         
             
                '4', '5', '6', '7', '8', '9', '-', '_', 'A', 'B',
         
     | 
| 
       47 
47 
     | 
    
         
             
                'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         
     | 
| 
       48 
48 
     | 
    
         
             
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
         
     | 
| 
       49 
49 
     | 
    
         
             
                'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
         
     | 
| 
       50 
     | 
    
         
            -
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 50 
     | 
    
         
            +
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '~',
         
     | 
| 
       51 
51 
     | 
    
         
             
                'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       52 
52 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         
     | 
| 
       53 
53 
     | 
    
         
             
                '-', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
         
     | 
| 
       54 
54 
     | 
    
         
             
                'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
         
     | 
| 
       55 
55 
     | 
    
         
             
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
         
     | 
| 
       56 
56 
     | 
    
         
             
                'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         
     | 
| 
       57 
     | 
    
         
            -
                'm', 'n', 'o', ' 
     | 
| 
      
 57 
     | 
    
         
            +
                'm', 'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v',
         
     | 
| 
       58 
58 
     | 
    
         
             
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
         
     | 
| 
       59 
59 
     | 
    
         
             
                '6', '7', '8', '9', '-', '_'
         
     | 
| 
       60 
60 
     | 
    
         
             
            };
         
     | 
| 
         @@ -63,26 +63,26 @@ static const uint8_t e2[256] = { 
     | 
|
| 
       63 
63 
     | 
    
         
             
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
         
     | 
| 
       64 
64 
     | 
    
         
             
                'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
         
     | 
| 
       65 
65 
     | 
    
         
             
                'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
         
     | 
| 
       66 
     | 
    
         
            -
                'o', ' 
     | 
| 
      
 66 
     | 
    
         
            +
                'o', '~', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
         
     | 
| 
       67 
67 
     | 
    
         
             
                'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
         
     | 
| 
       68 
68 
     | 
    
         
             
                '8', '9', '-', '_', 'A', 'B', 'C', 'D', 'E', 'F',
         
     | 
| 
       69 
69 
     | 
    
         
             
                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
         
     | 
| 
       70 
70 
     | 
    
         
             
                'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
         
     | 
| 
       71 
71 
     | 
    
         
             
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
         
     | 
| 
       72 
     | 
    
         
            -
                'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 72 
     | 
    
         
            +
                'k', 'l', 'm', 'n', 'o', '~', 'q', 'r', 's', 't',
         
     | 
| 
       73 
73 
     | 
    
         
             
                'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
         
     | 
| 
       74 
74 
     | 
    
         
             
                '4', '5', '6', '7', '8', '9', '-', '_', 'A', 'B',
         
     | 
| 
       75 
75 
     | 
    
         
             
                'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         
     | 
| 
       76 
76 
     | 
    
         
             
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
         
     | 
| 
       77 
77 
     | 
    
         
             
                'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
         
     | 
| 
       78 
     | 
    
         
            -
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', ' 
     | 
| 
      
 78 
     | 
    
         
            +
                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '~',
         
     | 
| 
       79 
79 
     | 
    
         
             
                'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         
     | 
| 
       80 
80 
     | 
    
         
             
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
         
     | 
| 
       81 
81 
     | 
    
         
             
                '-', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
         
     | 
| 
       82 
82 
     | 
    
         
             
                'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
         
     | 
| 
       83 
83 
     | 
    
         
             
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
         
     | 
| 
       84 
84 
     | 
    
         
             
                'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         
     | 
| 
       85 
     | 
    
         
            -
                'm', 'n', 'o', ' 
     | 
| 
      
 85 
     | 
    
         
            +
                'm', 'n', 'o', '~', 'q', 'r', 's', 't', 'u', 'v',
         
     | 
| 
       86 
86 
     | 
    
         
             
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
         
     | 
| 
       87 
87 
     | 
    
         
             
                '6', '7', '8', '9', '-', '_'
         
     | 
| 
       88 
88 
     | 
    
         
             
            };
         
     | 
| 
         @@ -112,10 +112,10 @@ static const uint32_t d0[256] = { 
     | 
|
| 
       112 
112 
     | 
    
         
             
                0x00640000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00fc0000,
         
     | 
| 
       113 
113 
     | 
    
         
             
                0x01ffffff, 0x00680000, 0x006c0000, 0x00700000, 0x00740000, 0x00780000,
         
     | 
| 
       114 
114 
     | 
    
         
             
                0x007c0000, 0x00800000, 0x00840000, 0x00880000, 0x008c0000, 0x00900000,
         
     | 
| 
       115 
     | 
    
         
            -
                0x00940000, 0x00980000, 0x009c0000, 0x00a00000,  
     | 
| 
      
 115 
     | 
    
         
            +
                0x00940000, 0x00980000, 0x009c0000, 0x00a00000, 0x01ffffff, 0x00a80000,
         
     | 
| 
       116 
116 
     | 
    
         
             
                0x00ac0000, 0x00b00000, 0x00b40000, 0x00b80000, 0x00bc0000, 0x00c00000,
         
     | 
| 
       117 
117 
     | 
    
         
             
                0x00c40000, 0x00c80000, 0x00cc0000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       118 
     | 
    
         
            -
                 
     | 
| 
      
 118 
     | 
    
         
            +
                0x00a40000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       119 
119 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       120 
120 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       121 
121 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -159,10 +159,10 @@ static const uint32_t d1[256] = { 
     | 
|
| 
       159 
159 
     | 
    
         
             
                0x00019000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0003f000,
         
     | 
| 
       160 
160 
     | 
    
         
             
                0x01ffffff, 0x0001a000, 0x0001b000, 0x0001c000, 0x0001d000, 0x0001e000,
         
     | 
| 
       161 
161 
     | 
    
         
             
                0x0001f000, 0x00020000, 0x00021000, 0x00022000, 0x00023000, 0x00024000,
         
     | 
| 
       162 
     | 
    
         
            -
                0x00025000, 0x00026000, 0x00027000, 0x00028000,  
     | 
| 
      
 162 
     | 
    
         
            +
                0x00025000, 0x00026000, 0x00027000, 0x00028000, 0x01ffffff, 0x0002a000,
         
     | 
| 
       163 
163 
     | 
    
         
             
                0x0002b000, 0x0002c000, 0x0002d000, 0x0002e000, 0x0002f000, 0x00030000,
         
     | 
| 
       164 
164 
     | 
    
         
             
                0x00031000, 0x00032000, 0x00033000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       165 
     | 
    
         
            -
                 
     | 
| 
      
 165 
     | 
    
         
            +
                0x00029000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       166 
166 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       167 
167 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       168 
168 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -206,10 +206,10 @@ static const uint32_t d2[256] = { 
     | 
|
| 
       206 
206 
     | 
    
         
             
                0x00000640, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00000fc0,
         
     | 
| 
       207 
207 
     | 
    
         
             
                0x01ffffff, 0x00000680, 0x000006c0, 0x00000700, 0x00000740, 0x00000780,
         
     | 
| 
       208 
208 
     | 
    
         
             
                0x000007c0, 0x00000800, 0x00000840, 0x00000880, 0x000008c0, 0x00000900,
         
     | 
| 
       209 
     | 
    
         
            -
                0x00000940, 0x00000980, 0x000009c0, 0x00000a00,  
     | 
| 
      
 209 
     | 
    
         
            +
                0x00000940, 0x00000980, 0x000009c0, 0x00000a00, 0x01ffffff, 0x00000a80,
         
     | 
| 
       210 
210 
     | 
    
         
             
                0x00000ac0, 0x00000b00, 0x00000b40, 0x00000b80, 0x00000bc0, 0x00000c00,
         
     | 
| 
       211 
211 
     | 
    
         
             
                0x00000c40, 0x00000c80, 0x00000cc0, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       212 
     | 
    
         
            -
                 
     | 
| 
      
 212 
     | 
    
         
            +
                0x00000a40, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       213 
213 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       214 
214 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       215 
215 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -253,10 +253,10 @@ static const uint32_t d3[256] = { 
     | 
|
| 
       253 
253 
     | 
    
         
             
                0x00000019, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0000003f,
         
     | 
| 
       254 
254 
     | 
    
         
             
                0x01ffffff, 0x0000001a, 0x0000001b, 0x0000001c, 0x0000001d, 0x0000001e,
         
     | 
| 
       255 
255 
     | 
    
         
             
                0x0000001f, 0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024,
         
     | 
| 
       256 
     | 
    
         
            -
                0x00000025, 0x00000026, 0x00000027, 0x00000028,  
     | 
| 
      
 256 
     | 
    
         
            +
                0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x01ffffff, 0x0000002a,
         
     | 
| 
       257 
257 
     | 
    
         
             
                0x0000002b, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000002f, 0x00000030,
         
     | 
| 
       258 
258 
     | 
    
         
             
                0x00000031, 0x00000032, 0x00000033, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       259 
     | 
    
         
            -
                 
     | 
| 
      
 259 
     | 
    
         
            +
                0x00000029, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       260 
260 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       261 
261 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       262 
262 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -305,10 +305,10 @@ static const uint32_t d0[256] = { 
     | 
|
| 
       305 
305 
     | 
    
         
             
                0x00000064, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x000000fc,
         
     | 
| 
       306 
306 
     | 
    
         
             
                0x01ffffff, 0x00000068, 0x0000006c, 0x00000070, 0x00000074, 0x00000078,
         
     | 
| 
       307 
307 
     | 
    
         
             
                0x0000007c, 0x00000080, 0x00000084, 0x00000088, 0x0000008c, 0x00000090,
         
     | 
| 
       308 
     | 
    
         
            -
                0x00000094, 0x00000098, 0x0000009c, 0x000000a0,  
     | 
| 
      
 308 
     | 
    
         
            +
                0x00000094, 0x00000098, 0x0000009c, 0x000000a0, 0x01ffffff, 0x000000a8,
         
     | 
| 
       309 
309 
     | 
    
         
             
                0x000000ac, 0x000000b0, 0x000000b4, 0x000000b8, 0x000000bc, 0x000000c0,
         
     | 
| 
       310 
310 
     | 
    
         
             
                0x000000c4, 0x000000c8, 0x000000cc, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       311 
     | 
    
         
            -
                 
     | 
| 
      
 311 
     | 
    
         
            +
                0x000000a4, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       312 
312 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       313 
313 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       314 
314 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -352,10 +352,10 @@ static const uint32_t d1[256] = { 
     | 
|
| 
       352 
352 
     | 
    
         
             
                0x00009001, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x0000f003,
         
     | 
| 
       353 
353 
     | 
    
         
             
                0x01ffffff, 0x0000a001, 0x0000b001, 0x0000c001, 0x0000d001, 0x0000e001,
         
     | 
| 
       354 
354 
     | 
    
         
             
                0x0000f001, 0x00000002, 0x00001002, 0x00002002, 0x00003002, 0x00004002,
         
     | 
| 
       355 
     | 
    
         
            -
                0x00005002, 0x00006002, 0x00007002, 0x00008002,  
     | 
| 
      
 355 
     | 
    
         
            +
                0x00005002, 0x00006002, 0x00007002, 0x00008002, 0x01ffffff, 0x0000a002,
         
     | 
| 
       356 
356 
     | 
    
         
             
                0x0000b002, 0x0000c002, 0x0000d002, 0x0000e002, 0x0000f002, 0x00000003,
         
     | 
| 
       357 
357 
     | 
    
         
             
                0x00001003, 0x00002003, 0x00003003, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       358 
     | 
    
         
            -
                 
     | 
| 
      
 358 
     | 
    
         
            +
                0x00009002, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       359 
359 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       360 
360 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       361 
361 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -399,10 +399,10 @@ static const uint32_t d2[256] = { 
     | 
|
| 
       399 
399 
     | 
    
         
             
                0x00400600, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x00c00f00,
         
     | 
| 
       400 
400 
     | 
    
         
             
                0x01ffffff, 0x00800600, 0x00c00600, 0x00000700, 0x00400700, 0x00800700,
         
     | 
| 
       401 
401 
     | 
    
         
             
                0x00c00700, 0x00000800, 0x00400800, 0x00800800, 0x00c00800, 0x00000900,
         
     | 
| 
       402 
     | 
    
         
            -
                0x00400900, 0x00800900, 0x00c00900, 0x00000a00,  
     | 
| 
      
 402 
     | 
    
         
            +
                0x00400900, 0x00800900, 0x00c00900, 0x00000a00, 0x01ffffff, 0x00800a00,
         
     | 
| 
       403 
403 
     | 
    
         
             
                0x00c00a00, 0x00000b00, 0x00400b00, 0x00800b00, 0x00c00b00, 0x00000c00,
         
     | 
| 
       404 
404 
     | 
    
         
             
                0x00400c00, 0x00800c00, 0x00c00c00, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       405 
     | 
    
         
            -
                 
     | 
| 
      
 405 
     | 
    
         
            +
                0x00400a00, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       406 
406 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       407 
407 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       408 
408 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
         @@ -446,10 +446,10 @@ static const uint32_t d3[256] = { 
     | 
|
| 
       446 
446 
     | 
    
         
             
                0x00190000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x003f0000,
         
     | 
| 
       447 
447 
     | 
    
         
             
                0x01ffffff, 0x001a0000, 0x001b0000, 0x001c0000, 0x001d0000, 0x001e0000,
         
     | 
| 
       448 
448 
     | 
    
         
             
                0x001f0000, 0x00200000, 0x00210000, 0x00220000, 0x00230000, 0x00240000,
         
     | 
| 
       449 
     | 
    
         
            -
                0x00250000, 0x00260000, 0x00270000, 0x00280000,  
     | 
| 
      
 449 
     | 
    
         
            +
                0x00250000, 0x00260000, 0x00270000, 0x00280000, 0x01ffffff, 0x002a0000,
         
     | 
| 
       450 
450 
     | 
    
         
             
                0x002b0000, 0x002c0000, 0x002d0000, 0x002e0000, 0x002f0000, 0x00300000,
         
     | 
| 
       451 
451 
     | 
    
         
             
                0x00310000, 0x00320000, 0x00330000, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       452 
     | 
    
         
            -
                 
     | 
| 
      
 452 
     | 
    
         
            +
                0x00290000, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       453 
453 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       454 
454 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
| 
       455 
455 
     | 
    
         
             
                0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff,
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: ffi-hydrogen
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Marcos Minond
         
     | 
| 
         @@ -66,6 +66,20 @@ dependencies: 
     | 
|
| 
       66 
66 
     | 
    
         
             
                - - ">="
         
     | 
| 
       67 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
68 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 69 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 70 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 71 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 72 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 73 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 74 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 75 
     | 
    
         
            +
              name: pry
         
     | 
| 
      
 76 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 77 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 78 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 79 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 80 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 81 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 82 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       69 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
84 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       71 
85 
     | 
    
         
             
                requirements:
         
     | 
| 
         @@ -126,7 +140,8 @@ description: 
     | 
|
| 
       126 
140 
     | 
    
         
             
            email:
         
     | 
| 
       127 
141 
     | 
    
         
             
            - marcos.minond@mx.com
         
     | 
| 
       128 
142 
     | 
    
         
             
            executables: []
         
     | 
| 
       129 
     | 
    
         
            -
            extensions: 
     | 
| 
      
 143 
     | 
    
         
            +
            extensions:
         
     | 
| 
      
 144 
     | 
    
         
            +
            - ext/ffi/hydrogen/Rakefile
         
     | 
| 
       130 
145 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       131 
146 
     | 
    
         
             
            files:
         
     | 
| 
       132 
147 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
         @@ -143,6 +158,8 @@ files: 
     | 
|
| 
       143 
158 
     | 
    
         
             
            - bench/init.rb
         
     | 
| 
       144 
159 
     | 
    
         
             
            - bin/console
         
     | 
| 
       145 
160 
     | 
    
         
             
            - bin/setup
         
     | 
| 
      
 161 
     | 
    
         
            +
            - ext/ffi/hydrogen/Rakefile
         
     | 
| 
      
 162 
     | 
    
         
            +
            - ext/ffi/hydrogen/main.c
         
     | 
| 
       146 
163 
     | 
    
         
             
            - ffi-hydrogen.gemspec
         
     | 
| 
       147 
164 
     | 
    
         
             
            - lib/ffi/hydrogen.rb
         
     | 
| 
       148 
165 
     | 
    
         
             
            - vendor/.clang-format
         
     | 
| 
         @@ -174,7 +191,6 @@ files: 
     | 
|
| 
       174 
191 
     | 
    
         
             
            - vendor/libhydrogen/library.properties
         
     | 
| 
       175 
192 
     | 
    
         
             
            - vendor/libhydrogen/logo.png
         
     | 
| 
       176 
193 
     | 
    
         
             
            - vendor/libhydrogen/tests/tests.c
         
     | 
| 
       177 
     | 
    
         
            -
            - vendor/main.c
         
     | 
| 
       178 
194 
     | 
    
         
             
            - vendor/stringencoders/.gitignore
         
     | 
| 
       179 
195 
     | 
    
         
             
            - vendor/stringencoders/.travis.yml
         
     | 
| 
       180 
196 
     | 
    
         
             
            - vendor/stringencoders/AUTHORS
         
     |